faluco@484: /** faluco@484: * vim: set ts=4 : faluco@484: * =============================================================== faluco@484: * SourceMod (C)2004-2007 AlliedModders LLC. All rights reserved. faluco@484: * =============================================================== faluco@484: * faluco@484: * This file is not open source and may not be copied without explicit faluco@484: * written permission of AlliedModders LLC. This file may not be redistributed faluco@484: * in whole or significant part. faluco@484: * For information, see LICENSE.txt or http://www.sourcemod.net/license.php faluco@484: * faluco@484: * Version: $Id$ faluco@484: */ faluco@484: faluco@484: #ifndef _INCLUDE_SOURCEMOD_CDATAPACK_H_ faluco@484: #define _INCLUDE_SOURCEMOD_CDATAPACK_H_ faluco@484: faluco@484: #include faluco@484: faluco@484: using namespace SourceMod; faluco@484: faluco@484: class CDataPack : public IDataPack faluco@484: { faluco@484: public: faluco@484: CDataPack(); faluco@484: ~CDataPack(); faluco@484: public: //IDataReader faluco@484: void Reset() const; faluco@484: size_t GetPosition() const; faluco@484: bool SetPosition(size_t pos) const; faluco@484: cell_t ReadCell() const; faluco@484: float ReadFloat() const; faluco@484: bool IsReadable(size_t bytes) const; faluco@484: const char *ReadString(size_t *len) const; faluco@484: void *GetMemory() const; faluco@488: void *ReadMemory(size_t *size) const; faluco@484: public: //IDataPack faluco@484: void ResetSize(); faluco@484: void PackCell(cell_t cell); faluco@484: void PackFloat(float val); faluco@484: void PackString(const char *string); faluco@484: size_t CreateMemory(size_t size, void **addr); faluco@484: public: faluco@484: void Initialize(); faluco@484: private: faluco@484: void CheckSize(size_t sizetype); faluco@484: private: faluco@484: char *m_pBase; faluco@484: mutable char *m_curptr; faluco@484: size_t m_capacity; faluco@484: size_t m_size; faluco@484: }; faluco@484: faluco@485: #endif //_INCLUDE_SOURCEMOD_CDATAPACK_H_