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;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* ************************************************************************* */
							 |