MCPcopy Create free account
hub / github.com/Project-OSRM/osrm-backend / convert

Function convert

src/benchmarks/json_render.cpp:23–75  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

21static std::unordered_set<std::string> gKeysHolder;
22
23void convert(const rapidjson::Value &value, json::Value &result)
24{
25 if (value.IsString())
26 {
27 result = json::String{value.GetString()};
28 }
29 else if (value.IsNumber())
30 {
31 result = json::Number{value.GetDouble()};
32 }
33 else if (value.IsObject())
34 {
35 json::Object object;
36 for (auto itr = value.MemberBegin(); itr != value.MemberEnd(); ++itr)
37 {
38 json::Value member;
39 convert(itr->value, member);
40 auto keyItr = gKeysHolder.emplace(itr->name.GetString()).first;
41 object.values.emplace(*keyItr, std::move(member));
42 }
43 result = std::move(object);
44 }
45 else if (value.IsArray())
46 {
47 json::Array array;
48 for (auto itr = value.Begin(); itr != value.End(); ++itr)
49 {
50 json::Value member;
51 convert(*itr, member);
52 array.values.push_back(std::move(member));
53 }
54 result = std::move(array);
55 }
56 else if (value.IsBool())
57 {
58 if (value.GetBool())
59 {
60 result = json::True{};
61 }
62 else
63 {
64 result = json::False{};
65 }
66 }
67 else if (value.IsNull())
68 {
69 result = json::Null{};
70 }
71 else
72 {
73 throw std::runtime_error("unknown type");
74 }
75}
76
77json::Object load(const char *filename)
78{

Callers 1

loadFunction · 0.85

Calls 4

emplaceMethod · 0.45
BeginMethod · 0.45
EndMethod · 0.45
push_backMethod · 0.45

Tested by

no test coverage detected