summaryrefslogtreecommitdiff
path: root/json-glib/json-generator.c
diff options
context:
space:
mode:
authorEmmanuele Bassi <ebassi@linux.intel.com>2010-12-14 11:37:25 +0000
committerEmmanuele Bassi <ebassi@linux.intel.com>2010-12-14 11:37:25 +0000
commit4add0e081b8f58dec1cd68152d846be87942091e (patch)
treef5b35514f27160d85d572fe590897f4d19b8cd96 /json-glib/json-generator.c
parent20a16d5b9ecabe68ee18655b2ff3bdb17136c6f1 (diff)
downloadjson-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.c15
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;
}