AbstractBuffer.h++
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #ifndef __ccxx_AbstractBuffer_hxx
00024 #define __ccxx_AbstractBuffer_hxx
00025
00026 #include <commonc++/Common.h++>
00027
00028 #include <cstring>
00029
00030 namespace ccxx {
00031
00037 template<typename T> class AbstractBuffer
00038 {
00039 public:
00040
00043 virtual ~AbstractBuffer() throw();
00044
00050 virtual void setSize(size_t newSize);
00051
00054 virtual void clear() throw();
00055
00061 inline size_t getSize() const throw()
00062 { return(_size); }
00063
00067 virtual size_t getRemaining() const throw() = 0;
00068
00072 inline virtual bool hasRemaining() const throw()
00073 { return(getRemaining() > 0); }
00074
00077 inline T *getBase() throw()
00078 { return(_data); }
00079
00082 inline const T *getBase() const throw()
00083 { return(_data); }
00084
00085 protected:
00086
00092 AbstractBuffer(size_t size);
00093
00095 T *_data;
00097 size_t _size;
00098
00099 private:
00100
00101 CCXX_COPY_DECLS(AbstractBuffer);
00102 };
00103
00104 #include <commonc++/AbstractBufferImpl.h++>
00105
00106 };
00107
00108 #endif // __ccxx_AbstractBuffer_hxx
00109
00110