00001 00009 #ifndef INCLUDED_ReadWriteBuffer 00010 #define INCLUDED_ReadWriteBuffer 00011 00012 // ---------------------------------------------------------------------------- 00013 // ReadWriteBuffer 00014 00038 class ReadWriteBuffer 00039 { 00040 public: 00042 ReadWriteBuffer(); 00043 00049 ReadWriteBuffer(const ReadWriteBuffer &); 00050 00056 ReadWriteBuffer & operator=(const ReadWriteBuffer &); 00057 00059 ~ReadWriteBuffer(); 00060 00062 void Deallocate(); 00063 00065 void SetEmpty(); 00066 00075 void SetExternalBuffer(void * a_pBuf, size_t a_nBufSiz, size_t a_nBufLen = 0); // throw std::invalid_argument 00076 00086 void SetInternalBuffer(size_t a_nInitialSize, size_t a_nGrowBy = 1024); // throw std::bad_alloc 00087 00108 char * GetWriteBuffer(size_t a_nMinBytes = 0); // throw std::overflow_error, std::bad_alloc 00109 00120 void CommitWriteBytes(size_t a_nBytes); // throw std::invalid_argument 00121 00127 size_t GetWriteSize() const; 00128 00142 void WriteBytes(const void * a_pBuf, size_t a_nBufLen); // throw std::overflow_error, std::bad_alloc 00143 00151 const char * GetReadBuffer() const; 00152 00163 void CommitReadBytes(size_t a_nBytes); // throw std::invalid_argument 00164 00169 size_t GetReadSize() const; 00170 00176 void Compact(); 00177 00179 bool operator==(const ReadWriteBuffer &) const; 00180 00181 private: 00182 size_t mBufSiz; 00183 size_t mBufLen; 00184 size_t mBufIdx; 00185 size_t mGrowBy; 00186 char * mBuf; 00187 }; 00188 00189 #endif // INCLUDED_ReadWriteBuffer
1.5.6