/** * json_node_init_null: * @node: the #JsonNode to initialize * * Initializes @node to %JSON_NODE_NULL. * * If the node has already been initialized once, it will be reset to * the given type, and any data contained will be cleared. * * Return value: (transfer none): the initialized #JsonNode * * Since: 0.16 */ JsonNode * json_node_init_null (JsonNode *node) { g_return_val_if_fail (node != NULL, NULL); return json_node_init (node, JSON_NODE_NULL); }
/** * json_node_new: (constructor) * @type: a #JsonNodeType * * Creates a new #JsonNode of @type. * * This is a convenience function for json_node_alloc() and json_node_init(), * and it's the equivalent of: * * |[<!-- language="C" --> json_node_init (json_node_alloc (), type); * ]| * * Return value: (transfer full): the newly created #JsonNode */ JsonNode * json_node_new (JsonNodeType type) { g_return_val_if_fail (type >= JSON_NODE_OBJECT && type <= JSON_NODE_NULL, NULL); return json_node_init (json_node_alloc (), type); }
/** * json_node_init_string: * @node: the #JsonNode to initialize * @value: (allow-none): a string value * * Initializes @node to %JSON_NODE_VALUE and sets @value into it. * * If the node has already been initialized once, it will be reset to * the given type, and any data contained will be cleared. * * Return value: (transfer none): the initialized #JsonNode * * Since: 0.16 */ JsonNode * json_node_init_string (JsonNode *node, const char *value) { g_return_val_if_fail (node != NULL, NULL); json_node_init (node, JSON_NODE_VALUE); json_node_set_string (node, value); return node; }
/** * json_node_init_boolean: * @node: the #JsonNode to initialize * @value: a boolean value * * Initializes @node to %JSON_NODE_VALUE and sets @value into it. * * If the node has already been initialized once, it will be reset to * the given type, and any data contained will be cleared. * * Return value: (transfer none): the initialized #JsonNode * * Since: 0.16 */ JsonNode * json_node_init_boolean (JsonNode *node, gboolean value) { g_return_val_if_fail (node != NULL, NULL); json_node_init (node, JSON_NODE_VALUE); json_node_set_boolean (node, value); return node; }
/** * json_node_init_double: * @node: the #JsonNode to initialize * @value: a floating point value * * Initializes @node to %JSON_NODE_VALUE and sets @value into it. * * If the node has already been initialized once, it will be reset to * the given type, and any data contained will be cleared. * * Return value: (transfer none): the initialized #JsonNode * * Since: 0.16 */ JsonNode * json_node_init_double (JsonNode *node, gdouble value) { g_return_val_if_fail (node != NULL, NULL); json_node_init (node, JSON_NODE_VALUE); json_node_set_double (node, value); return node; }
/** * json_node_init_array: * @node: the #JsonNode to initialize * @array: (allow-none): the #JsonArray to initialize @node with, or %NULL * * Initializes @node to %JSON_NODE_ARRAY and sets @array into it. * * This function will take a reference on @array. * * If the node has already been initialized once, it will be reset to * the given type, and any data contained will be cleared. * * Return value: (transfer none): the initialized #JsonNode * * Since: 0.16 */ JsonNode * json_node_init_array (JsonNode *node, JsonArray *array) { g_return_val_if_fail (node != NULL, NULL); json_node_init (node, JSON_NODE_ARRAY); json_node_set_array (node, array); return node; }
/** * json_node_init_object: * @node: the #JsonNode to initialize * @object: (allow-none): the #JsonObject to initialize @node with, or %NULL * * Initializes @node to %JSON_NODE_OBJECT and sets @object into it. * * This function will take a reference on @object. * * If the node has already been initialized once, it will be reset to * the given type, and any data contained will be cleared. * * Return value: (transfer none): the initialized #JsonNode * * Since: 0.16 */ JsonNode * json_node_init_object (JsonNode *node, JsonObject *object) { g_return_val_if_fail (node != NULL, NULL); json_node_init (node, JSON_NODE_OBJECT); json_node_set_object (node, object); return node; }
JsonNode * json_serialize_pspec (const GValue *real_value, GParamSpec *pspec) { JsonNode *retval = NULL; JsonNodeType node_type; switch (G_TYPE_FUNDAMENTAL (G_VALUE_TYPE (real_value))) { /* JSON native types */ case G_TYPE_INT64: retval = json_node_init_int (json_node_alloc (), g_value_get_int64 (real_value)); break; case G_TYPE_BOOLEAN: retval = json_node_init_boolean (json_node_alloc (), g_value_get_boolean (real_value)); break; case G_TYPE_DOUBLE: retval = json_node_init_double (json_node_alloc (), g_value_get_double (real_value)); break; case G_TYPE_STRING: retval = json_node_init_string (json_node_alloc (), g_value_get_string (real_value)); break; /* auto-promoted types */ case G_TYPE_INT: retval = json_node_init_int (json_node_alloc (), g_value_get_int (real_value)); break; case G_TYPE_UINT: retval = json_node_init_int (json_node_alloc (), g_value_get_uint (real_value)); break; case G_TYPE_LONG: retval = json_node_init_int (json_node_alloc (), g_value_get_long (real_value)); break; case G_TYPE_ULONG: retval = json_node_init_int (json_node_alloc (), g_value_get_ulong (real_value)); break; case G_TYPE_UINT64: retval = json_node_init_int (json_node_alloc (), g_value_get_uint64 (real_value)); break; case G_TYPE_FLOAT: retval = json_node_init_double (json_node_alloc (), g_value_get_float (real_value)); break; case G_TYPE_CHAR: retval = json_node_alloc (); json_node_init_int (retval, g_value_get_schar (real_value)); break; case G_TYPE_UCHAR: retval = json_node_init_int (json_node_alloc (), g_value_get_uchar (real_value)); break; case G_TYPE_ENUM: retval = json_node_init_int (json_node_alloc (), g_value_get_enum (real_value)); break; case G_TYPE_FLAGS: retval = json_node_init_int (json_node_alloc (), g_value_get_flags (real_value)); break; /* complex types */ case G_TYPE_BOXED: if (G_VALUE_HOLDS (real_value, G_TYPE_STRV)) { gchar **strv = g_value_get_boxed (real_value); gint i, strv_len; JsonArray *array; strv_len = g_strv_length (strv); array = json_array_sized_new (strv_len); for (i = 0; i < strv_len; i++) { JsonNode *str = json_node_new (JSON_NODE_VALUE); json_node_set_string (str, strv[i]); json_array_add_element (array, str); } retval = json_node_init_array (json_node_alloc (), array); json_array_unref (array); } else if (json_boxed_can_serialize (G_VALUE_TYPE (real_value), &node_type)) { gpointer boxed = g_value_get_boxed (real_value); retval = json_boxed_serialize (G_VALUE_TYPE (real_value), boxed); } else g_warning ("Boxed type '%s' is not handled by JSON-GLib", g_type_name (G_VALUE_TYPE (real_value))); break; case G_TYPE_OBJECT: { GObject *object = g_value_get_object (real_value); retval = json_node_alloc (); if (object != NULL) { json_node_init (retval, JSON_NODE_OBJECT); json_node_take_object (retval, json_gobject_dump (object)); } else json_node_init_null (retval); } break; case G_TYPE_NONE: retval = json_node_new (JSON_NODE_NULL); break; default: g_warning ("Unsupported type `%s'", g_type_name (G_VALUE_TYPE (real_value))); break; } return retval; }