diff --git a/docs/reference/gio/gio-sections.txt b/docs/reference/gio/gio-sections.txt index ba1914195..5ce48eaa2 100644 --- a/docs/reference/gio/gio-sections.txt +++ b/docs/reference/gio/gio-sections.txt @@ -2320,6 +2320,8 @@ g_dbus_is_name g_dbus_is_unique_name g_dbus_is_member_name g_dbus_is_interface_name +g_dbus_gvalue_to_gvariant +g_dbus_gvariant_to_gvalue
@@ -3137,8 +3139,6 @@ G_TYPE_DBUS_INTERFACE g_dbus_interface_get_type G_DBUS_INTERFACE_GET_IFACE -g_dbus_gvalue_to_gvariant -g_dbus_gvariant_to_gvalue g_dbus_object_lookup_with_typecheck g_dbus_object_peek_with_typecheck
diff --git a/gio/gdbusinterface.c b/gio/gdbusinterface.c index 8c1269f92..94045008d 100644 --- a/gio/gdbusinterface.c +++ b/gio/gdbusinterface.c @@ -103,318 +103,3 @@ g_dbus_interface_set_object (GDBusInterface *interface, g_return_if_fail (object == NULL || G_IS_DBUS_OBJECT (object)); G_DBUS_INTERFACE_GET_IFACE (interface)->set_object (interface, object); } - -/* Keep it here for now. TODO: move */ - -#include - -/** - * g_dbus_gvariant_to_gvalue: - * @value: A #GVariant. - * @out_gvalue: Return location for the #GValue. - * - * Convert a #GVariant to a #GValue. If @value is floating, it is consumed. - * - * Note that the passed @out_gvalue does not have to have a #GType set. - * - * Returns: %TRUE if the conversion succeeded, %FALSE otherwise. - * - * Since: 2.30 - */ -gboolean -g_dbus_gvariant_to_gvalue (GVariant *value, - GValue *out_gvalue) -{ - gboolean ret; - const GVariantType *type; - gchar **array; - - g_return_val_if_fail (value != NULL, FALSE); - g_return_val_if_fail (out_gvalue != NULL, FALSE); - - ret = FALSE; - - memset (out_gvalue, '\0', sizeof (GValue)); - - switch (g_variant_classify (value)) - { - case G_VARIANT_CLASS_BOOLEAN: - g_value_init (out_gvalue, G_TYPE_BOOLEAN); - g_value_set_boolean (out_gvalue, g_variant_get_boolean (value)); - break; - - case G_VARIANT_CLASS_BYTE: - g_value_init (out_gvalue, G_TYPE_UCHAR); - g_value_set_uchar (out_gvalue, g_variant_get_byte (value)); - break; - - case G_VARIANT_CLASS_INT16: - g_value_init (out_gvalue, G_TYPE_INT); - g_value_set_int (out_gvalue, g_variant_get_int16 (value)); - break; - - case G_VARIANT_CLASS_UINT16: - g_value_init (out_gvalue, G_TYPE_UINT); - g_value_set_uint (out_gvalue, g_variant_get_uint16 (value)); - break; - - case G_VARIANT_CLASS_INT32: - g_value_init (out_gvalue, G_TYPE_INT); - g_value_set_int (out_gvalue, g_variant_get_int32 (value)); - break; - - case G_VARIANT_CLASS_UINT32: - g_value_init (out_gvalue, G_TYPE_UINT); - g_value_set_uint (out_gvalue, g_variant_get_uint32 (value)); - break; - - case G_VARIANT_CLASS_INT64: - g_value_init (out_gvalue, G_TYPE_INT64); - g_value_set_int64 (out_gvalue, g_variant_get_int64 (value)); - break; - - case G_VARIANT_CLASS_UINT64: - g_value_init (out_gvalue, G_TYPE_UINT64); - g_value_set_uint64 (out_gvalue, g_variant_get_uint64 (value)); - break; - - case G_VARIANT_CLASS_HANDLE: - g_value_init (out_gvalue, G_TYPE_INT); - g_value_set_int (out_gvalue, g_variant_get_int32 (value)); - break; - - case G_VARIANT_CLASS_DOUBLE: - g_value_init (out_gvalue, G_TYPE_DOUBLE); - g_value_set_double (out_gvalue, g_variant_get_double (value)); - break; - - case G_VARIANT_CLASS_STRING: - g_value_init (out_gvalue, G_TYPE_STRING); - g_value_set_string (out_gvalue, g_variant_get_string (value, NULL)); - break; - - case G_VARIANT_CLASS_OBJECT_PATH: - g_value_init (out_gvalue, G_TYPE_STRING); - g_value_set_string (out_gvalue, g_variant_get_string (value, NULL)); - break; - - case G_VARIANT_CLASS_SIGNATURE: - g_value_init (out_gvalue, G_TYPE_STRING); - g_value_set_string (out_gvalue, g_variant_get_string (value, NULL)); - break; - - case G_VARIANT_CLASS_ARRAY: - type = g_variant_get_type (value); - switch (g_variant_type_peek_string (type)[1]) - { - case G_VARIANT_CLASS_BYTE: - g_value_init (out_gvalue, G_TYPE_STRING); - g_value_set_string (out_gvalue, g_variant_get_bytestring (value)); - break; - - case G_VARIANT_CLASS_STRING: - g_value_init (out_gvalue, G_TYPE_STRV); - array = g_variant_dup_strv (value, NULL); - g_value_take_boxed (out_gvalue, array); - break; - - case G_VARIANT_CLASS_ARRAY: - switch (g_variant_type_peek_string (type)[2]) - { - case G_VARIANT_CLASS_BYTE: - g_value_init (out_gvalue, G_TYPE_STRV); - array = g_variant_dup_bytestring_array (value, NULL); - g_value_take_boxed (out_gvalue, array); - break; - - default: - g_value_init (out_gvalue, G_TYPE_VARIANT); - g_value_set_variant (out_gvalue, value); - break; - } - break; - - default: - g_value_init (out_gvalue, G_TYPE_VARIANT); - g_value_set_variant (out_gvalue, value); - break; - } - break; - - case G_VARIANT_CLASS_VARIANT: - case G_VARIANT_CLASS_MAYBE: - case G_VARIANT_CLASS_TUPLE: - case G_VARIANT_CLASS_DICT_ENTRY: - g_value_init (out_gvalue, G_TYPE_VARIANT); - g_value_set_variant (out_gvalue, value); - break; - } - - ret = TRUE; - - return ret; -} - - -/** - * g_dbus_gvalue_to_gvariant: - * @gvalue: A #GValue to convert to a #GVariant. - * @expected_type: The #GVariantType to create. - * - * Convert a #GValue to #GVariant. - * - * Returns: A #GVariant (never floating) holding the data from @gvalue - * or %NULL in case of error. Free with g_variant_unref(). - * - * Since: 2.30 - */ -GVariant * -g_dbus_gvalue_to_gvariant (const GValue *gvalue, - const GVariantType *expected_type) -{ - GVariant *ret; - const gchar *s; - const gchar * const *as; - const gchar *empty_strv[1] = {NULL}; - - g_return_val_if_fail (gvalue != NULL, NULL); - g_return_val_if_fail (expected_type != NULL, NULL); - - ret = NULL; - - /* The expected type could easily be e.g. "s" with the GValue holding a string. - * because of the UseGVariant annotation - */ - if (G_VALUE_TYPE (gvalue) == G_TYPE_VARIANT) - { - ret = g_value_dup_variant (gvalue); - } - else - { - switch (g_variant_type_peek_string (expected_type)[0]) - { - case G_VARIANT_CLASS_BOOLEAN: - ret = g_variant_ref_sink (g_variant_new_boolean (g_value_get_boolean (gvalue))); - break; - - case G_VARIANT_CLASS_BYTE: - ret = g_variant_ref_sink (g_variant_new_byte (g_value_get_uchar (gvalue))); - break; - - case G_VARIANT_CLASS_INT16: - ret = g_variant_ref_sink (g_variant_new_int16 (g_value_get_int (gvalue))); - break; - - case G_VARIANT_CLASS_UINT16: - ret = g_variant_ref_sink (g_variant_new_uint16 (g_value_get_uint (gvalue))); - break; - - case G_VARIANT_CLASS_INT32: - ret = g_variant_ref_sink (g_variant_new_int32 (g_value_get_int (gvalue))); - break; - - case G_VARIANT_CLASS_UINT32: - ret = g_variant_ref_sink (g_variant_new_uint32 (g_value_get_uint (gvalue))); - break; - - case G_VARIANT_CLASS_INT64: - ret = g_variant_ref_sink (g_variant_new_int64 (g_value_get_int64 (gvalue))); - break; - - case G_VARIANT_CLASS_UINT64: - ret = g_variant_ref_sink (g_variant_new_uint64 (g_value_get_uint64 (gvalue))); - break; - - case G_VARIANT_CLASS_HANDLE: - ret = g_variant_ref_sink (g_variant_new_handle (g_value_get_int (gvalue))); - break; - - case G_VARIANT_CLASS_DOUBLE: - ret = g_variant_ref_sink (g_variant_new_double (g_value_get_double (gvalue))); - break; - - case G_VARIANT_CLASS_STRING: - s = g_value_get_string (gvalue); - if (s == NULL) - s = ""; - ret = g_variant_ref_sink (g_variant_new_string (s)); - break; - - case G_VARIANT_CLASS_OBJECT_PATH: - s = g_value_get_string (gvalue); - if (s == NULL) - s = "/"; - ret = g_variant_ref_sink (g_variant_new_object_path (s)); - break; - - case G_VARIANT_CLASS_SIGNATURE: - s = g_value_get_string (gvalue); - if (s == NULL) - s = ""; - ret = g_variant_ref_sink (g_variant_new_signature (s)); - break; - - case G_VARIANT_CLASS_ARRAY: - switch (g_variant_type_peek_string (expected_type)[1]) - { - case G_VARIANT_CLASS_BYTE: - s = g_value_get_string (gvalue); - if (s == NULL) - s = ""; - ret = g_variant_ref_sink (g_variant_new_bytestring (s)); - break; - - case G_VARIANT_CLASS_STRING: - as = g_value_get_boxed (gvalue); - if (as == NULL) - as = empty_strv; - ret = g_variant_ref_sink (g_variant_new_strv (as, -1)); - break; - - case G_VARIANT_CLASS_ARRAY: - switch (g_variant_type_peek_string (expected_type)[2]) - { - case G_VARIANT_CLASS_BYTE: - as = g_value_get_boxed (gvalue); - if (as == NULL) - as = empty_strv; - ret = g_variant_ref_sink (g_variant_new_bytestring_array (as, -1)); - break; - - default: - ret = g_value_dup_variant (gvalue); - break; - } - break; - - default: - ret = g_value_dup_variant (gvalue); - break; - } - break; - - default: - case G_VARIANT_CLASS_VARIANT: - case G_VARIANT_CLASS_MAYBE: - case G_VARIANT_CLASS_TUPLE: - case G_VARIANT_CLASS_DICT_ENTRY: - ret = g_value_dup_variant (gvalue); - break; - } - } - - /* Could be that the GValue is holding a NULL GVariant - in that case, - * we return an "empty" GVariant instead of a NULL GVariant - */ - if (ret == NULL) - { - GVariant *untrusted_empty; - untrusted_empty = g_variant_new_from_data (expected_type, NULL, 0, FALSE, NULL, NULL); - ret = g_variant_ref_sink (g_variant_get_normal_form (untrusted_empty)); - g_variant_unref (untrusted_empty); - } - - g_assert (!g_variant_is_floating (ret)); - - return ret; -} diff --git a/gio/gdbusinterface.h b/gio/gdbusinterface.h index a60e7cc71..370ec9d6f 100644 --- a/gio/gdbusinterface.h +++ b/gio/gdbusinterface.h @@ -71,13 +71,6 @@ GDBusObject *g_dbus_interface_get_object (GDBusInterface *in void g_dbus_interface_set_object (GDBusInterface *interface, GDBusObject *object); -/* Keep it here for now. TODO: move */ - -gboolean g_dbus_gvariant_to_gvalue (GVariant *value, - GValue *out_gvalue); -GVariant *g_dbus_gvalue_to_gvariant (const GValue *gvalue, - const GVariantType *expected_type); - G_END_DECLS #endif /* __G_DBUS_INTERFACE_H__ */ diff --git a/gio/gdbusutils.c b/gio/gdbusutils.c index d757f0326..ed275eea8 100644 --- a/gio/gdbusutils.c +++ b/gio/gdbusutils.c @@ -351,3 +351,388 @@ g_dbus_is_guid (const gchar *string) } /* ---------------------------------------------------------------------------------------------------- */ + +/** + * g_dbus_gvariant_to_gvalue: + * @value: A #GVariant. + * @out_gvalue: Return location for the #GValue. + * + * Convert a #GVariant to a #GValue. If @value is floating, it is consumed. + * + * The rules specified in g_dbus_gvalue_to_gvariant() are used. + * + * Note that the passed @out_gvalue does not have to have a #GType + * set, as it will be initialized to the #GType corresponding to + * @value. + * + * This conversion can never fail. + * + * Since: 2.30 + */ +void +g_dbus_gvariant_to_gvalue (GVariant *value, + GValue *out_gvalue) +{ + const GVariantType *type; + gchar **array; + + g_return_if_fail (value != NULL); + g_return_if_fail (out_gvalue != NULL); + + memset (out_gvalue, '\0', sizeof (GValue)); + + switch (g_variant_classify (value)) + { + case G_VARIANT_CLASS_BOOLEAN: + g_value_init (out_gvalue, G_TYPE_BOOLEAN); + g_value_set_boolean (out_gvalue, g_variant_get_boolean (value)); + break; + + case G_VARIANT_CLASS_BYTE: + g_value_init (out_gvalue, G_TYPE_UCHAR); + g_value_set_uchar (out_gvalue, g_variant_get_byte (value)); + break; + + case G_VARIANT_CLASS_INT16: + g_value_init (out_gvalue, G_TYPE_INT); + g_value_set_int (out_gvalue, g_variant_get_int16 (value)); + break; + + case G_VARIANT_CLASS_UINT16: + g_value_init (out_gvalue, G_TYPE_UINT); + g_value_set_uint (out_gvalue, g_variant_get_uint16 (value)); + break; + + case G_VARIANT_CLASS_INT32: + g_value_init (out_gvalue, G_TYPE_INT); + g_value_set_int (out_gvalue, g_variant_get_int32 (value)); + break; + + case G_VARIANT_CLASS_UINT32: + g_value_init (out_gvalue, G_TYPE_UINT); + g_value_set_uint (out_gvalue, g_variant_get_uint32 (value)); + break; + + case G_VARIANT_CLASS_INT64: + g_value_init (out_gvalue, G_TYPE_INT64); + g_value_set_int64 (out_gvalue, g_variant_get_int64 (value)); + break; + + case G_VARIANT_CLASS_UINT64: + g_value_init (out_gvalue, G_TYPE_UINT64); + g_value_set_uint64 (out_gvalue, g_variant_get_uint64 (value)); + break; + + case G_VARIANT_CLASS_HANDLE: + g_value_init (out_gvalue, G_TYPE_INT); + g_value_set_int (out_gvalue, g_variant_get_int32 (value)); + break; + + case G_VARIANT_CLASS_DOUBLE: + g_value_init (out_gvalue, G_TYPE_DOUBLE); + g_value_set_double (out_gvalue, g_variant_get_double (value)); + break; + + case G_VARIANT_CLASS_STRING: + g_value_init (out_gvalue, G_TYPE_STRING); + g_value_set_string (out_gvalue, g_variant_get_string (value, NULL)); + break; + + case G_VARIANT_CLASS_OBJECT_PATH: + g_value_init (out_gvalue, G_TYPE_STRING); + g_value_set_string (out_gvalue, g_variant_get_string (value, NULL)); + break; + + case G_VARIANT_CLASS_SIGNATURE: + g_value_init (out_gvalue, G_TYPE_STRING); + g_value_set_string (out_gvalue, g_variant_get_string (value, NULL)); + break; + + case G_VARIANT_CLASS_ARRAY: + type = g_variant_get_type (value); + switch (g_variant_type_peek_string (type)[1]) + { + case G_VARIANT_CLASS_BYTE: + g_value_init (out_gvalue, G_TYPE_STRING); + g_value_set_string (out_gvalue, g_variant_get_bytestring (value)); + break; + + case G_VARIANT_CLASS_STRING: + g_value_init (out_gvalue, G_TYPE_STRV); + array = g_variant_dup_strv (value, NULL); + g_value_take_boxed (out_gvalue, array); + break; + + case G_VARIANT_CLASS_ARRAY: + switch (g_variant_type_peek_string (type)[2]) + { + case G_VARIANT_CLASS_BYTE: + g_value_init (out_gvalue, G_TYPE_STRV); + array = g_variant_dup_bytestring_array (value, NULL); + g_value_take_boxed (out_gvalue, array); + break; + + default: + g_value_init (out_gvalue, G_TYPE_VARIANT); + g_value_set_variant (out_gvalue, value); + break; + } + break; + + default: + g_value_init (out_gvalue, G_TYPE_VARIANT); + g_value_set_variant (out_gvalue, value); + break; + } + break; + + case G_VARIANT_CLASS_VARIANT: + case G_VARIANT_CLASS_MAYBE: + case G_VARIANT_CLASS_TUPLE: + case G_VARIANT_CLASS_DICT_ENTRY: + g_value_init (out_gvalue, G_TYPE_VARIANT); + g_value_set_variant (out_gvalue, value); + break; + } +} + + +/** + * g_dbus_gvalue_to_gvariant: + * @gvalue: A #GValue to convert to a #GVariant. + * @expected_type: The #GVariantType to create. + * + * Convert a #GValue to #GVariant. + * + * The conversion is using the following rules: + * + * #GValue / #GVariant Conversion rules + * + * + * + * If the #GType for @gvalue is... + * ... then @expected_type must be + * + * + * + * + * #G_TYPE_STRING + * s, o, g, ay + * + * + * #G_TYPE_STRV + * as, ao, ag, aay + * + * + * #G_TYPE_BOOLEAN + * b + * + * + * #G_TYPE_UCHAR + * y + * + * + * #G_TYPE_INT + * n + * + * + * #G_TYPE_UINT + * q + * + * + * #G_TYPE_INT + * i + * + * + * #G_TYPE_UINT + * u + * + * + * #G_TYPE_INT64 + * x + * + * + * #G_TYPE_UINT64 + * t + * + * + * #G_TYPE_INT + * h + * + * + * #G_TYPE_DOUBLE + * d + * + * + * #G_TYPE_VARIANT + * Any #GVariantType + * + * + * + *
+ * This can fail if e.g. @gvalue is of type #G_TYPE_STRING and + * @expected_type is 'i'. It will also fail for any + * #GType (including e.g. #G_TYPE_OBJECT and #G_TYPE_BOXED + * derived-types) not in the table above. + * + * Note that if @gvalue is of type #G_TYPE_VARIANT and its value is + * %NULL, the empty #GVariant instance (never + * %NULL) for @expected_type is returned (e.g. 0 for scalar types, the + * empty string for string types and so on). + * + * Returns: A #GVariant (never floating) of #GVariantType + * @expected_type holding the data from @gvalue or %NULL in case of + * failure. Free with g_variant_unref(). + * + * Since: 2.30 + */ +GVariant * +g_dbus_gvalue_to_gvariant (const GValue *gvalue, + const GVariantType *expected_type) +{ + GVariant *ret; + const gchar *s; + const gchar * const *as; + const gchar *empty_strv[1] = {NULL}; + + g_return_val_if_fail (gvalue != NULL, NULL); + g_return_val_if_fail (expected_type != NULL, NULL); + + ret = NULL; + + /* The expected type could easily be e.g. "s" with the GValue holding a string. + * because of the UseGVariant annotation + */ + if (G_VALUE_TYPE (gvalue) == G_TYPE_VARIANT) + { + ret = g_value_dup_variant (gvalue); + } + else + { + switch (g_variant_type_peek_string (expected_type)[0]) + { + case G_VARIANT_CLASS_BOOLEAN: + ret = g_variant_ref_sink (g_variant_new_boolean (g_value_get_boolean (gvalue))); + break; + + case G_VARIANT_CLASS_BYTE: + ret = g_variant_ref_sink (g_variant_new_byte (g_value_get_uchar (gvalue))); + break; + + case G_VARIANT_CLASS_INT16: + ret = g_variant_ref_sink (g_variant_new_int16 (g_value_get_int (gvalue))); + break; + + case G_VARIANT_CLASS_UINT16: + ret = g_variant_ref_sink (g_variant_new_uint16 (g_value_get_uint (gvalue))); + break; + + case G_VARIANT_CLASS_INT32: + ret = g_variant_ref_sink (g_variant_new_int32 (g_value_get_int (gvalue))); + break; + + case G_VARIANT_CLASS_UINT32: + ret = g_variant_ref_sink (g_variant_new_uint32 (g_value_get_uint (gvalue))); + break; + + case G_VARIANT_CLASS_INT64: + ret = g_variant_ref_sink (g_variant_new_int64 (g_value_get_int64 (gvalue))); + break; + + case G_VARIANT_CLASS_UINT64: + ret = g_variant_ref_sink (g_variant_new_uint64 (g_value_get_uint64 (gvalue))); + break; + + case G_VARIANT_CLASS_HANDLE: + ret = g_variant_ref_sink (g_variant_new_handle (g_value_get_int (gvalue))); + break; + + case G_VARIANT_CLASS_DOUBLE: + ret = g_variant_ref_sink (g_variant_new_double (g_value_get_double (gvalue))); + break; + + case G_VARIANT_CLASS_STRING: + s = g_value_get_string (gvalue); + if (s == NULL) + s = ""; + ret = g_variant_ref_sink (g_variant_new_string (s)); + break; + + case G_VARIANT_CLASS_OBJECT_PATH: + s = g_value_get_string (gvalue); + if (s == NULL) + s = "/"; + ret = g_variant_ref_sink (g_variant_new_object_path (s)); + break; + + case G_VARIANT_CLASS_SIGNATURE: + s = g_value_get_string (gvalue); + if (s == NULL) + s = ""; + ret = g_variant_ref_sink (g_variant_new_signature (s)); + break; + + case G_VARIANT_CLASS_ARRAY: + switch (g_variant_type_peek_string (expected_type)[1]) + { + case G_VARIANT_CLASS_BYTE: + s = g_value_get_string (gvalue); + if (s == NULL) + s = ""; + ret = g_variant_ref_sink (g_variant_new_bytestring (s)); + break; + + case G_VARIANT_CLASS_STRING: + as = g_value_get_boxed (gvalue); + if (as == NULL) + as = empty_strv; + ret = g_variant_ref_sink (g_variant_new_strv (as, -1)); + break; + + case G_VARIANT_CLASS_ARRAY: + switch (g_variant_type_peek_string (expected_type)[2]) + { + case G_VARIANT_CLASS_BYTE: + as = g_value_get_boxed (gvalue); + if (as == NULL) + as = empty_strv; + ret = g_variant_ref_sink (g_variant_new_bytestring_array (as, -1)); + break; + + default: + ret = g_value_dup_variant (gvalue); + break; + } + break; + + default: + ret = g_value_dup_variant (gvalue); + break; + } + break; + + default: + case G_VARIANT_CLASS_VARIANT: + case G_VARIANT_CLASS_MAYBE: + case G_VARIANT_CLASS_TUPLE: + case G_VARIANT_CLASS_DICT_ENTRY: + ret = g_value_dup_variant (gvalue); + break; + } + } + + /* Could be that the GValue is holding a NULL GVariant - in that case, + * we return an "empty" GVariant instead of a NULL GVariant + */ + if (ret == NULL) + { + GVariant *untrusted_empty; + untrusted_empty = g_variant_new_from_data (expected_type, NULL, 0, FALSE, NULL, NULL); + ret = g_variant_ref_sink (g_variant_get_normal_form (untrusted_empty)); + g_variant_unref (untrusted_empty); + } + + g_assert (!g_variant_is_floating (ret)); + + return ret; +} diff --git a/gio/gdbusutils.h b/gio/gdbusutils.h index b31dc7511..73a827f06 100644 --- a/gio/gdbusutils.h +++ b/gio/gdbusutils.h @@ -39,6 +39,11 @@ gboolean g_dbus_is_unique_name (const gchar *string); gboolean g_dbus_is_member_name (const gchar *string); gboolean g_dbus_is_interface_name (const gchar *string); +void g_dbus_gvariant_to_gvalue (GVariant *value, + GValue *out_gvalue); +GVariant *g_dbus_gvalue_to_gvariant (const GValue *gvalue, + const GVariantType *expected_type); + G_END_DECLS #endif /* __G_DBUS_UTILS_H__ */ diff --git a/gio/gio.symbols b/gio/gio.symbols index dcc5ac849..49e65c57c 100644 --- a/gio/gio.symbols +++ b/gio/gio.symbols @@ -1894,6 +1894,8 @@ g_dbus_is_interface_name g_dbus_is_member_name g_dbus_is_name g_dbus_is_unique_name +g_dbus_gvalue_to_gvariant +g_dbus_gvariant_to_gvalue #endif #endif @@ -2093,8 +2095,6 @@ g_dbus_interface_get_info g_dbus_interface_get_object g_dbus_interface_get_type g_dbus_interface_set_object -g_dbus_gvalue_to_gvariant -g_dbus_gvariant_to_gvalue #endif #endif