//========= 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