Fission FSN
Loading...
Searching...
No Matches
fsCVariableTable.h
Go to the documentation of this file.
1/********************************************************************
2*
3* Created: 2/12/2009 12:24
4*
5* File: fsCVariableTable.h
6*
7* Author: Martin King
8*
9* Purpose: Dictionary of key value pairs
10*
11*********************************************************************/
12
13#ifndef fsCVariableTablehdr
14#define fsCVariableTablehdr
15
16#include <map>
17#include <vector>
18
19#include "../fsStr.h"
20
21class fsCResourceName;
22
23typedef std::map<fsStr, fsStr> VarTableMap;
24
25
27{
28 friend class CVarTableComparer;
29 friend class CStringsFile;
30
31public:
32
33 enum
34 {
36
39
44 };
45
46 const fsStr& fileNameGet() const { return mFileName; }
47 std::vector<fsStr> partKeyCollectionGet(const fsStr& pPartKey) const;
48 std::vector<fsStr> partValueCollectionGet(const fsStr& pPartVal) const;
49
50 fsF32 f32Get(const fsStr& pKey) const;
51 fsF32 f32GetWithDefault(const fsStr& pKey, fsF32 pDefault) const;
52 fsS32 s32Get(const fsStr& pKey) const;
53 fsS32 s32GetWithDefault(const fsStr& pKey, fsS32 pDefault) const;
54 fsStr strGet(const fsStr& pKey) const;
55 fsStr strGetWithDefault(const fsStr& pKey, const fsStr& pDefault) const;
56 fsBool boolGet(const fsStr& pKey) const;
57 fsBool boolGetWithDefault(const fsStr& pKey, fsBool pDefault) const;
58
59 void removeKeysContaining(const fsStr& pPartialKey);
60
61 fsBool keyExistsGet(const fsStr& pKey) const;
62
63 void merge(fsCVariableTable* pIncoming);
64
65 void s32Set(const fsStr& pKey, fsS32 pVal);
66 void f32Set(const fsStr& pKey, fsF32 pVal);
67 void strSet(const fsStr& pKey, const fsStr& pVal);
68 void boolSet(const fsStr& pKey, fsBool pVal);
69
70 fsS32 load(const fsCResourceName& pFileName);
71 void save(const fsCResourceName& pFileName) const;
72 fsS32 loadResultGet() const;
74
76 virtual ~fsCVariableTable();
77
78protected:
79
80 static const fsStr mBoolTrueStr;
81 static const fsStr mAltBoolTrueStr;
82 static const fsStr mBoolFalseStr;
83
84 static fsStr downcased(const fsStr& pKey);
85
87
89
90private:
91
92 struct FncForEach
93 {
94 virtual void operator()(VarTableMap::value_type& entry)
95 {
96 }
97 };
98
99 void forEachLayer(FncForEach& pFnc);
100
101 void bufferParse(fsStr& pDataBuffer);
102 void bufferParseYaml(const fsStr& pDataBuffer);
103
104 // Mirrors fsIGuiComponent::newGrammarFileNameResolve: swap the legacy
105 // extension for ".yaml" and use it if present, otherwise fall back to
106 // the legacy file untouched. Lets a title opt into YAML settings without
107 // converting anything - the .txt loader keeps working unmodified.
108 // pLocation is a fsCResourceName::eResourceLocation, taken as fsS32 so this
109 // header can keep forward-declaring fsCResourceName rather than including it.
110 static fsBool yamlFileNameResolve(const fsStr& pLegacyFileName, fsS32 pLocation,
111 fsStr& pOutResolvedFileName);
112
113 static fsBool stringCheck(fsChar pChar);
114
115 static void whiteSpaceSkip(fsChar*& pChar);
116 void copyToTerminator(fsChar*& pChar, fsBool pIsString, fsStr& pDest);
117
118 fsStr mFileName;
119};
120
121#endif
Definition fsCResourceName.h:32
Definition fsCVariableTable.h:27
fsStr strGet(const fsStr &pKey) const
Definition fsCVariableTable.cpp:107
static const fsStr mBoolTrueStr
Definition fsCVariableTable.h:80
fsBool boolGet(const fsStr &pKey) const
Definition fsCVariableTable.cpp:124
fsF32 f32Get(const fsStr &pKey) const
Definition fsCVariableTable.cpp:75
fsF32 f32GetWithDefault(const fsStr &pKey, fsF32 pDefault) const
Definition fsCVariableTable.cpp:80
std::vector< fsStr > partKeyCollectionGet(const fsStr &pPartKey) const
Definition fsCVariableTable.cpp:29
static fsStr downcased(const fsStr &pKey)
Definition fsCVariableTable.cpp:44
friend class CVarTableComparer
Definition fsCVariableTable.h:28
fsS32 mLoadResult
Definition fsCVariableTable.h:88
virtual ~fsCVariableTable()
Definition fsCVariableTable.cpp:400
const fsStr & fileNameGet() const
Definition fsCVariableTable.h:46
std::vector< fsStr > partValueCollectionGet(const fsStr &pPartVal) const
Definition fsCVariableTable.cpp:16
static const fsStr mBoolFalseStr
Definition fsCVariableTable.h:82
fsS32 load(const fsCResourceName &pFileName)
Definition fsCVariableTable.cpp:249
fsS32 s32GetWithDefault(const fsStr &pKey, fsS32 pDefault) const
Definition fsCVariableTable.cpp:96
fsStr strGetWithDefault(const fsStr &pKey, const fsStr &pDefault) const
Definition fsCVariableTable.cpp:112
fsBool keyExistsGet(const fsStr &pKey) const
Definition fsCVariableTable.cpp:141
void boolSet(const fsStr &pKey, fsBool pVal)
Definition fsCVariableTable.cpp:192
fsCVariableTable()
Definition fsCVariableTable.cpp:394
void s32Set(const fsStr &pKey, fsS32 pVal)
Definition fsCVariableTable.cpp:146
static const fsStr mAltBoolTrueStr
Definition fsCVariableTable.h:81
VarTableMap mEntries
Definition fsCVariableTable.h:86
fsBool successfullLoadGet() const
Definition fsCVariableTable.cpp:383
void f32Set(const fsStr &pKey, fsF32 pVal)
Definition fsCVariableTable.cpp:162
fsBool boolGetWithDefault(const fsStr &pKey, fsBool pDefault) const
Definition fsCVariableTable.cpp:129
void merge(fsCVariableTable *pIncoming)
Definition fsCVariableTable.cpp:207
void removeKeysContaining(const fsStr &pPartialKey)
Definition fsCVariableTable.cpp:53
fsS32 loadResultGet() const
Definition fsCVariableTable.cpp:389
fsS32 s32Get(const fsStr &pKey) const
Definition fsCVariableTable.cpp:91
void save(const fsCResourceName &pFileName) const
Definition fsCVariableTable.cpp:371
@ eLOAD_RESULT_INVALID
Definition fsCVariableTable.h:35
@ eLOAD_RESULT_FAIL_FILE_NOT_FOUND
Definition fsCVariableTable.h:41
@ eLOAD_RESULT_SUCCESS_NO_CHECKSUM
Definition fsCVariableTable.h:37
@ eLOAD_RESULT_FAIL_READ_ERROR
Definition fsCVariableTable.h:42
@ eLOAD_RESULT_FAIL_FILESYSTEM_NOT_READY
Definition fsCVariableTable.h:40
@ eLOAD_RESULT_FAIL_CHECKSUM_INVALID
Definition fsCVariableTable.h:43
@ eLOAD_RESULT_SUCCESS_WITH_CHECKSUM
Definition fsCVariableTable.h:38
friend class CStringsFile
Definition fsCVariableTable.h:29
void strSet(const fsStr &pKey, const fsStr &pVal)
Definition fsCVariableTable.cpp:178
Definition fsStr.h:23
std::map< fsStr, fsStr > VarTableMap
Definition fsCVariableTable.h:23
bool fsBool
Definition fsBaseTypes.h:26
int fsS32
Definition fsBaseTypes.h:20
char fsChar
Definition fsBaseTypes.h:12
float fsF32
Definition fsBaseTypes.h:28