diff options
Diffstat (limited to 'src/engine/e_packer.h')
| -rw-r--r-- | src/engine/e_packer.h | 58 |
1 files changed, 30 insertions, 28 deletions
diff --git a/src/engine/e_packer.h b/src/engine/e_packer.h index 71b99ff7..5dc80e7a 100644 --- a/src/engine/e_packer.h +++ b/src/engine/e_packer.h @@ -1,35 +1,37 @@ /* copyright (c) 2007 magnus auvinen, see licence.txt for more info */ -enum +class CPacker { - PACKER_BUFFER_SIZE=1024*2 -}; + enum + { + PACKER_BUFFER_SIZE=1024*2 + }; -typedef struct -{ + unsigned char m_aBuffer[PACKER_BUFFER_SIZE]; + unsigned char *m_pCurrent; + unsigned char *m_pEnd; + int m_Error; +public: + void Reset(); + void AddInt(int i); + void AddString(const char *pStr, int Limit); + void AddRaw(const unsigned char *pData, int Size); - unsigned char buffer[PACKER_BUFFER_SIZE]; - unsigned char *current; - unsigned char *end; - int error; -} PACKER; + int Size() const { return (int)(m_pCurrent-m_aBuffer); } + const unsigned char *Data() const { return m_aBuffer; } + bool Error() const { return m_Error; } +}; -typedef struct +class CUnpacker { - const unsigned char *current; - const unsigned char *start; - const unsigned char *end; - int error; -} UNPACKER; - -void packer_reset(PACKER *p); -void packer_add_int(PACKER *p, int i); -void packer_add_string(PACKER *p, const char *str, int limit); -void packer_add_raw(PACKER *p, const unsigned char *data, int size); -int packer_size(PACKER *p); -const unsigned char *packer_data(PACKER *p); - -void unpacker_reset(UNPACKER *p, const unsigned char *data, int size); -int unpacker_get_int(UNPACKER *p); -const char *unpacker_get_string(UNPACKER *p); -const unsigned char *unpacker_get_raw(UNPACKER *p, int size); + const unsigned char *m_pStart; + const unsigned char *m_pCurrent; + const unsigned char *m_pEnd; + int m_Error; +public: + void Reset(const unsigned char *pData, int Size); + int GetInt(); + const char *GetString(); + const unsigned char *GetRaw(int Size); + bool Error() const { return m_Error; } +}; |