00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef _piostream_h_
00021 #define _piostream_h_
00022
00023 #include <pclasses/pexport.h>
00024 #include <pclasses/piodevice.h>
00025 #include <iostream>
00026
00027 namespace P {
00028
00030
00033 class PCORE_EXPORT IOStream: protected std::streambuf, public std::iostream {
00034 public:
00035 IOStream(IODevice& dev, unsigned int size = 0);
00036 ~IOStream();
00037
00038 int sync();
00039
00040 protected:
00041 int uflow();
00042 int underflow();
00043 int overflow(int c);
00044
00045 private:
00046 void allocate(unsigned int size);
00047
00048 IOStream(const IOStream&);
00049 IOStream& operator=(const IOStream&);
00050
00051 IODevice& m_iodev;
00052 unsigned int m_bufsize;
00053 char* m_gbuf;
00054 char* m_pbuf;
00055 };
00056
00058
00061 inline std::ostream& pendl(std::ostream& os)
00062 {
00063 #ifdef WIN32
00064 os << "\r\n";
00065 #else
00066 os << "\n";
00067 #endif
00068 os << std::flush;
00069 return os;
00070 }
00071
00072 }
00073
00074 #endif