faluco@484: /** ds@653: * vim: set ts=4 : ds@653: * =============================================================== ds@653: * SourceMod (C)2004-2007 AlliedModders LLC. All rights reserved. ds@653: * =============================================================== ds@653: * ds@653: * This file is not open source and may not be copied without explicit ds@653: * written permission of AlliedModders LLC. This file may not be redistributed ds@653: * in whole or significant part. ds@653: * For information, see LICENSE.txt or http://www.sourcemod.net/license.php ds@653: * ds@653: * Version: $Id$ ds@653: */ 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_