/** * @file FileWriter.cpp * * @date Jan 15, 2012 * @author Alex Cunningham */ #include "FileWriter.h" #include "utilities.h" #include #include using namespace std; using namespace wrap; /* ************************************************************************* */ FileWriter::FileWriter(const string& filename, bool verbose, const string& comment_str) : verbose_(verbose),filename_(filename), comment_str_(comment_str) { } /* ************************************************************************* */ void FileWriter::emit(bool add_header, bool force_overwrite) const { if (verbose_) cerr << "generating " << filename_ << " "; // read in file if it exists string existing_contents; bool file_exists = true; try { existing_contents = file_contents(filename_.c_str(), add_header); } catch (CantOpenFile& e) { file_exists = false; } // Only write a file if it is new, an update, or overwrite is forced string new_contents = oss.str(); if (force_overwrite || !file_exists || existing_contents != new_contents) { ofstream ofs(filename_.c_str()); if (!ofs) throw CantOpenFile(filename_); // header if (add_header) ofs << comment_str_ << " automatically generated by wrap" << endl; // dump in stringstream ofs << new_contents; ofs.close(); if (verbose_) cerr << " ...complete" << endl; } else { if (verbose_) cerr << " ...no update" << endl; } } /* ************************************************************************* */