mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2025-03-14 19:55:12 +01:00
Merge branch 'wip/chergert/no-copy-gvarianttype-stack-builder' into 'main'
glib/gvariant: avoid GVariantType copy for stack builders See merge request GNOME/glib!4286
This commit is contained in:
commit
c2a5bd2c65
@ -51,7 +51,7 @@ g_action_group_describe_action (GActionGroup *action_group,
|
||||
gboolean enabled;
|
||||
GVariant *state;
|
||||
|
||||
g_variant_builder_init (&builder, G_VARIANT_TYPE ("(bgav)"));
|
||||
g_variant_builder_init_static (&builder, G_VARIANT_TYPE ("(bgav)"));
|
||||
|
||||
enabled = g_action_group_get_action_enabled (action_group, name);
|
||||
g_variant_builder_add (&builder, "b", enabled);
|
||||
@ -146,10 +146,10 @@ g_action_group_exporter_dispatch_events (gpointer user_data)
|
||||
gpointer value;
|
||||
gpointer key;
|
||||
|
||||
g_variant_builder_init (&removes, G_VARIANT_TYPE_STRING_ARRAY);
|
||||
g_variant_builder_init (&enabled_changes, G_VARIANT_TYPE ("a{sb}"));
|
||||
g_variant_builder_init (&state_changes, G_VARIANT_TYPE ("a{sv}"));
|
||||
g_variant_builder_init (&adds, G_VARIANT_TYPE ("a{s(bgav)}"));
|
||||
g_variant_builder_init_static (&removes, G_VARIANT_TYPE_STRING_ARRAY);
|
||||
g_variant_builder_init_static (&enabled_changes, G_VARIANT_TYPE ("a{sb}"));
|
||||
g_variant_builder_init_static (&state_changes, G_VARIANT_TYPE ("a{sv}"));
|
||||
g_variant_builder_init_static (&adds, G_VARIANT_TYPE ("a{s(bgav)}"));
|
||||
|
||||
g_hash_table_iter_init (&iter, exporter->pending_changes);
|
||||
while (g_hash_table_iter_next (&iter, &key, &value))
|
||||
@ -410,7 +410,7 @@ org_gtk_Actions_method_call (GDBusConnection *connection,
|
||||
gint i;
|
||||
|
||||
list = g_action_group_list_actions (exporter->action_group);
|
||||
g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{s(bgav)}"));
|
||||
g_variant_builder_init_static (&builder, G_VARIANT_TYPE ("a{s(bgav)}"));
|
||||
for (i = 0; list[i]; i++)
|
||||
{
|
||||
const gchar *name = list[i];
|
||||
|
@ -299,7 +299,7 @@ app_get_platform_data (void)
|
||||
GVariantBuilder builder;
|
||||
const gchar *startup_id;
|
||||
|
||||
g_variant_builder_init (&builder, G_VARIANT_TYPE_VARDICT);
|
||||
g_variant_builder_init_static (&builder, G_VARIANT_TYPE_VARDICT);
|
||||
|
||||
if ((startup_id = g_getenv ("DESKTOP_STARTUP_ID")))
|
||||
g_variant_builder_add (&builder, "{sv}", "desktop-startup-id", g_variant_new_string (startup_id));
|
||||
@ -334,7 +334,7 @@ app_action (gchar **args)
|
||||
return 1;
|
||||
}
|
||||
|
||||
g_variant_builder_init (¶ms, G_VARIANT_TYPE ("av"));
|
||||
g_variant_builder_init_static (¶ms, G_VARIANT_TYPE ("av"));
|
||||
|
||||
if (args[2])
|
||||
{
|
||||
@ -387,7 +387,7 @@ app_launch (gchar **args)
|
||||
if (args[1] == NULL)
|
||||
return app_activate (args[0]);
|
||||
|
||||
g_variant_builder_init (&files, G_VARIANT_TYPE_STRING_ARRAY);
|
||||
g_variant_builder_init_static (&files, G_VARIANT_TYPE_STRING_ARRAY);
|
||||
|
||||
for (i = 1; args[i]; i++)
|
||||
{
|
||||
|
@ -156,7 +156,7 @@ send_property_change (GApplicationImpl *impl)
|
||||
{
|
||||
GVariantBuilder builder;
|
||||
|
||||
g_variant_builder_init (&builder, G_VARIANT_TYPE_ARRAY);
|
||||
g_variant_builder_init_static (&builder, G_VARIANT_TYPE_ARRAY);
|
||||
g_variant_builder_add (&builder,
|
||||
"{sv}",
|
||||
"Busy", g_variant_new_boolean (impl->busy));
|
||||
@ -311,7 +311,7 @@ g_application_impl_method_call (GDBusConnection *connection,
|
||||
GVariant *value = NULL;
|
||||
GVariantBuilder builder;
|
||||
|
||||
g_variant_builder_init (&builder, G_VARIANT_TYPE_TUPLE);
|
||||
g_variant_builder_init_static (&builder, G_VARIANT_TYPE_TUPLE);
|
||||
|
||||
while (g_variant_iter_loop (iter, "v", &value))
|
||||
{
|
||||
@ -736,7 +736,7 @@ g_application_impl_open (GApplicationImpl *impl,
|
||||
GVariantBuilder builder;
|
||||
gint i;
|
||||
|
||||
g_variant_builder_init (&builder, G_VARIANT_TYPE ("(assa{sv})"));
|
||||
g_variant_builder_init_static (&builder, G_VARIANT_TYPE ("(assa{sv})"));
|
||||
g_variant_builder_open (&builder, G_VARIANT_TYPE_STRING_ARRAY);
|
||||
for (i = 0; i < n_files; i++)
|
||||
{
|
||||
|
@ -3975,7 +3975,11 @@ class CodeGenerator:
|
||||
"\n"
|
||||
" GVariantBuilder builder;\n"
|
||||
" guint n;\n"
|
||||
' g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}"));\n'
|
||||
"#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_84\n"
|
||||
' g_variant_builder_init_static (&builder, G_VARIANT_TYPE ("a{sv}"));\n'
|
||||
"#else\n"
|
||||
' g_variant_builder_init(&builder, G_VARIANT_TYPE ("a{sv}"));\n'
|
||||
"#endif\n"
|
||||
" if (_%s_interface_info.parent_struct.properties == NULL)\n"
|
||||
" goto out;\n"
|
||||
" for (n = 0; _%s_interface_info.parent_struct.properties[n] != NULL; n++)\n"
|
||||
@ -4184,8 +4188,13 @@ class CodeGenerator:
|
||||
" guint num_changes;\n"
|
||||
"\n"
|
||||
" g_mutex_lock (&skeleton->priv->lock);\n"
|
||||
"#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_84\n"
|
||||
' g_variant_builder_init_static (&builder, G_VARIANT_TYPE ("a{sv}"));\n'
|
||||
' g_variant_builder_init_static (&invalidated_builder, G_VARIANT_TYPE ("as"));\n'
|
||||
"#else\n"
|
||||
' g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}"));\n'
|
||||
' g_variant_builder_init (&invalidated_builder, G_VARIANT_TYPE ("as"));\n'
|
||||
"#endif\n"
|
||||
" for (l = skeleton->priv->changed_properties, num_changes = 0; l != NULL; l = l->next)\n"
|
||||
" {\n"
|
||||
" ChangedProperty *cp = l->data;\n"
|
||||
|
@ -802,7 +802,7 @@ handle_emit (gint *argc,
|
||||
}
|
||||
|
||||
/* Read parameters */
|
||||
g_variant_builder_init (&builder, G_VARIANT_TYPE_TUPLE);
|
||||
g_variant_builder_init_static (&builder, G_VARIANT_TYPE_TUPLE);
|
||||
skip_dashes = TRUE;
|
||||
parm = 0;
|
||||
for (n = 1; n < (guint) *argc; n++)
|
||||
@ -1114,7 +1114,7 @@ handle_call (gint *argc,
|
||||
}
|
||||
|
||||
/* Read parameters */
|
||||
g_variant_builder_init (&builder, G_VARIANT_TYPE_TUPLE);
|
||||
g_variant_builder_init_static (&builder, G_VARIANT_TYPE_TUPLE);
|
||||
skip_dashes = TRUE;
|
||||
parm = 0;
|
||||
for (n = 1; n < (guint) *argc; n++)
|
||||
|
@ -376,7 +376,7 @@ g_dbus_action_group_activate_action_full (GRemoteActionGroup *remote,
|
||||
GDBusActionGroup *group = G_DBUS_ACTION_GROUP (remote);
|
||||
GVariantBuilder builder;
|
||||
|
||||
g_variant_builder_init (&builder, G_VARIANT_TYPE ("av"));
|
||||
g_variant_builder_init_static (&builder, G_VARIANT_TYPE ("av"));
|
||||
|
||||
if (parameter)
|
||||
g_variant_builder_add (&builder, "v", parameter);
|
||||
|
@ -5087,7 +5087,7 @@ invoke_get_all_properties_in_idle_cb (gpointer _data)
|
||||
* We could fail the whole call if just a single get_property() call
|
||||
* returns an error. We need clarification in the D-Bus spec about this.
|
||||
*/
|
||||
g_variant_builder_init (&builder, G_VARIANT_TYPE ("(a{sv})"));
|
||||
g_variant_builder_init_static (&builder, G_VARIANT_TYPE ("(a{sv})"));
|
||||
g_variant_builder_open (&builder, G_VARIANT_TYPE ("a{sv}"));
|
||||
for (n = 0; data->interface_info->properties != NULL && data->interface_info->properties[n] != NULL; n++)
|
||||
{
|
||||
|
@ -1982,7 +1982,7 @@ parse_value_from_blob (GMemoryBuffer *buf,
|
||||
goffset offset;
|
||||
goffset target;
|
||||
|
||||
g_variant_builder_init (&builder, type);
|
||||
g_variant_builder_init_static (&builder, type);
|
||||
|
||||
if (array_len == 0)
|
||||
{
|
||||
@ -2091,7 +2091,7 @@ parse_value_from_blob (GMemoryBuffer *buf,
|
||||
const GVariantType *element_type;
|
||||
GVariantBuilder builder;
|
||||
|
||||
g_variant_builder_init (&builder, type);
|
||||
g_variant_builder_init_static (&builder, type);
|
||||
element_type = g_variant_type_first (type);
|
||||
if (!element_type)
|
||||
{
|
||||
@ -3028,7 +3028,7 @@ g_dbus_message_to_blob (GDBusMessage *message,
|
||||
goto out;
|
||||
}
|
||||
|
||||
g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{yv}"));
|
||||
g_variant_builder_init_static (&builder, G_VARIANT_TYPE ("a{yv}"));
|
||||
g_hash_table_iter_init (&hash_iter, message->headers);
|
||||
while (g_hash_table_iter_next (&hash_iter, &key, (gpointer) &header_value))
|
||||
{
|
||||
|
@ -869,7 +869,7 @@ manager_method_call (GDBusConnection *connection,
|
||||
|
||||
if (g_strcmp0 (method_name, "GetManagedObjects") == 0)
|
||||
{
|
||||
g_variant_builder_init (&array_builder, G_VARIANT_TYPE ("a{oa{sa{sv}}}"));
|
||||
g_variant_builder_init_static (&array_builder, G_VARIANT_TYPE ("a{oa{sa{sv}}}"));
|
||||
g_hash_table_iter_init (&object_iter, manager->priv->map_object_path_to_data);
|
||||
while (g_hash_table_iter_next (&object_iter, NULL, (gpointer) &data))
|
||||
{
|
||||
@ -878,7 +878,7 @@ manager_method_call (GDBusConnection *connection,
|
||||
GDBusInterfaceSkeleton *iface;
|
||||
const gchar *iter_object_path;
|
||||
|
||||
g_variant_builder_init (&interfaces_builder, G_VARIANT_TYPE ("a{sa{sv}}"));
|
||||
g_variant_builder_init_static (&interfaces_builder, G_VARIANT_TYPE ("a{sa{sv}}"));
|
||||
g_hash_table_iter_init (&interface_iter, data->map_iface_name_to_iface);
|
||||
while (g_hash_table_iter_next (&interface_iter, NULL, (gpointer) &iface))
|
||||
{
|
||||
@ -945,7 +945,7 @@ g_dbus_object_manager_server_emit_interfaces_added (GDBusObjectManagerServer *ma
|
||||
if (data->manager->priv->connection == NULL)
|
||||
goto out;
|
||||
|
||||
g_variant_builder_init (&array_builder, G_VARIANT_TYPE ("a{sa{sv}}"));
|
||||
g_variant_builder_init_static (&array_builder, G_VARIANT_TYPE ("a{sa{sv}}"));
|
||||
for (n = 0; interfaces[n] != NULL; n++)
|
||||
{
|
||||
GDBusInterfaceSkeleton *iface;
|
||||
@ -991,7 +991,7 @@ g_dbus_object_manager_server_emit_interfaces_removed (GDBusObjectManagerServer *
|
||||
if (data->manager->priv->connection == NULL)
|
||||
goto out;
|
||||
|
||||
g_variant_builder_init (&array_builder, G_VARIANT_TYPE ("as"));
|
||||
g_variant_builder_init_static (&array_builder, G_VARIANT_TYPE ("as"));
|
||||
for (n = 0; interfaces[n] != NULL; n++)
|
||||
g_variant_builder_add (&array_builder, "s", interfaces[n]);
|
||||
|
||||
|
@ -954,7 +954,7 @@ invalidated_property_get_cb (GDBusConnection *connection,
|
||||
g_variant_get (value, "(v)", &unpacked_value);
|
||||
|
||||
/* synthesize the a{sv} in the PropertiesChanged signal */
|
||||
g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}"));
|
||||
g_variant_builder_init_static (&builder, G_VARIANT_TYPE ("a{sv}"));
|
||||
g_variant_builder_add (&builder, "{sv}", data->prop_name, unpacked_value);
|
||||
|
||||
G_LOCK (properties_lock);
|
||||
@ -1264,7 +1264,7 @@ on_name_owner_changed (GDBusConnection *connection,
|
||||
const gchar *key;
|
||||
|
||||
/* Build changed_properties (always empty) and invalidated_properties ... */
|
||||
g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}"));
|
||||
g_variant_builder_init_static (&builder, G_VARIANT_TYPE ("a{sv}"));
|
||||
|
||||
invalidated_properties = g_ptr_array_new_with_free_func (g_free);
|
||||
g_hash_table_iter_init (&iter, proxy->priv->properties);
|
||||
|
@ -235,7 +235,7 @@ set_debug_enabled (GDebugControllerDBus *self,
|
||||
/* Notify internally and externally of the property change. */
|
||||
g_object_notify (G_OBJECT (self), "debug-enabled");
|
||||
|
||||
g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}"));
|
||||
g_variant_builder_init_static (&builder, G_VARIANT_TYPE ("a{sv}"));
|
||||
g_variant_builder_add (&builder, "{sv}", "DebugEnabled", g_variant_new_boolean (priv->debug_enabled));
|
||||
|
||||
g_dbus_connection_emit_signal (priv->connection,
|
||||
|
@ -2809,11 +2809,11 @@ notify_desktop_launch (GDBusConnection *session_bus,
|
||||
if (session_bus == NULL)
|
||||
return;
|
||||
|
||||
g_variant_builder_init (&uri_variant, G_VARIANT_TYPE ("as"));
|
||||
g_variant_builder_init_static (&uri_variant, G_VARIANT_TYPE ("as"));
|
||||
for (iter = uris; iter; iter = iter->next)
|
||||
g_variant_builder_add (&uri_variant, "s", iter->data);
|
||||
|
||||
g_variant_builder_init (&extras_variant, G_VARIANT_TYPE ("a{sv}"));
|
||||
g_variant_builder_init_static (&extras_variant, G_VARIANT_TYPE ("a{sv}"));
|
||||
if (sn_id != NULL && g_utf8_validate (sn_id, -1, NULL))
|
||||
g_variant_builder_add (&extras_variant, "{sv}",
|
||||
"startup-id",
|
||||
@ -2866,7 +2866,7 @@ emit_launch_started (GAppLaunchContext *context,
|
||||
|
||||
if (startup_id)
|
||||
{
|
||||
g_variant_builder_init (&builder, G_VARIANT_TYPE_ARRAY);
|
||||
g_variant_builder_init_static (&builder, G_VARIANT_TYPE_ARRAY);
|
||||
g_variant_builder_add (&builder, "{sv}",
|
||||
"startup-notification-id",
|
||||
g_variant_new_string (startup_id));
|
||||
@ -3070,7 +3070,7 @@ g_desktop_app_info_launch_uris_with_spawn (GDesktopAppInfo *info,
|
||||
GVariantBuilder builder;
|
||||
GVariant *platform_data;
|
||||
|
||||
g_variant_builder_init (&builder, G_VARIANT_TYPE_ARRAY);
|
||||
g_variant_builder_init_static (&builder, G_VARIANT_TYPE_ARRAY);
|
||||
g_variant_builder_add (&builder, "{sv}", "pid", g_variant_new_int32 (pid));
|
||||
if (sn_id)
|
||||
g_variant_builder_add (&builder, "{sv}", "startup-notification-id", g_variant_new_string (sn_id));
|
||||
@ -3128,7 +3128,7 @@ g_desktop_app_info_make_platform_data (GDesktopAppInfo *info,
|
||||
{
|
||||
GVariantBuilder builder;
|
||||
|
||||
g_variant_builder_init (&builder, G_VARIANT_TYPE_VARDICT);
|
||||
g_variant_builder_init_static (&builder, G_VARIANT_TYPE_VARDICT);
|
||||
|
||||
if (launch_context)
|
||||
{
|
||||
@ -3190,7 +3190,7 @@ launch_uris_with_dbus_signal_cb (GObject *object,
|
||||
{
|
||||
GVariant *platform_data;
|
||||
|
||||
g_variant_builder_init (&builder, G_VARIANT_TYPE_ARRAY);
|
||||
g_variant_builder_init_static (&builder, G_VARIANT_TYPE_ARRAY);
|
||||
/* the docs guarantee `pid` will be set, but we can’t
|
||||
* easily know it for a D-Bus process, so set it to zero */
|
||||
g_variant_builder_add (&builder, "{sv}", "pid", g_variant_new_int32 (0));
|
||||
@ -3231,7 +3231,7 @@ launch_uris_with_dbus (GDesktopAppInfo *info,
|
||||
gchar *object_path;
|
||||
LaunchUrisWithDBusData *data;
|
||||
|
||||
g_variant_builder_init (&builder, G_VARIANT_TYPE_TUPLE);
|
||||
g_variant_builder_init_static (&builder, G_VARIANT_TYPE_TUPLE);
|
||||
|
||||
if (uris)
|
||||
{
|
||||
|
@ -143,7 +143,7 @@ g_document_portal_add_documents (GList *uris,
|
||||
length = g_list_length (uris);
|
||||
as_is = g_new0 (gboolean, length);
|
||||
|
||||
g_variant_builder_init (&builder, G_VARIANT_TYPE ("ah"));
|
||||
g_variant_builder_init_static (&builder, G_VARIANT_TYPE ("ah"));
|
||||
|
||||
fd_list = g_unix_fd_list_new ();
|
||||
for (l = uris, i = 0; l; l = l->next, i++)
|
||||
|
@ -424,7 +424,7 @@ g_emblemed_icon_serialize (GIcon *icon)
|
||||
if (!icon_data)
|
||||
return NULL;
|
||||
|
||||
g_variant_builder_init (&builder, G_VARIANT_TYPE ("(va(va{sv}))"));
|
||||
g_variant_builder_init_static (&builder, G_VARIANT_TYPE ("(va(va{sv}))"));
|
||||
|
||||
g_variant_builder_add (&builder, "v", icon_data);
|
||||
g_variant_unref (icon_data);
|
||||
|
@ -292,7 +292,7 @@ call_notify (GDBusConnection *con,
|
||||
const gchar *body;
|
||||
guchar urgency;
|
||||
|
||||
g_variant_builder_init (&action_builder, G_VARIANT_TYPE_STRING_ARRAY);
|
||||
g_variant_builder_init_static (&action_builder, G_VARIANT_TYPE_STRING_ARRAY);
|
||||
if (g_notification_get_default_action (notification, NULL, NULL))
|
||||
{
|
||||
g_variant_builder_add (&action_builder, "s", "default");
|
||||
@ -329,7 +329,7 @@ call_notify (GDBusConnection *con,
|
||||
g_variant_unref (target);
|
||||
}
|
||||
|
||||
g_variant_builder_init (&hints_builder, G_VARIANT_TYPE ("a{sv}"));
|
||||
g_variant_builder_init_static (&hints_builder, G_VARIANT_TYPE ("a{sv}"));
|
||||
g_variant_builder_add (&hints_builder, "{sv}", "desktop-entry",
|
||||
g_variant_new_string (g_application_get_application_id (app)));
|
||||
urgency = urgency_from_priority (g_notification_get_priority (notification));
|
||||
|
@ -606,7 +606,7 @@ parse_resource_file (const gchar *filename,
|
||||
|
||||
g_free (mykey);
|
||||
|
||||
g_variant_builder_init (&builder, G_VARIANT_TYPE ("(uuay)"));
|
||||
g_variant_builder_init_static (&builder, G_VARIANT_TYPE ("(uuay)"));
|
||||
|
||||
g_variant_builder_add (&builder, "u", data->size); /* Size */
|
||||
g_variant_builder_add (&builder, "u", data->flags); /* Flags */
|
||||
|
@ -653,7 +653,7 @@ key_state_serialise (KeyState *state)
|
||||
checked = key_state_check (state, NULL);
|
||||
g_assert (checked);
|
||||
|
||||
g_variant_builder_init (&builder, G_VARIANT_TYPE_TUPLE);
|
||||
g_variant_builder_init_static (&builder, G_VARIANT_TYPE_TUPLE);
|
||||
|
||||
/* default value */
|
||||
g_variant_builder_add_value (&builder, state->default_value);
|
||||
|
@ -197,7 +197,7 @@ g_menu_exporter_menu_describe_item (GMenuExporterMenu *menu,
|
||||
const char *name;
|
||||
GVariant *value;
|
||||
|
||||
g_variant_builder_init (&builder, G_VARIANT_TYPE_VARDICT);
|
||||
g_variant_builder_init_static (&builder, G_VARIANT_TYPE_VARDICT);
|
||||
|
||||
attr_iter = g_menu_model_iterate_item_attributes (menu->model, position);
|
||||
while (g_menu_attribute_iter_get_next (attr_iter, &name, &value))
|
||||
@ -221,7 +221,7 @@ g_menu_exporter_menu_list (GMenuExporterMenu *menu)
|
||||
GVariantBuilder builder;
|
||||
gint i, n;
|
||||
|
||||
g_variant_builder_init (&builder, G_VARIANT_TYPE ("aa{sv}"));
|
||||
g_variant_builder_init_static (&builder, G_VARIANT_TYPE ("aa{sv}"));
|
||||
|
||||
n = g_sequence_get_length (menu->item_links);
|
||||
for (i = 0; i < n; i++)
|
||||
@ -266,7 +266,7 @@ g_menu_exporter_menu_items_changed (GMenuModel *model,
|
||||
{
|
||||
GVariantBuilder builder;
|
||||
|
||||
g_variant_builder_init (&builder, G_VARIANT_TYPE ("(uuuuaa{sv})"));
|
||||
g_variant_builder_init_static (&builder, G_VARIANT_TYPE ("(uuuuaa{sv})"));
|
||||
g_variant_builder_add (&builder, "u", g_menu_exporter_group_get_id (menu->group));
|
||||
g_variant_builder_add (&builder, "u", menu->id);
|
||||
g_variant_builder_add (&builder, "u", position);
|
||||
@ -607,7 +607,7 @@ g_menu_exporter_subscribe (GMenuExporter *exporter,
|
||||
g_menu_exporter_remote_new (exporter, 0);
|
||||
}
|
||||
|
||||
g_variant_builder_init (&builder, G_VARIANT_TYPE ("(a(uuaa{sv}))"));
|
||||
g_variant_builder_init_static (&builder, G_VARIANT_TYPE ("(a(uuaa{sv}))"));
|
||||
|
||||
g_variant_builder_open (&builder, G_VARIANT_TYPE ("a(uuaa{sv})"));
|
||||
|
||||
@ -656,7 +656,7 @@ g_menu_exporter_report (GMenuExporter *exporter,
|
||||
{
|
||||
GVariantBuilder builder;
|
||||
|
||||
g_variant_builder_init (&builder, G_VARIANT_TYPE_TUPLE);
|
||||
g_variant_builder_init_static (&builder, G_VARIANT_TYPE_TUPLE);
|
||||
g_variant_builder_open (&builder, G_VARIANT_TYPE_ARRAY);
|
||||
g_variant_builder_add_value (&builder, report);
|
||||
g_variant_builder_close (&builder);
|
||||
|
@ -343,7 +343,7 @@ g_nextstep_settings_backend_get_g_variant (id object,
|
||||
|
||||
value_type = g_variant_type_value (g_variant_type_element (type));
|
||||
|
||||
g_variant_builder_init (&builder, type);
|
||||
g_variant_builder_init_static (&builder, type);
|
||||
|
||||
#if MAC_OS_X_VERSION_MIN_REQUIRED >= 1050
|
||||
for(key in object)
|
||||
@ -384,7 +384,7 @@ g_nextstep_settings_backend_get_g_variant (id object,
|
||||
id value;
|
||||
|
||||
value_type = g_variant_type_element (type);
|
||||
g_variant_builder_init (&builder, type);
|
||||
g_variant_builder_init_static (&builder, type);
|
||||
|
||||
#if MAC_OS_X_VERSION_MIN_REQUIRED >= 1050
|
||||
for(value in object)
|
||||
|
@ -767,7 +767,7 @@ g_notification_serialize_button (Button *button)
|
||||
{
|
||||
GVariantBuilder builder;
|
||||
|
||||
g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}"));
|
||||
g_variant_builder_init_static (&builder, G_VARIANT_TYPE ("a{sv}"));
|
||||
|
||||
g_variant_builder_add (&builder, "{sv}", "label", g_variant_new_string (button->label));
|
||||
g_variant_builder_add (&builder, "{sv}", "action", g_variant_new_string (button->action_name));
|
||||
@ -806,7 +806,7 @@ g_notification_serialize (GNotification *notification)
|
||||
{
|
||||
GVariantBuilder builder;
|
||||
|
||||
g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}"));
|
||||
g_variant_builder_init_static (&builder, G_VARIANT_TYPE ("a{sv}"));
|
||||
|
||||
if (notification->title)
|
||||
g_variant_builder_add (&builder, "{sv}", "title", g_variant_new_string (notification->title));
|
||||
@ -842,7 +842,7 @@ g_notification_serialize (GNotification *notification)
|
||||
GVariantBuilder actions_builder;
|
||||
guint i;
|
||||
|
||||
g_variant_builder_init (&actions_builder, G_VARIANT_TYPE ("aa{sv}"));
|
||||
g_variant_builder_init_static (&actions_builder, G_VARIANT_TYPE ("aa{sv}"));
|
||||
|
||||
for (i = 0; i < notification->buttons->len; i++)
|
||||
{
|
||||
|
@ -95,7 +95,7 @@ g_openuri_portal_open_file (GFile *file,
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
g_variant_builder_init (&opt_builder, G_VARIANT_TYPE_VARDICT);
|
||||
g_variant_builder_init_static (&opt_builder, G_VARIANT_TYPE_VARDICT);
|
||||
|
||||
if (startup_id)
|
||||
g_variant_builder_add (&opt_builder, "{sv}",
|
||||
@ -306,7 +306,7 @@ g_openuri_portal_open_file_async (GFile *file,
|
||||
NULL);
|
||||
g_object_set_data (G_OBJECT (task), "signal-id", GINT_TO_POINTER (signal_id));
|
||||
|
||||
g_variant_builder_init (&opt_builder, G_VARIANT_TYPE_VARDICT);
|
||||
g_variant_builder_init_static (&opt_builder, G_VARIANT_TYPE_VARDICT);
|
||||
g_variant_builder_add (&opt_builder, "{sv}", "handle_token", g_variant_new_string (token));
|
||||
g_free (token);
|
||||
|
||||
|
@ -410,7 +410,7 @@ g_settings_set_mapping (const GValue *value,
|
||||
fclass = g_type_class_peek (G_VALUE_TYPE (value));
|
||||
flags = g_value_get_flags (value);
|
||||
|
||||
g_variant_builder_init (&builder, G_VARIANT_TYPE ("as"));
|
||||
g_variant_builder_init_static (&builder, G_VARIANT_TYPE ("as"));
|
||||
while (flags)
|
||||
{
|
||||
flagsval = g_flags_get_first_value (fclass, flags);
|
||||
|
@ -1381,7 +1381,7 @@ g_settings_schema_key_range_fixup (GSettingsSchemaKey *key,
|
||||
GVariant *child;
|
||||
|
||||
g_variant_iter_init (&iter, value);
|
||||
g_variant_builder_init (&builder, g_variant_get_type (value));
|
||||
g_variant_builder_init_static (&builder, g_variant_get_type (value));
|
||||
|
||||
while ((child = g_variant_iter_next_value (&iter)))
|
||||
{
|
||||
@ -1574,7 +1574,7 @@ g_settings_schema_key_from_flags (GSettingsSchemaKey *key,
|
||||
GVariantBuilder builder;
|
||||
gint i;
|
||||
|
||||
g_variant_builder_init (&builder, G_VARIANT_TYPE ("as"));
|
||||
g_variant_builder_init_static (&builder, G_VARIANT_TYPE ("as"));
|
||||
|
||||
for (i = 0; i < 32; i++)
|
||||
if (value & (1u << i))
|
||||
|
@ -4790,7 +4790,7 @@ make_platform_data (GPid pid)
|
||||
{
|
||||
GVariantBuilder builder;
|
||||
|
||||
g_variant_builder_init (&builder, G_VARIANT_TYPE_ARRAY);
|
||||
g_variant_builder_init_static (&builder, G_VARIANT_TYPE_ARRAY);
|
||||
/* pid handles are never bigger than 2^24 as per
|
||||
* https://docs.microsoft.com/en-us/windows/win32/sysinfo/kernel-objects,
|
||||
* so truncating to `int32` is valid.
|
||||
|
@ -272,7 +272,7 @@ strinfo_enumerate (const guint32 *strinfo,
|
||||
|
||||
ptr += 4;
|
||||
|
||||
g_variant_builder_init (&builder, G_VARIANT_TYPE_STRING_ARRAY);
|
||||
g_variant_builder_init_static (&builder, G_VARIANT_TYPE_STRING_ARRAY);
|
||||
|
||||
while (ptr < end)
|
||||
{
|
||||
|
@ -1368,7 +1368,7 @@ test_dbus_activate (void)
|
||||
g_ptr_array_add (messages, g_steal_pointer (&message));
|
||||
|
||||
/* With some platform data */
|
||||
g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}"));
|
||||
g_variant_builder_init_static (&builder, G_VARIANT_TYPE ("a{sv}"));
|
||||
g_variant_builder_add (&builder, "{sv}", "cwd", g_variant_new_bytestring ("/home/henry"));
|
||||
|
||||
message = g_dbus_message_new_method_call ("org.gtk.TestApplication.Activate",
|
||||
@ -1446,7 +1446,7 @@ test_dbus_open (void)
|
||||
messages = g_ptr_array_new_with_free_func (g_object_unref);
|
||||
|
||||
/* Via org.gtk.Application */
|
||||
g_variant_builder_init (&builder, G_VARIANT_TYPE ("as"));
|
||||
g_variant_builder_init_static (&builder, G_VARIANT_TYPE ("as"));
|
||||
g_variant_builder_add (&builder, "s", "file:///home/henry/test");
|
||||
|
||||
message = g_dbus_message_new_method_call ("org.gtk.TestApplication.Open",
|
||||
@ -1457,7 +1457,7 @@ test_dbus_open (void)
|
||||
g_ptr_array_add (messages, g_steal_pointer (&message));
|
||||
|
||||
/* Via org.freedesktop.Application (which has no hint parameter) */
|
||||
g_variant_builder_init (&builder, G_VARIANT_TYPE ("as"));
|
||||
g_variant_builder_init_static (&builder, G_VARIANT_TYPE ("as"));
|
||||
g_variant_builder_add (&builder, "s", "file:///home/henry/test");
|
||||
|
||||
message = g_dbus_message_new_method_call ("org.gtk.TestApplication.Open",
|
||||
@ -1468,11 +1468,11 @@ test_dbus_open (void)
|
||||
g_ptr_array_add (messages, g_steal_pointer (&message));
|
||||
|
||||
/* With some platform data and more than one file */
|
||||
g_variant_builder_init (&builder, G_VARIANT_TYPE ("as"));
|
||||
g_variant_builder_init_static (&builder, G_VARIANT_TYPE ("as"));
|
||||
g_variant_builder_add (&builder, "s", "file:///home/henry/test");
|
||||
g_variant_builder_add (&builder, "s", "file:///home/henry/test2");
|
||||
|
||||
g_variant_builder_init (&builder2, G_VARIANT_TYPE ("a{sv}"));
|
||||
g_variant_builder_init_static (&builder2, G_VARIANT_TYPE ("a{sv}"));
|
||||
g_variant_builder_add (&builder2, "{sv}", "cwd", g_variant_new_bytestring ("/home/henry"));
|
||||
|
||||
message = g_dbus_message_new_method_call ("org.gtk.TestApplication.Open",
|
||||
@ -1550,7 +1550,7 @@ test_dbus_command_line (void)
|
||||
messages = g_ptr_array_new_with_free_func (g_object_unref);
|
||||
|
||||
/* Via org.gtk.Application */
|
||||
g_variant_builder_init (&builder, G_VARIANT_TYPE ("aay"));
|
||||
g_variant_builder_init_static (&builder, G_VARIANT_TYPE ("aay"));
|
||||
g_variant_builder_add (&builder, "^ay", "test-program");
|
||||
g_variant_builder_add (&builder, "^ay", "--open");
|
||||
g_variant_builder_add (&builder, "^ay", "/path/to/something");
|
||||
@ -1565,12 +1565,12 @@ test_dbus_command_line (void)
|
||||
g_ptr_array_add (messages, g_steal_pointer (&message));
|
||||
|
||||
/* With platform data */
|
||||
g_variant_builder_init (&builder, G_VARIANT_TYPE ("aay"));
|
||||
g_variant_builder_init_static (&builder, G_VARIANT_TYPE ("aay"));
|
||||
g_variant_builder_add (&builder, "^ay", "test-program");
|
||||
g_variant_builder_add (&builder, "^ay", "--open");
|
||||
g_variant_builder_add (&builder, "^ay", "/path/to/something");
|
||||
|
||||
g_variant_builder_init (&builder2, G_VARIANT_TYPE ("a{sv}"));
|
||||
g_variant_builder_init_static (&builder2, G_VARIANT_TYPE ("a{sv}"));
|
||||
g_variant_builder_add (&builder2, "{sv}", "cwd", g_variant_new_bytestring ("/home"));
|
||||
g_variant_builder_add_parsed (&builder2, "{'environ', <@aay [ b'HOME=/home/bloop', b'PATH=/blah']>}");
|
||||
g_variant_builder_add_parsed (&builder2, "{'options', <{'a': <@u 32>, 'b': <'bloop'>}>}");
|
||||
@ -1585,12 +1585,12 @@ test_dbus_command_line (void)
|
||||
g_ptr_array_add (messages, g_steal_pointer (&message));
|
||||
|
||||
/* With invalid typed platform data */
|
||||
g_variant_builder_init (&builder, G_VARIANT_TYPE ("aay"));
|
||||
g_variant_builder_init_static (&builder, G_VARIANT_TYPE ("aay"));
|
||||
g_variant_builder_add (&builder, "^ay", "test-program");
|
||||
g_variant_builder_add (&builder, "^ay", "--open");
|
||||
g_variant_builder_add (&builder, "^ay", "/path/to/something");
|
||||
|
||||
g_variant_builder_init (&builder2, G_VARIANT_TYPE ("a{sv}"));
|
||||
g_variant_builder_init_static (&builder2, G_VARIANT_TYPE ("a{sv}"));
|
||||
g_variant_builder_add (&builder2, "{sv}", "cwd", g_variant_new_string ("/home should be a bytestring"));
|
||||
g_variant_builder_add_parsed (&builder2, "{'environ', <['HOME=should be a bytestring', 'PATH=this also']>}");
|
||||
g_variant_builder_add_parsed (&builder2, "{'options', <['should be a', 'dict']>}");
|
||||
@ -1673,7 +1673,7 @@ test_dbus_command_line_done (void)
|
||||
|
||||
g_test_summary ("Test that GDBusCommandLine.done() works");
|
||||
|
||||
g_variant_builder_init (&builder, G_VARIANT_TYPE ("aay"));
|
||||
g_variant_builder_init_static (&builder, G_VARIANT_TYPE ("aay"));
|
||||
g_variant_builder_add (&builder, "^ay", "test-program");
|
||||
g_variant_builder_add (&builder, "^ay", "/path/to/something");
|
||||
|
||||
@ -1748,7 +1748,7 @@ test_dbus_activate_action (void)
|
||||
messages[0].n_expected_activations = 1;
|
||||
|
||||
/* Action with parameter */
|
||||
g_variant_builder_init (&builder, G_VARIANT_TYPE ("av"));
|
||||
g_variant_builder_init_static (&builder, G_VARIANT_TYPE ("av"));
|
||||
g_variant_builder_add (&builder, "v", g_variant_new_string ("spanish"));
|
||||
|
||||
messages[1].message = g_dbus_message_new_method_call ("org.gtk.TestApplication.ActivateAction",
|
||||
@ -1759,7 +1759,7 @@ test_dbus_activate_action (void)
|
||||
messages[1].n_expected_activations = 1;
|
||||
|
||||
/* Action with unexpected parameter */
|
||||
g_variant_builder_init (&builder, G_VARIANT_TYPE ("av"));
|
||||
g_variant_builder_init_static (&builder, G_VARIANT_TYPE ("av"));
|
||||
g_variant_builder_add (&builder, "v", g_variant_new_string ("should not be passed"));
|
||||
|
||||
messages[2].message = g_dbus_message_new_method_call ("org.gtk.TestApplication.ActivateAction",
|
||||
@ -1778,7 +1778,7 @@ test_dbus_activate_action (void)
|
||||
messages[3].n_expected_activations = 0;
|
||||
|
||||
/* Action with wrong parameter type */
|
||||
g_variant_builder_init (&builder, G_VARIANT_TYPE ("av"));
|
||||
g_variant_builder_init_static (&builder, G_VARIANT_TYPE ("av"));
|
||||
g_variant_builder_add (&builder, "v", g_variant_new_uint32 (42));
|
||||
|
||||
messages[4].message = g_dbus_message_new_method_call ("org.gtk.TestApplication.ActivateAction",
|
||||
@ -1797,7 +1797,7 @@ test_dbus_activate_action (void)
|
||||
messages[5].n_expected_activations = 0;
|
||||
|
||||
/* Action with tuple as parameter given as two items to the interface */
|
||||
g_variant_builder_init (&builder, G_VARIANT_TYPE ("av"));
|
||||
g_variant_builder_init_static (&builder, G_VARIANT_TYPE ("av"));
|
||||
g_variant_builder_add (&builder, "v", g_variant_new_string ("first"));
|
||||
g_variant_builder_add (&builder, "v", g_variant_new_string ("second"));
|
||||
|
||||
@ -1810,7 +1810,7 @@ test_dbus_activate_action (void)
|
||||
messages[6].n_expected_activations = 1;
|
||||
|
||||
/* Action with tuple as parameter given as two items to the interface but with a wrong type */
|
||||
g_variant_builder_init (&builder, G_VARIANT_TYPE ("av"));
|
||||
g_variant_builder_init_static (&builder, G_VARIANT_TYPE ("av"));
|
||||
g_variant_builder_add (&builder, "v", g_variant_new_string ("first"));
|
||||
g_variant_builder_add (&builder, "v", g_variant_new_uint32 (42));
|
||||
|
||||
@ -1822,7 +1822,7 @@ test_dbus_activate_action (void)
|
||||
messages[7].n_expected_activations = 0;
|
||||
|
||||
/* Action with tuple as parameter given as a single item to the interface */
|
||||
g_variant_builder_init (&builder, G_VARIANT_TYPE ("av"));
|
||||
g_variant_builder_init_static (&builder, G_VARIANT_TYPE ("av"));
|
||||
g_variant_builder_add (&builder, "v", g_variant_new ("(ss)", "first", "second"));
|
||||
|
||||
messages[8].message = g_dbus_message_new_method_call ("org.gtk.TestApplication.ActivateAction",
|
||||
@ -1833,7 +1833,7 @@ test_dbus_activate_action (void)
|
||||
messages[8].n_expected_activations = 1;
|
||||
|
||||
/* Action with tuple as parameter given as a single item to the interface but with additional items */
|
||||
g_variant_builder_init (&builder, G_VARIANT_TYPE ("av"));
|
||||
g_variant_builder_init_static (&builder, G_VARIANT_TYPE ("av"));
|
||||
g_variant_builder_add (&builder, "v", g_variant_new ("(ss)", "first", "second"));
|
||||
g_variant_builder_add (&builder, "v", g_variant_new_uint32 (42));
|
||||
g_variant_builder_add (&builder, "v", g_variant_new_uint32 (42));
|
||||
@ -1846,7 +1846,7 @@ test_dbus_activate_action (void)
|
||||
messages[9].n_expected_activations = 0;
|
||||
|
||||
/* Action with tuple with single item as parameter */
|
||||
g_variant_builder_init (&builder, G_VARIANT_TYPE ("av"));
|
||||
g_variant_builder_init_static (&builder, G_VARIANT_TYPE ("av"));
|
||||
g_variant_builder_add (&builder, "v", g_variant_new ("(s)", "first"));
|
||||
|
||||
messages[10].message = g_dbus_message_new_method_call ("org.gtk.TestApplication.ActivateAction",
|
||||
@ -1857,7 +1857,7 @@ test_dbus_activate_action (void)
|
||||
messages[10].n_expected_activations = 1;
|
||||
|
||||
/* Action with tuple with single item as parameter with additional items */
|
||||
g_variant_builder_init (&builder, G_VARIANT_TYPE ("av"));
|
||||
g_variant_builder_init_static (&builder, G_VARIANT_TYPE ("av"));
|
||||
g_variant_builder_add (&builder, "v", g_variant_new ("(s)", "first"));
|
||||
g_variant_builder_add (&builder, "v", g_variant_new_uint32 (42));
|
||||
g_variant_builder_add (&builder, "v", g_variant_new_uint32 (43));
|
||||
|
@ -129,7 +129,7 @@ mock_interface_get_properties (GDBusInterfaceSkeleton *interface)
|
||||
info = g_dbus_interface_skeleton_get_info (interface);
|
||||
vtable = g_dbus_interface_skeleton_get_vtable (interface);
|
||||
|
||||
g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}"));
|
||||
g_variant_builder_init_static (&builder, G_VARIANT_TYPE ("a{sv}"));
|
||||
for (n = 0; info->properties[n] != NULL; n++)
|
||||
{
|
||||
if (info->properties[n]->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE)
|
||||
|
@ -1262,7 +1262,7 @@ test_message_serialize_double_array (void)
|
||||
|
||||
g_test_bug ("https://bugzilla.gnome.org/show_bug.cgi?id=732754");
|
||||
|
||||
g_variant_builder_init (&builder, G_VARIANT_TYPE ("ad"));
|
||||
g_variant_builder_init_static (&builder, G_VARIANT_TYPE ("ad"));
|
||||
g_variant_builder_add (&builder, "d", (gdouble)0.0);
|
||||
g_variant_builder_add (&builder, "d", (gdouble)8.0);
|
||||
g_variant_builder_add (&builder, "d", (gdouble)22.0);
|
||||
@ -1639,7 +1639,7 @@ test_message_parse_truncated (void)
|
||||
g_test_bug ("https://gitlab.gnome.org/GNOME/glib/-/issues/2528");
|
||||
|
||||
message = g_dbus_message_new ();
|
||||
g_variant_builder_init (&builder, G_VARIANT_TYPE ("(asbynqiuxtd)"));
|
||||
g_variant_builder_init_static (&builder, G_VARIANT_TYPE ("(asbynqiuxtd)"));
|
||||
g_variant_builder_open (&builder, G_VARIANT_TYPE ("as"));
|
||||
g_variant_builder_add (&builder, "s", "fourtytwo");
|
||||
g_variant_builder_close (&builder);
|
||||
@ -1747,7 +1747,7 @@ test_message_serialize_empty_structure (void)
|
||||
g_test_bug ("https://gitlab.gnome.org/GNOME/glib/-/issues/2557");
|
||||
|
||||
message = g_dbus_message_new ();
|
||||
g_variant_builder_init (&builder, G_VARIANT_TYPE ("(a())"));
|
||||
g_variant_builder_init_static (&builder, G_VARIANT_TYPE ("(a())"));
|
||||
g_variant_builder_open (&builder, G_VARIANT_TYPE ("a()"));
|
||||
g_variant_builder_add (&builder, "()");
|
||||
g_variant_builder_close (&builder);
|
||||
|
@ -327,7 +327,7 @@ handle_method_call (GDBusConnection *connection,
|
||||
gsize i, j;
|
||||
GVariantBuilder ret;
|
||||
|
||||
g_variant_builder_init (&ret, G_VARIANT_TYPE ("(ayabanaqaiauaxatad)"));
|
||||
g_variant_builder_init_static (&ret, G_VARIANT_TYPE ("(ayabanaqaiauaxatad)"));
|
||||
|
||||
v = g_variant_get_child_value (parameters, 0);
|
||||
bytes = g_variant_get_fixed_array (v, &n_elts, 1);
|
||||
@ -423,7 +423,7 @@ handle_method_call (GDBusConnection *connection,
|
||||
const gchar *s;
|
||||
gint i;
|
||||
|
||||
g_variant_builder_init (&ret, G_VARIANT_TYPE ("(asaoag)"));
|
||||
g_variant_builder_init_static (&ret, G_VARIANT_TYPE ("(asaoag)"));
|
||||
g_variant_get (parameters, "(asaoag)", &iter1, &iter2, &iter3);
|
||||
|
||||
g_variant_builder_open (&ret, G_VARIANT_TYPE ("as"));
|
||||
@ -479,7 +479,7 @@ handle_method_call (GDBusConnection *connection,
|
||||
gdouble d1, d2;
|
||||
gchar *s1, *s2;
|
||||
|
||||
g_variant_builder_init (&ret, G_VARIANT_TYPE ("(a{yy}a{bb}a{nn}a{qq}a{ii}a{uu}a{xx}a{tt}a{dd}a{ss}a{oo}a{gg})"));
|
||||
g_variant_builder_init_static (&ret, G_VARIANT_TYPE ("(a{yy}a{bb}a{nn}a{qq}a{ii}a{uu}a{xx}a{tt}a{dd}a{ss}a{oo}a{gg})"));
|
||||
|
||||
g_variant_builder_open (&ret, G_VARIANT_TYPE ("a{yy}"));
|
||||
v = g_variant_get_child_value (parameters, 0);
|
||||
@ -617,7 +617,7 @@ handle_method_call (GDBusConnection *connection,
|
||||
|
||||
desc_ret = g_strconcat (desc, "... in bed!", NULL);
|
||||
|
||||
g_variant_builder_init (&ret1, G_VARIANT_TYPE ("ay"));
|
||||
g_variant_builder_init_static (&ret1, G_VARIANT_TYPE ("ay"));
|
||||
iter = g_variant_iter_copy (iter1);
|
||||
while (g_variant_iter_loop (iter1, "y", &v))
|
||||
g_variant_builder_add (&ret1, "y", v);
|
||||
@ -626,7 +626,7 @@ handle_method_call (GDBusConnection *connection,
|
||||
g_variant_iter_free (iter);
|
||||
g_variant_iter_free (iter1);
|
||||
|
||||
g_variant_builder_init (&ret2, G_VARIANT_TYPE ("a{ss}"));
|
||||
g_variant_builder_init_static (&ret2, G_VARIANT_TYPE ("a{ss}"));
|
||||
while (g_variant_iter_loop (iter1, "ss", &s1, &s2))
|
||||
{
|
||||
gchar *tmp;
|
||||
|
@ -1007,7 +1007,7 @@ array_get_value (AST *ast,
|
||||
if (!g_variant_type_is_array (type))
|
||||
return ast_type_error (ast, type, error);
|
||||
|
||||
g_variant_builder_init (&builder, type);
|
||||
g_variant_builder_init_static (&builder, type);
|
||||
childtype = g_variant_type_element (type);
|
||||
|
||||
for (i = 0; i < array->n_children; i++)
|
||||
@ -1133,7 +1133,7 @@ tuple_get_value (AST *ast,
|
||||
if (!g_variant_type_is_tuple (type))
|
||||
return ast_type_error (ast, type, error);
|
||||
|
||||
g_variant_builder_init (&builder, type);
|
||||
g_variant_builder_init_static (&builder, type);
|
||||
childtype = g_variant_type_first (type);
|
||||
|
||||
for (i = 0; i < tuple->n_children; i++)
|
||||
@ -1391,7 +1391,7 @@ dictionary_get_value (AST *ast,
|
||||
if (!g_variant_type_is_dict_entry (type))
|
||||
return ast_type_error (ast, type, error);
|
||||
|
||||
g_variant_builder_init (&builder, type);
|
||||
g_variant_builder_init_static (&builder, type);
|
||||
|
||||
subtype = g_variant_type_key (type);
|
||||
if (!(subvalue = ast_get_value (dict->keys[0], subtype, error)))
|
||||
@ -1424,7 +1424,7 @@ dictionary_get_value (AST *ast,
|
||||
key = g_variant_type_key (entry);
|
||||
val = g_variant_type_value (entry);
|
||||
|
||||
g_variant_builder_init (&builder, type);
|
||||
g_variant_builder_init_static (&builder, type);
|
||||
|
||||
for (i = 0; i < dict->n_children; i++)
|
||||
{
|
||||
@ -2732,7 +2732,7 @@ g_variant_new_parsed (const gchar *format,
|
||||
* GVariantBuilder builder;
|
||||
* int i;
|
||||
*
|
||||
* g_variant_builder_init (&builder, G_VARIANT_TYPE_ARRAY);
|
||||
* g_variant_builder_init_static (&builder, G_VARIANT_TYPE_ARRAY);
|
||||
* g_variant_builder_add_parsed (&builder, "{'width', <%i>}", 600);
|
||||
* g_variant_builder_add_parsed (&builder, "{'title', <%s>}", "foo");
|
||||
* g_variant_builder_add_parsed (&builder, "{'transparency', <0.5>}");
|
||||
|
161
glib/gvariant.c
161
glib/gvariant.c
@ -3201,6 +3201,9 @@ struct stack_builder
|
||||
*/
|
||||
guint trusted : 1;
|
||||
|
||||
/* If @type was copied when constructing the builder */
|
||||
guint type_owned : 1;
|
||||
|
||||
gsize magic;
|
||||
};
|
||||
|
||||
@ -3243,7 +3246,7 @@ ensure_valid_builder (GVariantBuilder *builder)
|
||||
if (memcmp (cleared_builder.u.s.y, builder->u.s.y, sizeof cleared_builder.u.s.y))
|
||||
return FALSE;
|
||||
|
||||
g_variant_builder_init (builder, builder->u.s.type);
|
||||
g_variant_builder_init_static (builder, builder->u.s.type);
|
||||
}
|
||||
return is_valid_builder (builder);
|
||||
}
|
||||
@ -3278,7 +3281,7 @@ ensure_valid_builder (GVariantBuilder *builder)
|
||||
*
|
||||
* In most cases it is easier to place a #GVariantBuilder directly on
|
||||
* the stack of the calling function and initialise it with
|
||||
* g_variant_builder_init().
|
||||
* g_variant_builder_init_static().
|
||||
*
|
||||
* Returns: (transfer full): a #GVariantBuilder
|
||||
*
|
||||
@ -3380,7 +3383,8 @@ g_variant_builder_clear (GVariantBuilder *builder)
|
||||
|
||||
return_if_invalid_builder (builder);
|
||||
|
||||
g_variant_type_free (GVSB(builder)->type);
|
||||
if (GVSB(builder)->type_owned)
|
||||
g_variant_type_free (GVSB(builder)->type);
|
||||
|
||||
for (i = 0; i < GVSB(builder)->offset; i++)
|
||||
g_variant_unref (GVSB(builder)->children[i]);
|
||||
@ -3396,55 +3400,20 @@ g_variant_builder_clear (GVariantBuilder *builder)
|
||||
memset (builder, 0, sizeof (GVariantBuilder));
|
||||
}
|
||||
|
||||
/**
|
||||
* g_variant_builder_init: (skip)
|
||||
* @builder: a #GVariantBuilder
|
||||
* @type: a container type
|
||||
*
|
||||
* Initialises a #GVariantBuilder structure.
|
||||
*
|
||||
* @type must be non-%NULL. It specifies the type of container to
|
||||
* construct. It can be an indefinite type such as
|
||||
* %G_VARIANT_TYPE_ARRAY or a definite type such as "as" or "(ii)".
|
||||
* Maybe, array, tuple, dictionary entry and variant-typed values may be
|
||||
* constructed.
|
||||
*
|
||||
* After the builder is initialised, values are added using
|
||||
* g_variant_builder_add_value() or g_variant_builder_add().
|
||||
*
|
||||
* After all the child values are added, g_variant_builder_end() frees
|
||||
* the memory associated with the builder and returns the #GVariant that
|
||||
* was created.
|
||||
*
|
||||
* This function completely ignores the previous contents of @builder.
|
||||
* On one hand this means that it is valid to pass in completely
|
||||
* uninitialised memory. On the other hand, this means that if you are
|
||||
* initialising over top of an existing #GVariantBuilder you need to
|
||||
* first call g_variant_builder_clear() in order to avoid leaking
|
||||
* memory.
|
||||
*
|
||||
* You must not call g_variant_builder_ref() or
|
||||
* g_variant_builder_unref() on a #GVariantBuilder that was initialised
|
||||
* with this function. If you ever pass a reference to a
|
||||
* #GVariantBuilder outside of the control of your own code then you
|
||||
* should assume that the person receiving that reference may try to use
|
||||
* reference counting; you should use g_variant_builder_new() instead of
|
||||
* this function.
|
||||
*
|
||||
* Since: 2.24
|
||||
**/
|
||||
void
|
||||
g_variant_builder_init (GVariantBuilder *builder,
|
||||
const GVariantType *type)
|
||||
static void
|
||||
_g_variant_builder_init (GVariantBuilder *builder,
|
||||
const GVariantType *type,
|
||||
gboolean type_owned)
|
||||
{
|
||||
g_return_if_fail (type != NULL);
|
||||
g_return_if_fail (g_variant_type_is_container (type));
|
||||
|
||||
memset (builder, 0, sizeof (GVariantBuilder));
|
||||
|
||||
GVSB(builder)->type = g_variant_type_copy (type);
|
||||
GVSB(builder)->type = (GVariantType *)type;
|
||||
GVSB(builder)->magic = GVSB_MAGIC;
|
||||
GVSB(builder)->trusted = TRUE;
|
||||
GVSB(builder)->type_owned = type_owned;
|
||||
|
||||
switch (*(const gchar *) type)
|
||||
{
|
||||
@ -3519,6 +3488,75 @@ g_variant_builder_init (GVariantBuilder *builder,
|
||||
#endif
|
||||
}
|
||||
|
||||
/**
|
||||
* g_variant_builder_init: (skip)
|
||||
* @builder: a #GVariantBuilder
|
||||
* @type: a container type
|
||||
*
|
||||
* Initialises a #GVariantBuilder structure.
|
||||
*
|
||||
* @type must be non-%NULL. It specifies the type of container to
|
||||
* construct. It can be an indefinite type such as
|
||||
* %G_VARIANT_TYPE_ARRAY or a definite type such as "as" or "(ii)".
|
||||
* Maybe, array, tuple, dictionary entry and variant-typed values may be
|
||||
* constructed.
|
||||
*
|
||||
* If using a static type such as one of the `G_VARIANT_TYPE_*` constants
|
||||
* or a `G_VARIANT_TYPE ("(ii)")` macro, it is more performant to use
|
||||
* g_variant_builder_init_static() rather than g_variant_builder_init().
|
||||
*
|
||||
* After the builder is initialised, values are added using
|
||||
* g_variant_builder_add_value() or g_variant_builder_add().
|
||||
*
|
||||
* After all the child values are added, g_variant_builder_end() frees
|
||||
* the memory associated with the builder and returns the #GVariant that
|
||||
* was created.
|
||||
*
|
||||
* This function completely ignores the previous contents of @builder.
|
||||
* On one hand this means that it is valid to pass in completely
|
||||
* uninitialised memory. On the other hand, this means that if you are
|
||||
* initialising over top of an existing #GVariantBuilder you need to
|
||||
* first call g_variant_builder_clear() in order to avoid leaking
|
||||
* memory.
|
||||
*
|
||||
* You must not call g_variant_builder_ref() or
|
||||
* g_variant_builder_unref() on a #GVariantBuilder that was initialised
|
||||
* with this function. If you ever pass a reference to a
|
||||
* #GVariantBuilder outside of the control of your own code then you
|
||||
* should assume that the person receiving that reference may try to use
|
||||
* reference counting; you should use g_variant_builder_new() instead of
|
||||
* this function.
|
||||
*
|
||||
* Since: 2.24
|
||||
**/
|
||||
void
|
||||
g_variant_builder_init (GVariantBuilder *builder,
|
||||
const GVariantType *type)
|
||||
{
|
||||
_g_variant_builder_init (builder, g_variant_type_copy (type), TRUE);
|
||||
}
|
||||
|
||||
/**
|
||||
* g_variant_builder_init_static: (skip)
|
||||
* @builder: a #GVariantBuilder
|
||||
* @type: a container type
|
||||
*
|
||||
* Initialises a #GVariantBuilder structure.
|
||||
*
|
||||
* This function works exactly like g_variant_builder_init() but does
|
||||
* not make a copy of @type. Therefore, @type must remain valid for the
|
||||
* lifetime of @builder. This is always true of type constants like
|
||||
* `G_VARIANT_TYPE_*` or `G_VARIANT_TYPE ("(ii)")`.
|
||||
*
|
||||
* Since: 2.84
|
||||
**/
|
||||
void
|
||||
g_variant_builder_init_static (GVariantBuilder *builder,
|
||||
const GVariantType *type)
|
||||
{
|
||||
_g_variant_builder_init (builder, type, FALSE);
|
||||
}
|
||||
|
||||
static void
|
||||
g_variant_builder_make_room (struct stack_builder *builder)
|
||||
{
|
||||
@ -3744,7 +3782,8 @@ g_variant_make_array_type (GVariant *element)
|
||||
GVariant *
|
||||
g_variant_builder_end (GVariantBuilder *builder)
|
||||
{
|
||||
GVariantType *my_type;
|
||||
const GVariantType *type;
|
||||
GVariantType *new_type = NULL;
|
||||
GVariant *value;
|
||||
GVariant **children;
|
||||
|
||||
@ -3757,21 +3796,21 @@ g_variant_builder_end (GVariantBuilder *builder)
|
||||
NULL);
|
||||
|
||||
if (g_variant_type_is_definite (GVSB(builder)->type))
|
||||
my_type = g_variant_type_copy (GVSB(builder)->type);
|
||||
type = GVSB(builder)->type;
|
||||
|
||||
else if (g_variant_type_is_maybe (GVSB(builder)->type))
|
||||
my_type = g_variant_make_maybe_type (GVSB(builder)->children[0]);
|
||||
type = new_type = g_variant_make_maybe_type (GVSB(builder)->children[0]);
|
||||
|
||||
else if (g_variant_type_is_array (GVSB(builder)->type))
|
||||
my_type = g_variant_make_array_type (GVSB(builder)->children[0]);
|
||||
type = new_type = g_variant_make_array_type (GVSB(builder)->children[0]);
|
||||
|
||||
else if (g_variant_type_is_tuple (GVSB(builder)->type))
|
||||
my_type = g_variant_make_tuple_type (GVSB(builder)->children,
|
||||
GVSB(builder)->offset);
|
||||
type = new_type = g_variant_make_tuple_type (GVSB(builder)->children,
|
||||
GVSB(builder)->offset);
|
||||
|
||||
else if (g_variant_type_is_dict_entry (GVSB(builder)->type))
|
||||
my_type = g_variant_make_dict_entry_type (GVSB(builder)->children[0],
|
||||
GVSB(builder)->children[1]);
|
||||
type = new_type = g_variant_make_dict_entry_type (GVSB(builder)->children[0],
|
||||
GVSB(builder)->children[1]);
|
||||
else
|
||||
g_assert_not_reached ();
|
||||
|
||||
@ -3781,7 +3820,7 @@ g_variant_builder_end (GVariantBuilder *builder)
|
||||
if G_UNLIKELY (GVSB(builder)->offset < GVSB(builder)->allocated_children)
|
||||
children = g_renew (GVariant *, children, GVSB(builder)->offset);
|
||||
|
||||
value = g_variant_new_from_children (my_type,
|
||||
value = g_variant_new_from_children (type,
|
||||
children,
|
||||
GVSB(builder)->offset,
|
||||
GVSB(builder)->trusted);
|
||||
@ -3789,7 +3828,9 @@ g_variant_builder_end (GVariantBuilder *builder)
|
||||
GVSB(builder)->offset = 0;
|
||||
|
||||
g_variant_builder_clear (builder);
|
||||
g_variant_type_free (my_type);
|
||||
|
||||
if (new_type != NULL)
|
||||
g_variant_type_free (new_type);
|
||||
|
||||
return value;
|
||||
}
|
||||
@ -4284,7 +4325,7 @@ g_variant_dict_end (GVariantDict *dict)
|
||||
|
||||
return_val_if_invalid_dict (dict, NULL);
|
||||
|
||||
g_variant_builder_init (&builder, G_VARIANT_TYPE_VARDICT);
|
||||
g_variant_builder_init_static (&builder, G_VARIANT_TYPE_VARDICT);
|
||||
|
||||
g_hash_table_iter_init (&iter, GVSD(dict)->values);
|
||||
while (g_hash_table_iter_next (&iter, &key, &value))
|
||||
@ -5313,11 +5354,11 @@ g_variant_valist_new (const gchar **str,
|
||||
GVariantBuilder b;
|
||||
|
||||
if (**str == '(')
|
||||
g_variant_builder_init (&b, G_VARIANT_TYPE_TUPLE);
|
||||
g_variant_builder_init_static (&b, G_VARIANT_TYPE_TUPLE);
|
||||
else
|
||||
{
|
||||
g_assert (**str == '{');
|
||||
g_variant_builder_init (&b, G_VARIANT_TYPE_DICT_ENTRY);
|
||||
g_variant_builder_init_static (&b, G_VARIANT_TYPE_DICT_ENTRY);
|
||||
}
|
||||
|
||||
(*str)++; /* '(' */
|
||||
@ -5631,7 +5672,7 @@ g_variant_get_va (GVariant *value,
|
||||
* GVariantBuilder builder;
|
||||
* int i;
|
||||
*
|
||||
* g_variant_builder_init (&builder, G_VARIANT_TYPE_ARRAY);
|
||||
* g_variant_builder_init_static (&builder, G_VARIANT_TYPE_ARRAY);
|
||||
* for (i = 0; i < 16; i++)
|
||||
* {
|
||||
* gchar buf[3];
|
||||
@ -5908,7 +5949,7 @@ g_variant_deep_copy (GVariant *value,
|
||||
GVariantBuilder builder;
|
||||
gsize i, n_children;
|
||||
|
||||
g_variant_builder_init (&builder, g_variant_get_type (value));
|
||||
g_variant_builder_init_static (&builder, g_variant_get_type (value));
|
||||
|
||||
for (i = 0, n_children = g_variant_n_children (value); i < n_children; i++)
|
||||
{
|
||||
@ -5949,7 +5990,7 @@ g_variant_deep_copy (GVariant *value,
|
||||
*
|
||||
* See https://gitlab.gnome.org/GNOME/glib/-/issues/2540 */
|
||||
|
||||
g_variant_builder_init (&builder, g_variant_get_type (value));
|
||||
g_variant_builder_init_static (&builder, g_variant_get_type (value));
|
||||
|
||||
for (i = 0, n_children = g_variant_n_children (value); i < n_children; i++)
|
||||
{
|
||||
|
@ -382,6 +382,9 @@ GVariantBuilder * g_variant_builder_ref (GVarian
|
||||
GLIB_AVAILABLE_IN_ALL
|
||||
void g_variant_builder_init (GVariantBuilder *builder,
|
||||
const GVariantType *type);
|
||||
GLIB_AVAILABLE_IN_2_84
|
||||
void g_variant_builder_init_static (GVariantBuilder *builder,
|
||||
const GVariantType *type);
|
||||
GLIB_AVAILABLE_IN_ALL
|
||||
GVariant * g_variant_builder_end (GVariantBuilder *builder);
|
||||
GLIB_AVAILABLE_IN_ALL
|
||||
|
@ -5084,6 +5084,28 @@ test_stack_builder_init (void)
|
||||
g_variant_unref (variant);
|
||||
}
|
||||
|
||||
static void
|
||||
test_stack_builder_init_static (void)
|
||||
{
|
||||
GVariantBuilder builder;
|
||||
GVariant *variant;
|
||||
|
||||
g_variant_builder_init_static (&builder, G_VARIANT_TYPE_BYTESTRING);
|
||||
g_variant_builder_add_value (&builder, g_variant_new_byte ('g'));
|
||||
g_variant_builder_add_value (&builder, g_variant_new_byte ('l'));
|
||||
g_variant_builder_add_value (&builder, g_variant_new_byte ('i'));
|
||||
g_variant_builder_add_value (&builder, g_variant_new_byte ('b'));
|
||||
g_variant_builder_add_value (&builder, g_variant_new_byte ('\0'));
|
||||
|
||||
variant = g_variant_ref_sink (g_variant_builder_end (&builder));
|
||||
g_assert_nonnull (variant);
|
||||
g_assert_true (g_variant_type_equal (g_variant_get_type (variant),
|
||||
G_VARIANT_TYPE_BYTESTRING));
|
||||
g_assert_cmpuint (g_variant_n_children (variant), ==, 5);
|
||||
g_assert_cmpstr (g_variant_get_bytestring (variant), ==, "glib");
|
||||
g_variant_unref (variant);
|
||||
}
|
||||
|
||||
static GVariant *
|
||||
get_asv (void)
|
||||
{
|
||||
@ -5950,6 +5972,7 @@ main (int argc, char **argv)
|
||||
g_test_add_func ("/gvariant/error-quark", test_error_quark);
|
||||
|
||||
g_test_add_func ("/gvariant/stack-builder-init", test_stack_builder_init);
|
||||
g_test_add_func ("/gvariant/stack-builder-init-static", test_stack_builder_init_static);
|
||||
g_test_add_func ("/gvariant/stack-dict-init", test_stack_dict_init);
|
||||
|
||||
g_test_add_func ("/gvariant/normal-checking/tuples",
|
||||
|
Loading…
x
Reference in New Issue
Block a user