diff options
Diffstat (limited to 'json-glib')
| -rw-r--r-- | json-glib/json-node.c | 18 | ||||
| -rw-r--r-- | json-glib/json-parser.c | 14 | ||||
| -rw-r--r-- | json-glib/json-types.h | 2 |
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); |
