MCPcopy Create free account
hub / github.com/crownengine/crown / parse_object

Function parse_object

src/core/json/json.cpp:239–281  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

237 }
238
239 void parse_object(JsonObject &obj, const char *json)
240 {
241 CE_ENSURE(NULL != json);
242
243 if (*json == '{') {
244 json = skip_spaces(++json);
245
246 if (*json == '}') {
247 obj._end = json + 1;
248 return;
249 }
250
251 while (*json) {
252 const char *key_begin = *json == '"' ? (json + 1) : json;
253
254 TempAllocator256 ta;
255 DynamicString key(ta);
256 parse_string(key, json);
257
258 StringView fs_key(key_begin, key.length());
259
260 json = skip_string(json);
261 json = skip_spaces(json);
262 json = next(json, ':');
263 json = skip_spaces(json);
264
265 hash_map::set(obj._map, fs_key, json);
266
267 json = skip_value(json);
268 json = skip_spaces(json);
269
270 if (*json == '}') {
271 obj._end = json + 1;
272 return;
273 }
274
275 json = next(json, ',');
276 json = skip_spaces(json);
277 }
278 }
279
280 CE_FATAL("Bad object");
281 }
282
283 void parse(JsonObject &obj, const char *json)
284 {

Callers 15

parseFunction · 0.70
test_jsonFunction · 0.50
test_sjsonFunction · 0.50
compileFunction · 0.50
parse_uniformsFunction · 0.50
parse_outputFunction · 0.50
compileFunction · 0.50
parse_statesMethod · 0.50
parse_render_stateMethod · 0.50
parse_render_statesMethod · 0.50
parse_sampler_statesMethod · 0.50

Calls 7

skip_spacesFunction · 0.85
setClass · 0.85
parse_stringFunction · 0.70
skip_stringFunction · 0.70
nextFunction · 0.70
skip_valueFunction · 0.70
lengthMethod · 0.45

Tested by 2

test_jsonFunction · 0.40
test_sjsonFunction · 0.40