Method
GLibVariantBuilderopen
since: 2.24
Declaration [src]
void
g_variant_builder_open (
GVariantBuilder* builder,
const GVariantType* type
)
Description [src]
Opens a subcontainer inside the given builder
. When done adding
items to the subcontainer, g_variant_builder_close()
must be called. type
is the type of the container: so to build a tuple of several values, type
must include the tuple itself.
It is an error to call this function in any way that would cause an inconsistent value to be constructed (ie: adding too many values or a value of an incorrect type).
Example of building a nested variant:
GVariantBuilder builder;
guint32 some_number = get_number ();
g_autoptr (GHashTable) some_dict = get_dict ();
GHashTableIter iter;
const gchar *key;
const GVariant *value;
g_autoptr (GVariant) output = NULL;
g_variant_builder_init (&builder, G_VARIANT_TYPE ("(ua{sv})"));
g_variant_builder_add (&builder, "u", some_number);
g_variant_builder_open (&builder, G_VARIANT_TYPE ("a{sv}"));
g_hash_table_iter_init (&iter, some_dict);
while (g_hash_table_iter_next (&iter, (gpointer *) &key, (gpointer *) &value))
{
g_variant_builder_open (&builder, G_VARIANT_TYPE ("{sv}"));
g_variant_builder_add (&builder, "s", key);
g_variant_builder_add (&builder, "v", value);
g_variant_builder_close (&builder);
}
g_variant_builder_close (&builder);
output = g_variant_builder_end (&builder);
Available since: 2.24
Parameters
type
-
Type:
GVariantType
The
GVariantType
of the container.The data is owned by the caller of the method.