[json-glib] [node] Add JsonNode.set_parent()
- From: Emmanuele Bassi <ebassi src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [json-glib] [node] Add JsonNode.set_parent()
- Date: Sun, 6 Sep 2009 18:04:14 +0000 (UTC)
commit 7b4bb80930f12a366d5e5a5eea5b398972cd4891
Author: Emmanuele Bassi <ebassi gnome org>
Date: Sun Sep 6 17:31:41 2009 +0100
[node] Add JsonNode.set_parent()
Add the setter for JsonNode:parent, to be used in JsonParser instead
of directly accessing the JsonNode structure.
doc/reference/json-glib-sections.txt | 1 +
json-glib/json-node.c | 18 ++++++++++++++++++
json-glib/json-parser.c | 14 +++++++-------
json-glib/json-types.h | 2 ++
tests/test-parser.c | 10 ++++++++++
5 files changed, 38 insertions(+), 7 deletions(-)
---
diff --git a/doc/reference/json-glib-sections.txt b/doc/reference/json-glib-sections.txt
index 6872eaa..86a049c 100644
--- a/doc/reference/json-glib-sections.txt
+++ b/doc/reference/json-glib-sections.txt
@@ -116,6 +116,7 @@ json_node_get_string
json_node_dup_string
<SUBSECTION>
+json_node_set_parent
json_node_get_parent
json_node_type_name
json_node_get_value_type
diff --git a/json-glib/json-node.c b/json-glib/json-node.c
index e1e457a..a3562f6 100644
--- a/json-glib/json-node.c
+++ b/json-glib/json-node.c
@@ -485,6 +485,24 @@ json_node_type_name (JsonNode *node)
}
/**
+ * json_node_set_parent:
+ * @node: a #JsonNode
+ * @parent: the parent #JsonNode of @node
+ *
+ * Sets the parent #JsonNode of @node
+ *
+ * Since: 0.8
+ */
+void
+json_node_set_parent (JsonNode *node,
+ JsonNode *parent)
+{
+ g_return_if_fail (node != NULL);
+
+ node->parent = parent;
+}
+
+/**
* json_node_get_parent:
* @node: a #JsonNode
*
diff --git a/json-glib/json-parser.c b/json-glib/json-parser.c
index df892de..6772931 100644
--- a/json-glib/json-parser.c
+++ b/json-glib/json-parser.c
@@ -445,7 +445,7 @@ json_parse_array (JsonParser *parser,
}
json_array_add_element (array, node);
- node->parent = priv->current_node;
+ json_node_set_parent (node, priv->current_node);
g_signal_emit (parser, parser_signals[ARRAY_ELEMENT], 0,
array,
@@ -486,7 +486,7 @@ json_parse_array (JsonParser *parser,
}
json_array_add_element (array, node);
- node->parent = priv->current_node;
+ json_node_set_parent (node, priv->current_node);
g_signal_emit (parser, parser_signals[ARRAY_ELEMENT], 0,
array,
@@ -515,7 +515,7 @@ json_parse_array (JsonParser *parser,
}
json_array_add_element (array, node);
- node->parent = priv->current_node;
+ json_node_set_parent (node, priv->current_node);
g_signal_emit (parser, parser_signals[ARRAY_ELEMENT], 0,
array,
@@ -622,7 +622,7 @@ json_parse_object (JsonParser *parser,
}
json_object_set_member (object, name, node);
- node->parent = priv->current_node;
+ json_node_set_parent (node, priv->current_node);
g_signal_emit (parser, parser_signals[OBJECT_MEMBER], 0,
object,
@@ -665,7 +665,7 @@ json_parse_object (JsonParser *parser,
}
json_object_set_member (object, name, node);
- node->parent = priv->current_node;
+ json_node_set_parent (node, priv->current_node);
g_signal_emit (parser, parser_signals[OBJECT_MEMBER], 0,
object,
@@ -697,8 +697,8 @@ json_parse_object (JsonParser *parser,
}
json_object_set_member (object, name, node);
- node->parent = priv->current_node;
-
+ json_node_set_parent (node, priv->current_node);
+
g_signal_emit (parser, parser_signals[OBJECT_MEMBER], 0,
object,
name);
diff --git a/json-glib/json-types.h b/json-glib/json-types.h
index 49e562c..3ea885f 100644
--- a/json-glib/json-types.h
+++ b/json-glib/json-types.h
@@ -131,6 +131,8 @@ JsonNode * json_node_copy (JsonNode *node);
void json_node_free (JsonNode *node);
JsonNodeType json_node_get_node_type (JsonNode *node);
GType json_node_get_value_type (JsonNode *node);
+void json_node_set_parent (JsonNode *node,
+ JsonNode *parent);
JsonNode * json_node_get_parent (JsonNode *node);
G_CONST_RETURN gchar *json_node_type_name (JsonNode *node);
diff --git a/tests/test-parser.c b/tests/test-parser.c
index ac22967..460b772 100644
--- a/tests/test-parser.c
+++ b/tests/test-parser.c
@@ -154,6 +154,7 @@ test_base_value (void)
root = json_parser_get_root (parser);
g_assert (root != NULL);
+ g_assert (json_node_get_parent (root) == NULL);
if (g_test_verbose ())
g_print ("checking root node is of the desired type %s...\n",
@@ -198,6 +199,7 @@ test_empty_array (void)
g_print ("checking root node is an array...\n");
root = json_parser_get_root (parser);
g_assert_cmpint (JSON_NODE_TYPE (root), ==, JSON_NODE_ARRAY);
+ g_assert (json_node_get_parent (root) == NULL);
array = json_node_get_array (root);
g_assert (array != NULL);
@@ -246,6 +248,7 @@ test_simple_array (void)
g_print ("checking root node is an array...\n");
root = json_parser_get_root (parser);
g_assert_cmpint (JSON_NODE_TYPE (root), ==, JSON_NODE_ARRAY);
+ g_assert (json_node_get_parent (root) == NULL);
array = json_node_get_array (root);
g_assert (array != NULL);
@@ -261,6 +264,7 @@ test_simple_array (void)
g_type_name (test_simple_arrays[i].gtype));
node = json_array_get_element (array, test_simple_arrays[i].element);
g_assert (node != NULL);
+ g_assert (json_node_get_parent (node) == root);
g_assert_cmpint (JSON_NODE_TYPE (node), ==, test_simple_arrays[i].type);
g_assert_cmpint (json_node_get_value_type (node), ==, test_simple_arrays[i].gtype);
}
@@ -305,6 +309,7 @@ test_nested_array (void)
g_print ("checking root node is an array...\n");
root = json_parser_get_root (parser);
g_assert_cmpint (JSON_NODE_TYPE (root), ==, JSON_NODE_ARRAY);
+ g_assert (json_node_get_parent (root) == NULL);
array = json_node_get_array (root);
g_assert (array != NULL);
@@ -348,7 +353,9 @@ test_empty_object (void)
if (g_test_verbose ())
g_print ("checking root node is an object...\n");
root = json_parser_get_root (parser);
+ g_assert (json_node_get_parent (root) == NULL);
g_assert_cmpint (JSON_NODE_TYPE (root), ==, JSON_NODE_OBJECT);
+ g_assert (json_node_get_parent (root) == NULL);
object = json_node_get_object (root);
g_assert (object != NULL);
@@ -397,6 +404,7 @@ test_simple_object (void)
g_print ("checking root node is an object...\n");
root = json_parser_get_root (parser);
g_assert_cmpint (JSON_NODE_TYPE (root), ==, JSON_NODE_OBJECT);
+ g_assert (json_node_get_parent (root) == NULL);
object = json_node_get_object (root);
g_assert (object != NULL);
@@ -412,6 +420,7 @@ test_simple_object (void)
g_type_name (test_simple_objects[i].gtype));
node = json_object_get_member (object, test_simple_objects[i].member);
g_assert (node != NULL);
+ g_assert (json_node_get_parent (node) == root);
g_assert_cmpint (JSON_NODE_TYPE (node), ==, test_simple_objects[i].type);
g_assert_cmpint (json_node_get_value_type (node), ==, test_simple_objects[i].gtype);
}
@@ -456,6 +465,7 @@ test_nested_object (void)
g_print ("checking root node is an object...\n");
root = json_parser_get_root (parser);
g_assert_cmpint (JSON_NODE_TYPE (root), ==, JSON_NODE_OBJECT);
+ g_assert (json_node_get_parent (root) == NULL);
object = json_node_get_object (root);
g_assert (object != NULL);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]