You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
49 lines
1.3 KiB
49 lines
1.3 KiB
//========= 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
|
|
|