#ifndef __BYTEBUFFER_H__ #define __BYTEBUFFER_H__ #include "inc/basictypes.h" #include namespace base { static const int DEFAULT_SIZE = 128; class ByteBuffer { public: ByteBuffer(dword cb = DEFAULT_SIZE); ~ByteBuffer(); const byte *Data() const { return bytes_ + start_; } int Length() const { return end_ - start_; } int Capacity() const { return size_ - start_; } void Rewind() { start_ = 0; } bool ReadByte(byte *pb); bool ReadWord(word *pw); bool ReadDword(dword *pdw); bool ReadString(char *psz, int cb); bool ReadBytes(byte *pb, int cb); void WriteByte(byte b); void WriteWord(word w); void WriteDword(dword dw); void WriteString(const char *psz, bool zero = true); void WriteBytes(const byte *pb, int cb); void *Strip(int *pcb = NULL); void Resize(int size); void Shift(int size); ByteBuffer *Clone() const; static word HostToNetWord(word w) { return htons(w); } static word NetToHostWord(word w) { return ntohs(w); } static dword HostToNetDword(dword dw) { return htonl(dw); } static dword NetToHostDword(dword dw) { return ntohl(dw); } ByteBuffer *pbbNext_; private: byte *bytes_; int size_; int start_; int end_; }; } // namespace base #endif // __BYTEBUFFER_H__