summaryrefslogtreecommitdiff
path: root/json-glib
diff options
context:
space:
mode:
authorEmmanuele Bassi <ebassi@openedhand.com>2007-10-15 10:25:09 +0100
committerEmmanuele Bassi <ebassi@openedhand.com>2007-10-15 10:25:09 +0100
commit28928a2f1cbe83a2f1bf699c915daa6eca80f587 (patch)
tree5efa69ef1d28e897623c47bd9ea96a7881bc4958 /json-glib
parentb3ecd6e2fbdd58250427f406c43d60b8cb8d2644 (diff)
downloadjson-glib-28928a2f1cbe83a2f1bf699c915daa6eca80f587.tar.gz
Add API for removing nodes from arrays and objects
Write and document json_object_remove_member() and json_array_remove_element() which can be used to remove a JsonNode from a JsonObject or a JsonArray respectively. This way, the JsonObject and JsonArray are API-complete and the object model can be manipulated in code.
Diffstat (limited to 'json-glib')
-rw-r--r--json-glib/json-array.c18
-rw-r--r--json-glib/json-object.c17
-rw-r--r--json-glib/json-types.h126
3 files changed, 100 insertions, 61 deletions
diff --git a/json-glib/json-array.c b/json-glib/json-array.c
index 70b82dd..7e23621 100644
--- a/json-glib/json-array.c
+++ b/json-glib/json-array.c
@@ -232,3 +232,21 @@ json_array_add_element (JsonArray *array,
g_ptr_array_add (array->elements, node);
}
+
+/**
+ * json_array_remove_element:
+ * @array: a #JsonArray
+ * @index_: the position of the element to be removed
+ *
+ * Removes the #JsonNode inside @array at @index_ freeing its allocated
+ * resources.
+ */
+void
+json_array_remove_element (JsonArray *array,
+ guint index_)
+{
+ g_return_if_fail (array != NULL);
+ g_return_if_fail (index_ < array->elements->len);
+
+ json_node_free (g_ptr_array_remove_index (array->elements, index_));
+}
diff --git a/json-glib/json-object.c b/json-glib/json-object.c
index 8286fd8..8eb41fc 100644
--- a/json-glib/json-object.c
+++ b/json-glib/json-object.c
@@ -235,3 +235,20 @@ json_object_get_size (JsonObject *object)
return g_hash_table_size (object->members);
}
+
+/**
+ * json_object_remove_member:
+ * @object: a #JsonObject
+ * @member_name: the name of the member to remove
+ *
+ * Removes @member_name from @object, freeing its allocated resources.
+ */
+void
+json_object_remove_member (JsonObject *object,
+ const gchar *member_name)
+{
+ g_return_if_fail (object != NULL);
+ g_return_if_fail (member_name != NULL);
+
+ g_hash_table_remove (object->members, member_name);
+}
diff --git a/json-glib/json-types.h b/json-glib/json-types.h
index a95f7fd..26086cb 100644
--- a/json-glib/json-types.h
+++ b/json-glib/json-types.h
@@ -89,67 +89,71 @@ struct _JsonNode
JsonNode *parent;
};
-JsonNode * json_node_new (JsonNodeType type);
-JsonNode * json_node_copy (JsonNode *node);
-void json_node_free (JsonNode *node);
-
-void json_node_set_object (JsonNode *node,
- JsonObject *object);
-void json_node_take_object (JsonNode *node,
- JsonObject *object);
-JsonObject * json_node_get_object (JsonNode *node);
-JsonObject * json_node_dup_object (JsonNode *node);
-void json_node_set_array (JsonNode *node,
- JsonArray *array);
-void json_node_take_array (JsonNode *node,
- JsonArray *array);
-JsonArray * json_node_get_array (JsonNode *node);
-JsonArray * json_node_dup_array (JsonNode *node);
-void json_node_set_value (JsonNode *node,
- const GValue *value);
-void json_node_get_value (JsonNode *node,
- GValue *value);
-void json_node_set_string (JsonNode *node,
- const gchar *value);
-G_CONST_RETURN gchar *json_node_get_string (JsonNode *node);
-gchar * json_node_dup_string (JsonNode *node);
-void json_node_set_int (JsonNode *node,
- gint value);
-gint json_node_get_int (JsonNode *node);
-void json_node_set_double (JsonNode *node,
- gdouble value);
-gdouble json_node_get_double (JsonNode *node);
-void json_node_set_boolean (JsonNode *node,
- gboolean value);
-gboolean json_node_get_boolean (JsonNode *node);
-JsonNode * json_node_get_parent (JsonNode *node);
-G_CONST_RETURN gchar *json_node_type_name (JsonNode *node);
-
-GType json_object_get_type (void) G_GNUC_CONST;
-JsonObject * json_object_new (void);
-JsonObject * json_object_ref (JsonObject *object);
-void json_object_unref (JsonObject *object);
-void json_object_add_member (JsonObject *object,
- const gchar *member_name,
- JsonNode *node);
-GList * json_object_get_members (JsonObject *object);
-JsonNode * json_object_get_member (JsonObject *object,
- const gchar *member_name);
-gboolean json_object_has_member (JsonObject *object,
- const gchar *member_name);
-guint json_object_get_size (JsonObject *object);
-
-GType json_array_get_type (void) G_GNUC_CONST;
-JsonArray * json_array_new (void);
-JsonArray * json_array_sized_new (guint n_elements);
-JsonArray * json_array_ref (JsonArray *array);
-void json_array_unref (JsonArray *array);
-void json_array_add_element (JsonArray *array,
- JsonNode *node);
-GList * json_array_get_elements (JsonArray *array);
-JsonNode * json_array_get_element (JsonArray *array,
- guint index_);
-guint json_array_get_length (JsonArray *array);
+JsonNode * json_node_new (JsonNodeType type);
+JsonNode * json_node_copy (JsonNode *node);
+void json_node_free (JsonNode *node);
+
+void json_node_set_object (JsonNode *node,
+ JsonObject *object);
+void json_node_take_object (JsonNode *node,
+ JsonObject *object);
+JsonObject * json_node_get_object (JsonNode *node);
+JsonObject * json_node_dup_object (JsonNode *node);
+void json_node_set_array (JsonNode *node,
+ JsonArray *array);
+void json_node_take_array (JsonNode *node,
+ JsonArray *array);
+JsonArray * json_node_get_array (JsonNode *node);
+JsonArray * json_node_dup_array (JsonNode *node);
+void json_node_set_value (JsonNode *node,
+ const GValue *value);
+void json_node_get_value (JsonNode *node,
+ GValue *value);
+void json_node_set_string (JsonNode *node,
+ const gchar *value);
+G_CONST_RETURN gchar *json_node_get_string (JsonNode *node);
+gchar * json_node_dup_string (JsonNode *node);
+void json_node_set_int (JsonNode *node,
+ gint value);
+gint json_node_get_int (JsonNode *node);
+void json_node_set_double (JsonNode *node,
+ gdouble value);
+gdouble json_node_get_double (JsonNode *node);
+void json_node_set_boolean (JsonNode *node,
+ gboolean value);
+gboolean json_node_get_boolean (JsonNode *node);
+JsonNode * json_node_get_parent (JsonNode *node);
+G_CONST_RETURN gchar *json_node_type_name (JsonNode *node);
+
+GType json_object_get_type (void) G_GNUC_CONST;
+JsonObject * json_object_new (void);
+JsonObject * json_object_ref (JsonObject *object);
+void json_object_unref (JsonObject *object);
+void json_object_add_member (JsonObject *object,
+ const gchar *member_name,
+ JsonNode *node);
+GList * json_object_get_members (JsonObject *object);
+JsonNode * json_object_get_member (JsonObject *object,
+ const gchar *member_name);
+gboolean json_object_has_member (JsonObject *object,
+ const gchar *member_name);
+void json_object_remove_member (JsonObject *object,
+ const gchar *member_name);
+guint json_object_get_size (JsonObject *object);
+
+GType json_array_get_type (void) G_GNUC_CONST;
+JsonArray * json_array_new (void);
+JsonArray * json_array_sized_new (guint n_elements);
+JsonArray * json_array_ref (JsonArray *array);
+void json_array_unref (JsonArray *array);
+void json_array_add_element (JsonArray *array,
+ JsonNode *node);
+GList * json_array_get_elements (JsonArray *array);
+JsonNode * json_array_get_element (JsonArray *array,
+ guint index_);
+void json_array_remove_element (JsonArray *array,
+ guint index_);
+guint json_array_get_length (JsonArray *array);
G_END_DECLS