mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2025-08-01 23:13:40 +02:00
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:
@@ -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,
|
||||
|
Reference in New Issue
Block a user