mirror of
				https://github.com/OpenMW/openmw.git
				synced 2025-10-31 18:56:38 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			41 lines
		
	
	
	
		
			940 B
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			41 lines
		
	
	
	
		
			940 B
		
	
	
	
		
			C++
		
	
	
	
	
	
| #ifndef MANGLE_OSTREAM_FILESERVER_H
 | |
| #define MANGLE_OSTREAM_FILESERVER_H
 | |
| 
 | |
| #include "std_ostream.hpp"
 | |
| #include <fstream>
 | |
| 
 | |
| namespace Mangle {
 | |
| namespace Stream {
 | |
| 
 | |
| /** File stream based on std::ofstream, only supports writing.
 | |
|  */
 | |
| class OutFileStream : public StdOStream
 | |
| {
 | |
|   std::ofstream file;
 | |
| 
 | |
|  public:
 | |
|   /**
 | |
|      By default we overwrite the file. If append=true, then we will
 | |
|      open an existing file and seek to the end instead.
 | |
|    */
 | |
|   OutFileStream(const std::string &name, bool append=false)
 | |
|     : StdOStream(&file)
 | |
|     {
 | |
|       std::ios::openmode mode = std::ios::binary;
 | |
|       if(append)
 | |
|         mode |= std::ios::app;
 | |
|       else
 | |
|         mode |= std::ios::trunc;
 | |
| 
 | |
|       file.open(name.c_str(), mode);
 | |
| 
 | |
|       if(file.fail())
 | |
|         throw std::runtime_error("OutFileStream: failed to open file " + name);
 | |
|     }
 | |
|   ~OutFileStream() { file.close(); }
 | |
| };
 | |
| 
 | |
| typedef boost::shared_ptr<OutFileStream> OutFileStreamPtr;
 | |
| 
 | |
| }} // namespaces
 | |
| #endif
 |