summaryrefslogtreecommitdiff
path: root/tf2/KeyValues.h
blob: 1d8ed413988969ecbab7b0334a69951593719513 (plain)
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
#pragma once
#include "util.hpp"

class IKeyValuesSystem {
public:
	void FreeKeyValuesMemory( void* memory );
	int GetSymbolForString( const char* string, bool create );
	const char* GetStringForSymbol( int symbol );
};

class KeyValues
{
public:
	KeyValues( const char *setName );
	//~KeyValues( );

	bool LoadFromBuffer( char const *resourceName, const char *pBuffer, void* pFileSystem = nullptr, const char *pPathID = nullptr );

	const char* get_string( const char* name, const char* value );

	int m_iKeyName;

	char *m_sValue;
	wchar_t *m_wsValue;

	// we don't delete these
	union {
		int m_iValue;
		float m_flValue;
		void *m_pValue;
		unsigned char m_Color[ 4 ];
	};

	void* operator new( size_t alloc );
	void operator delete( void* mem );

	char	   m_iDataType;
	char	   m_bHasEscapeSequences;
	char	   m_bEvaluateConditionals;
	static void* key_values_ptr;
	KeyValues* FindKey( const char* key_name );

	KeyValues *m_pPeer;	// pointer to next key in list
	KeyValues *m_pSub;	// pointer to Start of a new sub key list
	KeyValues *m_pChain;// Search here if it's not in our list
};