aboutsummaryrefslogtreecommitdiff
path: root/mp/src/game/shared/saverestore_utlsymbol.h
blob: 176f36e627db2b1001054bf4191f0b4d8137b706 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
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