Public Types | Public Member Functions | Static Public Member Functions

Glib::VariantContainerBase Class Reference
[Variant Data Types]

The base class from which variant containers derive. More...

#include <glibmm/variant.h>

Inheritance diagram for Glib::VariantContainerBase:
Inheritance graph
[legend]

List of all members.

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 (Glib::VariantBase& child, gsize index=0) const
 Reads a child item out of this instance.
bool get_maybe (Glib::VariantBase& maybe) const
 If this is a maybe-typed instance, extract its value.

Static Public Member Functions

static void create (VariantContainerBase& output, const Glib::VariantType& container_type, const std::vector< VariantBase >& children)
 Create a container variant from a vector of its variant children.

Detailed Description

The base class from which variant containers derive.

Since glibmm 2.28:

Member Typedef Documentation

Reimplemented in Glib::Variant< VariantBase >.


Constructor & Destructor Documentation

Glib::VariantContainerBase::VariantContainerBase (  ) [inline]

Default constructor.

Glib::VariantContainerBase::VariantContainerBase ( GVariant *  castitem,
bool  take_a_reference = false 
) [inline, explicit]

GVariant constructor.

Parameters:
castitemThe GVariant to wrap.
take_a_referenceWhether to take an extra reference of the GVariant or not (not taking one could destroy the GVariant with the wrapper).

Member Function Documentation

static void Glib::VariantContainerBase::create ( VariantContainerBase output,
const Glib::VariantType container_type,
const std::vector< VariantBase >&  children 
) [static]

Create a container variant from a vector of its variant children.

Since the children are variant and can be of any variant type, it is possible to create a variant tuple with this method.

Parameters:
outputA location in which to store the newly created variant.
container_typeThe container type to be created.
childrenThe vector containing the children of the container.
void Glib::VariantContainerBase::get ( Glib::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:
indexThe index of the child to fetch.
childA location in which to store the child at the specified index.
Exceptions:
std::out_of_range
Since glibmm 2.28:
bool Glib::VariantContainerBase::get_maybe ( Glib::VariantBase maybe ) const

If this is a maybe-typed instance, extract its value.

If the value is Nothing, then this function returns 0.

Parameters:
maybeA place in which to return the value (the value may be 0).
Since glibmm 2.28:
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).

Since glibmm 2.24:
Returns:
The number of children in the container.