00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #ifndef _NPT_DATA_BUFFER_H_
00011 #define _NPT_DATA_BUFFER_H_
00012
00013
00014
00015
00016 #include "NptTypes.h"
00017 #include "NptConstants.h"
00018
00019
00020
00021
00022 class NPT_DataBuffer
00023 {
00024 public:
00025
00026 NPT_DataBuffer();
00027 NPT_DataBuffer(NPT_Size size);
00028 NPT_DataBuffer(const void* data, NPT_Size size, bool copy = true);
00029 NPT_DataBuffer(const NPT_DataBuffer& other);
00030 virtual ~NPT_DataBuffer();
00031
00032
00033 NPT_DataBuffer& operator=(const NPT_DataBuffer& copy);
00034 bool operator==(const NPT_DataBuffer& other) const;
00035
00036
00037 virtual NPT_Result SetBuffer(NPT_Byte* buffer, NPT_Size bufferSize);
00038 virtual NPT_Result SetBufferSize(NPT_Size bufferSize);
00039 virtual NPT_Size GetBufferSize() const { return m_BufferSize; }
00040 virtual NPT_Result Reserve(NPT_Size size);
00041
00042
00043 virtual const NPT_Byte* GetData() const { return m_Buffer; }
00044 virtual NPT_Byte* UseData() { return m_Buffer; };
00045 virtual NPT_Size GetDataSize() const { return m_DataSize; }
00046 virtual NPT_Result SetDataSize(NPT_Size size);
00047 virtual NPT_Result SetData(const NPT_Byte* data, NPT_Size dataSize);
00048
00049 private:
00050 NPT_Result Clear();
00051
00052 protected:
00053
00054 bool m_BufferIsLocal;
00055 NPT_Byte* m_Buffer;
00056 NPT_Size m_BufferSize;
00057 NPT_Size m_DataSize;
00058
00059
00060 NPT_Result ReallocateBuffer(NPT_Size size);
00061 };
00062
00063 #endif // _NPT_DATA_BUFFER_H_