core/CDataPack.h
author David Anderson <dvander@alliedmods.net>
Mon Mar 12 00:06:20 2007 +0000 (2007-03-12)
changeset 599 3a098eff4890
parent 488 daf1bd692ef3
child 653 ef60870067ff
permissions -rw-r--r--
used a better error number
faluco@484
     1
/**
faluco@484
     2
* vim: set ts=4 :
faluco@484
     3
* ===============================================================
faluco@484
     4
* SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
faluco@484
     5
* ===============================================================
faluco@484
     6
*
faluco@484
     7
* This file is not open source and may not be copied without explicit
faluco@484
     8
* written permission of AlliedModders LLC.  This file may not be redistributed 
faluco@484
     9
* in whole or significant part.
faluco@484
    10
* For information, see LICENSE.txt or http://www.sourcemod.net/license.php
faluco@484
    11
*
faluco@484
    12
* Version: $Id$
faluco@484
    13
*/
faluco@484
    14
faluco@484
    15
#ifndef _INCLUDE_SOURCEMOD_CDATAPACK_H_
faluco@484
    16
#define _INCLUDE_SOURCEMOD_CDATAPACK_H_
faluco@484
    17
faluco@484
    18
#include <IDataPack.h>
faluco@484
    19
faluco@484
    20
using namespace SourceMod;
faluco@484
    21
faluco@484
    22
class CDataPack : public IDataPack
faluco@484
    23
{
faluco@484
    24
public:
faluco@484
    25
	CDataPack();
faluco@484
    26
	~CDataPack();
faluco@484
    27
public: //IDataReader
faluco@484
    28
	void Reset() const;
faluco@484
    29
	size_t GetPosition() const;
faluco@484
    30
	bool SetPosition(size_t pos) const;
faluco@484
    31
	cell_t ReadCell() const;
faluco@484
    32
	float ReadFloat() const;
faluco@484
    33
	bool IsReadable(size_t bytes) const;
faluco@484
    34
	const char *ReadString(size_t *len) const;
faluco@484
    35
	void *GetMemory() const;
faluco@488
    36
	void *ReadMemory(size_t *size) const;
faluco@484
    37
public: //IDataPack
faluco@484
    38
	void ResetSize();
faluco@484
    39
	void PackCell(cell_t cell);
faluco@484
    40
	void PackFloat(float val);
faluco@484
    41
	void PackString(const char *string);
faluco@484
    42
	size_t CreateMemory(size_t size, void **addr);
faluco@484
    43
public:
faluco@484
    44
	void Initialize();
faluco@484
    45
private:
faluco@484
    46
	void CheckSize(size_t sizetype);
faluco@484
    47
private:
faluco@484
    48
	char *m_pBase;
faluco@484
    49
	mutable char *m_curptr;
faluco@484
    50
	size_t m_capacity;
faluco@484
    51
	size_t m_size;
faluco@484
    52
};
faluco@484
    53
faluco@485
    54
#endif //_INCLUDE_SOURCEMOD_CDATAPACK_H_