X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=glib%2Fgvarianttype.c;h=5d3332ba003f34991466b5341331eb8d711a6569;hb=dda9965b666ec118b1cbfd93ab5c51e802aa4a21;hp=a43aecf51a1a1545fcaa43ccce4bb086c7248b81;hpb=fdaaa22b58b20c285bc0c328cd6a97bb6c0f0258;p=platform%2Fupstream%2Fglib.git diff --git a/glib/gvarianttype.c b/glib/gvarianttype.c index a43aecf..5d3332b 100644 --- a/glib/gvarianttype.c +++ b/glib/gvarianttype.c @@ -13,9 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. + * License along with this library; if not, see . * * Author: Ryan Lortie */ @@ -36,41 +34,40 @@ * @short_description: introduction to the GVariant type system * @see_also: #GVariantType, #GVariant * - * This section introduces the GVariant type system. It is based, in - * large part, on the DBus type system, with two major changes and some minor - * lifting of restrictions. The DBus - * specification, therefore, provides a significant amount of + * This section introduces the GVariant type system. It is based, in + * large part, on the D-Bus type system, with two major changes and + * some minor lifting of restrictions. The + * [D-Bus specification](http://dbus.freedesktop.org/doc/dbus-specification.html), + * therefore, provides a significant amount of * information that is useful when working with GVariant. * - * The first major change with respect to the DBus type system is the + * The first major change with respect to the D-Bus type system is the * introduction of maybe (or "nullable") types. Any type in GVariant can be * converted to a maybe type, in which case, "nothing" (or "null") becomes a * valid value. Maybe types have been added by introducing the - * character "m" to type strings. + * character "m" to type strings. * * The second major change is that the GVariant type system supports the * concept of "indefinite types" -- types that are less specific than - * the normal types found in DBus. For example, it is possible to speak - * of "an array of any type" in GVariant, where the DBus type system + * the normal types found in D-Bus. For example, it is possible to speak + * of "an array of any type" in GVariant, where the D-Bus type system * would require you to speak of "an array of integers" or "an array of * strings". Indefinite types have been added by introducing the - * characters "*", "?" and - * "r" to type strings. + * characters "*", "?" and "r" to type strings. * * Finally, all arbitrary restrictions relating to the complexity of * types are lifted along with the restriction that dictionary entries * may only appear nested inside of arrays. * - * Just as in DBus, GVariant types are described with strings ("type + * Just as in D-Bus, GVariant types are described with strings ("type * strings"). Subject to the differences mentioned above, these strings - * are of the same form as those found in DBus. Note, however: DBus + * are of the same form as those found in DBus. Note, however: D-Bus * always works in terms of messages and therefore individual type * strings appear nowhere in its interface. Instead, "signatures" * are a concatenation of the strings of the type of each argument in a * message. GVariant deals with single values directly so GVariant type * strings always describe the type of exactly one value. This means - * that a DBus signature string is generally not a valid GVariant type + * that a D-Bus signature string is generally not a valid GVariant type * string -- except in the case that it is the signature of a message * containing exactly one argument. * @@ -79,11 +76,12 @@ * indefinite type as its type, but values can exist that have types * that are subtypes of indefinite types. That is to say, * g_variant_get_type() will never return an indefinite type, but - * calling g_variant_is_a() with an indefinite type may return %TRUE. - * For example, you can not have a value that represents "an array of no - * particular type", but you can have an "array of integers" which - * certainly matches the type of "an array of no particular type", since - * "array of integers" is a subtype of "array of no particular type". + * calling g_variant_is_of_type() with an indefinite type may return + * %TRUE. For example, you cannot have a value that represents "an + * array of no particular type", but you can have an "array of integers" + * which certainly matches the type of "an array of no particular type", + * since "array of integers" is a subtype of "array of no particular + * type". * * This is similar to how instances of abstract classes may not * directly exist in other type systems, but instances of their @@ -93,406 +91,106 @@ * that the #GtkWindow is a #GtkBin (since #GtkWindow is a subclass of * #GtkBin). * - * A detailed description of GVariant type strings is given here: - * - * - * GVariant Type Strings - * - * A GVariant type string can be any of the following: - * - * - * - * - * any basic type string (listed below) - * - * - * - * - * "v", "r" or - * "*" - * - * - * - * - * one of the characters 'a' or - * 'm', followed by another type string - * - * - * - * - * the character '(', followed by a concatenation - * of zero or more other type strings, followed by the character - * ')' - * - * - * - * - * the character '{', followed by a basic type - * string (see below), followed by another type string, followed by - * the character '}' - * - * - * - * - * A basic type string describes a basic type (as per - * g_variant_type_is_basic()) and is always a single - * character in length. The valid basic type strings are - * "b", "y", - * "n", "q", - * "i", "u", - * "x", "t", - * "h", "d", - * "s", "o", - * "g" and "?". - * - * - * The above definition is recursive to arbitrary depth. - * "aaaaai" and "(ui(nq((y)))s)" - * are both valid type strings, as is - * "a(aa(ui)(qna{ya(yd)}))". - * - * - * The meaning of each of the characters is as follows: - * - * - * - * - * - * - * - * Character - * - * - * - * - * Meaning - * - * - * - * - * - * - * b - * - * - * - * - * the type string of %G_VARIANT_TYPE_BOOLEAN; a boolean value. - * - * - * - * - * - * - * y - * - * - * - * - * the type string of %G_VARIANT_TYPE_BYTE; a byte. - * - * - * - * - * - * - * n - * - * - * - * - * the type string of %G_VARIANT_TYPE_INT16; a signed 16 bit - * integer. - * - * - * - * - * - * - * q - * - * - * - * - * the type string of %G_VARIANT_TYPE_UINT16; an unsigned 16 bit - * integer. - * - * - * - * - * - * - * i - * - * - * - * - * the type string of %G_VARIANT_TYPE_INT32; a signed 32 bit - * integer. - * - * - * - * - * - * - * u - * - * - * - * - * the type string of %G_VARIANT_TYPE_UINT32; an unsigned 32 bit - * integer. - * - * - * - * - * - * - * x - * - * - * - * - * the type string of %G_VARIANT_TYPE_INT64; a signed 64 bit - * integer. - * - * - * - * - * - * - * t - * - * - * - * - * the type string of %G_VARIANT_TYPE_UINT64; an unsigned 64 bit - * integer. - * - * - * - * - * - * - * h - * - * - * - * - * the type string of %G_VARIANT_TYPE_HANDLE; a signed 32 bit - * value that, by convention, is used as an index into an array - * of file descriptors that are sent alongside a DBus message. - * - * - * - * - * - * - * d - * - * - * - * - * the type string of %G_VARIANT_TYPE_DOUBLE; a double precision - * floating point value. - * - * - * - * - * - * - * s - * - * - * - * - * the type string of %G_VARIANT_TYPE_STRING; a string. - * - * - * - * - * - * - * o - * - * - * - * - * the type string of %G_VARIANT_TYPE_OBJECT_PATH; a string in - * the form of a DBus object path. - * - * - * - * - * - * - * g - * - * - * - * - * the type string of %G_VARIANT_TYPE_STRING; a string in the - * form of a DBus type signature. - * - * - * - * - * - * - * ? - * - * - * - * - * the type string of %G_VARIANT_TYPE_BASIC; an indefinite type - * that is a supertype of any of the basic types. - * - * - * - * - * - * - * v - * - * - * - * - * the type string of %G_VARIANT_TYPE_VARIANT; a container type - * that contain any other type of value. - * - * - * - * - * - * - * a - * - * - * - * - * used as a prefix on another type string to mean an array of - * that type; the type string "ai", for - * example, is the type of an array of 32 bit signed integers. - * - * - * - * - * - * - * m - * - * - * - * - * used as a prefix on another type string to mean a "maybe", or - * "nullable", version of that type; the type string - * "ms", for example, is the type of a value - * that maybe contains a string, or maybe contains nothing. - * - * - * - * - * - * - * () - * - * - * - * - * used to enclose zero or more other concatenated type strings - * to create a tuple type; the type string - * "(is)", for example, is the type of a pair - * of an integer and a string. - * - * - * - * - * - * - * r - * - * - * - * - * the type string of %G_VARIANT_TYPE_TUPLE; an indefinite type - * that is a supertype of any tuple type, regardless of the - * number of items. - * - * - * - * - * - * - * {} - * - * - * - * - * used to enclose a basic type string concatenated with another - * type string to create a dictionary entry type, which usually - * appears inside of an array to form a dictionary; the type - * string "a{sd}", for example, is the type of - * a dictionary that maps strings to double precision floating - * point values. - * - * - * The first type (the basic type) is the key type and the second - * type is the value type. The reason that the first type is - * restricted to being a basic type is so that it can easily be - * hashed. - * - * - * - * - * - * - * * - * - * - * - * - * the type string of %G_VARIANT_TYPE_ANY; the indefinite type - * that is a supertype of all types. Note that, as with all type - * strings, this character represents exactly one type. It - * cannot be used inside of tuples to mean "any number of items". - * - * - * - * - * - * - * - * Any type string of a container that contains an indefinite type is, - * itself, an indefinite type. For example, the type string - * "a*" (corresponding to %G_VARIANT_TYPE_ARRAY) is - * an indefinite type that is a supertype of every array type. - * "(*s)" is a supertype of all tuples that - * contain exactly two items where the second item is a string. - * - * - * "a{?*}" is an indefinite type that is a - * supertype of all arrays containing dictionary entries where the key - * is any basic type and the value is any type at all. This is, by - * definition, a dictionary, so this type string corresponds to - * %G_VARIANT_TYPE_DICTIONARY. Note that, due to the restriction that - * the key of a dictionary entry must be a basic type, - * "{**}" is not a valid type string. - * - * + * ## GVariant Type Strings + * + * A GVariant type string can be any of the following: + * + * - any basic type string (listed below) + * + * - "v", "r" or "*" + * + * - one of the characters 'a' or 'm', followed by another type string + * + * - the character '(', followed by a concatenation of zero or more other + * type strings, followed by the character ')' + * + * - the character '{', followed by a basic type string (see below), + * followed by another type string, followed by the character '}' + * + * A basic type string describes a basic type (as per + * g_variant_type_is_basic()) and is always a single character in length. + * The valid basic type strings are "b", "y", "n", "q", "i", "u", "x", "t", + * "h", "f", "d", "s", "o", "g" and "?". + * + * The above definition is recursive to arbitrary depth. "aaaaai" and + * "(ui(nq((y)))s)" are both valid type strings, as is + * "a(aa(ui)(qna{ya(yd)}))". + * + * The meaning of each of the characters is as follows: + * - `b`: the type string of %G_VARIANT_TYPE_BOOLEAN; a boolean value. + * - `y`: the type string of %G_VARIANT_TYPE_BYTE; a byte. + * - `n`: the type string of %G_VARIANT_TYPE_INT16; a signed 16 bit integer. + * - `q`: the type string of %G_VARIANT_TYPE_UINT16; an unsigned 16 bit integer. + * - `i`: the type string of %G_VARIANT_TYPE_INT32; a signed 32 bit integer. + * - `u`: the type string of %G_VARIANT_TYPE_UINT32; an unsigned 32 bit integer. + * - `x`: the type string of %G_VARIANT_TYPE_INT64; a signed 64 bit integer. + * - `t`: the type string of %G_VARIANT_TYPE_UINT64; an unsigned 64 bit integer. + * - `h`: the type string of %G_VARIANT_TYPE_HANDLE; a signed 32 bit value + * that, by convention, is used as an index into an array of file + * descriptors that are sent alongside a D-Bus message. + * - `f`: the type string of %G_VARIANT_TYPE_FLOAT; a single precision + * floating point value. + * - `d`: the type string of %G_VARIANT_TYPE_DOUBLE; a double precision + * floating point value. + * - `s`: the type string of %G_VARIANT_TYPE_STRING; a string. + * - `o`: the type string of %G_VARIANT_TYPE_OBJECT_PATH; a string in the form + * of a D-Bus object path. + * - `g`: the type string of %G_VARIANT_TYPE_STRING; a string in the form of + * a D-Bus type signature. + * - `?`: the type string of %G_VARIANT_TYPE_BASIC; an indefinite type that + * is a supertype of any of the basic types. + * - `v`: the type string of %G_VARIANT_TYPE_VARIANT; a container type that + * contain any other type of value. + * - `a`: used as a prefix on another type string to mean an array of that + * type; the type string "ai", for example, is the type of an array of + * signed 32-bit integers. + * - `m`: used as a prefix on another type string to mean a "maybe", or + * "nullable", version of that type; the type string "ms", for example, + * is the type of a value that maybe contains a string, or maybe contains + * nothing. + * - `()`: used to enclose zero or more other concatenated type strings to + * create a tuple type; the type string "(is)", for example, is the type of + * a pair of an integer and a string. + * - `r`: the type string of %G_VARIANT_TYPE_TUPLE; an indefinite type that is + * a supertype of any tuple type, regardless of the number of items. + * - `{}`: used to enclose a basic type string concatenated with another type + * string to create a dictionary entry type, which usually appears inside of + * an array to form a dictionary; the type string "a{sd}", for example, is + * the type of a dictionary that maps strings to double precision floating + * point values. + * + * The first type (the basic type) is the key type and the second type is + * the value type. The reason that the first type is restricted to being a + * basic type is so that it can easily be hashed. + * - `*`: the type string of %G_VARIANT_TYPE_ANY; the indefinite type that is + * a supertype of all types. Note that, as with all type strings, this + * character represents exactly one type. It cannot be used inside of tuples + * to mean "any number of items". + * + * Any type string of a container that contains an indefinite type is, + * itself, an indefinite type. For example, the type string "a*" + * (corresponding to %G_VARIANT_TYPE_ARRAY) is an indefinite type + * that is a supertype of every array type. "(*s)" is a supertype + * of all tuples that contain exactly two items where the second + * item is a string. + * + * "a{?*}" is an indefinite type that is a supertype of all arrays + * containing dictionary entries where the key is any basic type and + * the value is any type at all. This is, by definition, a dictionary, + * so this type string corresponds to %G_VARIANT_TYPE_DICTIONARY. Note + * that, due to the restriction that the key of a dictionary entry must + * be a basic type, "{**}" is not a valid type string. */ static gboolean g_variant_type_check (const GVariantType *type) { - const gchar *type_string; - if (type == NULL) return FALSE; - type_string = (const gchar *) type; -#ifndef G_DISABLE_CHECKS - return g_variant_type_string_scan (type_string, NULL, NULL); +#if 0 + return g_variant_type_string_scan ((const gchar *) type, NULL, NULL); #else return TRUE; #endif @@ -501,9 +199,8 @@ g_variant_type_check (const GVariantType *type) /** * g_variant_type_string_scan: * @string: a pointer to any string - * @limit: the end of @string, or %NULL - * @endptr: location to store the end pointer, or %NULL - * @returns: %TRUE if a valid type string was found + * @limit: (allow-none): the end of @string, or %NULL + * @endptr: (out) (allow-none): location to store the end pointer, or %NULL * * Scan for a single complete and valid GVariant type string in @string. * The memory pointed to by @limit (or bytes beyond it) is never @@ -519,6 +216,8 @@ g_variant_type_check (const GVariantType *type) * For the simple case of checking if a string is a valid type string, * see g_variant_type_string_is_valid(). * + * Returns: %TRUE if a valid type string was found + * * Since: 2.24 **/ gboolean @@ -543,7 +242,7 @@ g_variant_type_string_scan (const gchar *string, case '{': if (string == limit || *string == '\0' || /* { */ - !strchr ("bynqihuxtdsog?", *string++) || /* key */ + !strchr ("bynqihuxtfdsog?", *string++) || /* key */ !g_variant_type_string_scan (string, limit, &string) || /* value */ string == limit || *string++ != '}') /* } */ return FALSE; @@ -555,7 +254,7 @@ g_variant_type_string_scan (const gchar *string, case 'b': case 'y': case 'n': case 'q': case 'i': case 'u': case 'x': case 't': case 'd': case 's': case 'o': case 'g': - case 'v': case 'r': case '*': case '?': case 'h': + case 'v': case 'r': case '*': case '?': case 'h': case 'f': break; default: @@ -571,12 +270,13 @@ g_variant_type_string_scan (const gchar *string, /** * g_variant_type_string_is_valid: * @type_string: a pointer to any string - * @returns: %TRUE if @type_string is exactly one valid type string * * Checks if @type_string is a valid GVariant type string. This call is * equivalent to calling g_variant_type_string_scan() and confirming * that the following character is a nul terminator. * + * Returns: %TRUE if @type_string is exactly one valid type string + * * Since 2.24 **/ gboolean @@ -594,7 +294,7 @@ g_variant_type_string_is_valid (const gchar *type_string) /** * g_variant_type_free: - * @type: a #GVariantType, or %NULL + * @type: (allow-none): a #GVariantType, or %NULL * * Frees a #GVariantType that was allocated with * g_variant_type_copy(), g_variant_type_new() or one of the container @@ -615,11 +315,12 @@ g_variant_type_free (GVariantType *type) /** * g_variant_type_copy: * @type: a #GVariantType - * @returns: a new #GVariantType * * Makes a copy of a #GVariantType. It is appropriate to call * g_variant_type_free() on the return value. @type may not be %NULL. * + * Returns: (transfer full): a new #GVariantType + * * Since 2.24 **/ GVariantType * @@ -642,7 +343,6 @@ g_variant_type_copy (const GVariantType *type) /** * g_variant_type_new: * @type_string: a valid GVariant type string - * @returns: a new #GVariantType * * Creates a new #GVariantType corresponding to the type string given * by @type_string. It is appropriate to call g_variant_type_free() on @@ -651,6 +351,8 @@ g_variant_type_copy (const GVariantType *type) * It is a programmer error to call this function with an invalid type * string. Use g_variant_type_string_is_valid() if you are unsure. * + * Returns: (transfer full): a new #GVariantType + * * Since: 2.24 */ GVariantType * @@ -664,12 +366,13 @@ g_variant_type_new (const gchar *type_string) /** * g_variant_type_get_string_length: * @type: a #GVariantType - * @returns: the length of the corresponding type string * * Returns the length of the type string corresponding to the given * @type. This function must be used to determine the valid extent of * the memory region returned by g_variant_type_peek_string(). * + * Returns: the length of the corresponding type string + * * Since 2.24 **/ gsize @@ -699,10 +402,13 @@ g_variant_type_get_string_length (const GVariantType *type) return index; } +/* + This function is not introspectable, it returns something that + is not an array and neither a string +*/ /** - * g_variant_type_peek_string: + * g_variant_type_peek_string: (skip) * @type: a #GVariantType - * @returns: the corresponding type string (not nul-terminated) * * Returns the type string corresponding to the given @type. The * result is not nul-terminated; in order to determine its length you @@ -710,6 +416,8 @@ g_variant_type_get_string_length (const GVariantType *type) * * To get a nul-terminated string, see g_variant_type_dup_string(). * + * Returns: the corresponding type string (not nul-terminated) + * * Since 2.24 **/ const gchar * @@ -723,12 +431,13 @@ g_variant_type_peek_string (const GVariantType *type) /** * g_variant_type_dup_string: * @type: a #GVariantType - * @returns: the corresponding type string * * Returns a newly-allocated copy of the type string corresponding to * @type. The returned string is nul-terminated. It is appropriate to * call g_free() on the return value. * + * Returns: (transfer full): the corresponding type string + * * Since 2.24 **/ gchar * @@ -743,7 +452,6 @@ g_variant_type_dup_string (const GVariantType *type) /** * g_variant_type_is_definite: * @type: a #GVariantType - * @returns: %TRUE if @type is definite * * Determines if the given @type is definite (ie: not indefinite). * @@ -756,6 +464,8 @@ g_variant_type_dup_string (const GVariantType *type) * indefinite type like %G_VARIANT_TYPE_ARRAY, however, will result in * %FALSE being returned. * + * Returns: %TRUE if @type is definite + * * Since 2.24 **/ gboolean @@ -782,7 +492,6 @@ g_variant_type_is_definite (const GVariantType *type) /** * g_variant_type_is_container: * @type: a #GVariantType - * @returns: %TRUE if @type is a container type * * Determines if the given @type is a container type. * @@ -793,6 +502,8 @@ g_variant_type_is_definite (const GVariantType *type) * definite subtype is a container -- %G_VARIANT_TYPE_ARRAY, for * example. * + * Returns: %TRUE if @type is a container type + * * Since 2.24 **/ gboolean @@ -821,18 +532,19 @@ g_variant_type_is_container (const GVariantType *type) /** * g_variant_type_is_basic: * @type: a #GVariantType - * @returns: %TRUE if @type is a basic type * * Determines if the given @type is a basic type. * - * Basic types are booleans, bytes, integers, doubles, strings, object - * paths and signatures. + * Basic types are booleans, bytes, integers, floats, doubles, strings, + * object paths and signatures. * * Only a basic type may be used as the key of a dictionary entry. * * This function returns %FALSE for all indefinite types except * %G_VARIANT_TYPE_BASIC. * + * Returns: %TRUE if @type is a basic type + * * Since 2.24 **/ gboolean @@ -854,6 +566,7 @@ g_variant_type_is_basic (const GVariantType *type) case 'u': case 't': case 'x': + case 'f': case 'd': case 's': case 'o': @@ -869,7 +582,6 @@ g_variant_type_is_basic (const GVariantType *type) /** * g_variant_type_is_maybe: * @type: a #GVariantType - * @returns: %TRUE if @type is a maybe type * * Determines if the given @type is a maybe type. This is true if the * type string for @type starts with an 'm'. @@ -878,6 +590,8 @@ g_variant_type_is_basic (const GVariantType *type) * definite subtype is a maybe type -- %G_VARIANT_TYPE_MAYBE, for * example. * + * Returns: %TRUE if @type is a maybe type + * * Since 2.24 **/ gboolean @@ -891,7 +605,6 @@ g_variant_type_is_maybe (const GVariantType *type) /** * g_variant_type_is_array: * @type: a #GVariantType - * @returns: %TRUE if @type is an array type * * Determines if the given @type is an array type. This is true if the * type string for @type starts with an 'a'. @@ -900,6 +613,8 @@ g_variant_type_is_maybe (const GVariantType *type) * definite subtype is an array type -- %G_VARIANT_TYPE_ARRAY, for * example. * + * Returns: %TRUE if @type is an array type + * * Since 2.24 **/ gboolean @@ -913,7 +628,6 @@ g_variant_type_is_array (const GVariantType *type) /** * g_variant_type_is_tuple: * @type: a #GVariantType - * @returns: %TRUE if @type is a tuple type * * Determines if the given @type is a tuple type. This is true if the * type string for @type starts with a '(' or if @type is @@ -923,6 +637,8 @@ g_variant_type_is_array (const GVariantType *type) * definite subtype is a tuple type -- %G_VARIANT_TYPE_TUPLE, for * example. * + * Returns: %TRUE if @type is a tuple type + * * Since 2.24 **/ gboolean @@ -939,7 +655,6 @@ g_variant_type_is_tuple (const GVariantType *type) /** * g_variant_type_is_dict_entry: * @type: a #GVariantType - * @returns: %TRUE if @type is a dictionary entry type * * Determines if the given @type is a dictionary entry type. This is * true if the type string for @type starts with a '{'. @@ -948,6 +663,8 @@ g_variant_type_is_tuple (const GVariantType *type) * definite subtype is a dictionary entry type -- * %G_VARIANT_TYPE_DICT_ENTRY, for example. * + * Returns: %TRUE if @type is a dictionary entry type + * * Since 2.24 **/ gboolean @@ -961,10 +678,11 @@ g_variant_type_is_dict_entry (const GVariantType *type) /** * g_variant_type_is_variant: * @type: a #GVariantType - * @returns: %TRUE if @type is the variant type * * Determines if the given @type is the variant type. * + * Returns: %TRUE if @type is the variant type + * * Since 2.24 **/ gboolean @@ -977,8 +695,7 @@ g_variant_type_is_variant (const GVariantType *type) /** * g_variant_type_hash: - * @type: a #GVariantType - * @returns: the hash value + * @type: (type GVariantType): a #GVariantType * * Hashes @type. * @@ -986,6 +703,8 @@ g_variant_type_is_variant (const GVariantType *type) * #GHashTable without function pointer casting. A valid * #GVariantType must be provided. * + * Returns: the hash value + * * Since 2.24 **/ guint @@ -1009,9 +728,8 @@ g_variant_type_hash (gconstpointer type) /** * g_variant_type_equal: - * @type1: a #GVariantType - * @type2: a #GVariantType - * @returns: %TRUE if @type1 and @type2 are exactly equal + * @type1: (type GVariantType): a #GVariantType + * @type2: (type GVariantType): a #GVariantType * * Compares @type1 and @type2 for equality. * @@ -1024,6 +742,8 @@ g_variant_type_hash (gconstpointer type) * allow use with #GHashTable without function pointer casting. For * both arguments, a valid #GVariantType must be provided. * + * Returns: %TRUE if @type1 and @type2 are exactly equal + * * Since 2.24 **/ gboolean @@ -1055,7 +775,6 @@ g_variant_type_equal (gconstpointer type1, * g_variant_type_is_subtype_of: * @type: a #GVariantType * @supertype: a #GVariantType - * @returns: %TRUE if @type is a subtype of @supertype * * Checks if @type is a subtype of @supertype. * @@ -1063,6 +782,8 @@ g_variant_type_equal (gconstpointer type1, * types are considered to be subtypes of themselves. Aside from that, * only indefinite types can have subtypes. * + * Returns: %TRUE if @type is a subtype of @supertype + * * Since 2.24 **/ gboolean @@ -1128,12 +849,13 @@ g_variant_type_is_subtype_of (const GVariantType *type, /** * g_variant_type_element: * @type: an array or maybe #GVariantType - * @returns: the element type of @type * * Determines the element type of an array or maybe type. * * This function may only be used with array or maybe types. * + * Returns: (transfer none): the element type of @type + * * Since 2.24 **/ const GVariantType * @@ -1153,7 +875,6 @@ g_variant_type_element (const GVariantType *type) /** * g_variant_type_first: * @type: a tuple or dictionary entry #GVariantType - * @returns: the first item type of @type, or %NULL * * Determines the first item type of a tuple or dictionary entry * type. @@ -1170,6 +891,8 @@ g_variant_type_element (const GVariantType *type) * This call, together with g_variant_type_next() provides an iterator * interface over tuple and dictionary entry types. * + * Returns: (transfer none): the first item type of @type, or %NULL + * * Since 2.24 **/ const GVariantType * @@ -1191,7 +914,6 @@ g_variant_type_first (const GVariantType *type) /** * g_variant_type_next: * @type: a #GVariantType from a previous call - * @returns: the next #GVariantType after @type, or %NULL * * Determines the next item type of a tuple or dictionary entry * type. @@ -1205,6 +927,8 @@ g_variant_type_first (const GVariantType *type) * * For tuples, %NULL is returned when @type is the last item in a tuple. * + * Returns: (transfer none): the next #GVariantType after @type, or %NULL + * * Since 2.24 **/ const GVariantType * @@ -1226,7 +950,6 @@ g_variant_type_next (const GVariantType *type) /** * g_variant_type_n_items: * @type: a tuple or dictionary entry #GVariantType - * @returns: the number of items in @type * * Determines the number of items contained in a tuple or * dictionary entry type. @@ -1238,6 +961,8 @@ g_variant_type_next (const GVariantType *type) * In the case of a dictionary entry type, this function will always * return 2. * + * Returns: the number of items in @type + * * Since 2.24 **/ gsize @@ -1258,7 +983,6 @@ g_variant_type_n_items (const GVariantType *type) /** * g_variant_type_key: * @type: a dictionary entry #GVariantType - * @returns: the key type of the dictionary entry * * Determines the key type of a dictionary entry type. * @@ -1266,6 +990,8 @@ g_variant_type_n_items (const GVariantType *type) * than the additional restriction, this call is equivalent to * g_variant_type_first(). * + * Returns: (transfer none): the key type of the dictionary entry + * * Since 2.24 **/ const GVariantType * @@ -1284,12 +1010,13 @@ g_variant_type_key (const GVariantType *type) /** * g_variant_type_value: * @type: a dictionary entry #GVariantType - * @returns: the value type of the dictionary entry * * Determines the value type of a dictionary entry type. * * This function may only be used with a dictionary entry type. * + * Returns: (transfer none): the value type of the dictionary entry + * * Since 2.24 **/ const GVariantType * @@ -1307,9 +1034,8 @@ g_variant_type_value (const GVariantType *type) /** * g_variant_type_new_tuple: - * @items: an array of #GVariantTypes, one for each item + * @items: (array length=length): an array of #GVariantTypes, one for each item * @length: the length of @items, or -1 - * @returns: a new tuple #GVariantType * * Constructs a new tuple type, from @items. * @@ -1318,6 +1044,8 @@ g_variant_type_value (const GVariantType *type) * * It is appropriate to call g_variant_type_free() on the return value. * + * Returns: (transfer full): a new tuple #GVariantType + * * Since 2.24 **/ static GVariantType * @@ -1388,15 +1116,16 @@ g_variant_type_new_tuple (const GVariantType * const *items, } /** - * g_variant_type_new_array: + * g_variant_type_new_array: (constructor) * @element: a #GVariantType - * @returns: a new array #GVariantType * * Constructs the type corresponding to an array of elements of the * type @type. * * It is appropriate to call g_variant_type_free() on the return value. * + * Returns: (transfer full): a new array #GVariantType + * * Since 2.24 **/ GVariantType * @@ -1417,15 +1146,16 @@ g_variant_type_new_array (const GVariantType *element) } /** - * g_variant_type_new_maybe: + * g_variant_type_new_maybe: (constructor) * @element: a #GVariantType - * @returns: a new maybe #GVariantType * * Constructs the type corresponding to a maybe instance containing * type @type or Nothing. * * It is appropriate to call g_variant_type_free() on the return value. * + * Returns: (transfer full): a new maybe #GVariantType + * * Since 2.24 **/ GVariantType * @@ -1446,16 +1176,17 @@ g_variant_type_new_maybe (const GVariantType *element) } /** - * g_variant_type_new_dict_entry: + * g_variant_type_new_dict_entry: (constructor) * @key: a basic #GVariantType * @value: a #GVariantType - * @returns: a new dictionary entry #GVariantType * * Constructs the type corresponding to a dictionary entry with a key * of type @key and a value of type @value. * * It is appropriate to call g_variant_type_free() on the return value. * + * Returns: (transfer full): a new dictionary entry #GVariantType + * * Since 2.24 **/ GVariantType *