OFileStreambuf Class Reference

#include <ofile_streambuf.hpp>

Inherits streambuf.

List of all members.

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 &)
OFileStreambufoperator= (const OFileStreambuf &)

Private Attributes

PHYSFS_file * file
char buf [1024]


Detailed Description

Definition at line 23 of file ofile_streambuf.hpp.


Constructor & Destructor Documentation

OFileStreambuf::OFileStreambuf ( const std::string &  filename  ) 

Definition at line 22 of file ofile_streambuf.cpp.

References buf, and file.

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 (  ) 

Definition at line 36 of file ofile_streambuf.cpp.

References file, and sync().

00037 {
00038   sync();
00039   PHYSFS_close(file);
00040 }

OFileStreambuf::OFileStreambuf ( const OFileStreambuf  )  [private]


Member Function Documentation

int OFileStreambuf::overflow ( int  c  )  [protected, virtual]

Definition at line 43 of file ofile_streambuf.cpp.

References buf, and file.

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]


Member Data Documentation

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]

Definition at line 35 of file ofile_streambuf.hpp.

Referenced by OFileStreambuf(), and overflow().


The documentation for this class was generated from the following files:
Generated on Mon Jun 9 03:38:33 2014 for SuperTux by  doxygen 1.5.1