summaryrefslogtreecommitdiff
path: root/cheat/gmod/KeyValues.hpp
blob: 0b1169844daf0d7266a14d360514ce27c91efc6d (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
#pragma once
#include "util.hpp"

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

class KeyValues
{
public:
	KeyValues( const char *setName );
	bool LoadFromBuffer( char const *resourceName, const char *pBuffer, void* pFileSystem = nullptr, const char *pPathID = nullptr, bool( *unknown )( const char* ) = nullptr );

	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 ];
	};

	char	   m_iDataType;
	char	   m_bHasEscapeSequences;
	char	   m_bEvaluateConditionals;

	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
};