MCPcopy Create free account
hub / github.com/URLab-Sim/UnrealRoboticsLab / PackJsonValue

Function PackJsonValue

Source/URLab/Private/Bridge/MsgpackHelpers.cpp:105–150  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

103
104template <typename Stream>
105void PackJsonValue(clmdep_msgpack::packer<Stream>& Packer, const TSharedPtr<FJsonValue>& V)
106{
107 if (!V.IsValid())
108 {
109 Packer.pack_nil();
110 return;
111 }
112
113 switch (V->Type)
114 {
115 case EJson::Null:
116 Packer.pack_nil();
117 return;
118 case EJson::Boolean:
119 Packer.pack(V->AsBool());
120 return;
121 case EJson::Number:
122 // Always pack numbers as float64. Bridge side decodes via
123 // msgpack and gets Python `float`, which is float64.
124 Packer.pack(V->AsNumber());
125 return;
126 case EJson::String:
127 {
128 FString S;
129 V->TryGetString(S);
130 PackString(Packer, S);
131 return;
132 }
133 case EJson::Array:
134 {
135 const TArray<TSharedPtr<FJsonValue>>& Arr = V->AsArray();
136 Packer.pack_array(Arr.Num());
137 for (const auto& E : Arr)
138 PackJsonValue(Packer, E);
139 return;
140 }
141 case EJson::Object:
142 {
143 PackJsonObjectInner(Packer, V->AsObject());
144 return;
145 }
146 default:
147 Packer.pack_nil();
148 return;
149 }
150}
151} // namespace
152
153void FURLabMsgpackUtil::PackJsonObject(const TSharedPtr<FJsonObject>& Object, TArray<uint8>& OutBuf)

Callers 1

PackJsonObjectInnerFunction · 0.85

Calls 3

PackStringFunction · 0.85
PackJsonObjectInnerFunction · 0.85
IsValidMethod · 0.80

Tested by

no test coverage detected