summaryrefslogtreecommitdiff
path: root/json-glib
diff options
context:
space:
mode:
Diffstat (limited to 'json-glib')
-rw-r--r--json-glib/json-node.c18
-rw-r--r--json-glib/json-parser.c14
-rw-r--r--json-glib/json-types.h2
3 files changed, 27 insertions, 7 deletions
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);