diff options
author | Emmanuele Bassi <ebassi@linux.intel.com> | 2010-12-14 11:37:25 +0000 |
---|---|---|
committer | Emmanuele Bassi <ebassi@linux.intel.com> | 2010-12-14 11:37:25 +0000 |
commit | 4add0e081b8f58dec1cd68152d846be87942091e (patch) | |
tree | f5b35514f27160d85d572fe590897f4d19b8cd96 /json-glib/json-generator.c | |
parent | 20a16d5b9ecabe68ee18655b2ff3bdb17136c6f1 (diff) | |
download | json-glib-4add0e081b8f58dec1cd68152d846be87942091e.tar.gz |
generator: Implement dumping bare values
JsonGenerator is not able to generate strings for bare values, something
that completely went under the radar for all this time.
Diffstat (limited to 'json-glib/json-generator.c')
-rw-r--r-- | json-glib/json-generator.c | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/json-glib/json-generator.c b/json-glib/json-generator.c index 0df5c0b..7b41c40 100644 --- a/json-glib/json-generator.c +++ b/json-glib/json-generator.c @@ -67,7 +67,8 @@ enum static gchar *dump_value (JsonGenerator *generator, gint level, const gchar *name, - JsonNode *node); + JsonNode *node, + gsize *length); static gchar *dump_array (JsonGenerator *generator, gint level, const gchar *name, @@ -265,7 +266,8 @@ static gchar * dump_value (JsonGenerator *generator, gint level, const gchar *name, - JsonNode *node) + JsonNode *node, + gsize *length) { JsonGeneratorPrivate *priv = generator->priv; gboolean pretty = priv->pretty; @@ -325,6 +327,9 @@ dump_value (JsonGenerator *generator, g_value_unset (&value); + if (length) + *length = buffer->len; + return g_string_free (buffer, FALSE); } @@ -379,7 +384,7 @@ dump_array (JsonGenerator *generator, break; case JSON_NODE_VALUE: - value = dump_value (generator, sub_level, NULL, cur); + value = dump_value (generator, sub_level, NULL, cur, NULL); g_string_append (buffer, value); g_free (value); break; @@ -474,7 +479,7 @@ dump_object (JsonGenerator *generator, break; case JSON_NODE_VALUE: - value = dump_value (generator, sub_level, member_name, cur); + value = dump_value (generator, sub_level, member_name, cur, NULL); g_string_append (buffer, value); g_free (value); break; @@ -581,7 +586,7 @@ json_generator_to_data (JsonGenerator *generator, break; case JSON_NODE_VALUE: - retval = NULL; + retval = dump_value (generator, 0, NULL, root, length); break; } |