OutputFileHandler.hpp
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036 #ifndef OUTPUTFILEHANDLER_HPP_
00037 #define OUTPUTFILEHANDLER_HPP_
00038
00039 #include <string>
00040 #include <fstream>
00041 #include <sstream>
00042 #include <memory>
00043
00044 class FileFinder;
00045
00047 typedef std::auto_ptr<std::ofstream> out_stream;
00048
00054 class OutputFileHandler
00055 {
00056 public:
00070 OutputFileHandler(const std::string& rDirectory,
00071 bool cleanOutputDirectory = true);
00072
00085 OutputFileHandler(const FileFinder& rDirectory,
00086 bool cleanOutputDirectory = true);
00087
00099 static std::string GetChasteTestOutputDirectory();
00100
00105 std::string GetOutputDirectoryFullPath() const;
00106
00110 std::string GetRelativePath() const;
00111
00115 void SetArchiveDirectory() const;
00116
00126 out_stream OpenOutputFile(const std::string& rFileName,
00127 std::ios_base::openmode mode=std::ios::out | std::ios::trunc) const;
00128
00142 out_stream OpenOutputFile(const std::string& rFileName,
00143 unsigned number,
00144 const std::string& rFileFormat,
00145 std::ios_base::openmode mode=std::ios::out | std::ios::trunc) const;
00146
00155 FileFinder CopyFileTo(const FileFinder& rSourceFile) const;
00156
00162 FileFinder FindFile(std::string leafName) const;
00163
00165 static const std::string SIG_FILE_NAME;
00166
00167 private:
00168
00169 std::string mDirectory;
00170
00177 void CommonConstructor(const std::string& rDirectory,
00178 bool cleanOutputDirectory);
00179
00185 static void AddTrailingSlash(std::string& rDirectory);
00186
00202 std::string MakeFoldersAndReturnFullPath(const std::string& rDirectory) const;
00203 };
00204
00205 #endif