diff options
Diffstat (limited to 'game/shared/saverestore_utlsymbol.h')
| -rw-r--r-- | game/shared/saverestore_utlsymbol.h | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/game/shared/saverestore_utlsymbol.h b/game/shared/saverestore_utlsymbol.h new file mode 100644 index 0000000..176f36e --- /dev/null +++ b/game/shared/saverestore_utlsymbol.h @@ -0,0 +1,53 @@ +//========= Copyright Valve Corporation, All rights reserved. ============// +// +// Purpose: +// +//=============================================================================// + +#ifndef SAVERESTORE_UTLSYMBOL_H +#define SAVERESTORE_UTLSYMBOL_H +#ifdef _WIN32 +#pragma once +#endif + +#include "utlsymbol.h" + +class CUtlSymbolDataOps : public CDefSaveRestoreOps +{ +public: + CUtlSymbolDataOps( CUtlSymbolTable &masterTable ) : m_symbolTable(masterTable) {} + + virtual void Save( const SaveRestoreFieldInfo_t &fieldInfo, ISave *pSave ) + { + CUtlSymbol *sym = ((CUtlSymbol *)fieldInfo.pField); + + pSave->WriteString( m_symbolTable.String( *sym ) ); + } + + virtual void Restore( const SaveRestoreFieldInfo_t &fieldInfo, IRestore *pRestore ) + { + CUtlSymbol *sym = ((CUtlSymbol *)fieldInfo.pField); + + char tmp[1024]; + pRestore->ReadString( tmp, sizeof(tmp), 0 ); + *sym = m_symbolTable.AddString( tmp ); + } + + virtual void MakeEmpty( const SaveRestoreFieldInfo_t &fieldInfo ) + { + CUtlSymbol *sym = ((CUtlSymbol *)fieldInfo.pField); + *sym = UTL_INVAL_SYMBOL; + } + + virtual bool IsEmpty( const SaveRestoreFieldInfo_t &fieldInfo ) + { + CUtlSymbol *sym = ((CUtlSymbol *)fieldInfo.pField); + return (*sym).IsValid() ? false : true; + } + +private: + CUtlSymbolTable &m_symbolTable; + +}; + +#endif // SAVERESTORE_UTLSYMBOL_H |