static JsonNode* create_fault_value_response(int error_num, JsonNode *msg_node, int id) { JsonBuilder *builder = json_builder_new (); json_builder_begin_object (builder); json_builder_set_member_name (builder, "jsonrpc"); json_builder_add_string_value (builder, "2.0"); json_builder_set_member_name (builder, "error"); json_builder_begin_object(builder); json_builder_set_member_name (builder, "code"); json_builder_add_int_value(builder, error_num); json_builder_set_member_name (builder, "message"); json_builder_add_value (builder, json_node_copy(msg_node)); json_builder_end_object (builder); json_builder_set_member_name(builder, "id"); if (id < 0) json_builder_add_null_value(builder); else json_builder_add_int_value(builder, id); json_builder_end_object (builder); JsonNode *node = json_node_copy(json_builder_get_root (builder)); g_object_unref(builder); return node; }
static void insertToJson(gpointer name, gpointer v, gpointer user_data) { JsonBuilder *builder = (JsonBuilder *)user_data; if (name != NULL) json_builder_set_member_name (builder, (const char *)name); switch (G_VALUE_TYPE(v)) { case G_TYPE_BOOLEAN: json_builder_add_boolean_value (builder, g_value_get_boolean((GValue *)v)); break; case G_TYPE_STRING: json_builder_add_string_value (builder, g_value_get_string((GValue *)v)); break; case G_TYPE_INT: json_builder_add_int_value (builder, g_value_get_int((GValue *)v)); break; case G_TYPE_INT64: json_builder_add_int_value (builder, g_value_get_int64((GValue *)v)); break; case G_TYPE_DOUBLE: json_builder_add_double_value (builder, g_value_get_double((GValue *)v)); break; default: if (G_VALUE_TYPE(v) == G_TYPE_HASH_TABLE) { json_builder_begin_object (builder); GHashTable *map = (GHashTable *) g_value_get_boxed((GValue *)v); g_hash_table_foreach (map, insertToJson, builder); json_builder_end_object (builder); } else if (G_VALUE_TYPE(v) == G_TYPE_VALUE_ARRAY) { json_builder_begin_array (builder); GValueArray *array = (GValueArray *) g_value_get_boxed((GValue *)v); for (guint i = 0; i < array->n_values; i++) { GValue *value = g_value_array_get_nth(array, i); insertToJson(0, value, builder); } json_builder_end_array (builder); } else { g_print("unhandled type %s\n", G_VALUE_TYPE_NAME(v)); json_builder_add_null_value (builder); } break; } }
static JsonBuilder* kkc_user_rule_create_keymap (KkcRuleMetadata* parent, const gchar* name, KkcKeymap* keymap) { JsonBuilder* result = NULL; JsonBuilder* builder = NULL; JsonBuilder* _tmp0_ = NULL; JsonBuilder* _tmp1_ = NULL; JsonBuilder* _tmp2_ = NULL; JsonBuilder* _tmp3_ = NULL; JsonBuilder* _tmp4_ = NULL; KkcRuleMetadata* _tmp5_ = NULL; const gchar* _tmp6_ = NULL; const gchar* _tmp7_ = NULL; gchar* _tmp8_ = NULL; gchar* _tmp9_ = NULL; const gchar* _tmp10_ = NULL; gchar* _tmp11_ = NULL; gchar* _tmp12_ = NULL; JsonBuilder* _tmp13_ = NULL; KkcKeymap* _tmp14_ = NULL; JsonBuilder* _tmp37_ = NULL; g_return_val_if_fail (parent != NULL, NULL); g_return_val_if_fail (name != NULL, NULL); _tmp0_ = json_builder_new (); builder = _tmp0_; _tmp1_ = builder; json_builder_begin_object (_tmp1_); _tmp2_ = builder; json_builder_set_member_name (_tmp2_, "include"); _tmp3_ = builder; json_builder_begin_array (_tmp3_); _tmp4_ = builder; _tmp5_ = parent; _tmp6_ = kkc_metadata_file_get_name ((KkcMetadataFile*) _tmp5_); _tmp7_ = _tmp6_; _tmp8_ = g_strconcat (_tmp7_, "/", NULL); _tmp9_ = _tmp8_; _tmp10_ = name; _tmp11_ = g_strconcat (_tmp9_, _tmp10_, NULL); _tmp12_ = _tmp11_; json_builder_add_string_value (_tmp4_, _tmp12_); _g_free0 (_tmp12_); _g_free0 (_tmp9_); _tmp13_ = builder; json_builder_end_array (_tmp13_); _tmp14_ = keymap; if (_tmp14_ != NULL) { JsonBuilder* _tmp15_ = NULL; JsonBuilder* _tmp16_ = NULL; JsonBuilder* _tmp17_ = NULL; JsonBuilder* _tmp18_ = NULL; KkcKeymapEntry* entries = NULL; KkcKeymap* _tmp19_ = NULL; gint _tmp20_ = 0; KkcKeymapEntry* _tmp21_ = NULL; gint entries_length1 = 0; gint _entries_size_ = 0; KkcKeymapEntry* _tmp22_ = NULL; gint _tmp22__length1 = 0; JsonBuilder* _tmp35_ = NULL; JsonBuilder* _tmp36_ = NULL; _tmp15_ = builder; json_builder_set_member_name (_tmp15_, "define"); _tmp16_ = builder; json_builder_begin_object (_tmp16_); _tmp17_ = builder; json_builder_set_member_name (_tmp17_, "keymap"); _tmp18_ = builder; json_builder_begin_object (_tmp18_); _tmp19_ = keymap; _tmp21_ = kkc_keymap_local_entries (_tmp19_, &_tmp20_); entries = _tmp21_; entries_length1 = _tmp20_; _entries_size_ = entries_length1; _tmp22_ = entries; _tmp22__length1 = entries_length1; { KkcKeymapEntry* entry_collection = NULL; gint entry_collection_length1 = 0; gint _entry_collection_size_ = 0; gint entry_it = 0; entry_collection = _tmp22_; entry_collection_length1 = _tmp22__length1; for (entry_it = 0; entry_it < _tmp22__length1; entry_it = entry_it + 1) { KkcKeymapEntry _tmp23_ = {0}; KkcKeymapEntry entry = {0}; kkc_keymap_entry_copy (&entry_collection[entry_it], &_tmp23_); entry = _tmp23_; { JsonBuilder* _tmp24_ = NULL; KkcKeymapEntry _tmp25_ = {0}; KkcKeyEvent* _tmp26_ = NULL; gchar* _tmp27_ = NULL; gchar* _tmp28_ = NULL; KkcKeymapEntry _tmp29_ = {0}; const gchar* _tmp30_ = NULL; _tmp24_ = builder; _tmp25_ = entry; _tmp26_ = _tmp25_.key; _tmp27_ = kkc_key_event_to_string (_tmp26_); _tmp28_ = _tmp27_; json_builder_set_member_name (_tmp24_, _tmp28_); _g_free0 (_tmp28_); _tmp29_ = entry; _tmp30_ = _tmp29_.command; if (_tmp30_ == NULL) { JsonBuilder* _tmp31_ = NULL; _tmp31_ = builder; json_builder_add_null_value (_tmp31_); } else { JsonBuilder* _tmp32_ = NULL; KkcKeymapEntry _tmp33_ = {0}; const gchar* _tmp34_ = NULL; _tmp32_ = builder; _tmp33_ = entry; _tmp34_ = _tmp33_.command; json_builder_add_string_value (_tmp32_, _tmp34_); } kkc_keymap_entry_destroy (&entry); } } } _tmp35_ = builder; json_builder_end_object (_tmp35_); _tmp36_ = builder; json_builder_end_object (_tmp36_); entries = (_vala_KkcKeymapEntry_array_free (entries, entries_length1), NULL); } _tmp37_ = builder; json_builder_end_object (_tmp37_); result = builder; return result; }