core/CDataPack.h
author Borja Ferrer <faluco@alliedmods.net>
Tue Feb 13 16:11:04 2007 +0000 (2007-02-13)
changeset 484 d254e257cac2
child 485 73bad6a148b9
permissions -rw-r--r--
initial implementation of data packs
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@484
    36
public: //IDataPack
faluco@484
    37
	void ResetSize();
faluco@484
    38
	void PackCell(cell_t cell);
faluco@484
    39
	void PackFloat(float val);
faluco@484
    40
	void PackString(const char *string);
faluco@484
    41
	size_t CreateMemory(size_t size, void **addr);
faluco@484
    42
public:
faluco@484
    43
	void Initialize();
faluco@484
    44
private:
faluco@484
    45
	void CheckSize(size_t sizetype);
faluco@484
    46
private:
faluco@484
    47
	char *m_pBase;
faluco@484
    48
	mutable char *m_curptr;
faluco@484
    49
	size_t m_capacity;
faluco@484
    50
	size_t m_size;
faluco@484
    51
};
faluco@484
    52
faluco@484
    53
#endif //_INCLUDE_SOURCEMOD_CDATAPACK_H_