mirror of
https://github.com/alliedmodders/hl2sdk.git
synced 2024-12-23 01:59:43 +08:00
50 lines
1.4 KiB
C
50 lines
1.4 KiB
C
|
//========= Copyright Valve Corporation, All rights reserved. ============//
|
||
|
//
|
||
|
// Purpose:
|
||
|
//
|
||
|
// $NoKeywords: $
|
||
|
//=============================================================================//
|
||
|
|
||
|
#ifndef KVPACKER_H
|
||
|
#define KVPACKER_H
|
||
|
|
||
|
#ifdef _WIN32
|
||
|
#pragma once
|
||
|
#endif
|
||
|
|
||
|
#include "KeyValues.h"
|
||
|
|
||
|
//-----------------------------------------------------------------------------
|
||
|
// Purpose: Handles packing KeyValues binary packing and unpacking in a a
|
||
|
// consistent way across all branches, including Steam. If you change
|
||
|
// this packing format you need to do so in a backward compatible way
|
||
|
// so that the Steam servers and all the various GCs can still talk to
|
||
|
// each other.
|
||
|
//-----------------------------------------------------------------------------
|
||
|
class KVPacker
|
||
|
{
|
||
|
public:
|
||
|
bool WriteAsBinary( KeyValues *pNode, CUtlBuffer &buffer );
|
||
|
bool ReadAsBinary( KeyValues *pNode, CUtlBuffer &buffer );
|
||
|
|
||
|
private:
|
||
|
// These types are used for serialization of KeyValues nodes.
|
||
|
// Do not renumber them or you will break serialization across
|
||
|
// branches.
|
||
|
enum EPackType
|
||
|
{
|
||
|
PACKTYPE_NONE = 0,
|
||
|
PACKTYPE_STRING,
|
||
|
PACKTYPE_INT,
|
||
|
PACKTYPE_FLOAT,
|
||
|
PACKTYPE_PTR,
|
||
|
PACKTYPE_WSTRING,
|
||
|
PACKTYPE_COLOR,
|
||
|
PACKTYPE_UINT64,
|
||
|
PACKTYPE_NULLMARKER, // used to mark the end of a block in the binary format
|
||
|
};
|
||
|
};
|
||
|
|
||
|
|
||
|
#endif // KVPACKER_H
|