58 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			C++
		
	
	
		
		
			
		
	
	
			58 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			C++
		
	
	
|  | /**
 | ||
|  |  * file: utilities.ccp | ||
|  |  * Author: Frank Dellaert | ||
|  |  **/ | ||
|  | 
 | ||
|  | #include <iostream>
 | ||
|  | #include <fstream>
 | ||
|  | 
 | ||
|  | #include <boost/date_time/gregorian/gregorian.hpp>
 | ||
|  | 
 | ||
|  | #include "utilities.h"
 | ||
|  | 
 | ||
|  | using namespace std; | ||
|  | using namespace boost::gregorian; | ||
|  | 
 | ||
|  | /* ************************************************************************* */ | ||
|  | string file_contents(const string& filename, bool skipheader) { | ||
|  |   ifstream ifs(filename.c_str()); | ||
|  |   if(!ifs) throw CantOpenFile(filename); | ||
|  | 
 | ||
|  |   // read file into stringstream
 | ||
|  |   stringstream ss; | ||
|  |   if (skipheader) ifs.ignore(256,'\n'); | ||
|  |   ss << ifs.rdbuf(); | ||
|  |   ifs.close(); | ||
|  | 
 | ||
|  |   // return string
 | ||
|  |   return ss.str(); | ||
|  | } | ||
|  | 
 | ||
|  | /* ************************************************************************* */ | ||
|  | bool files_equal(const string& actual, const string& expected, bool skipheader) { | ||
|  |   try { | ||
|  |     string actual_contents   = file_contents(actual, skipheader); | ||
|  |     string expected_contents = file_contents(expected); | ||
|  |     bool equal = actual_contents == expected_contents; | ||
|  |     if (!equal) { | ||
|  |       stringstream command; | ||
|  |       command << "diff " << actual << " " << expected << endl; | ||
|  |       system(command.str().c_str()); | ||
|  |     } | ||
|  |     return equal; | ||
|  |   } | ||
|  |   catch (const string& reason) { | ||
|  |     cerr << "expection: " << reason << endl; | ||
|  |     return false; | ||
|  |   } | ||
|  |   return true; | ||
|  | } | ||
|  | 
 | ||
|  | /* ************************************************************************* */ | ||
|  | void emit_header_comment(ofstream& ofs, const string& delimiter) { | ||
|  |   date today = day_clock::local_day(); | ||
|  |   ofs << delimiter << " automatically generated by wrap on " << today << endl; | ||
|  | } | ||
|  | 
 | ||
|  | /* ************************************************************************* */ |