Allocates and initialises a new #GVariantDict.
You should call g_variant_dict_unref() on the return value when it is no longer needed. The memory will not be automatically freed by any other call.
In some cases it may be easier to place a #GVariantDict directly on the stack of the calling function and initialise it with g_variant_dict_init(). This is particularly useful when you are using #GVariantDict to construct a #GVariant.
Releases all memory associated with a #GVariantDict without freeing the #GVariantDict structure itself.
It typically only makes sense to do this on a stack-allocated #GVariantDict if you want to abort building the value part-way through. This function need not be called if you call g_variant_dict_end() and it also doesn't need to be called on dicts allocated with g_variant_dict_new (see g_variant_dict_unref() for that).
It is valid to call this function on either an initialised #GVariantDict or one that was previously cleared by an earlier call to g_variant_dict_clear() but it is not valid to call this function on uninitialised memory.
Checks if key
exists in dict
.
the key to look up in the dictionary
Returns the current value of dict
as a #GVariant of type
%G_VARIANT_TYPE_VARDICT, clearing it in the process.
It is not permissible to use dict
in any way after this call except
for reference counting operations (in the case of a heap-allocated
#GVariantDict) or by reinitialising it with g_variant_dict_init() (in
the case of stack-allocated).
Looks up a value in a #GVariantDict.
If key
is not found in dictionary,
%NULL is returned.
The expected_type
string specifies what type of value is expected.
If the value associated with key
has a different type then %NULL is
returned.
If the key is found and the value has the correct type, it is
returned. If expected_type
was specified then any non-%NULL return
value will have this type.
the key to look up in the dictionary
a #GVariantType, or %NULL
Increases the reference count on dict
.
Don't call this on stack-allocated #GVariantDict instances or bad things will happen.
Removes a key and its associated value from a #GVariantDict.
the key to remove
Decreases the reference count on dict
.
In the event that there are no more references, releases all memory associated with the #GVariantDict.
Don't call this on stack-allocated #GVariantDict instances or bad things will happen.
Allocates and initialises a new #GVariantDict.
You should call g_variant_dict_unref() on the return value when it is no longer needed. The memory will not be automatically freed by any other call.
In some cases it may be easier to place a #GVariantDict directly on the stack of the calling function and initialise it with g_variant_dict_init(). This is particularly useful when you are using #GVariantDict to construct a #GVariant.
#GVariantDict is a mutable interface to #GVariant dictionaries.
It can be used for doing a sequence of dictionary lookups in an efficient way on an existing #GVariant dictionary or it can be used to construct new dictionaries with a hashtable-like interface. It can also be used for taking existing dictionaries and modifying them in order to create new ones.
#GVariantDict can only be used with %G_VARIANT_TYPE_VARDICT dictionaries.
It is possible to use #GVariantDict allocated on the stack or on the heap. When using a stack-allocated #GVariantDict, you begin with a call to g_variant_dict_init() and free the resources with a call to g_variant_dict_clear().
Heap-allocated #GVariantDict follows normal refcounting rules: you allocate it with g_variant_dict_new() and use g_variant_dict_ref() and g_variant_dict_unref().
g_variant_dict_end() is used to convert the #GVariantDict back into a dictionary-type #GVariant. When used with stack-allocated instances, this also implicitly frees all associated memory, but for heap-allocated instances, you must still call g_variant_dict_unref() afterwards.
You will typically want to use a heap-allocated #GVariantDict when you expose it as part of an API. For most other uses, the stack-allocated form will be more convenient.
Consider the following two examples that do the same thing in each style: take an existing dictionary and look up the "count" uint32 key, adding 1 to it if it is found, or returning an error if the key is not found. Each returns the new dictionary as a floating #GVariant.
Using a stack-allocated GVariantDict
Using heap-allocated GVariantDict