glibmm: Glib::VariantContainerBase Class Reference
The base class from which multiple-item Variants derive, such as Variants containing tuples or arrays. More...
#include <glibmm/variant.h>

Public Types | |
| typedef GVariant* | CType |
| typedef VariantContainerBase | CppType |
Public Member Functions | |
| VariantContainerBase () | |
| Default constructor. | |
| VariantContainerBase (GVariant* castitem, bool take_a_reference=false) | |
| GVariant constructor. | |
| gsize | get_n_children () const |
| Determines the number of children in a container Variant instance. | |
| void | get_child (VariantBase& child, gsize index=0) const |
| Reads a child item out of this instance. | |
| VariantBase | get_child (gsize index=0) |
| Reads a child item out of a container Variant instance. | |
| bool | get_maybe (VariantBase& maybe) const |
| If this is a maybe-typed instance, extract its value. | |
Static Public Member Functions | |
| static VariantContainerBase | create_tuple (const std::vector< VariantBase >& children) |
| Create a tuple variant from a vector of its variant children. | |
| static VariantContainerBase | create_tuple (const VariantBase& child) |
| Create a tuple variant with a single variant child. | |
| static VariantContainerBase | create_maybe (const VariantType& child_type, const VariantBase& child=VariantBase()) |
Depending on if child is 0, either wraps child inside of a maybe container or creates a Nothing instance for the given type. | |
Detailed Description
The base class from which multiple-item Variants derive, such as Variants containing tuples or arrays.
Member Typedef Documentation
| typedef GVariant* Glib::VariantContainerBase::CType |
Reimplemented in Glib::Variant< VariantBase >.
Constructor & Destructor Documentation
Default constructor.
| Glib::VariantContainerBase::VariantContainerBase | ( | GVariant * | castitem, |
| bool | take_a_reference = false |
||
| ) | [explicit] |
GVariant constructor.
- Parameters:
-
castitem The GVariant to wrap. take_a_reference Whether to take an extra reference of the GVariant or not (not taking one could destroy the GVariant with the wrapper).
Member Function Documentation
| static VariantContainerBase Glib::VariantContainerBase::create_maybe | ( | const VariantType& | child_type, |
| const VariantBase& | child = VariantBase() |
||
| ) | [static] |
Depending on if child is 0, either wraps child inside of a maybe container or creates a Nothing instance for the given type.
At least one of child_type and child must be non-0. If child_type is non-0 then it must be a definite type. If they are both non-0 then child_type must be the type of child.
If child is a floating reference (see g_variant_ref_sink()), the new instance takes ownership of child.
- Parameters:
-
child_type The VariantType of the child, or 0.child The child value, or 0.
- Returns:
- A floating reference to a new Variant maybe instance.
| static VariantContainerBase Glib::VariantContainerBase::create_tuple | ( | const std::vector< VariantBase >& | children | ) | [static] |
Create a tuple variant from a vector of its variant children.
- Parameters:
-
children The vector containing the children of the container.
- Returns:
- The newly created tuple variant (as a VariantContainerBase).
| static VariantContainerBase Glib::VariantContainerBase::create_tuple | ( | const VariantBase& | child | ) | [static] |
Create a tuple variant with a single variant child.
- Parameters:
-
child The child variant.
- Returns:
- The newly created tuple variant (as a VariantContainerBase).
| void Glib::VariantContainerBase::get_child | ( | VariantBase& | child, |
| gsize | index = 0 |
||
| ) | const |
Reads a child item out of this instance.
This method is valid for variants, maybes, arrays, tuples and dictionary entries.
It is an error if index is greater than the number of child items in the container. See get_n_children().
This function is O(1).
- Parameters:
-
index The index of the child to fetch. child A location in which to store the child at the specified index.
- Exceptions:
-
std::out_of_range
| VariantBase Glib::VariantContainerBase::get_child | ( | gsize | index = 0 | ) |
Reads a child item out of a container Variant instance.
This includes variants, maybes, arrays, tuples and dictionary entries. It is an error to call this function on any other type of Variant.
It is an error if index is greater than the number of child items in the container. See g_variant_n_children().
The returned value is never floating. You should free it with g_variant_unref() when you're done with it.
This function is O(1).
- Parameters:
-
index The index of the child to fetch.
- Returns:
- The child at the specified index.
| bool Glib::VariantContainerBase::get_maybe | ( | VariantBase& | maybe | ) | const |
If this is a maybe-typed instance, extract its value.
If the value is Nothing, then this function returns 0.
- Parameters:
-
maybe A place in which to return the value (the value may be 0).
| gsize Glib::VariantContainerBase::get_n_children | ( | ) | const |
Determines the number of children in a container Variant instance.
This includes variants, maybes, arrays, tuples and dictionary entries. It is an error to call this function on any other type of Variant.
For variants, the return value is always 1. For values with maybe types, it is always zero or one. For arrays, it is the length of the array. For tuples it is the number of tuple items (which depends only on the type). For dictionary entries, it is always 2
This function is O(1).
- Returns:
- The number of children in the container.
