MCPcopy Create free account
hub / github.com/acl-dev/acl / gen_pack_code

Method gen_pack_code

lib_acl_cpp/src/serialize/gsoner.cpp:175–249  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

173}
174
175gsoner::function_code_t gsoner::gen_pack_code(const object_t &obj)
176{
177 function_code_t code;
178 std::string str;
179 str += "acl::json_node& gson(acl::json &$json, const ";
180 str += obj.name_;
181
182 code.declare_ptr_ = str;
183 code.declare_ptr_ += " *$obj);";
184 code.declare2_ = "acl::string gson(const ";
185 code.declare2_ += obj.name_;
186 code.declare2_ += " &$obj);";
187 code.definition2_ = code.declare2_.substr(0, code.declare2_.find(";"));
188 code.definition2_ += "\n{\n"
189 " acl::json $json;\n"
190 " acl::json_node &$node = acl::gson ($json, $obj);\n"
191 " return $node.to_string ();\n}\n\n";
192
193 code.definition_ptr_ = "\n";
194 code.definition_ptr_ += str;
195 code.definition_ptr_ += " *$obj)\n"
196 "{\n"
197 " return gson ($json, *$obj);\n"
198 "}\n\n";
199 str += " &$obj)";
200
201 code.declare_ = str;
202 code.declare_ += ";";
203
204 str += "\n{\n";
205 str += tab_;
206 str += "acl::json_node &$node = $json.create_node();\n\n";
207
208 /*
209 if (check_nullptr(obj.string_ptr))
210 node.add_null("string_ptr");
211 else
212 node.add_text("string_ptr", acl::get_value(obj.string_ptr));
213 */
214 for (object_t::fields_t::const_iterator itr = obj.fields_.begin();
215 itr != obj.fields_.end(); ++itr) {
216
217 str += tab_;
218 str += "if (check_nullptr($obj."+itr->name_+"))\n";
219 str += tab_;
220 str += tab_;
221 str += "$node.add_null(\""+itr->name_+"\");\n";
222 str += tab_;
223 str += "else\n";
224 str += tab_;
225 str += tab_;
226 str += "$node.";
227 str += get_node_func(*itr);
228 str += "(\"";
229 str += itr->name_;
230 str += "\", ";
231 str += get_gson_func_laber(*itr);
232 str += "$obj.";

Callers

nothing calls this directly

Calls 5

substrMethod · 0.80
beginMethod · 0.80
findMethod · 0.45
endMethod · 0.45
emptyMethod · 0.45

Tested by

no test coverage detected