1 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
4 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
5 <title>GVariantType</title>
6 <meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
7 <link rel="home" href="index.html" title="GLib Reference Manual">
8 <link rel="up" href="glib-data-types.html" title="GLib Data Types">
9 <link rel="prev" href="glib-Datasets.html" title="Datasets">
10 <link rel="next" href="glib-GVariant.html" title="GVariant">
11 <meta name="generator" content="GTK-Doc V1.18 (XML mode)">
12 <link rel="stylesheet" href="style.css" type="text/css">
14 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
15 <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2">
17 <td><a accesskey="p" href="glib-Datasets.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
18 <td><a accesskey="u" href="glib-data-types.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
19 <td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
20 <th width="100%" align="center">GLib Reference Manual</th>
21 <td><a accesskey="n" href="glib-GVariant.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
23 <tr><td colspan="5" class="shortcuts">
24 <a href="#glib-GVariantType.synopsis" class="shortcut">Top</a>
26 <a href="#glib-GVariantType.description" class="shortcut">Description</a>
29 <div class="refentry">
30 <a name="glib-GVariantType"></a><div class="titlepage"></div>
31 <div class="refnamediv"><table width="100%"><tr>
33 <h2><span class="refentrytitle"><a name="glib-GVariantType.top_of_page"></a>GVariantType</span></h2>
34 <p>GVariantType — introduction to the GVariant type system</p>
36 <td valign="top" align="right"></td>
38 <div class="refsynopsisdiv">
39 <a name="glib-GVariantType.synopsis"></a><h2>Synopsis</h2>
40 <pre class="synopsis">
41 #include <glib.h>
43 <a class="link" href="glib-GVariantType.html#GVariantType" title="GVariantType">GVariantType</a>;
44 #define <a class="link" href="glib-GVariantType.html#G-VARIANT-TYPE-BOOLEAN:CAPS" title="G_VARIANT_TYPE_BOOLEAN">G_VARIANT_TYPE_BOOLEAN</a>
45 #define <a class="link" href="glib-GVariantType.html#G-VARIANT-TYPE-BYTE:CAPS" title="G_VARIANT_TYPE_BYTE">G_VARIANT_TYPE_BYTE</a>
46 #define <a class="link" href="glib-GVariantType.html#G-VARIANT-TYPE-INT16:CAPS" title="G_VARIANT_TYPE_INT16">G_VARIANT_TYPE_INT16</a>
47 #define <a class="link" href="glib-GVariantType.html#G-VARIANT-TYPE-UINT16:CAPS" title="G_VARIANT_TYPE_UINT16">G_VARIANT_TYPE_UINT16</a>
48 #define <a class="link" href="glib-GVariantType.html#G-VARIANT-TYPE-INT32:CAPS" title="G_VARIANT_TYPE_INT32">G_VARIANT_TYPE_INT32</a>
49 #define <a class="link" href="glib-GVariantType.html#G-VARIANT-TYPE-UINT32:CAPS" title="G_VARIANT_TYPE_UINT32">G_VARIANT_TYPE_UINT32</a>
50 #define <a class="link" href="glib-GVariantType.html#G-VARIANT-TYPE-INT64:CAPS" title="G_VARIANT_TYPE_INT64">G_VARIANT_TYPE_INT64</a>
51 #define <a class="link" href="glib-GVariantType.html#G-VARIANT-TYPE-UINT64:CAPS" title="G_VARIANT_TYPE_UINT64">G_VARIANT_TYPE_UINT64</a>
52 #define <a class="link" href="glib-GVariantType.html#G-VARIANT-TYPE-HANDLE:CAPS" title="G_VARIANT_TYPE_HANDLE">G_VARIANT_TYPE_HANDLE</a>
53 #define <a class="link" href="glib-GVariantType.html#G-VARIANT-TYPE-DOUBLE:CAPS" title="G_VARIANT_TYPE_DOUBLE">G_VARIANT_TYPE_DOUBLE</a>
54 #define <a class="link" href="glib-GVariantType.html#G-VARIANT-TYPE-STRING:CAPS" title="G_VARIANT_TYPE_STRING">G_VARIANT_TYPE_STRING</a>
55 #define <a class="link" href="glib-GVariantType.html#G-VARIANT-TYPE-OBJECT-PATH:CAPS" title="G_VARIANT_TYPE_OBJECT_PATH">G_VARIANT_TYPE_OBJECT_PATH</a>
56 #define <a class="link" href="glib-GVariantType.html#G-VARIANT-TYPE-SIGNATURE:CAPS" title="G_VARIANT_TYPE_SIGNATURE">G_VARIANT_TYPE_SIGNATURE</a>
57 #define <a class="link" href="glib-GVariantType.html#G-VARIANT-TYPE-VARIANT:CAPS" title="G_VARIANT_TYPE_VARIANT">G_VARIANT_TYPE_VARIANT</a>
58 #define <a class="link" href="glib-GVariantType.html#G-VARIANT-TYPE-ANY:CAPS" title="G_VARIANT_TYPE_ANY">G_VARIANT_TYPE_ANY</a>
59 #define <a class="link" href="glib-GVariantType.html#G-VARIANT-TYPE-BASIC:CAPS" title="G_VARIANT_TYPE_BASIC">G_VARIANT_TYPE_BASIC</a>
60 #define <a class="link" href="glib-GVariantType.html#G-VARIANT-TYPE-MAYBE:CAPS" title="G_VARIANT_TYPE_MAYBE">G_VARIANT_TYPE_MAYBE</a>
61 #define <a class="link" href="glib-GVariantType.html#G-VARIANT-TYPE-ARRAY:CAPS" title="G_VARIANT_TYPE_ARRAY">G_VARIANT_TYPE_ARRAY</a>
62 #define <a class="link" href="glib-GVariantType.html#G-VARIANT-TYPE-TUPLE:CAPS" title="G_VARIANT_TYPE_TUPLE">G_VARIANT_TYPE_TUPLE</a>
63 #define <a class="link" href="glib-GVariantType.html#G-VARIANT-TYPE-UNIT:CAPS" title="G_VARIANT_TYPE_UNIT">G_VARIANT_TYPE_UNIT</a>
64 #define <a class="link" href="glib-GVariantType.html#G-VARIANT-TYPE-DICT-ENTRY:CAPS" title="G_VARIANT_TYPE_DICT_ENTRY">G_VARIANT_TYPE_DICT_ENTRY</a>
65 #define <a class="link" href="glib-GVariantType.html#G-VARIANT-TYPE-DICTIONARY:CAPS" title="G_VARIANT_TYPE_DICTIONARY">G_VARIANT_TYPE_DICTIONARY</a>
66 #define <a class="link" href="glib-GVariantType.html#G-VARIANT-TYPE-STRING-ARRAY:CAPS" title="G_VARIANT_TYPE_STRING_ARRAY">G_VARIANT_TYPE_STRING_ARRAY</a>
67 #define <a class="link" href="glib-GVariantType.html#G-VARIANT-TYPE-OBJECT-PATH-ARRAY:CAPS" title="G_VARIANT_TYPE_OBJECT_PATH_ARRAY">G_VARIANT_TYPE_OBJECT_PATH_ARRAY</a>
68 #define <a class="link" href="glib-GVariantType.html#G-VARIANT-TYPE-BYTESTRING:CAPS" title="G_VARIANT_TYPE_BYTESTRING">G_VARIANT_TYPE_BYTESTRING</a>
69 #define <a class="link" href="glib-GVariantType.html#G-VARIANT-TYPE-BYTESTRING-ARRAY:CAPS" title="G_VARIANT_TYPE_BYTESTRING_ARRAY">G_VARIANT_TYPE_BYTESTRING_ARRAY</a>
70 #define <a class="link" href="glib-GVariantType.html#G-VARIANT-TYPE-VARDICT:CAPS" title="G_VARIANT_TYPE_VARDICT">G_VARIANT_TYPE_VARDICT</a>
72 #define <a class="link" href="glib-GVariantType.html#G-VARIANT-TYPE:CAPS" title="G_VARIANT_TYPE()">G_VARIANT_TYPE</a> (type_string)
73 <span class="returnvalue">void</span> <a class="link" href="glib-GVariantType.html#g-variant-type-free" title="g_variant_type_free ()">g_variant_type_free</a> (<em class="parameter"><code><a class="link" href="glib-GVariantType.html#GVariantType" title="GVariantType"><span class="type">GVariantType</span></a> *type</code></em>);
74 <a class="link" href="glib-GVariantType.html#GVariantType" title="GVariantType"><span class="returnvalue">GVariantType</span></a> * <a class="link" href="glib-GVariantType.html#g-variant-type-copy" title="g_variant_type_copy ()">g_variant_type_copy</a> (<em class="parameter"><code>const <a class="link" href="glib-GVariantType.html#GVariantType" title="GVariantType"><span class="type">GVariantType</span></a> *type</code></em>);
75 <a class="link" href="glib-GVariantType.html#GVariantType" title="GVariantType"><span class="returnvalue">GVariantType</span></a> * <a class="link" href="glib-GVariantType.html#g-variant-type-new" title="g_variant_type_new ()">g_variant_type_new</a> (<em class="parameter"><code>const <a class="link" href="glib-Basic-Types.html#gchar" title="gchar"><span class="type">gchar</span></a> *type_string</code></em>);
77 <a class="link" href="glib-Basic-Types.html#gboolean" title="gboolean"><span class="returnvalue">gboolean</span></a> <a class="link" href="glib-GVariantType.html#g-variant-type-string-is-valid" title="g_variant_type_string_is_valid ()">g_variant_type_string_is_valid</a> (<em class="parameter"><code>const <a class="link" href="glib-Basic-Types.html#gchar" title="gchar"><span class="type">gchar</span></a> *type_string</code></em>);
78 <a class="link" href="glib-Basic-Types.html#gboolean" title="gboolean"><span class="returnvalue">gboolean</span></a> <a class="link" href="glib-GVariantType.html#g-variant-type-string-scan" title="g_variant_type_string_scan ()">g_variant_type_string_scan</a> (<em class="parameter"><code>const <a class="link" href="glib-Basic-Types.html#gchar" title="gchar"><span class="type">gchar</span></a> *string</code></em>,
79 <em class="parameter"><code>const <a class="link" href="glib-Basic-Types.html#gchar" title="gchar"><span class="type">gchar</span></a> *limit</code></em>,
80 <em class="parameter"><code>const <a class="link" href="glib-Basic-Types.html#gchar" title="gchar"><span class="type">gchar</span></a> **endptr</code></em>);
81 <a class="link" href="glib-Basic-Types.html#gsize" title="gsize"><span class="returnvalue">gsize</span></a> <a class="link" href="glib-GVariantType.html#g-variant-type-get-string-length" title="g_variant_type_get_string_length ()">g_variant_type_get_string_length</a> (<em class="parameter"><code>const <a class="link" href="glib-GVariantType.html#GVariantType" title="GVariantType"><span class="type">GVariantType</span></a> *type</code></em>);
82 const <a class="link" href="glib-Basic-Types.html#gchar" title="gchar"><span class="returnvalue">gchar</span></a> * <a class="link" href="glib-GVariantType.html#g-variant-type-peek-string" title="g_variant_type_peek_string ()">g_variant_type_peek_string</a> (<em class="parameter"><code>const <a class="link" href="glib-GVariantType.html#GVariantType" title="GVariantType"><span class="type">GVariantType</span></a> *type</code></em>);
83 <a class="link" href="glib-Basic-Types.html#gchar" title="gchar"><span class="returnvalue">gchar</span></a> * <a class="link" href="glib-GVariantType.html#g-variant-type-dup-string" title="g_variant_type_dup_string ()">g_variant_type_dup_string</a> (<em class="parameter"><code>const <a class="link" href="glib-GVariantType.html#GVariantType" title="GVariantType"><span class="type">GVariantType</span></a> *type</code></em>);
85 <a class="link" href="glib-Basic-Types.html#gboolean" title="gboolean"><span class="returnvalue">gboolean</span></a> <a class="link" href="glib-GVariantType.html#g-variant-type-is-definite" title="g_variant_type_is_definite ()">g_variant_type_is_definite</a> (<em class="parameter"><code>const <a class="link" href="glib-GVariantType.html#GVariantType" title="GVariantType"><span class="type">GVariantType</span></a> *type</code></em>);
86 <a class="link" href="glib-Basic-Types.html#gboolean" title="gboolean"><span class="returnvalue">gboolean</span></a> <a class="link" href="glib-GVariantType.html#g-variant-type-is-container" title="g_variant_type_is_container ()">g_variant_type_is_container</a> (<em class="parameter"><code>const <a class="link" href="glib-GVariantType.html#GVariantType" title="GVariantType"><span class="type">GVariantType</span></a> *type</code></em>);
87 <a class="link" href="glib-Basic-Types.html#gboolean" title="gboolean"><span class="returnvalue">gboolean</span></a> <a class="link" href="glib-GVariantType.html#g-variant-type-is-basic" title="g_variant_type_is_basic ()">g_variant_type_is_basic</a> (<em class="parameter"><code>const <a class="link" href="glib-GVariantType.html#GVariantType" title="GVariantType"><span class="type">GVariantType</span></a> *type</code></em>);
88 <a class="link" href="glib-Basic-Types.html#gboolean" title="gboolean"><span class="returnvalue">gboolean</span></a> <a class="link" href="glib-GVariantType.html#g-variant-type-is-maybe" title="g_variant_type_is_maybe ()">g_variant_type_is_maybe</a> (<em class="parameter"><code>const <a class="link" href="glib-GVariantType.html#GVariantType" title="GVariantType"><span class="type">GVariantType</span></a> *type</code></em>);
89 <a class="link" href="glib-Basic-Types.html#gboolean" title="gboolean"><span class="returnvalue">gboolean</span></a> <a class="link" href="glib-GVariantType.html#g-variant-type-is-array" title="g_variant_type_is_array ()">g_variant_type_is_array</a> (<em class="parameter"><code>const <a class="link" href="glib-GVariantType.html#GVariantType" title="GVariantType"><span class="type">GVariantType</span></a> *type</code></em>);
90 <a class="link" href="glib-Basic-Types.html#gboolean" title="gboolean"><span class="returnvalue">gboolean</span></a> <a class="link" href="glib-GVariantType.html#g-variant-type-is-tuple" title="g_variant_type_is_tuple ()">g_variant_type_is_tuple</a> (<em class="parameter"><code>const <a class="link" href="glib-GVariantType.html#GVariantType" title="GVariantType"><span class="type">GVariantType</span></a> *type</code></em>);
91 <a class="link" href="glib-Basic-Types.html#gboolean" title="gboolean"><span class="returnvalue">gboolean</span></a> <a class="link" href="glib-GVariantType.html#g-variant-type-is-dict-entry" title="g_variant_type_is_dict_entry ()">g_variant_type_is_dict_entry</a> (<em class="parameter"><code>const <a class="link" href="glib-GVariantType.html#GVariantType" title="GVariantType"><span class="type">GVariantType</span></a> *type</code></em>);
92 <a class="link" href="glib-Basic-Types.html#gboolean" title="gboolean"><span class="returnvalue">gboolean</span></a> <a class="link" href="glib-GVariantType.html#g-variant-type-is-variant" title="g_variant_type_is_variant ()">g_variant_type_is_variant</a> (<em class="parameter"><code>const <a class="link" href="glib-GVariantType.html#GVariantType" title="GVariantType"><span class="type">GVariantType</span></a> *type</code></em>);
94 <a class="link" href="glib-Basic-Types.html#guint" title="guint"><span class="returnvalue">guint</span></a> <a class="link" href="glib-GVariantType.html#g-variant-type-hash" title="g_variant_type_hash ()">g_variant_type_hash</a> (<em class="parameter"><code><a class="link" href="glib-Basic-Types.html#gconstpointer" title="gconstpointer"><span class="type">gconstpointer</span></a> type</code></em>);
95 <a class="link" href="glib-Basic-Types.html#gboolean" title="gboolean"><span class="returnvalue">gboolean</span></a> <a class="link" href="glib-GVariantType.html#g-variant-type-equal" title="g_variant_type_equal ()">g_variant_type_equal</a> (<em class="parameter"><code><a class="link" href="glib-Basic-Types.html#gconstpointer" title="gconstpointer"><span class="type">gconstpointer</span></a> type1</code></em>,
96 <em class="parameter"><code><a class="link" href="glib-Basic-Types.html#gconstpointer" title="gconstpointer"><span class="type">gconstpointer</span></a> type2</code></em>);
97 <a class="link" href="glib-Basic-Types.html#gboolean" title="gboolean"><span class="returnvalue">gboolean</span></a> <a class="link" href="glib-GVariantType.html#g-variant-type-is-subtype-of" title="g_variant_type_is_subtype_of ()">g_variant_type_is_subtype_of</a> (<em class="parameter"><code>const <a class="link" href="glib-GVariantType.html#GVariantType" title="GVariantType"><span class="type">GVariantType</span></a> *type</code></em>,
98 <em class="parameter"><code>const <a class="link" href="glib-GVariantType.html#GVariantType" title="GVariantType"><span class="type">GVariantType</span></a> *supertype</code></em>);
100 <a class="link" href="glib-GVariantType.html#GVariantType" title="GVariantType"><span class="returnvalue">GVariantType</span></a> * <a class="link" href="glib-GVariantType.html#g-variant-type-new-maybe" title="g_variant_type_new_maybe ()">g_variant_type_new_maybe</a> (<em class="parameter"><code>const <a class="link" href="glib-GVariantType.html#GVariantType" title="GVariantType"><span class="type">GVariantType</span></a> *element</code></em>);
101 <a class="link" href="glib-GVariantType.html#GVariantType" title="GVariantType"><span class="returnvalue">GVariantType</span></a> * <a class="link" href="glib-GVariantType.html#g-variant-type-new-array" title="g_variant_type_new_array ()">g_variant_type_new_array</a> (<em class="parameter"><code>const <a class="link" href="glib-GVariantType.html#GVariantType" title="GVariantType"><span class="type">GVariantType</span></a> *element</code></em>);
102 <a class="link" href="glib-GVariantType.html#GVariantType" title="GVariantType"><span class="returnvalue">GVariantType</span></a> * <a class="link" href="glib-GVariantType.html#g-variant-type-new-tuple" title="g_variant_type_new_tuple ()">g_variant_type_new_tuple</a> (<em class="parameter"><code>const <a class="link" href="glib-GVariantType.html#GVariantType" title="GVariantType"><span class="type">GVariantType</span></a> * const *items</code></em>,
103 <em class="parameter"><code><a class="link" href="glib-Basic-Types.html#gint" title="gint"><span class="type">gint</span></a> length</code></em>);
104 <a class="link" href="glib-GVariantType.html#GVariantType" title="GVariantType"><span class="returnvalue">GVariantType</span></a> * <a class="link" href="glib-GVariantType.html#g-variant-type-new-dict-entry" title="g_variant_type_new_dict_entry ()">g_variant_type_new_dict_entry</a> (<em class="parameter"><code>const <a class="link" href="glib-GVariantType.html#GVariantType" title="GVariantType"><span class="type">GVariantType</span></a> *key</code></em>,
105 <em class="parameter"><code>const <a class="link" href="glib-GVariantType.html#GVariantType" title="GVariantType"><span class="type">GVariantType</span></a> *value</code></em>);
107 const <a class="link" href="glib-GVariantType.html#GVariantType" title="GVariantType"><span class="returnvalue">GVariantType</span></a> * <a class="link" href="glib-GVariantType.html#g-variant-type-element" title="g_variant_type_element ()">g_variant_type_element</a> (<em class="parameter"><code>const <a class="link" href="glib-GVariantType.html#GVariantType" title="GVariantType"><span class="type">GVariantType</span></a> *type</code></em>);
108 <a class="link" href="glib-Basic-Types.html#gsize" title="gsize"><span class="returnvalue">gsize</span></a> <a class="link" href="glib-GVariantType.html#g-variant-type-n-items" title="g_variant_type_n_items ()">g_variant_type_n_items</a> (<em class="parameter"><code>const <a class="link" href="glib-GVariantType.html#GVariantType" title="GVariantType"><span class="type">GVariantType</span></a> *type</code></em>);
109 const <a class="link" href="glib-GVariantType.html#GVariantType" title="GVariantType"><span class="returnvalue">GVariantType</span></a> * <a class="link" href="glib-GVariantType.html#g-variant-type-first" title="g_variant_type_first ()">g_variant_type_first</a> (<em class="parameter"><code>const <a class="link" href="glib-GVariantType.html#GVariantType" title="GVariantType"><span class="type">GVariantType</span></a> *type</code></em>);
110 const <a class="link" href="glib-GVariantType.html#GVariantType" title="GVariantType"><span class="returnvalue">GVariantType</span></a> * <a class="link" href="glib-GVariantType.html#g-variant-type-next" title="g_variant_type_next ()">g_variant_type_next</a> (<em class="parameter"><code>const <a class="link" href="glib-GVariantType.html#GVariantType" title="GVariantType"><span class="type">GVariantType</span></a> *type</code></em>);
111 const <a class="link" href="glib-GVariantType.html#GVariantType" title="GVariantType"><span class="returnvalue">GVariantType</span></a> * <a class="link" href="glib-GVariantType.html#g-variant-type-key" title="g_variant_type_key ()">g_variant_type_key</a> (<em class="parameter"><code>const <a class="link" href="glib-GVariantType.html#GVariantType" title="GVariantType"><span class="type">GVariantType</span></a> *type</code></em>);
112 const <a class="link" href="glib-GVariantType.html#GVariantType" title="GVariantType"><span class="returnvalue">GVariantType</span></a> * <a class="link" href="glib-GVariantType.html#g-variant-type-value" title="g_variant_type_value ()">g_variant_type_value</a> (<em class="parameter"><code>const <a class="link" href="glib-GVariantType.html#GVariantType" title="GVariantType"><span class="type">GVariantType</span></a> *type</code></em>);
115 <div class="refsect1">
116 <a name="glib-GVariantType.description"></a><h2>Description</h2>
118 This section introduces the GVariant type system. It is based, in
119 large part, on the D-Bus type system, with two major changes and some minor
120 lifting of restrictions. The <a class="ulink" href="http://dbus.freedesktop.org/doc/dbus-specification.html" target="_top">DBus
121 specification</a>, therefore, provides a significant amount of
122 information that is useful when working with GVariant.
125 The first major change with respect to the D-Bus type system is the
126 introduction of maybe (or "nullable") types. Any type in GVariant can be
127 converted to a maybe type, in which case, "nothing" (or "null") becomes a
128 valid value. Maybe types have been added by introducing the
129 character "<code class="literal">m</code>" to type strings.
132 The second major change is that the GVariant type system supports the
133 concept of "indefinite types" -- types that are less specific than
134 the normal types found in D-Bus. For example, it is possible to speak
135 of "an array of any type" in GVariant, where the D-Bus type system
136 would require you to speak of "an array of integers" or "an array of
137 strings". Indefinite types have been added by introducing the
138 characters "<code class="literal">*</code>", "<code class="literal">?</code>" and
139 "<code class="literal">r</code>" to type strings.
142 Finally, all arbitrary restrictions relating to the complexity of
143 types are lifted along with the restriction that dictionary entries
144 may only appear nested inside of arrays.
147 Just as in D-Bus, GVariant types are described with strings ("type
148 strings"). Subject to the differences mentioned above, these strings
149 are of the same form as those found in DBus. Note, however: D-Bus
150 always works in terms of messages and therefore individual type
151 strings appear nowhere in its interface. Instead, "signatures"
152 are a concatenation of the strings of the type of each argument in a
153 message. GVariant deals with single values directly so GVariant type
154 strings always describe the type of exactly one value. This means
155 that a D-Bus signature string is generally not a valid GVariant type
156 string -- except in the case that it is the signature of a message
157 containing exactly one argument.
160 An indefinite type is similar in spirit to what may be called an
161 abstract type in other type systems. No value can exist that has an
162 indefinite type as its type, but values can exist that have types
163 that are subtypes of indefinite types. That is to say,
164 <a class="link" href="glib-GVariant.html#g-variant-get-type" title="g_variant_get_type ()"><code class="function">g_variant_get_type()</code></a> will never return an indefinite type, but
165 calling <a class="link" href="glib-GVariant.html#g-variant-is-of-type" title="g_variant_is_of_type ()"><code class="function">g_variant_is_of_type()</code></a> with an indefinite type may return
166 <a class="link" href="glib-Standard-Macros.html#TRUE:CAPS" title="TRUE"><code class="literal">TRUE</code></a>. For example, you cannot have a value that represents "an
167 array of no particular type", but you can have an "array of integers"
168 which certainly matches the type of "an array of no particular type",
169 since "array of integers" is a subtype of "array of no particular
173 This is similar to how instances of abstract classes may not
174 directly exist in other type systems, but instances of their
175 non-abstract subtypes may. For example, in GTK, no object that has
176 the type of <a href="http://library.gnome.org/devel/gtk/GtkBin.html"><span class="type">GtkBin</span></a> can exist (since <a href="http://library.gnome.org/devel/gtk/GtkBin.html"><span class="type">GtkBin</span></a> is an abstract class),
177 but a <a href="http://library.gnome.org/devel/gtk/GtkWindow.html"><span class="type">GtkWindow</span></a> can certainly be instantiated, and you would say
178 that the <a href="http://library.gnome.org/devel/gtk/GtkWindow.html"><span class="type">GtkWindow</span></a> is a <a href="http://library.gnome.org/devel/gtk/GtkBin.html"><span class="type">GtkBin</span></a> (since <a href="http://library.gnome.org/devel/gtk/GtkWindow.html"><span class="type">GtkWindow</span></a> is a subclass of
179 <a href="http://library.gnome.org/devel/gtk/GtkBin.html"><span class="type">GtkBin</span></a>).
182 A detailed description of GVariant type strings is given here:
186 <div class="refsect2">
187 <a name="gvariant-typestrings"></a><h3>GVariant Type Strings</h3>
189 A GVariant type string can be any of the following:
191 <div class="itemizedlist"><ul class="itemizedlist" type="disc">
192 <li class="listitem"><p>
193 any basic type string (listed below)
195 <li class="listitem"><p>
196 "<code class="literal">v</code>", "<code class="literal">r</code>" or
197 "<code class="literal">*</code>"
199 <li class="listitem"><p>
200 one of the characters '<code class="literal">a</code>' or
201 '<code class="literal">m</code>', followed by another type string
203 <li class="listitem"><p>
204 the character '<code class="literal">(</code>', followed by a concatenation
205 of zero or more other type strings, followed by the character
206 '<code class="literal">)</code>'
208 <li class="listitem"><p>
209 the character '<code class="literal">{</code>', followed by a basic type
210 string (see below), followed by another type string, followed by
211 the character '<code class="literal">}</code>'
215 A basic type string describes a basic type (as per
216 <a class="link" href="glib-GVariantType.html#g-variant-type-is-basic" title="g_variant_type_is_basic ()"><code class="function">g_variant_type_is_basic()</code></a>) and is always a single
217 character in length. The valid basic type strings are
218 "<code class="literal">b</code>", "<code class="literal">y</code>",
219 "<code class="literal">n</code>", "<code class="literal">q</code>",
220 "<code class="literal">i</code>", "<code class="literal">u</code>",
221 "<code class="literal">x</code>", "<code class="literal">t</code>",
222 "<code class="literal">h</code>", "<code class="literal">d</code>",
223 "<code class="literal">s</code>", "<code class="literal">o</code>",
224 "<code class="literal">g</code>" and "<code class="literal">?</code>".
227 The above definition is recursive to arbitrary depth.
228 "<code class="literal">aaaaai</code>" and "<code class="literal">(ui(nq((y)))s)</code>"
229 are both valid type strings, as is
230 "<code class="literal">a(aa(ui)(qna{ya(yd)}))</code>".
233 The meaning of each of the characters is as follows:
235 <div class="informaltable"><table border="1">
244 <span class="strong"><strong>Character</strong></span>
249 <span class="strong"><strong>Meaning</strong></span>
256 <code class="literal">b</code>
261 the type string of <a class="link" href="glib-GVariantType.html#G-VARIANT-TYPE-BOOLEAN:CAPS" title="G_VARIANT_TYPE_BOOLEAN"><code class="literal">G_VARIANT_TYPE_BOOLEAN</code></a>; a boolean value.
268 <code class="literal">y</code>
273 the type string of <a class="link" href="glib-GVariantType.html#G-VARIANT-TYPE-BYTE:CAPS" title="G_VARIANT_TYPE_BYTE"><code class="literal">G_VARIANT_TYPE_BYTE</code></a>; a byte.
280 <code class="literal">n</code>
285 the type string of <a class="link" href="glib-GVariantType.html#G-VARIANT-TYPE-INT16:CAPS" title="G_VARIANT_TYPE_INT16"><code class="literal">G_VARIANT_TYPE_INT16</code></a>; a signed 16 bit
293 <code class="literal">q</code>
298 the type string of <a class="link" href="glib-GVariantType.html#G-VARIANT-TYPE-UINT16:CAPS" title="G_VARIANT_TYPE_UINT16"><code class="literal">G_VARIANT_TYPE_UINT16</code></a>; an unsigned 16 bit
306 <code class="literal">i</code>
311 the type string of <a class="link" href="glib-GVariantType.html#G-VARIANT-TYPE-INT32:CAPS" title="G_VARIANT_TYPE_INT32"><code class="literal">G_VARIANT_TYPE_INT32</code></a>; a signed 32 bit
319 <code class="literal">u</code>
324 the type string of <a class="link" href="glib-GVariantType.html#G-VARIANT-TYPE-UINT32:CAPS" title="G_VARIANT_TYPE_UINT32"><code class="literal">G_VARIANT_TYPE_UINT32</code></a>; an unsigned 32 bit
332 <code class="literal">x</code>
337 the type string of <a class="link" href="glib-GVariantType.html#G-VARIANT-TYPE-INT64:CAPS" title="G_VARIANT_TYPE_INT64"><code class="literal">G_VARIANT_TYPE_INT64</code></a>; a signed 64 bit
345 <code class="literal">t</code>
350 the type string of <a class="link" href="glib-GVariantType.html#G-VARIANT-TYPE-UINT64:CAPS" title="G_VARIANT_TYPE_UINT64"><code class="literal">G_VARIANT_TYPE_UINT64</code></a>; an unsigned 64 bit
358 <code class="literal">h</code>
363 the type string of <a class="link" href="glib-GVariantType.html#G-VARIANT-TYPE-HANDLE:CAPS" title="G_VARIANT_TYPE_HANDLE"><code class="literal">G_VARIANT_TYPE_HANDLE</code></a>; a signed 32 bit
364 value that, by convention, is used as an index into an array
365 of file descriptors that are sent alongside a D-Bus message.
372 <code class="literal">d</code>
377 the type string of <a class="link" href="glib-GVariantType.html#G-VARIANT-TYPE-DOUBLE:CAPS" title="G_VARIANT_TYPE_DOUBLE"><code class="literal">G_VARIANT_TYPE_DOUBLE</code></a>; a double precision
378 floating point value.
385 <code class="literal">s</code>
390 the type string of <a class="link" href="glib-GVariantType.html#G-VARIANT-TYPE-STRING:CAPS" title="G_VARIANT_TYPE_STRING"><code class="literal">G_VARIANT_TYPE_STRING</code></a>; a string.
397 <code class="literal">o</code>
402 the type string of <a class="link" href="glib-GVariantType.html#G-VARIANT-TYPE-OBJECT-PATH:CAPS" title="G_VARIANT_TYPE_OBJECT_PATH"><code class="literal">G_VARIANT_TYPE_OBJECT_PATH</code></a>; a string in
403 the form of a D-Bus object path.
410 <code class="literal">g</code>
415 the type string of <a class="link" href="glib-GVariantType.html#G-VARIANT-TYPE-STRING:CAPS" title="G_VARIANT_TYPE_STRING"><code class="literal">G_VARIANT_TYPE_STRING</code></a>; a string in the
416 form of a D-Bus type signature.
423 <code class="literal">?</code>
428 the type string of <a class="link" href="glib-GVariantType.html#G-VARIANT-TYPE-BASIC:CAPS" title="G_VARIANT_TYPE_BASIC"><code class="literal">G_VARIANT_TYPE_BASIC</code></a>; an indefinite type
429 that is a supertype of any of the basic types.
436 <code class="literal">v</code>
441 the type string of <a class="link" href="glib-GVariantType.html#G-VARIANT-TYPE-VARIANT:CAPS" title="G_VARIANT_TYPE_VARIANT"><code class="literal">G_VARIANT_TYPE_VARIANT</code></a>; a container type
442 that contain any other type of value.
449 <code class="literal">a</code>
454 used as a prefix on another type string to mean an array of
455 that type; the type string "<code class="literal">ai</code>", for
456 example, is the type of an array of 32 bit signed integers.
463 <code class="literal">m</code>
468 used as a prefix on another type string to mean a "maybe", or
469 "nullable", version of that type; the type string
470 "<code class="literal">ms</code>", for example, is the type of a value
471 that maybe contains a string, or maybe contains nothing.
478 <code class="literal">()</code>
483 used to enclose zero or more other concatenated type strings
484 to create a tuple type; the type string
485 "<code class="literal">(is)</code>", for example, is the type of a pair
486 of an integer and a string.
493 <code class="literal">r</code>
498 the type string of <a class="link" href="glib-GVariantType.html#G-VARIANT-TYPE-TUPLE:CAPS" title="G_VARIANT_TYPE_TUPLE"><code class="literal">G_VARIANT_TYPE_TUPLE</code></a>; an indefinite type
499 that is a supertype of any tuple type, regardless of the
507 <code class="literal">{}</code>
512 used to enclose a basic type string concatenated with another
513 type string to create a dictionary entry type, which usually
514 appears inside of an array to form a dictionary; the type
515 string "<code class="literal">a{sd}</code>", for example, is the type of
516 a dictionary that maps strings to double precision floating
520 The first type (the basic type) is the key type and the second
521 type is the value type. The reason that the first type is
522 restricted to being a basic type is so that it can easily be
530 <code class="literal">*</code>
535 the type string of <a class="link" href="glib-GVariantType.html#G-VARIANT-TYPE-ANY:CAPS" title="G_VARIANT_TYPE_ANY"><code class="literal">G_VARIANT_TYPE_ANY</code></a>; the indefinite type
536 that is a supertype of all types. Note that, as with all type
537 strings, this character represents exactly one type. It
538 cannot be used inside of tuples to mean "any number of items".
545 Any type string of a container that contains an indefinite type is,
546 itself, an indefinite type. For example, the type string
547 "<code class="literal">a*</code>" (corresponding to <a class="link" href="glib-GVariantType.html#G-VARIANT-TYPE-ARRAY:CAPS" title="G_VARIANT_TYPE_ARRAY"><code class="literal">G_VARIANT_TYPE_ARRAY</code></a>) is
548 an indefinite type that is a supertype of every array type.
549 "<code class="literal">(*s)</code>" is a supertype of all tuples that
550 contain exactly two items where the second item is a string.
553 "<code class="literal">a{?*}</code>" is an indefinite type that is a
554 supertype of all arrays containing dictionary entries where the key
555 is any basic type and the value is any type at all. This is, by
556 definition, a dictionary, so this type string corresponds to
557 <a class="link" href="glib-GVariantType.html#G-VARIANT-TYPE-DICTIONARY:CAPS" title="G_VARIANT_TYPE_DICTIONARY"><code class="literal">G_VARIANT_TYPE_DICTIONARY</code></a>. Note that, due to the restriction that
558 the key of a dictionary entry must be a basic type,
559 "<code class="literal">{**}</code>" is not a valid type string.
565 <div class="refsect1">
566 <a name="glib-GVariantType.details"></a><h2>Details</h2>
567 <div class="refsect2">
568 <a name="GVariantType"></a><h3>GVariantType</h3>
569 <pre class="programlisting">typedef struct _GVariantType GVariantType;</pre>
571 A type in the GVariant type system.
574 Two types may not be compared by value; use <a class="link" href="glib-GVariantType.html#g-variant-type-equal" title="g_variant_type_equal ()"><code class="function">g_variant_type_equal()</code></a> or
575 <a class="link" href="glib-GVariantType.html#g-variant-type-is-subtype-of" title="g_variant_type_is_subtype_of ()"><code class="function">g_variant_type_is_subtype_of()</code></a>. May be copied using
576 <a class="link" href="glib-GVariantType.html#g-variant-type-copy" title="g_variant_type_copy ()"><code class="function">g_variant_type_copy()</code></a> and freed using <a class="link" href="glib-GVariantType.html#g-variant-type-free" title="g_variant_type_free ()"><code class="function">g_variant_type_free()</code></a>.
580 <div class="refsect2">
581 <a name="G-VARIANT-TYPE-BOOLEAN:CAPS"></a><h3>G_VARIANT_TYPE_BOOLEAN</h3>
582 <pre class="programlisting">#define G_VARIANT_TYPE_BOOLEAN ((const GVariantType *) "b")
585 The type of a value that can be either <a class="link" href="glib-Standard-Macros.html#TRUE:CAPS" title="TRUE"><code class="literal">TRUE</code></a> or <a class="link" href="glib-Standard-Macros.html#FALSE:CAPS" title="FALSE"><code class="literal">FALSE</code></a>.
589 <div class="refsect2">
590 <a name="G-VARIANT-TYPE-BYTE:CAPS"></a><h3>G_VARIANT_TYPE_BYTE</h3>
591 <pre class="programlisting">#define G_VARIANT_TYPE_BYTE ((const GVariantType *) "y")
594 The type of an integer value that can range from 0 to 255.
598 <div class="refsect2">
599 <a name="G-VARIANT-TYPE-INT16:CAPS"></a><h3>G_VARIANT_TYPE_INT16</h3>
600 <pre class="programlisting">#define G_VARIANT_TYPE_INT16 ((const GVariantType *) "n")
603 The type of an integer value that can range from -32768 to 32767.
607 <div class="refsect2">
608 <a name="G-VARIANT-TYPE-UINT16:CAPS"></a><h3>G_VARIANT_TYPE_UINT16</h3>
609 <pre class="programlisting">#define G_VARIANT_TYPE_UINT16 ((const GVariantType *) "q")
612 The type of an integer value that can range from 0 to 65535.
613 There were about this many people living in Toronto in the 1870s.
617 <div class="refsect2">
618 <a name="G-VARIANT-TYPE-INT32:CAPS"></a><h3>G_VARIANT_TYPE_INT32</h3>
619 <pre class="programlisting">#define G_VARIANT_TYPE_INT32 ((const GVariantType *) "i")
622 The type of an integer value that can range from -2147483648 to
627 <div class="refsect2">
628 <a name="G-VARIANT-TYPE-UINT32:CAPS"></a><h3>G_VARIANT_TYPE_UINT32</h3>
629 <pre class="programlisting">#define G_VARIANT_TYPE_UINT32 ((const GVariantType *) "u")
632 The type of an integer value that can range from 0 to 4294967295.
633 That's one number for everyone who was around in the late 1970s.
637 <div class="refsect2">
638 <a name="G-VARIANT-TYPE-INT64:CAPS"></a><h3>G_VARIANT_TYPE_INT64</h3>
639 <pre class="programlisting">#define G_VARIANT_TYPE_INT64 ((const GVariantType *) "x")
642 The type of an integer value that can range from
643 -9223372036854775808 to 9223372036854775807.
647 <div class="refsect2">
648 <a name="G-VARIANT-TYPE-UINT64:CAPS"></a><h3>G_VARIANT_TYPE_UINT64</h3>
649 <pre class="programlisting">#define G_VARIANT_TYPE_UINT64 ((const GVariantType *) "t")
652 The type of an integer value that can range from 0 to
653 18446744073709551616. That's a really big number, but a Rubik's
654 cube can have a bit more than twice as many possible positions.
658 <div class="refsect2">
659 <a name="G-VARIANT-TYPE-HANDLE:CAPS"></a><h3>G_VARIANT_TYPE_HANDLE</h3>
660 <pre class="programlisting">#define G_VARIANT_TYPE_HANDLE ((const GVariantType *) "h")
663 The type of a 32bit signed integer value, that by convention, is used
664 as an index into an array of file descriptors that are sent alongside
668 If you are not interacting with D-Bus, then there is no reason to make
673 <div class="refsect2">
674 <a name="G-VARIANT-TYPE-DOUBLE:CAPS"></a><h3>G_VARIANT_TYPE_DOUBLE</h3>
675 <pre class="programlisting">#define G_VARIANT_TYPE_DOUBLE ((const GVariantType *) "d")
678 The type of a double precision IEEE754 floating point number.
679 These guys go up to about 1.80e308 (plus and minus) but miss out on
680 some numbers in between. In any case, that's far greater than the
681 estimated number of fundamental particles in the observable
686 <div class="refsect2">
687 <a name="G-VARIANT-TYPE-STRING:CAPS"></a><h3>G_VARIANT_TYPE_STRING</h3>
688 <pre class="programlisting">#define G_VARIANT_TYPE_STRING ((const GVariantType *) "s")
691 The type of a string. "" is a string. <a class="link" href="glib-Standard-Macros.html#NULL:CAPS" title="NULL"><code class="literal">NULL</code></a> is not a string.
695 <div class="refsect2">
696 <a name="G-VARIANT-TYPE-OBJECT-PATH:CAPS"></a><h3>G_VARIANT_TYPE_OBJECT_PATH</h3>
697 <pre class="programlisting">#define G_VARIANT_TYPE_OBJECT_PATH ((const GVariantType *) "o")
700 The type of a D-Bus object reference. These are strings of a
701 specific format used to identify objects at a given destination on
705 If you are not interacting with D-Bus, then there is no reason to make
706 use of this type. If you are, then the D-Bus specification contains a
707 precise description of valid object paths.
711 <div class="refsect2">
712 <a name="G-VARIANT-TYPE-SIGNATURE:CAPS"></a><h3>G_VARIANT_TYPE_SIGNATURE</h3>
713 <pre class="programlisting">#define G_VARIANT_TYPE_SIGNATURE ((const GVariantType *) "g")
716 The type of a D-Bus type signature. These are strings of a specific
717 format used as type signatures for D-Bus methods and messages.
720 If you are not interacting with D-Bus, then there is no reason to make
721 use of this type. If you are, then the D-Bus specification contains a
722 precise description of valid signature strings.
726 <div class="refsect2">
727 <a name="G-VARIANT-TYPE-VARIANT:CAPS"></a><h3>G_VARIANT_TYPE_VARIANT</h3>
728 <pre class="programlisting">#define G_VARIANT_TYPE_VARIANT ((const GVariantType *) "v")
731 The type of a box that contains any other value (including another
736 <div class="refsect2">
737 <a name="G-VARIANT-TYPE-ANY:CAPS"></a><h3>G_VARIANT_TYPE_ANY</h3>
738 <pre class="programlisting">#define G_VARIANT_TYPE_ANY ((const GVariantType *) "*")
741 An indefinite type that is a supertype of every type (including
746 <div class="refsect2">
747 <a name="G-VARIANT-TYPE-BASIC:CAPS"></a><h3>G_VARIANT_TYPE_BASIC</h3>
748 <pre class="programlisting">#define G_VARIANT_TYPE_BASIC ((const GVariantType *) "?")
751 An indefinite type that is a supertype of every basic (ie:
756 <div class="refsect2">
757 <a name="G-VARIANT-TYPE-MAYBE:CAPS"></a><h3>G_VARIANT_TYPE_MAYBE</h3>
758 <pre class="programlisting">#define G_VARIANT_TYPE_MAYBE ((const GVariantType *) "m*")
761 An indefinite type that is a supertype of every maybe type.
765 <div class="refsect2">
766 <a name="G-VARIANT-TYPE-ARRAY:CAPS"></a><h3>G_VARIANT_TYPE_ARRAY</h3>
767 <pre class="programlisting">#define G_VARIANT_TYPE_ARRAY ((const GVariantType *) "a*")
770 An indefinite type that is a supertype of every array type.
774 <div class="refsect2">
775 <a name="G-VARIANT-TYPE-TUPLE:CAPS"></a><h3>G_VARIANT_TYPE_TUPLE</h3>
776 <pre class="programlisting">#define G_VARIANT_TYPE_TUPLE ((const GVariantType *) "r")
779 An indefinite type that is a supertype of every tuple type,
780 regardless of the number of items in the tuple.
784 <div class="refsect2">
785 <a name="G-VARIANT-TYPE-UNIT:CAPS"></a><h3>G_VARIANT_TYPE_UNIT</h3>
786 <pre class="programlisting">#define G_VARIANT_TYPE_UNIT ((const GVariantType *) "()")
789 The empty tuple type. Has only one instance. Known also as "triv"
794 <div class="refsect2">
795 <a name="G-VARIANT-TYPE-DICT-ENTRY:CAPS"></a><h3>G_VARIANT_TYPE_DICT_ENTRY</h3>
796 <pre class="programlisting">#define G_VARIANT_TYPE_DICT_ENTRY ((const GVariantType *) "{?*}")
799 An indefinite type that is a supertype of every dictionary entry
804 <div class="refsect2">
805 <a name="G-VARIANT-TYPE-DICTIONARY:CAPS"></a><h3>G_VARIANT_TYPE_DICTIONARY</h3>
806 <pre class="programlisting">#define G_VARIANT_TYPE_DICTIONARY ((const GVariantType *) "a{?*}")
809 An indefinite type that is a supertype of every dictionary type --
810 that is, any array type that has an element type equal to any
811 dictionary entry type.
815 <div class="refsect2">
816 <a name="G-VARIANT-TYPE-STRING-ARRAY:CAPS"></a><h3>G_VARIANT_TYPE_STRING_ARRAY</h3>
817 <pre class="programlisting">#define G_VARIANT_TYPE_STRING_ARRAY ((const GVariantType *) "as")
820 The type of an array of strings.
824 <div class="refsect2">
825 <a name="G-VARIANT-TYPE-OBJECT-PATH-ARRAY:CAPS"></a><h3>G_VARIANT_TYPE_OBJECT_PATH_ARRAY</h3>
826 <pre class="programlisting">#define G_VARIANT_TYPE_OBJECT_PATH_ARRAY ((const GVariantType *) "ao")
829 The type of an array of object paths.
833 <div class="refsect2">
834 <a name="G-VARIANT-TYPE-BYTESTRING:CAPS"></a><h3>G_VARIANT_TYPE_BYTESTRING</h3>
835 <pre class="programlisting">#define G_VARIANT_TYPE_BYTESTRING ((const GVariantType *) "ay")
838 The type of an array of bytes. This type is commonly used to pass
839 around strings that may not be valid utf8. In that case, the
840 convention is that the nul terminator character should be included as
841 the last character in the array.
845 <div class="refsect2">
846 <a name="G-VARIANT-TYPE-BYTESTRING-ARRAY:CAPS"></a><h3>G_VARIANT_TYPE_BYTESTRING_ARRAY</h3>
847 <pre class="programlisting">#define G_VARIANT_TYPE_BYTESTRING_ARRAY ((const GVariantType *) "aay")
850 The type of an array of byte strings (an array of arrays of bytes).
854 <div class="refsect2">
855 <a name="G-VARIANT-TYPE-VARDICT:CAPS"></a><h3>G_VARIANT_TYPE_VARDICT</h3>
856 <pre class="programlisting">#define G_VARIANT_TYPE_VARDICT ((const GVariantType *) "a{sv}")
859 The type of a dictionary mapping strings to variants (the ubiquitous
862 <p class="since">Since 2.30</p>
865 <div class="refsect2">
866 <a name="G-VARIANT-TYPE:CAPS"></a><h3>G_VARIANT_TYPE()</h3>
867 <pre class="programlisting"># define G_VARIANT_TYPE(type_string) (g_variant_type_checked_ ((type_string)))
870 Converts a string to a const <a class="link" href="glib-GVariantType.html#GVariantType" title="GVariantType"><span class="type">GVariantType</span></a>. Depending on the
871 current debugging level, this function may perform a runtime check
872 to ensure that <em class="parameter"><code>string</code></em> is a valid GVariant type string.
875 It is always a programmer error to use this macro with an invalid
876 type string. If in doubt, use <a class="link" href="glib-GVariantType.html#g-variant-type-string-is-valid" title="g_variant_type_string_is_valid ()"><code class="function">g_variant_type_string_is_valid()</code></a> to
877 check if the string is valid.
882 <div class="variablelist"><table border="0">
883 <col align="left" valign="top">
885 <td><p><span class="term"><em class="parameter"><code>type_string</code></em> :</span></p></td>
886 <td>a well-formed <a class="link" href="glib-GVariantType.html#GVariantType" title="GVariantType"><span class="type">GVariantType</span></a> type string</td>
891 <div class="refsect2">
892 <a name="g-variant-type-free"></a><h3>g_variant_type_free ()</h3>
893 <pre class="programlisting"><span class="returnvalue">void</span> g_variant_type_free (<em class="parameter"><code><a class="link" href="glib-GVariantType.html#GVariantType" title="GVariantType"><span class="type">GVariantType</span></a> *type</code></em>);</pre>
895 Frees a <a class="link" href="glib-GVariantType.html#GVariantType" title="GVariantType"><span class="type">GVariantType</span></a> that was allocated with
896 <a class="link" href="glib-GVariantType.html#g-variant-type-copy" title="g_variant_type_copy ()"><code class="function">g_variant_type_copy()</code></a>, <a class="link" href="glib-GVariantType.html#g-variant-type-new" title="g_variant_type_new ()"><code class="function">g_variant_type_new()</code></a> or one of the container
897 type constructor functions.
900 In the case that <em class="parameter"><code>type</code></em> is <a class="link" href="glib-Standard-Macros.html#NULL:CAPS" title="NULL"><code class="literal">NULL</code></a>, this function does nothing.
905 <div class="variablelist"><table border="0">
906 <col align="left" valign="top">
908 <td><p><span class="term"><em class="parameter"><code>type</code></em> :</span></p></td>
909 <td>a <a class="link" href="glib-GVariantType.html#GVariantType" title="GVariantType"><span class="type">GVariantType</span></a>, or <a class="link" href="glib-Standard-Macros.html#NULL:CAPS" title="NULL"><code class="literal">NULL</code></a>
915 <div class="refsect2">
916 <a name="g-variant-type-copy"></a><h3>g_variant_type_copy ()</h3>
917 <pre class="programlisting"><a class="link" href="glib-GVariantType.html#GVariantType" title="GVariantType"><span class="returnvalue">GVariantType</span></a> * g_variant_type_copy (<em class="parameter"><code>const <a class="link" href="glib-GVariantType.html#GVariantType" title="GVariantType"><span class="type">GVariantType</span></a> *type</code></em>);</pre>
919 Makes a copy of a <a class="link" href="glib-GVariantType.html#GVariantType" title="GVariantType"><span class="type">GVariantType</span></a>. It is appropriate to call
920 <a class="link" href="glib-GVariantType.html#g-variant-type-free" title="g_variant_type_free ()"><code class="function">g_variant_type_free()</code></a> on the return value. <em class="parameter"><code>type</code></em> may not be <a class="link" href="glib-Standard-Macros.html#NULL:CAPS" title="NULL"><code class="literal">NULL</code></a>.
922 <div class="variablelist"><table border="0">
923 <col align="left" valign="top">
926 <td><p><span class="term"><em class="parameter"><code>type</code></em> :</span></p></td>
927 <td>a <a class="link" href="glib-GVariantType.html#GVariantType" title="GVariantType"><span class="type">GVariantType</span></a>
931 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
932 <td>a new <a class="link" href="glib-GVariantType.html#GVariantType" title="GVariantType"><span class="type">GVariantType</span></a>
933 Since 2.24. <span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span>
940 <div class="refsect2">
941 <a name="g-variant-type-new"></a><h3>g_variant_type_new ()</h3>
942 <pre class="programlisting"><a class="link" href="glib-GVariantType.html#GVariantType" title="GVariantType"><span class="returnvalue">GVariantType</span></a> * g_variant_type_new (<em class="parameter"><code>const <a class="link" href="glib-Basic-Types.html#gchar" title="gchar"><span class="type">gchar</span></a> *type_string</code></em>);</pre>
944 Creates a new <a class="link" href="glib-GVariantType.html#GVariantType" title="GVariantType"><span class="type">GVariantType</span></a> corresponding to the type string given
945 by <em class="parameter"><code>type_string</code></em>. It is appropriate to call <a class="link" href="glib-GVariantType.html#g-variant-type-free" title="g_variant_type_free ()"><code class="function">g_variant_type_free()</code></a> on
949 It is a programmer error to call this function with an invalid type
950 string. Use <a class="link" href="glib-GVariantType.html#g-variant-type-string-is-valid" title="g_variant_type_string_is_valid ()"><code class="function">g_variant_type_string_is_valid()</code></a> if you are unsure.
952 <div class="variablelist"><table border="0">
953 <col align="left" valign="top">
956 <td><p><span class="term"><em class="parameter"><code>type_string</code></em> :</span></p></td>
957 <td>a valid GVariant type string</td>
960 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
961 <td>a new <a class="link" href="glib-GVariantType.html#GVariantType" title="GVariantType"><span class="type">GVariantType</span></a>. <span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span>
966 <p class="since">Since 2.24</p>
969 <div class="refsect2">
970 <a name="g-variant-type-string-is-valid"></a><h3>g_variant_type_string_is_valid ()</h3>
971 <pre class="programlisting"><a class="link" href="glib-Basic-Types.html#gboolean" title="gboolean"><span class="returnvalue">gboolean</span></a> g_variant_type_string_is_valid (<em class="parameter"><code>const <a class="link" href="glib-Basic-Types.html#gchar" title="gchar"><span class="type">gchar</span></a> *type_string</code></em>);</pre>
973 Checks if <em class="parameter"><code>type_string</code></em> is a valid GVariant type string. This call is
974 equivalent to calling <a class="link" href="glib-GVariantType.html#g-variant-type-string-scan" title="g_variant_type_string_scan ()"><code class="function">g_variant_type_string_scan()</code></a> and confirming
975 that the following character is a nul terminator.
977 <div class="variablelist"><table border="0">
978 <col align="left" valign="top">
981 <td><p><span class="term"><em class="parameter"><code>type_string</code></em> :</span></p></td>
982 <td>a pointer to any string</td>
985 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
987 <a class="link" href="glib-Standard-Macros.html#TRUE:CAPS" title="TRUE"><code class="literal">TRUE</code></a> if <em class="parameter"><code>type_string</code></em> is exactly one valid type string
994 <div class="refsect2">
995 <a name="g-variant-type-string-scan"></a><h3>g_variant_type_string_scan ()</h3>
996 <pre class="programlisting"><a class="link" href="glib-Basic-Types.html#gboolean" title="gboolean"><span class="returnvalue">gboolean</span></a> g_variant_type_string_scan (<em class="parameter"><code>const <a class="link" href="glib-Basic-Types.html#gchar" title="gchar"><span class="type">gchar</span></a> *string</code></em>,
997 <em class="parameter"><code>const <a class="link" href="glib-Basic-Types.html#gchar" title="gchar"><span class="type">gchar</span></a> *limit</code></em>,
998 <em class="parameter"><code>const <a class="link" href="glib-Basic-Types.html#gchar" title="gchar"><span class="type">gchar</span></a> **endptr</code></em>);</pre>
1000 Scan for a single complete and valid GVariant type string in <em class="parameter"><code>string</code></em>.
1001 The memory pointed to by <em class="parameter"><code>limit</code></em> (or bytes beyond it) is never
1005 If a valid type string is found, <em class="parameter"><code>endptr</code></em> is updated to point to the
1006 first character past the end of the string that was found and <a class="link" href="glib-Standard-Macros.html#TRUE:CAPS" title="TRUE"><code class="literal">TRUE</code></a>
1010 If there is no valid type string starting at <em class="parameter"><code>string</code></em>, or if the type
1011 string does not end before <em class="parameter"><code>limit</code></em> then <a class="link" href="glib-Standard-Macros.html#FALSE:CAPS" title="FALSE"><code class="literal">FALSE</code></a> is returned.
1014 For the simple case of checking if a string is a valid type string,
1015 see <a class="link" href="glib-GVariantType.html#g-variant-type-string-is-valid" title="g_variant_type_string_is_valid ()"><code class="function">g_variant_type_string_is_valid()</code></a>.
1017 <div class="variablelist"><table border="0">
1018 <col align="left" valign="top">
1021 <td><p><span class="term"><em class="parameter"><code>string</code></em> :</span></p></td>
1022 <td>a pointer to any string</td>
1025 <td><p><span class="term"><em class="parameter"><code>limit</code></em> :</span></p></td>
1026 <td>the end of <em class="parameter"><code>string</code></em>, or <a class="link" href="glib-Standard-Macros.html#NULL:CAPS" title="NULL"><code class="literal">NULL</code></a>. <span class="annotation">[<acronym title="NULL is ok, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span>
1030 <td><p><span class="term"><em class="parameter"><code>endptr</code></em> :</span></p></td>
1031 <td>location to store the end pointer, or <a class="link" href="glib-Standard-Macros.html#NULL:CAPS" title="NULL"><code class="literal">NULL</code></a>. <span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>][<acronym title="NULL is ok, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span>
1035 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
1037 <a class="link" href="glib-Standard-Macros.html#TRUE:CAPS" title="TRUE"><code class="literal">TRUE</code></a> if a valid type string was found</td>
1041 <p class="since">Since 2.24</p>
1044 <div class="refsect2">
1045 <a name="g-variant-type-get-string-length"></a><h3>g_variant_type_get_string_length ()</h3>
1046 <pre class="programlisting"><a class="link" href="glib-Basic-Types.html#gsize" title="gsize"><span class="returnvalue">gsize</span></a> g_variant_type_get_string_length (<em class="parameter"><code>const <a class="link" href="glib-GVariantType.html#GVariantType" title="GVariantType"><span class="type">GVariantType</span></a> *type</code></em>);</pre>
1048 Returns the length of the type string corresponding to the given
1049 <em class="parameter"><code>type</code></em>. This function must be used to determine the valid extent of
1050 the memory region returned by <a class="link" href="glib-GVariantType.html#g-variant-type-peek-string" title="g_variant_type_peek_string ()"><code class="function">g_variant_type_peek_string()</code></a>.
1052 <div class="variablelist"><table border="0">
1053 <col align="left" valign="top">
1056 <td><p><span class="term"><em class="parameter"><code>type</code></em> :</span></p></td>
1057 <td>a <a class="link" href="glib-GVariantType.html#GVariantType" title="GVariantType"><span class="type">GVariantType</span></a>
1061 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
1062 <td>the length of the corresponding type string
1069 <div class="refsect2">
1070 <a name="g-variant-type-peek-string"></a><h3>g_variant_type_peek_string ()</h3>
1071 <pre class="programlisting">const <a class="link" href="glib-Basic-Types.html#gchar" title="gchar"><span class="returnvalue">gchar</span></a> * g_variant_type_peek_string (<em class="parameter"><code>const <a class="link" href="glib-GVariantType.html#GVariantType" title="GVariantType"><span class="type">GVariantType</span></a> *type</code></em>);</pre>
1073 Returns the type string corresponding to the given <em class="parameter"><code>type</code></em>. The
1074 result is not nul-terminated; in order to determine its length you
1075 must call <a class="link" href="glib-GVariantType.html#g-variant-type-get-string-length" title="g_variant_type_get_string_length ()"><code class="function">g_variant_type_get_string_length()</code></a>.
1078 To get a nul-terminated string, see <a class="link" href="glib-GVariantType.html#g-variant-type-dup-string" title="g_variant_type_dup_string ()"><code class="function">g_variant_type_dup_string()</code></a>.
1080 <div class="variablelist"><table border="0">
1081 <col align="left" valign="top">
1084 <td><p><span class="term"><em class="parameter"><code>type</code></em> :</span></p></td>
1085 <td>a <a class="link" href="glib-GVariantType.html#GVariantType" title="GVariantType"><span class="type">GVariantType</span></a>
1089 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
1090 <td>the corresponding type string (not nul-terminated)
1097 <div class="refsect2">
1098 <a name="g-variant-type-dup-string"></a><h3>g_variant_type_dup_string ()</h3>
1099 <pre class="programlisting"><a class="link" href="glib-Basic-Types.html#gchar" title="gchar"><span class="returnvalue">gchar</span></a> * g_variant_type_dup_string (<em class="parameter"><code>const <a class="link" href="glib-GVariantType.html#GVariantType" title="GVariantType"><span class="type">GVariantType</span></a> *type</code></em>);</pre>
1101 Returns a newly-allocated copy of the type string corresponding to
1102 <em class="parameter"><code>type</code></em>. The returned string is nul-terminated. It is appropriate to
1103 call <a class="link" href="glib-Memory-Allocation.html#g-free" title="g_free ()"><code class="function">g_free()</code></a> on the return value.
1105 <div class="variablelist"><table border="0">
1106 <col align="left" valign="top">
1109 <td><p><span class="term"><em class="parameter"><code>type</code></em> :</span></p></td>
1110 <td>a <a class="link" href="glib-GVariantType.html#GVariantType" title="GVariantType"><span class="type">GVariantType</span></a>
1114 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
1115 <td>the corresponding type string
1116 Since 2.24. <span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span>
1123 <div class="refsect2">
1124 <a name="g-variant-type-is-definite"></a><h3>g_variant_type_is_definite ()</h3>
1125 <pre class="programlisting"><a class="link" href="glib-Basic-Types.html#gboolean" title="gboolean"><span class="returnvalue">gboolean</span></a> g_variant_type_is_definite (<em class="parameter"><code>const <a class="link" href="glib-GVariantType.html#GVariantType" title="GVariantType"><span class="type">GVariantType</span></a> *type</code></em>);</pre>
1127 Determines if the given <em class="parameter"><code>type</code></em> is definite (ie: not indefinite).
1130 A type is definite if its type string does not contain any indefinite
1131 type characters ('*', '?', or 'r').
1134 A <a class="link" href="glib-GVariant.html#GVariant" title="GVariant"><span class="type">GVariant</span></a> instance may not have an indefinite type, so calling
1135 this function on the result of <a class="link" href="glib-GVariant.html#g-variant-get-type" title="g_variant_get_type ()"><code class="function">g_variant_get_type()</code></a> will always
1136 result in <a class="link" href="glib-Standard-Macros.html#TRUE:CAPS" title="TRUE"><code class="literal">TRUE</code></a> being returned. Calling this function on an
1137 indefinite type like <a class="link" href="glib-GVariantType.html#G-VARIANT-TYPE-ARRAY:CAPS" title="G_VARIANT_TYPE_ARRAY"><code class="literal">G_VARIANT_TYPE_ARRAY</code></a>, however, will result in
1138 <a class="link" href="glib-Standard-Macros.html#FALSE:CAPS" title="FALSE"><code class="literal">FALSE</code></a> being returned.
1140 <div class="variablelist"><table border="0">
1141 <col align="left" valign="top">
1144 <td><p><span class="term"><em class="parameter"><code>type</code></em> :</span></p></td>
1145 <td>a <a class="link" href="glib-GVariantType.html#GVariantType" title="GVariantType"><span class="type">GVariantType</span></a>
1149 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
1151 <a class="link" href="glib-Standard-Macros.html#TRUE:CAPS" title="TRUE"><code class="literal">TRUE</code></a> if <em class="parameter"><code>type</code></em> is definite
1158 <div class="refsect2">
1159 <a name="g-variant-type-is-container"></a><h3>g_variant_type_is_container ()</h3>
1160 <pre class="programlisting"><a class="link" href="glib-Basic-Types.html#gboolean" title="gboolean"><span class="returnvalue">gboolean</span></a> g_variant_type_is_container (<em class="parameter"><code>const <a class="link" href="glib-GVariantType.html#GVariantType" title="GVariantType"><span class="type">GVariantType</span></a> *type</code></em>);</pre>
1162 Determines if the given <em class="parameter"><code>type</code></em> is a container type.
1165 Container types are any array, maybe, tuple, or dictionary
1166 entry types plus the variant type.
1169 This function returns <a class="link" href="glib-Standard-Macros.html#TRUE:CAPS" title="TRUE"><code class="literal">TRUE</code></a> for any indefinite type for which every
1170 definite subtype is a container -- <a class="link" href="glib-GVariantType.html#G-VARIANT-TYPE-ARRAY:CAPS" title="G_VARIANT_TYPE_ARRAY"><code class="literal">G_VARIANT_TYPE_ARRAY</code></a>, for
1173 <div class="variablelist"><table border="0">
1174 <col align="left" valign="top">
1177 <td><p><span class="term"><em class="parameter"><code>type</code></em> :</span></p></td>
1178 <td>a <a class="link" href="glib-GVariantType.html#GVariantType" title="GVariantType"><span class="type">GVariantType</span></a>
1182 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
1184 <a class="link" href="glib-Standard-Macros.html#TRUE:CAPS" title="TRUE"><code class="literal">TRUE</code></a> if <em class="parameter"><code>type</code></em> is a container type
1191 <div class="refsect2">
1192 <a name="g-variant-type-is-basic"></a><h3>g_variant_type_is_basic ()</h3>
1193 <pre class="programlisting"><a class="link" href="glib-Basic-Types.html#gboolean" title="gboolean"><span class="returnvalue">gboolean</span></a> g_variant_type_is_basic (<em class="parameter"><code>const <a class="link" href="glib-GVariantType.html#GVariantType" title="GVariantType"><span class="type">GVariantType</span></a> *type</code></em>);</pre>
1195 Determines if the given <em class="parameter"><code>type</code></em> is a basic type.
1198 Basic types are booleans, bytes, integers, doubles, strings, object
1199 paths and signatures.
1202 Only a basic type may be used as the key of a dictionary entry.
1205 This function returns <a class="link" href="glib-Standard-Macros.html#FALSE:CAPS" title="FALSE"><code class="literal">FALSE</code></a> for all indefinite types except
1206 <a class="link" href="glib-GVariantType.html#G-VARIANT-TYPE-BASIC:CAPS" title="G_VARIANT_TYPE_BASIC"><code class="literal">G_VARIANT_TYPE_BASIC</code></a>.
1208 <div class="variablelist"><table border="0">
1209 <col align="left" valign="top">
1212 <td><p><span class="term"><em class="parameter"><code>type</code></em> :</span></p></td>
1213 <td>a <a class="link" href="glib-GVariantType.html#GVariantType" title="GVariantType"><span class="type">GVariantType</span></a>
1217 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
1219 <a class="link" href="glib-Standard-Macros.html#TRUE:CAPS" title="TRUE"><code class="literal">TRUE</code></a> if <em class="parameter"><code>type</code></em> is a basic type
1226 <div class="refsect2">
1227 <a name="g-variant-type-is-maybe"></a><h3>g_variant_type_is_maybe ()</h3>
1228 <pre class="programlisting"><a class="link" href="glib-Basic-Types.html#gboolean" title="gboolean"><span class="returnvalue">gboolean</span></a> g_variant_type_is_maybe (<em class="parameter"><code>const <a class="link" href="glib-GVariantType.html#GVariantType" title="GVariantType"><span class="type">GVariantType</span></a> *type</code></em>);</pre>
1230 Determines if the given <em class="parameter"><code>type</code></em> is a maybe type. This is true if the
1231 type string for <em class="parameter"><code>type</code></em> starts with an 'm'.
1234 This function returns <a class="link" href="glib-Standard-Macros.html#TRUE:CAPS" title="TRUE"><code class="literal">TRUE</code></a> for any indefinite type for which every
1235 definite subtype is a maybe type -- <a class="link" href="glib-GVariantType.html#G-VARIANT-TYPE-MAYBE:CAPS" title="G_VARIANT_TYPE_MAYBE"><code class="literal">G_VARIANT_TYPE_MAYBE</code></a>, for
1238 <div class="variablelist"><table border="0">
1239 <col align="left" valign="top">
1242 <td><p><span class="term"><em class="parameter"><code>type</code></em> :</span></p></td>
1243 <td>a <a class="link" href="glib-GVariantType.html#GVariantType" title="GVariantType"><span class="type">GVariantType</span></a>
1247 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
1249 <a class="link" href="glib-Standard-Macros.html#TRUE:CAPS" title="TRUE"><code class="literal">TRUE</code></a> if <em class="parameter"><code>type</code></em> is a maybe type
1256 <div class="refsect2">
1257 <a name="g-variant-type-is-array"></a><h3>g_variant_type_is_array ()</h3>
1258 <pre class="programlisting"><a class="link" href="glib-Basic-Types.html#gboolean" title="gboolean"><span class="returnvalue">gboolean</span></a> g_variant_type_is_array (<em class="parameter"><code>const <a class="link" href="glib-GVariantType.html#GVariantType" title="GVariantType"><span class="type">GVariantType</span></a> *type</code></em>);</pre>
1260 Determines if the given <em class="parameter"><code>type</code></em> is an array type. This is true if the
1261 type string for <em class="parameter"><code>type</code></em> starts with an 'a'.
1264 This function returns <a class="link" href="glib-Standard-Macros.html#TRUE:CAPS" title="TRUE"><code class="literal">TRUE</code></a> for any indefinite type for which every
1265 definite subtype is an array type -- <a class="link" href="glib-GVariantType.html#G-VARIANT-TYPE-ARRAY:CAPS" title="G_VARIANT_TYPE_ARRAY"><code class="literal">G_VARIANT_TYPE_ARRAY</code></a>, for
1268 <div class="variablelist"><table border="0">
1269 <col align="left" valign="top">
1272 <td><p><span class="term"><em class="parameter"><code>type</code></em> :</span></p></td>
1273 <td>a <a class="link" href="glib-GVariantType.html#GVariantType" title="GVariantType"><span class="type">GVariantType</span></a>
1277 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
1279 <a class="link" href="glib-Standard-Macros.html#TRUE:CAPS" title="TRUE"><code class="literal">TRUE</code></a> if <em class="parameter"><code>type</code></em> is an array type
1286 <div class="refsect2">
1287 <a name="g-variant-type-is-tuple"></a><h3>g_variant_type_is_tuple ()</h3>
1288 <pre class="programlisting"><a class="link" href="glib-Basic-Types.html#gboolean" title="gboolean"><span class="returnvalue">gboolean</span></a> g_variant_type_is_tuple (<em class="parameter"><code>const <a class="link" href="glib-GVariantType.html#GVariantType" title="GVariantType"><span class="type">GVariantType</span></a> *type</code></em>);</pre>
1290 Determines if the given <em class="parameter"><code>type</code></em> is a tuple type. This is true if the
1291 type string for <em class="parameter"><code>type</code></em> starts with a '(' or if <em class="parameter"><code>type</code></em> is
1292 <a class="link" href="glib-GVariantType.html#G-VARIANT-TYPE-TUPLE:CAPS" title="G_VARIANT_TYPE_TUPLE"><code class="literal">G_VARIANT_TYPE_TUPLE</code></a>.
1295 This function returns <a class="link" href="glib-Standard-Macros.html#TRUE:CAPS" title="TRUE"><code class="literal">TRUE</code></a> for any indefinite type for which every
1296 definite subtype is a tuple type -- <a class="link" href="glib-GVariantType.html#G-VARIANT-TYPE-TUPLE:CAPS" title="G_VARIANT_TYPE_TUPLE"><code class="literal">G_VARIANT_TYPE_TUPLE</code></a>, for
1299 <div class="variablelist"><table border="0">
1300 <col align="left" valign="top">
1303 <td><p><span class="term"><em class="parameter"><code>type</code></em> :</span></p></td>
1304 <td>a <a class="link" href="glib-GVariantType.html#GVariantType" title="GVariantType"><span class="type">GVariantType</span></a>
1308 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
1310 <a class="link" href="glib-Standard-Macros.html#TRUE:CAPS" title="TRUE"><code class="literal">TRUE</code></a> if <em class="parameter"><code>type</code></em> is a tuple type
1317 <div class="refsect2">
1318 <a name="g-variant-type-is-dict-entry"></a><h3>g_variant_type_is_dict_entry ()</h3>
1319 <pre class="programlisting"><a class="link" href="glib-Basic-Types.html#gboolean" title="gboolean"><span class="returnvalue">gboolean</span></a> g_variant_type_is_dict_entry (<em class="parameter"><code>const <a class="link" href="glib-GVariantType.html#GVariantType" title="GVariantType"><span class="type">GVariantType</span></a> *type</code></em>);</pre>
1321 Determines if the given <em class="parameter"><code>type</code></em> is a dictionary entry type. This is
1322 true if the type string for <em class="parameter"><code>type</code></em> starts with a '{'.
1325 This function returns <a class="link" href="glib-Standard-Macros.html#TRUE:CAPS" title="TRUE"><code class="literal">TRUE</code></a> for any indefinite type for which every
1326 definite subtype is a dictionary entry type --
1327 <a class="link" href="glib-GVariantType.html#G-VARIANT-TYPE-DICT-ENTRY:CAPS" title="G_VARIANT_TYPE_DICT_ENTRY"><code class="literal">G_VARIANT_TYPE_DICT_ENTRY</code></a>, for example.
1329 <div class="variablelist"><table border="0">
1330 <col align="left" valign="top">
1333 <td><p><span class="term"><em class="parameter"><code>type</code></em> :</span></p></td>
1334 <td>a <a class="link" href="glib-GVariantType.html#GVariantType" title="GVariantType"><span class="type">GVariantType</span></a>
1338 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
1340 <a class="link" href="glib-Standard-Macros.html#TRUE:CAPS" title="TRUE"><code class="literal">TRUE</code></a> if <em class="parameter"><code>type</code></em> is a dictionary entry type
1347 <div class="refsect2">
1348 <a name="g-variant-type-is-variant"></a><h3>g_variant_type_is_variant ()</h3>
1349 <pre class="programlisting"><a class="link" href="glib-Basic-Types.html#gboolean" title="gboolean"><span class="returnvalue">gboolean</span></a> g_variant_type_is_variant (<em class="parameter"><code>const <a class="link" href="glib-GVariantType.html#GVariantType" title="GVariantType"><span class="type">GVariantType</span></a> *type</code></em>);</pre>
1351 Determines if the given <em class="parameter"><code>type</code></em> is the variant type.
1353 <div class="variablelist"><table border="0">
1354 <col align="left" valign="top">
1357 <td><p><span class="term"><em class="parameter"><code>type</code></em> :</span></p></td>
1358 <td>a <a class="link" href="glib-GVariantType.html#GVariantType" title="GVariantType"><span class="type">GVariantType</span></a>
1362 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
1364 <a class="link" href="glib-Standard-Macros.html#TRUE:CAPS" title="TRUE"><code class="literal">TRUE</code></a> if <em class="parameter"><code>type</code></em> is the variant type
1371 <div class="refsect2">
1372 <a name="g-variant-type-hash"></a><h3>g_variant_type_hash ()</h3>
1373 <pre class="programlisting"><a class="link" href="glib-Basic-Types.html#guint" title="guint"><span class="returnvalue">guint</span></a> g_variant_type_hash (<em class="parameter"><code><a class="link" href="glib-Basic-Types.html#gconstpointer" title="gconstpointer"><span class="type">gconstpointer</span></a> type</code></em>);</pre>
1375 Hashes <em class="parameter"><code>type</code></em>.
1378 The argument type of <em class="parameter"><code>type</code></em> is only <a class="link" href="glib-Basic-Types.html#gconstpointer" title="gconstpointer"><span class="type">gconstpointer</span></a> to allow use with
1379 <a class="link" href="glib-Hash-Tables.html#GHashTable" title="GHashTable"><span class="type">GHashTable</span></a> without function pointer casting. A valid
1380 <a class="link" href="glib-GVariantType.html#GVariantType" title="GVariantType"><span class="type">GVariantType</span></a> must be provided.
1382 <div class="variablelist"><table border="0">
1383 <col align="left" valign="top">
1386 <td><p><span class="term"><em class="parameter"><code>type</code></em> :</span></p></td>
1387 <td>a <a class="link" href="glib-GVariantType.html#GVariantType" title="GVariantType"><span class="type">GVariantType</span></a>. <span class="annotation">[<acronym title="Override the parsed C type with given type"><span class="acronym">type</span></acronym> GVariantType]</span>
1391 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
1399 <div class="refsect2">
1400 <a name="g-variant-type-equal"></a><h3>g_variant_type_equal ()</h3>
1401 <pre class="programlisting"><a class="link" href="glib-Basic-Types.html#gboolean" title="gboolean"><span class="returnvalue">gboolean</span></a> g_variant_type_equal (<em class="parameter"><code><a class="link" href="glib-Basic-Types.html#gconstpointer" title="gconstpointer"><span class="type">gconstpointer</span></a> type1</code></em>,
1402 <em class="parameter"><code><a class="link" href="glib-Basic-Types.html#gconstpointer" title="gconstpointer"><span class="type">gconstpointer</span></a> type2</code></em>);</pre>
1404 Compares <em class="parameter"><code>type1</code></em> and <em class="parameter"><code>type2</code></em> for equality.
1407 Only returns <a class="link" href="glib-Standard-Macros.html#TRUE:CAPS" title="TRUE"><code class="literal">TRUE</code></a> if the types are exactly equal. Even if one type
1408 is an indefinite type and the other is a subtype of it, <a class="link" href="glib-Standard-Macros.html#FALSE:CAPS" title="FALSE"><code class="literal">FALSE</code></a> will
1409 be returned if they are not exactly equal. If you want to check for
1410 subtypes, use <a class="link" href="glib-GVariantType.html#g-variant-type-is-subtype-of" title="g_variant_type_is_subtype_of ()"><code class="function">g_variant_type_is_subtype_of()</code></a>.
1413 The argument types of <em class="parameter"><code>type1</code></em> and <em class="parameter"><code>type2</code></em> are only <a class="link" href="glib-Basic-Types.html#gconstpointer" title="gconstpointer"><span class="type">gconstpointer</span></a> to
1414 allow use with <a class="link" href="glib-Hash-Tables.html#GHashTable" title="GHashTable"><span class="type">GHashTable</span></a> without function pointer casting. For
1415 both arguments, a valid <a class="link" href="glib-GVariantType.html#GVariantType" title="GVariantType"><span class="type">GVariantType</span></a> must be provided.
1417 <div class="variablelist"><table border="0">
1418 <col align="left" valign="top">
1421 <td><p><span class="term"><em class="parameter"><code>type1</code></em> :</span></p></td>
1422 <td>a <a class="link" href="glib-GVariantType.html#GVariantType" title="GVariantType"><span class="type">GVariantType</span></a>. <span class="annotation">[<acronym title="Override the parsed C type with given type"><span class="acronym">type</span></acronym> GVariantType]</span>
1426 <td><p><span class="term"><em class="parameter"><code>type2</code></em> :</span></p></td>
1427 <td>a <a class="link" href="glib-GVariantType.html#GVariantType" title="GVariantType"><span class="type">GVariantType</span></a>. <span class="annotation">[<acronym title="Override the parsed C type with given type"><span class="acronym">type</span></acronym> GVariantType]</span>
1431 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
1433 <a class="link" href="glib-Standard-Macros.html#TRUE:CAPS" title="TRUE"><code class="literal">TRUE</code></a> if <em class="parameter"><code>type1</code></em> and <em class="parameter"><code>type2</code></em> are exactly equal
1440 <div class="refsect2">
1441 <a name="g-variant-type-is-subtype-of"></a><h3>g_variant_type_is_subtype_of ()</h3>
1442 <pre class="programlisting"><a class="link" href="glib-Basic-Types.html#gboolean" title="gboolean"><span class="returnvalue">gboolean</span></a> g_variant_type_is_subtype_of (<em class="parameter"><code>const <a class="link" href="glib-GVariantType.html#GVariantType" title="GVariantType"><span class="type">GVariantType</span></a> *type</code></em>,
1443 <em class="parameter"><code>const <a class="link" href="glib-GVariantType.html#GVariantType" title="GVariantType"><span class="type">GVariantType</span></a> *supertype</code></em>);</pre>
1445 Checks if <em class="parameter"><code>type</code></em> is a subtype of <em class="parameter"><code>supertype</code></em>.
1448 This function returns <a class="link" href="glib-Standard-Macros.html#TRUE:CAPS" title="TRUE"><code class="literal">TRUE</code></a> if <em class="parameter"><code>type</code></em> is a subtype of <em class="parameter"><code>supertype</code></em>. All
1449 types are considered to be subtypes of themselves. Aside from that,
1450 only indefinite types can have subtypes.
1452 <div class="variablelist"><table border="0">
1453 <col align="left" valign="top">
1456 <td><p><span class="term"><em class="parameter"><code>type</code></em> :</span></p></td>
1457 <td>a <a class="link" href="glib-GVariantType.html#GVariantType" title="GVariantType"><span class="type">GVariantType</span></a>
1461 <td><p><span class="term"><em class="parameter"><code>supertype</code></em> :</span></p></td>
1462 <td>a <a class="link" href="glib-GVariantType.html#GVariantType" title="GVariantType"><span class="type">GVariantType</span></a>
1466 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
1468 <a class="link" href="glib-Standard-Macros.html#TRUE:CAPS" title="TRUE"><code class="literal">TRUE</code></a> if <em class="parameter"><code>type</code></em> is a subtype of <em class="parameter"><code>supertype</code></em>
1475 <div class="refsect2">
1476 <a name="g-variant-type-new-maybe"></a><h3>g_variant_type_new_maybe ()</h3>
1477 <pre class="programlisting"><a class="link" href="glib-GVariantType.html#GVariantType" title="GVariantType"><span class="returnvalue">GVariantType</span></a> * g_variant_type_new_maybe (<em class="parameter"><code>const <a class="link" href="glib-GVariantType.html#GVariantType" title="GVariantType"><span class="type">GVariantType</span></a> *element</code></em>);</pre>
1479 Constructs the type corresponding to a maybe instance containing
1480 type <em class="parameter"><code>type</code></em> or Nothing.
1483 It is appropriate to call <a class="link" href="glib-GVariantType.html#g-variant-type-free" title="g_variant_type_free ()"><code class="function">g_variant_type_free()</code></a> on the return value.
1485 <div class="variablelist"><table border="0">
1486 <col align="left" valign="top">
1489 <td><p><span class="term"><em class="parameter"><code>element</code></em> :</span></p></td>
1490 <td>a <a class="link" href="glib-GVariantType.html#GVariantType" title="GVariantType"><span class="type">GVariantType</span></a>
1494 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
1495 <td>a new maybe <a class="link" href="glib-GVariantType.html#GVariantType" title="GVariantType"><span class="type">GVariantType</span></a>
1496 Since 2.24. <span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span>
1503 <div class="refsect2">
1504 <a name="g-variant-type-new-array"></a><h3>g_variant_type_new_array ()</h3>
1505 <pre class="programlisting"><a class="link" href="glib-GVariantType.html#GVariantType" title="GVariantType"><span class="returnvalue">GVariantType</span></a> * g_variant_type_new_array (<em class="parameter"><code>const <a class="link" href="glib-GVariantType.html#GVariantType" title="GVariantType"><span class="type">GVariantType</span></a> *element</code></em>);</pre>
1507 Constructs the type corresponding to an array of elements of the
1508 type <em class="parameter"><code>type</code></em>.
1511 It is appropriate to call <a class="link" href="glib-GVariantType.html#g-variant-type-free" title="g_variant_type_free ()"><code class="function">g_variant_type_free()</code></a> on the return value.
1513 <div class="variablelist"><table border="0">
1514 <col align="left" valign="top">
1517 <td><p><span class="term"><em class="parameter"><code>element</code></em> :</span></p></td>
1518 <td>a <a class="link" href="glib-GVariantType.html#GVariantType" title="GVariantType"><span class="type">GVariantType</span></a>
1522 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
1523 <td>a new array <a class="link" href="glib-GVariantType.html#GVariantType" title="GVariantType"><span class="type">GVariantType</span></a>
1524 Since 2.24. <span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span>
1531 <div class="refsect2">
1532 <a name="g-variant-type-new-tuple"></a><h3>g_variant_type_new_tuple ()</h3>
1533 <pre class="programlisting"><a class="link" href="glib-GVariantType.html#GVariantType" title="GVariantType"><span class="returnvalue">GVariantType</span></a> * g_variant_type_new_tuple (<em class="parameter"><code>const <a class="link" href="glib-GVariantType.html#GVariantType" title="GVariantType"><span class="type">GVariantType</span></a> * const *items</code></em>,
1534 <em class="parameter"><code><a class="link" href="glib-Basic-Types.html#gint" title="gint"><span class="type">gint</span></a> length</code></em>);</pre>
1536 Constructs a new tuple type, from <em class="parameter"><code>items</code></em>.
1539 <em class="parameter"><code>length</code></em> is the number of items in <em class="parameter"><code>items</code></em>, or -1 to indicate that
1540 <em class="parameter"><code>items</code></em> is <a class="link" href="glib-Standard-Macros.html#NULL:CAPS" title="NULL"><code class="literal">NULL</code></a>-terminated.
1543 It is appropriate to call <a class="link" href="glib-GVariantType.html#g-variant-type-free" title="g_variant_type_free ()"><code class="function">g_variant_type_free()</code></a> on the return value.
1545 <div class="variablelist"><table border="0">
1546 <col align="left" valign="top">
1549 <td><p><span class="term"><em class="parameter"><code>items</code></em> :</span></p></td>
1550 <td>an array of <a href="glib-GVariantType.html#GVariantType"><span class="type">GVariantTypes</span></a>, one for each item. <span class="annotation">[<acronym title="Parameter points to an array of items."><span class="acronym">array</span></acronym> length=length]</span>
1554 <td><p><span class="term"><em class="parameter"><code>length</code></em> :</span></p></td>
1555 <td>the length of <em class="parameter"><code>items</code></em>, or -1</td>
1558 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
1559 <td>a new tuple <a class="link" href="glib-GVariantType.html#GVariantType" title="GVariantType"><span class="type">GVariantType</span></a>
1560 Since 2.24. <span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span>
1567 <div class="refsect2">
1568 <a name="g-variant-type-new-dict-entry"></a><h3>g_variant_type_new_dict_entry ()</h3>
1569 <pre class="programlisting"><a class="link" href="glib-GVariantType.html#GVariantType" title="GVariantType"><span class="returnvalue">GVariantType</span></a> * g_variant_type_new_dict_entry (<em class="parameter"><code>const <a class="link" href="glib-GVariantType.html#GVariantType" title="GVariantType"><span class="type">GVariantType</span></a> *key</code></em>,
1570 <em class="parameter"><code>const <a class="link" href="glib-GVariantType.html#GVariantType" title="GVariantType"><span class="type">GVariantType</span></a> *value</code></em>);</pre>
1572 Constructs the type corresponding to a dictionary entry with a key
1573 of type <em class="parameter"><code>key</code></em> and a value of type <em class="parameter"><code>value</code></em>.
1576 It is appropriate to call <a class="link" href="glib-GVariantType.html#g-variant-type-free" title="g_variant_type_free ()"><code class="function">g_variant_type_free()</code></a> on the return value.
1578 <div class="variablelist"><table border="0">
1579 <col align="left" valign="top">
1582 <td><p><span class="term"><em class="parameter"><code>key</code></em> :</span></p></td>
1583 <td>a basic <a class="link" href="glib-GVariantType.html#GVariantType" title="GVariantType"><span class="type">GVariantType</span></a>
1587 <td><p><span class="term"><em class="parameter"><code>value</code></em> :</span></p></td>
1588 <td>a <a class="link" href="glib-GVariantType.html#GVariantType" title="GVariantType"><span class="type">GVariantType</span></a>
1592 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
1593 <td>a new dictionary entry <a class="link" href="glib-GVariantType.html#GVariantType" title="GVariantType"><span class="type">GVariantType</span></a>
1594 Since 2.24. <span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span>
1601 <div class="refsect2">
1602 <a name="g-variant-type-element"></a><h3>g_variant_type_element ()</h3>
1603 <pre class="programlisting">const <a class="link" href="glib-GVariantType.html#GVariantType" title="GVariantType"><span class="returnvalue">GVariantType</span></a> * g_variant_type_element (<em class="parameter"><code>const <a class="link" href="glib-GVariantType.html#GVariantType" title="GVariantType"><span class="type">GVariantType</span></a> *type</code></em>);</pre>
1605 Determines the element type of an array or maybe type.
1608 This function may only be used with array or maybe types.
1610 <div class="variablelist"><table border="0">
1611 <col align="left" valign="top">
1614 <td><p><span class="term"><em class="parameter"><code>type</code></em> :</span></p></td>
1615 <td>an array or maybe <a class="link" href="glib-GVariantType.html#GVariantType" title="GVariantType"><span class="type">GVariantType</span></a>
1619 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
1620 <td>the element type of <em class="parameter"><code>type</code></em>
1621 Since 2.24. <span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span>
1628 <div class="refsect2">
1629 <a name="g-variant-type-n-items"></a><h3>g_variant_type_n_items ()</h3>
1630 <pre class="programlisting"><a class="link" href="glib-Basic-Types.html#gsize" title="gsize"><span class="returnvalue">gsize</span></a> g_variant_type_n_items (<em class="parameter"><code>const <a class="link" href="glib-GVariantType.html#GVariantType" title="GVariantType"><span class="type">GVariantType</span></a> *type</code></em>);</pre>
1632 Determines the number of items contained in a tuple or
1633 dictionary entry type.
1636 This function may only be used with tuple or dictionary entry types,
1637 but must not be used with the generic tuple type
1638 <a class="link" href="glib-GVariantType.html#G-VARIANT-TYPE-TUPLE:CAPS" title="G_VARIANT_TYPE_TUPLE"><code class="literal">G_VARIANT_TYPE_TUPLE</code></a>.
1641 In the case of a dictionary entry type, this function will always
1644 <div class="variablelist"><table border="0">
1645 <col align="left" valign="top">
1648 <td><p><span class="term"><em class="parameter"><code>type</code></em> :</span></p></td>
1649 <td>a tuple or dictionary entry <a class="link" href="glib-GVariantType.html#GVariantType" title="GVariantType"><span class="type">GVariantType</span></a>
1653 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
1654 <td>the number of items in <em class="parameter"><code>type</code></em>
1661 <div class="refsect2">
1662 <a name="g-variant-type-first"></a><h3>g_variant_type_first ()</h3>
1663 <pre class="programlisting">const <a class="link" href="glib-GVariantType.html#GVariantType" title="GVariantType"><span class="returnvalue">GVariantType</span></a> * g_variant_type_first (<em class="parameter"><code>const <a class="link" href="glib-GVariantType.html#GVariantType" title="GVariantType"><span class="type">GVariantType</span></a> *type</code></em>);</pre>
1665 Determines the first item type of a tuple or dictionary entry
1669 This function may only be used with tuple or dictionary entry types,
1670 but must not be used with the generic tuple type
1671 <a class="link" href="glib-GVariantType.html#G-VARIANT-TYPE-TUPLE:CAPS" title="G_VARIANT_TYPE_TUPLE"><code class="literal">G_VARIANT_TYPE_TUPLE</code></a>.
1674 In the case of a dictionary entry type, this returns the type of
1678 <a class="link" href="glib-Standard-Macros.html#NULL:CAPS" title="NULL"><code class="literal">NULL</code></a> is returned in case of <em class="parameter"><code>type</code></em> being <a class="link" href="glib-GVariantType.html#G-VARIANT-TYPE-UNIT:CAPS" title="G_VARIANT_TYPE_UNIT"><code class="literal">G_VARIANT_TYPE_UNIT</code></a>.
1681 This call, together with <a class="link" href="glib-GVariantType.html#g-variant-type-next" title="g_variant_type_next ()"><code class="function">g_variant_type_next()</code></a> provides an iterator
1682 interface over tuple and dictionary entry types.
1684 <div class="variablelist"><table border="0">
1685 <col align="left" valign="top">
1688 <td><p><span class="term"><em class="parameter"><code>type</code></em> :</span></p></td>
1689 <td>a tuple or dictionary entry <a class="link" href="glib-GVariantType.html#GVariantType" title="GVariantType"><span class="type">GVariantType</span></a>
1693 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
1694 <td>the first item type of <em class="parameter"><code>type</code></em>, or <a class="link" href="glib-Standard-Macros.html#NULL:CAPS" title="NULL"><code class="literal">NULL</code></a>
1695 Since 2.24. <span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span>
1702 <div class="refsect2">
1703 <a name="g-variant-type-next"></a><h3>g_variant_type_next ()</h3>
1704 <pre class="programlisting">const <a class="link" href="glib-GVariantType.html#GVariantType" title="GVariantType"><span class="returnvalue">GVariantType</span></a> * g_variant_type_next (<em class="parameter"><code>const <a class="link" href="glib-GVariantType.html#GVariantType" title="GVariantType"><span class="type">GVariantType</span></a> *type</code></em>);</pre>
1706 Determines the next item type of a tuple or dictionary entry
1710 <em class="parameter"><code>type</code></em> must be the result of a previous call to
1711 <a class="link" href="glib-GVariantType.html#g-variant-type-first" title="g_variant_type_first ()"><code class="function">g_variant_type_first()</code></a> or <a class="link" href="glib-GVariantType.html#g-variant-type-next" title="g_variant_type_next ()"><code class="function">g_variant_type_next()</code></a>.
1714 If called on the key type of a dictionary entry then this call
1715 returns the value type. If called on the value type of a dictionary
1716 entry then this call returns <a class="link" href="glib-Standard-Macros.html#NULL:CAPS" title="NULL"><code class="literal">NULL</code></a>.
1719 For tuples, <a class="link" href="glib-Standard-Macros.html#NULL:CAPS" title="NULL"><code class="literal">NULL</code></a> is returned when <em class="parameter"><code>type</code></em> is the last item in a tuple.
1721 <div class="variablelist"><table border="0">
1722 <col align="left" valign="top">
1725 <td><p><span class="term"><em class="parameter"><code>type</code></em> :</span></p></td>
1726 <td>a <a class="link" href="glib-GVariantType.html#GVariantType" title="GVariantType"><span class="type">GVariantType</span></a> from a previous call</td>
1729 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
1730 <td>the next <a class="link" href="glib-GVariantType.html#GVariantType" title="GVariantType"><span class="type">GVariantType</span></a> after <em class="parameter"><code>type</code></em>, or <a class="link" href="glib-Standard-Macros.html#NULL:CAPS" title="NULL"><code class="literal">NULL</code></a>
1731 Since 2.24. <span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span>
1738 <div class="refsect2">
1739 <a name="g-variant-type-key"></a><h3>g_variant_type_key ()</h3>
1740 <pre class="programlisting">const <a class="link" href="glib-GVariantType.html#GVariantType" title="GVariantType"><span class="returnvalue">GVariantType</span></a> * g_variant_type_key (<em class="parameter"><code>const <a class="link" href="glib-GVariantType.html#GVariantType" title="GVariantType"><span class="type">GVariantType</span></a> *type</code></em>);</pre>
1742 Determines the key type of a dictionary entry type.
1745 This function may only be used with a dictionary entry type. Other
1746 than the additional restriction, this call is equivalent to
1747 <a class="link" href="glib-GVariantType.html#g-variant-type-first" title="g_variant_type_first ()"><code class="function">g_variant_type_first()</code></a>.
1749 <div class="variablelist"><table border="0">
1750 <col align="left" valign="top">
1753 <td><p><span class="term"><em class="parameter"><code>type</code></em> :</span></p></td>
1754 <td>a dictionary entry <a class="link" href="glib-GVariantType.html#GVariantType" title="GVariantType"><span class="type">GVariantType</span></a>
1758 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
1759 <td>the key type of the dictionary entry
1760 Since 2.24. <span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span>
1767 <div class="refsect2">
1768 <a name="g-variant-type-value"></a><h3>g_variant_type_value ()</h3>
1769 <pre class="programlisting">const <a class="link" href="glib-GVariantType.html#GVariantType" title="GVariantType"><span class="returnvalue">GVariantType</span></a> * g_variant_type_value (<em class="parameter"><code>const <a class="link" href="glib-GVariantType.html#GVariantType" title="GVariantType"><span class="type">GVariantType</span></a> *type</code></em>);</pre>
1771 Determines the value type of a dictionary entry type.
1774 This function may only be used with a dictionary entry type.
1776 <div class="variablelist"><table border="0">
1777 <col align="left" valign="top">
1780 <td><p><span class="term"><em class="parameter"><code>type</code></em> :</span></p></td>
1781 <td>a dictionary entry <a class="link" href="glib-GVariantType.html#GVariantType" title="GVariantType"><span class="type">GVariantType</span></a>
1785 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
1786 <td>the value type of the dictionary entry
1787 Since 2.24. <span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span>
1794 <div class="refsect1">
1795 <a name="glib-GVariantType.see-also"></a><h2>See Also</h2>
1796 <a class="link" href="glib-GVariantType.html#GVariantType" title="GVariantType"><span class="type">GVariantType</span></a>, <a class="link" href="glib-GVariant.html#GVariant" title="GVariant"><span class="type">GVariant</span></a>
1799 <div class="footer">
1801 Generated by GTK-Doc V1.18</div>