| 173 | } |
| 174 | |
| 175 | gsoner::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."; |