diff options
author | Ole André Vadla Ravnås <oleavr@gmail.com> | 2017-03-14 18:27:13 +0100 |
---|---|---|
committer | Emmanuele Bassi <ebassi@gnome.org> | 2017-03-18 18:16:28 +0000 |
commit | 0f6e3d3eddc3bdb321283998924506d9184a0a2a (patch) | |
tree | c9acd73cc443c79616513cdf5e169b988f6eff55 /json-glib/json-parser.c | |
parent | 7d79960747b286da4608f516c575004786d1928c (diff) | |
download | json-glib-0f6e3d3eddc3bdb321283998924506d9184a0a2a.tar.gz |
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
Diffstat (limited to 'json-glib/json-parser.c')
-rw-r--r-- | json-glib/json-parser.c | 26 |
1 files changed, 26 insertions, 0 deletions
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 @@ -1198,6 +1198,32 @@ json_parser_get_root (JsonParser *parser) } /** + * 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 * |