MCPcopy Create free account
hub / github.com/R2Northstar/NorthstarLauncher / DecodeJsonArray

Function DecodeJsonArray

primedev/scripts/scriptjson.cpp:13–49  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

11
12template <ScriptContext context>
13void DecodeJsonArray(HSQUIRRELVM sqvm, rapidjson::GenericValue<rapidjson::UTF8<char>, rapidjson::MemoryPoolAllocator<SourceAllocator>>* arr)
14{
15 g_pSquirrel[context]->newarray(sqvm, 0);
16
17 for (auto& itr : arr->GetArray())
18 {
19 switch (itr.GetType())
20 {
21 case rapidjson::kObjectType:
22 DecodeJsonTable<context>(sqvm, &itr);
23 g_pSquirrel[context]->arrayappend(sqvm, -2);
24 break;
25 case rapidjson::kArrayType:
26 DecodeJsonArray<context>(sqvm, &itr);
27 g_pSquirrel[context]->arrayappend(sqvm, -2);
28 break;
29 case rapidjson::kStringType:
30 g_pSquirrel[context]->pushstring(sqvm, itr.GetString(), -1);
31 g_pSquirrel[context]->arrayappend(sqvm, -2);
32 break;
33 case rapidjson::kTrueType:
34 case rapidjson::kFalseType:
35 g_pSquirrel[context]->pushbool(sqvm, itr.GetBool());
36 g_pSquirrel[context]->arrayappend(sqvm, -2);
37 break;
38 case rapidjson::kNumberType:
39 if (itr.IsDouble() || itr.IsFloat())
40 g_pSquirrel[context]->pushfloat(sqvm, itr.GetFloat());
41 else
42 g_pSquirrel[context]->pushinteger(sqvm, itr.GetInt());
43 g_pSquirrel[context]->arrayappend(sqvm, -2);
44 break;
45 case rapidjson::kNullType:
46 break;
47 }
48 }
49}
50
51template <ScriptContext context>
52void DecodeJsonTable(HSQUIRRELVM sqvm, rapidjson::GenericValue<rapidjson::UTF8<char>, rapidjson::MemoryPoolAllocator<SourceAllocator>>* obj)

Callers

nothing calls this directly

Calls 10

newarrayMethod · 0.80
arrayappendMethod · 0.80
pushstringMethod · 0.80
pushboolMethod · 0.80
GetBoolMethod · 0.80
pushfloatMethod · 0.80
pushintegerMethod · 0.80
GetStringMethod · 0.45
GetFloatMethod · 0.45
GetIntMethod · 0.45

Tested by

no test coverage detected