YourCityInvadedByAliens
Documentation for code of the game
yjson.h
Go to the documentation of this file.
1 #pragma once
2 #include <string>
3 #include <map>
4 #include <vector>
5 
6 enum class YJsonObjectType {
7  UNDEFINED,
8  STRING,
9  NUMBER,
10  OBJECT,
11  ARRAY
12 };
13 
14 class YJsonObject {
15  public:
16  YJsonObject();
17  ~YJsonObject();
18  bool isUndefined();
19 
20  bool isString();
21  void doString();
22  std::string getString() const;
23  void setString(std::string sValue);
24 
25  bool isNumber();
26  void doNumber();
27  int getNumber() const;
28  void setNumber(int nValue);
29 
30  bool isObject();
31  void doObject();
32  std::vector<std::string> getKeys() const;
33  const YJsonObject &operator[](const std::string &sName) const;
34  void addKeyValue(const std::string &sKey, YJsonObject *pValue);
35  bool containsKey(const std::string &sKey) const;
36 
37  bool isArray() const;
38  void doArray();
39  void push(YJsonObject *pValue);
40  int length() const;
41  const YJsonObject &operator[](int nIndex) const;
42 
43  private:
44  void reset();
45  std::string TAG;
47  std::string m_sValue;
48  int m_nValue;
49  std::map<std::string, YJsonObject *> m_mapObjects;
50  std::vector<YJsonObject *> m_arrObjects;
51 };
52 
53 enum class YJsonParserState {
54  START_KEY,
56  END_KEY,
59  END_VALUE,
65  END
66 };
67 
68 class YJson {
69  public:
70  YJson();
71  YJson(const std::string &sFilename);
72  bool isParserFailed();
73  std::vector<std::string> getKeys() const;
74  const YJsonObject &operator[](const std::string &sName) const;
75 
76  private:
77  bool toParse(const std::string &sLine);
78  bool isSkipChar(char c);
80  void popObjectFromStack();
82  void printParserError(const std::string &sDescription);
84  std::string m_sLineParse;
85  std::string m_sFilename;
90  std::vector<YJsonObject *> m_vParserStack;
91  std::string sParseKeyName;
92  std::string sParseKeyValue;
93  std::string m_sValue;
94 };
YJsonObjectType::UNDEFINED
@ UNDEFINED
YJsonParserState::END_VALUE_NUMBER
@ END_VALUE_NUMBER
YJsonObject::containsKey
bool containsKey(const std::string &sKey) const
Definition: yjson.cpp:117
YJsonParserState::END_KEY
@ END_KEY
YJsonParserState::START_VALUES_ARRAY
@ START_VALUES_ARRAY
YJson::getKeys
std::vector< std::string > getKeys() const
Definition: yjson.cpp:214
YJsonObject::setNumber
void setNumber(int nValue)
Definition: yjson.cpp:67
YJson::m_vParserStack
std::vector< YJsonObject * > m_vParserStack
Definition: yjson.h:90
YJsonObjectType::STRING
@ STRING
YJsonObject::setString
void setString(std::string sValue)
Definition: yjson.cpp:41
YJsonParserState::START_VALUE_NUMBER
@ START_VALUE_NUMBER
YJsonParserState::START_KEY
@ START_KEY
YJson::m_sFilename
std::string m_sFilename
Definition: yjson.h:85
YJsonObject::YJsonObject
YJsonObject()
Definition: yjson.cpp:9
YJson::operator[]
const YJsonObject & operator[](const std::string &sName) const
Definition: yjson.cpp:218
YJsonObject::getKeys
std::vector< std::string > getKeys() const
Definition: yjson.cpp:86
YJson::sParseKeyName
std::string sParseKeyName
Definition: yjson.h:91
YJsonObjectType::NUMBER
@ NUMBER
YJsonObject::m_nValue
int m_nValue
Definition: yjson.h:48
YJsonObject::getString
std::string getString() const
Definition: yjson.cpp:34
YJsonObject
Definition: yjson.h:14
YJsonObject::isObject
bool isObject()
Definition: yjson.cpp:74
YJson
Definition: yjson.h:68
YJson::m_root
YJsonObject m_root
Definition: yjson.h:88
YJson::YJson
YJson()
Definition: yjson.cpp:184
YJsonObject::doNumber
void doNumber()
Definition: yjson.cpp:52
YJson::m_sLineParse
std::string m_sLineParse
Definition: yjson.h:84
YJsonObject::TAG
std::string TAG
Definition: yjson.h:45
YJson::popObjectFromStack
void popObjectFromStack()
Definition: yjson.cpp:494
YJsonObject::doString
void doString()
Definition: yjson.cpp:26
YJsonObject::length
int length() const
Definition: yjson.cpp:144
YJsonParserState::END
@ END
YJsonObject::isNumber
bool isNumber()
Definition: yjson.cpp:48
YJsonObjectType::ARRAY
@ ARRAY
YJsonObject::isString
bool isString()
Definition: yjson.cpp:22
YJson::sParseKeyValue
std::string sParseKeyValue
Definition: yjson.h:92
YJson::isSkipChar
bool isSkipChar(char c)
Definition: yjson.cpp:485
YJsonParserState
YJsonParserState
Definition: yjson.h:53
YJsonObject::reset
void reset()
Definition: yjson.cpp:162
YJsonObject::m_arrObjects
std::vector< YJsonObject * > m_arrObjects
Definition: yjson.h:50
YJsonObject::doObject
void doObject()
Definition: yjson.cpp:78
YJsonObject::isUndefined
bool isUndefined()
Definition: yjson.cpp:18
YJsonParserState::START_KEY_NAME
@ START_KEY_NAME
YJsonObjectType
YJsonObjectType
Definition: yjson.h:6
YJsonObject::doArray
void doArray()
Definition: yjson.cpp:129
YJsonParserState::START_OBJECT
@ START_OBJECT
YJson::m_sValue
std::string m_sValue
Definition: yjson.h:93
YJson::m_bStartRoot
bool m_bStartRoot
Definition: yjson.h:89
YJsonParserState::START_VALUE_STRING
@ START_VALUE_STRING
YJsonObject::isArray
bool isArray() const
Definition: yjson.cpp:125
YJson::toParse
bool toParse(const std::string &sLine)
Definition: yjson.cpp:222
YJsonParserState::END_VALUE
@ END_VALUE
YJsonObject::~YJsonObject
~YJsonObject()
Definition: yjson.cpp:14
YJson::m_bParserFailed
bool m_bParserFailed
Definition: yjson.h:86
YJsonParserState::START_VALUE_OBJECT
@ START_VALUE_OBJECT
YJson::pushObjectToStack
void pushObjectToStack(YJsonObject *)
Definition: yjson.cpp:489
YJson::isParserFailed
bool isParserFailed()
Definition: yjson.cpp:210
YJsonObject::addKeyValue
void addKeyValue(const std::string &sKey, YJsonObject *pValue)
Definition: yjson.cpp:110
YJsonObject::getNumber
int getNumber() const
Definition: yjson.cpp:60
YJson::getLastObjectFromStack
YJsonObject * getLastObjectFromStack()
Definition: yjson.cpp:502
YJsonParserState::START_VALUE
@ START_VALUE
YJsonObject::m_mapObjects
std::map< std::string, YJsonObject * > m_mapObjects
Definition: yjson.h:49
YJsonObjectType::OBJECT
@ OBJECT
YJsonObject::push
void push(YJsonObject *pValue)
Definition: yjson.cpp:137
YJson::m_nParserState
YJsonParserState m_nParserState
Definition: yjson.h:87
YJsonObject::operator[]
const YJsonObject & operator[](const std::string &sName) const
Definition: yjson.cpp:96
YJsonObject::m_nType
YJsonObjectType m_nType
Definition: yjson.h:46
YJson::printParserError
void printParserError(const std::string &sDescription)
Definition: yjson.cpp:510
YJsonObject::m_sValue
std::string m_sValue
Definition: yjson.h:47
YJson::m_nLineNumber
int m_nLineNumber
Definition: yjson.h:83