50 lines
1.4 KiB
C++
50 lines
1.4 KiB
C++
//========= 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
|