GVariant: improve bytestring support

- add G_VARIANT_TYPE_BYTESTRING, _BYTESTRING_ARRAY, _STRING_ARRAY

 - remove g_variant_{new,get}_byte_array functions

 - add g_variant_{new,get,dup}_bytestring{,_array} functions

 - remove undocumented support for deserialising arrays of objectpaths
   or signature strngs using g_variant_get_strv()

 - add and document new format strings '^ay', '^&ay', '^aay' and '^a&ay'

 - update GApplication to use the new API

 - update GSettings binding code to use the new API

 - add tests
This commit is contained in:
Ryan Lortie
2010-07-07 10:37:16 -04:00
parent 2d2a321a4b
commit d9e90c3894
13 changed files with 851 additions and 290 deletions

View File

@@ -332,7 +332,7 @@ append_cwd_to_platform_data (GVariant *platform_data)
if (cwd)
g_variant_builder_add (&builder, "{sv}",
"cwd",
g_variant_new_byte_array (cwd, -1));
g_variant_new_bytestring (cwd));
g_free (cwd);
if (platform_data)
@@ -351,27 +351,6 @@ append_cwd_to_platform_data (GVariant *platform_data)
return result;
}
static GVariant *
variant_from_argv (int argc,
char **argv)
{
GVariantBuilder builder;
int i;
g_variant_builder_init (&builder, G_VARIANT_TYPE ("aay"));
for (i = 1; i < argc; i++)
{
guint8 *argv_bytes;
argv_bytes = (guint8*) argv[i];
g_variant_builder_add_value (&builder,
g_variant_new_byte_array (argv_bytes, -1));
}
return g_variant_builder_end (&builder);
}
static gboolean
timeout_handle_actions_changed (gpointer user_data)
{
@@ -468,6 +447,7 @@ g_application_new (const gchar *appid,
int argc,
char **argv)
{
const gchar * const *args = (const gchar **) argv;
GObject *app;
GError *error = NULL;
GVariant *argv_variant;
@@ -476,7 +456,7 @@ g_application_new (const gchar *appid,
g_return_val_if_fail (appid != NULL, NULL);
argv_variant = variant_from_argv (argc, argv);
argv_variant = g_variant_new_bytestring_array (args, argc);
app = g_initable_new (G_TYPE_APPLICATION,
NULL,
@@ -514,13 +494,14 @@ g_application_try_new (const gchar *appid,
char **argv,
GError **error)
{
const gchar * const *args = (const gchar **) argv;
GVariant *argv_variant;
g_type_init ();
g_return_val_if_fail (appid != NULL, NULL);
argv_variant = variant_from_argv (argc, argv);
argv_variant = g_variant_new_bytestring_array (args, argc);
return G_APPLICATION (g_initable_new (G_TYPE_APPLICATION,
NULL,
@@ -551,13 +532,14 @@ g_application_unregistered_try_new (const gchar *appid,
char **argv,
GError **error)
{
const gchar * const *args = (const gchar **) argv;
GVariant *argv_variant;
g_type_init ();
g_return_val_if_fail (appid != NULL, NULL);
argv_variant = variant_from_argv (argc, argv);
argv_variant = g_variant_new_bytestring_array (args, argc);
return G_APPLICATION (g_initable_new (G_TYPE_APPLICATION,
NULL,