00001
00034 #ifndef LL_LLBUFFERSTREAM_H
00035 #define LL_LLBUFFERSTREAM_H
00036
00037 #include <iosfwd>
00038 #include <iostream>
00039 #include "llbuffer.h"
00040
00047 class LLBufferStreamBuf : public std::streambuf
00048 {
00049 public:
00050 LLBufferStreamBuf(
00051 const LLChannelDescriptors& channels,
00052 LLBufferArray* buffer);
00053 virtual ~LLBufferStreamBuf();
00054
00055 protected:
00056 #if( LL_WINDOWS || __GNUC__ > 2 )
00057 typedef std::streambuf::pos_type pos_type;
00058 typedef std::streambuf::off_type off_type;
00059 #endif
00060
00061
00062
00064
00065
00066
00067
00068
00069 virtual int underflow();
00070
00071
00072
00073
00074
00075
00076
00077 virtual int overflow(int c);
00078
00079
00080
00081
00082
00083
00084 virtual int sync();
00085
00086
00087
00088
00089
00090
00091
00092
00093
00094
00095 #if( LL_WINDOWS || __GNUC__ > 2)
00096 virtual pos_type seekoff(
00097 off_type off,
00098 std::ios::seekdir way,
00099 std::ios::openmode which);
00100 #else
00101 virtual streampos seekoff(
00102 streamoff off,
00103 std::ios::seekdir way,
00104 std::ios::openmode which);
00105 #endif
00106
00107
00108
00109
00110
00111
00112
00113
00114
00115
00116
00117
00118
00119
00120
00121
00122
00123
00125
00126 protected:
00127
00128 LLChannelDescriptors mChannels;
00129
00130
00131 LLBufferArray* mBuffer;
00132 };
00133
00134
00144 class LLBufferStream : public std::iostream
00145 {
00146 public:
00147 LLBufferStream(
00148 const LLChannelDescriptors& channels,
00149 LLBufferArray* buffer);
00150 ~LLBufferStream();
00151
00152 protected:
00153 LLBufferStreamBuf mStreamBuf;
00154 };
00155
00156
00157 #endif // LL_LLBUFFERSTREAM_H