#include <ofile_streambuf.hpp>
Inherits streambuf.
Public Member Functions | |
| OFileStreambuf (const std::string &filename) | |
| ~OFileStreambuf () | |
Protected Member Functions | |
| virtual int | overflow (int c) |
| virtual int | sync () |
Private Member Functions | |
| OFileStreambuf (const OFileStreambuf &) | |
| OFileStreambuf & | operator= (const OFileStreambuf &) |
Private Attributes | |
| PHYSFS_file * | file |
| char | buf [1024] |
Definition at line 23 of file ofile_streambuf.hpp.
| OFileStreambuf::OFileStreambuf | ( | const std::string & | filename | ) |
Definition at line 22 of file ofile_streambuf.cpp.
00022 : 00023 file() 00024 { 00025 file = PHYSFS_openWrite(filename.c_str()); 00026 if(file == 0) { 00027 std::stringstream msg; 00028 msg << "Couldn't open file '" << filename << "': " 00029 << PHYSFS_getLastError(); 00030 throw std::runtime_error(msg.str()); 00031 } 00032 00033 setp(buf, buf+sizeof(buf)); 00034 }
| OFileStreambuf::~OFileStreambuf | ( | ) |
| OFileStreambuf::OFileStreambuf | ( | const OFileStreambuf & | ) | [private] |
| int OFileStreambuf::overflow | ( | int | c | ) | [protected, virtual] |
Definition at line 43 of file ofile_streambuf.cpp.
Referenced by sync().
00044 { 00045 char c2 = (char)c; 00046 00047 if(pbase() == pptr()) 00048 return 0; 00049 00050 size_t size = pptr() - pbase(); 00051 PHYSFS_sint64 res = PHYSFS_write(file, pbase(), 1, size); 00052 if(res <= 0) 00053 return traits_type::eof(); 00054 00055 if(c != traits_type::eof()) { 00056 PHYSFS_sint64 res = PHYSFS_write(file, &c2, 1, 1); 00057 if(res <= 0) 00058 return traits_type::eof(); 00059 } 00060 00061 setp(buf, buf + res); 00062 return 0; 00063 }
| int OFileStreambuf::sync | ( | ) | [protected, virtual] |
Definition at line 66 of file ofile_streambuf.cpp.
References overflow().
Referenced by ~OFileStreambuf().
00067 { 00068 return overflow(traits_type::eof()); 00069 }
| OFileStreambuf& OFileStreambuf::operator= | ( | const OFileStreambuf & | ) | [private] |
PHYSFS_file* OFileStreambuf::file [private] |
Definition at line 34 of file ofile_streambuf.hpp.
Referenced by OFileStreambuf(), overflow(), and ~OFileStreambuf().
char OFileStreambuf::buf[1024] [private] |
1.5.1