// FIXME: check for memory leaks void Network::writeJSON(JSONcontext* ctx,const char* file){ GError *error; JsonGenerator* gen=json_generator_new (); json_generator_set_root(gen,ctx->root); JsonArray* jnodes=json_object_get_array_member(json_node_get_object (ctx->root),"nodes"); int i; int n=nodes->size(); for(i=0;i<n;i++){ // add x,y position to json object JsonObject *node=json_array_get_object_element(jnodes,(*(ctx->nodeidx))[i]); //get corresponding json node using nodeidx JsonObject *data=json_object_get_object_member(node,"data"); json_object_set_double_member(data,"x",(*nodes)[i].pts.x); json_object_set_double_member(data,"y",(*nodes)[i].pts.y); } json_generator_to_file(gen,file,&error); if (error) { g_print ("Unable to write `%s': %s\n", file, error->message); g_error_free (error); abort(); } }
void trg_prefs_add_default_double(TrgPrefs * p, const gchar * key, double value) { TrgPrefsPrivate *priv = p->priv; json_object_set_double_member(priv->defaultsObj, key, value); }
/** * json_builder_add_double_value: * @builder: a #JsonBuilder * @value: the value of the member or element * * If called after json_builder_set_member_name(), sets @value as member of the * most recent opened object, otherwise @value is added as element of the most * recent opened array. * * See also: json_builder_add_value() * * Return value: (transfer none): the #JsonBuilder, or %NULL if the call was inconsistent */ JsonBuilder * json_builder_add_double_value (JsonBuilder *builder, gdouble value) { JsonBuilderState *state; g_return_val_if_fail (JSON_IS_BUILDER (builder), NULL); g_return_val_if_fail (!g_queue_is_empty (builder->priv->stack), NULL); g_return_val_if_fail (json_builder_is_valid_add_mode (builder), NULL); state = g_queue_peek_head (builder->priv->stack); switch (state->mode) { case JSON_BUILDER_MODE_MEMBER: json_object_set_double_member (state->data.object, state->member_name, value); g_free (state->member_name); state->member_name = NULL; state->mode = JSON_BUILDER_MODE_OBJECT; break; case JSON_BUILDER_MODE_ARRAY: json_array_add_double_element (state->data.array, value); break; default: g_assert_not_reached (); } return builder; }
/** * couchdb_struct_field_set_double_field: * @sf: A #CouchdbStructField object * @field: Name of the field * @calue: Value to set the field to * * Set the value of a decimal number field in the given struct field. */ void couchdb_struct_field_set_double_field (CouchdbStructField *sf, const char *field, gdouble value) { g_return_if_fail (sf != NULL); g_return_if_fail (field != NULL); json_object_set_double_member (sf->json_object, field, value); }
void trg_json_widget_spin_double_save(GtkWidget * widget, JsonObject * obj, gchar * key) { json_object_set_double_member(obj, key, gtk_spin_button_get_value(GTK_SPIN_BUTTON (widget))); }
/* Params utils */ static gboolean melo_jsonrpc_add_node (JsonNode *node, JsonObject *schema, JsonObject *obj, JsonArray *array) { GType vtype = G_TYPE_INVALID; const gchar *s_name; const gchar *s_type; JsonNodeType type; /* Get name and type from schema */ s_name = json_object_get_string_member (schema, "name"); s_type = json_object_get_string_member (schema, "type"); if (!s_name || !s_type) return FALSE; /* Get type */ type = json_node_get_node_type (node); if (type == JSON_NODE_VALUE) vtype = json_node_get_value_type (node); /* Check type: * We check only first letter of the type string. */ switch (s_type[0]) { case 'b': /* Boolean: check type */ if (vtype != G_TYPE_BOOLEAN) return FALSE; /* Add to object / array */ if (obj || array) { gboolean v; v = json_node_get_boolean (node); if (obj) json_object_set_boolean_member (obj, s_name, v); else json_array_add_boolean_element (array, v); break; } break; case 'i': /* Integer: check type */ if (vtype != G_TYPE_INT64) return FALSE; /* Add to object / array */ if (obj || array) { gint64 v; v = json_node_get_int (node); if (obj) json_object_set_int_member (obj, s_name, v); else json_array_add_int_element (array, v); } break; case 'd': /* Double: check type */ if (vtype != G_TYPE_DOUBLE) return FALSE; /* Add to object / array */ if (obj || array) { gdouble v; v = json_node_get_double (node); if (obj) json_object_set_double_member (obj, s_name, v); else json_array_add_double_element (array, v); } break; case 's': /* String: check type */ if (vtype != G_TYPE_STRING) return FALSE; /* Add to object / array */ if (obj || array) { const gchar *v; v = json_node_get_string (node); if (obj) json_object_set_string_member (obj, s_name, v); else json_array_add_string_element (array, v); } break; case 'o': /* Object: check type */ if (type != JSON_NODE_OBJECT) return FALSE; /* Add to object / array */ if (obj || array) { JsonObject *v; v = json_node_dup_object (node); if (obj) json_object_set_object_member (obj, s_name, v); else json_array_add_object_element (array, v); } break; case 'a': /* Array: check type */ if (type != JSON_NODE_ARRAY) return FALSE; /* Add to object / array */ if (obj || array) { JsonArray *v; v = json_node_dup_array (node); if (obj) json_object_set_array_member (obj, s_name, v); else json_array_add_array_element (array, v); } break; default: return FALSE; } return TRUE; }