[glib/gsettings] parser/printer improvements:
- From: Ryan Lortie <ryanl src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [glib/gsettings] parser/printer improvements:
- Date: Fri, 28 Aug 2009 15:10:15 +0000 (UTC)
commit 013ea2ae23b1d40cb0f73464146196e94acb3061
Author: Ryan Lortie <desrt desrt ca>
Date: Fri Aug 28 11:09:13 2009 -0400
parser/printer improvements:
parser: fix end-of-stream detection (don't give spurious errors)
printer: use symbolic type names where possible ('byte' vs '@y')
test case: modify for above changes
glib/gvariant-parser.c | 12 ++++++++----
glib/gvariant-printer.c | 18 +++++++++---------
glib/tests/gvariant-printer-parser.c | 6 +++---
3 files changed, 20 insertions(+), 16 deletions(-)
---
diff --git a/glib/gvariant-parser.c b/glib/gvariant-parser.c
index be19cf0..c4d9a21 100644
--- a/glib/gvariant-parser.c
+++ b/glib/gvariant-parser.c
@@ -2075,16 +2075,20 @@ g_variant_parse_full (const gchar *text,
if ((ast = parse (&stream, NULL)))
{
- result = ast_resolve (ast, &stream.error);
+ if (type == NULL)
+ result = ast_resolve (ast, &stream.error);
+ else
+ result = ast_get_value (ast, type, &stream.error);
if (result != NULL)
{
if (endptr == NULL)
{
- while (g_ascii_isspace (*text))
- text++;
+ while (stream.stream != limit &&
+ g_ascii_isspace (*stream.stream))
+ stream.stream++;
- if (*text)
+ if (stream.stream != limit && *stream.stream != '\0')
{
set_error (&stream.error, text, text,
"trailing text after value");
diff --git a/glib/gvariant-printer.c b/glib/gvariant-printer.c
index 05e4679..1f2877c 100644
--- a/glib/gvariant-printer.c
+++ b/glib/gvariant-printer.c
@@ -70,7 +70,7 @@ g_variant_print_string (GVariant *value,
GVariantIter iter;
if (type_annotate)
- g_string_append_printf (string, "@%s",
+ g_string_append_printf (string, "@%s ",
g_variant_get_type_string (value));
g_string_append_c (string, '[');
if (g_variant_iter_init (&iter, value))
@@ -198,21 +198,21 @@ g_variant_print_string (GVariant *value,
case G_VARIANT_TYPE_CLASS_BYTE:
if (type_annotate)
- g_string_append (string, "@y");
+ g_string_append (string, "byte ");
g_string_append_printf (string, "0x%02x",
g_variant_get_byte (value));
break;
case G_VARIANT_TYPE_CLASS_INT16:
if (type_annotate)
- g_string_append (string, "@n");
+ g_string_append (string, "int16 ");
g_string_append_printf (string, "%"G_GINT16_FORMAT,
g_variant_get_int16 (value));
break;
case G_VARIANT_TYPE_CLASS_UINT16:
if (type_annotate)
- g_string_append (string, "@q");
+ g_string_append (string, "uint16 ");
g_string_append_printf (string, "%"G_GUINT16_FORMAT,
g_variant_get_uint16 (value));
break;
@@ -227,21 +227,21 @@ g_variant_print_string (GVariant *value,
case G_VARIANT_TYPE_CLASS_UINT32:
if (type_annotate)
- g_string_append (string, "@u");
+ g_string_append (string, "uint32 ");
g_string_append_printf (string, "%"G_GUINT32_FORMAT,
g_variant_get_uint32 (value));
break;
case G_VARIANT_TYPE_CLASS_INT64:
if (type_annotate)
- g_string_append (string, "@x");
+ g_string_append (string, "int64 ");
g_string_append_printf (string, "%"G_GINT64_FORMAT,
g_variant_get_int64 (value));
break;
case G_VARIANT_TYPE_CLASS_UINT64:
if (type_annotate)
- g_string_append (string, "@t");
+ g_string_append (string, "uint64 ");
g_string_append_printf (string, "%"G_GUINT64_FORMAT,
g_variant_get_uint64 (value));
break;
@@ -279,14 +279,14 @@ g_variant_print_string (GVariant *value,
case G_VARIANT_TYPE_CLASS_OBJECT_PATH:
if (type_annotate)
- g_string_append (string, "@o");
+ g_string_append (string, "objectpath ");
g_string_append_printf (string, "\"%s\"",
g_variant_get_string (value, NULL));
break;
case G_VARIANT_TYPE_CLASS_SIGNATURE:
if (type_annotate)
- g_string_append (string, "@g");
+ g_string_append (string, "signature");
g_string_append_printf (string, "\"%s\"",
g_variant_get_string (value, NULL));
break;
diff --git a/glib/tests/gvariant-printer-parser.c b/glib/tests/gvariant-printer-parser.c
index 4d6cfc0..b88bd7d 100644
--- a/glib/tests/gvariant-printer-parser.c
+++ b/glib/tests/gvariant-printer-parser.c
@@ -31,13 +31,13 @@ const char *verbatim_tests[] = {
"[[3, 4], [5, 6]]",
- "<(@y 0x04, @x -16, 6.0, 3.141, \"Hello\", <<<<<5>>>>>)>",
+ "<(byte 0x04, int16 -16, 6.0, 3.141, \"Hello\", <<<<<5>>>>>)>",
"([true, false, false, true, false], [(), ()])",
- "<@ai[]>",
+ "<@ai []>",
- "<@an[1, -1, 2, -3, -1, -2, 1, -3, 4, -7, 3, -10, 13, -23, 26]>"
+ "<@an [1, -1, 2, -3, -1, -2, 1, -3, 4, -7, 3, -10, 13, -23, 26]>"
};
static void
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]