MCPcopy Create free account
hub / github.com/Illation/ETEngine / ParseObject

Method ParseObject

Engine/source/EtCore/FileSystem/Json/JsonParser.cpp:82–147  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

80}
81
82JSON::Object* JSON::Parser::ParseObject(const std::string & textFile)
83{
84 JSON::Object* ret = new JSON::Object;
85 bool parseSuccess = false;
86 bool parseFail = false;
87 bool prevPair = false;
88 bool prevDelim = false;
89 while (!m_Completed && !parseSuccess && !parseFail)
90 {
91 MoveToNonWhitespace(textFile);
92 if(CheckEOF(textFile))continue;
93 Token token = ReadToken(textFile);
94 if(!(token == JT_EndObject) && CheckEOF(textFile))continue;
95 switch (token)
96 {
97 case JT_EndObject:
98 if(prevDelim)
99 {
100 LOG("Expected a new Key Value pair after delimiter", Warning);
101 parseFail = true;
102 continue;
103 }
104 parseSuccess = true;
105 break;
106 case JT_String:
107 {
108 if (prevPair)
109 {
110 LOG("Expected a delimiter before new key value pair", Warning);
111 parseFail = true;
112 continue;
113 }
114 prevDelim = false;
115 JSON::Pair keyVal = ParsePair(textFile);
116 if (keyVal.second)
117 {
118 ret->value.push_back(keyVal);
119 prevPair = true;
120 continue;
121 }
122 parseFail = true;
123 continue;
124 }
125 case JT_Delim:
126 if (!prevPair)
127 {
128 LOG("Expected a new Key Value pair before delimiter", Warning);
129 parseFail = true;
130 continue;
131 }
132 prevPair = false;
133 prevDelim = true;
134 continue;
135 default:
136 parseFail = true;
137 continue;
138 }
139 }

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected