From 0f6e3d3eddc3bdb321283998924506d9184a0a2a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ole=20Andr=C3=A9=20Vadla=20Ravn=C3=A5s?= Date: Tue, 14 Mar 2017 18:27:13 +0100 Subject: core: Add json_parser_steal_root() This avoids copying the root node for the parse-to-node use-case. https://bugzilla.gnome.org/show_bug.cgi?id=774688 --- json-glib/json-parser.c | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) (limited to 'json-glib/json-parser.c') diff --git a/json-glib/json-parser.c b/json-glib/json-parser.c index dda3eeb..f2a99d9 100644 --- a/json-glib/json-parser.c +++ b/json-glib/json-parser.c @@ -1197,6 +1197,32 @@ json_parser_get_root (JsonParser *parser) return parser->priv->root; } +/** + * json_parser_steal_root: + * @parser: a #JsonParser + * + * Steals the top level node from the parsed JSON stream. + * + * Returns: (transfer full): the top level #JsonNode + * + * Since: 1.4 + */ +JsonNode * +json_parser_steal_root (JsonParser *parser) +{ + JsonParserPrivate *priv; + JsonNode *root; + + g_return_val_if_fail (JSON_IS_PARSER (parser), NULL); + + priv = parser->priv; + + root = priv->root; + priv->root = NULL; + + return root; +} + /** * json_parser_get_current_line: * @parser: a #JsonParser -- cgit v1.2.1