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.
50 lines
1.3 KiB
50 lines
1.3 KiB
5 years ago
|
//========= 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
|