67 lines
2.5 KiB
C++
67 lines
2.5 KiB
C++
//========= Copyright Valve Corporation, All rights reserved. ============//
|
|
//
|
|
// Purpose:
|
|
//
|
|
// $NoKeywords: $
|
|
//=============================================================================//
|
|
#ifndef VSTDLIB_IKEYVALUESSYSTEM_H
|
|
#define VSTDLIB_IKEYVALUESSYSTEM_H
|
|
#ifdef _WIN32
|
|
#pragma once
|
|
#endif
|
|
|
|
#include "vstdlib.h"
|
|
|
|
// handle to a KeyValues key name symbol
|
|
typedef int HKeySymbol;
|
|
#define INVALID_KEY_SYMBOL (-1)
|
|
|
|
class IBaseFileSystem;
|
|
class KeyValues;
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// Purpose: Interface to shared data repository for KeyValues (included in
|
|
// vgui_controls.lib)
|
|
// allows for central data storage point of KeyValues symbol
|
|
//table
|
|
//-----------------------------------------------------------------------------
|
|
class IKeyValuesSystem {
|
|
public:
|
|
// registers the size of the KeyValues in the specified instance
|
|
// so it can build a properly sized memory pool for the KeyValues objects
|
|
// the sizes will usually never differ but this is for versioning safety
|
|
virtual void RegisterSizeofKeyValues(int size) = 0;
|
|
|
|
// allocates/frees a KeyValues object from the shared mempool
|
|
virtual void *AllocKeyValuesMemory(int size) = 0;
|
|
virtual void FreeKeyValuesMemory(void *pMem) = 0;
|
|
|
|
// symbol table access (used for key names)
|
|
virtual HKeySymbol GetSymbolForString(const char *name,
|
|
bool bCreate = true) = 0;
|
|
virtual const char *GetStringForSymbol(HKeySymbol symbol) = 0;
|
|
|
|
// for debugging, adds KeyValues record into global list so we can track
|
|
// memory leaks
|
|
virtual void AddKeyValuesToMemoryLeakList(void *pMem, HKeySymbol name) = 0;
|
|
virtual void RemoveKeyValuesFromMemoryLeakList(void *pMem) = 0;
|
|
|
|
// maintain a cache of KeyValues we load from disk. This saves us quite a
|
|
// lot of time on app startup.
|
|
virtual void AddFileKeyValuesToCache(const KeyValues *_kv,
|
|
const char *resourceName,
|
|
const char *pathID) = 0;
|
|
virtual bool LoadFileKeyValuesFromCache(
|
|
KeyValues *_outKv, const char *resourceName, const char *pathID,
|
|
IBaseFileSystem *filesystem) const = 0;
|
|
virtual void InvalidateCache() = 0;
|
|
virtual void InvalidateCacheForFile(const char *resourceName,
|
|
const char *pathID) = 0;
|
|
};
|
|
|
|
VSTDLIB_INTERFACE IKeyValuesSystem *KeyValuesSystem();
|
|
|
|
// #define KEYVALUESSYSTEM_INTERFACE_VERSION "KeyValuesSystem002"
|
|
|
|
#endif // VSTDLIB_IKEYVALUESSYSTEM_H
|