Glib::Variant< Variant< T > > Class Template Reference
Variant Data Types

Specialization of Variant containing a Variant<T>. More...

`#include <glibmm/variant.h>`

Inheritance diagram for Glib::Variant< Variant< T > >:
[legend]

## Public Types

using | CType = GVariant*
using | CppType = Variant< T >
using | CppContainerType = Variant< CppType >
Public Types inherited from Glib::VariantContainerBase
using | CType = GVariant*
using | CppType = VariantContainerBase
Public Types inherited from Glib::VariantBase
using | BoolExpr = const void*
| This typedef is just to make it more obvious that our operator const void* should be used like operator bool(). More...

## Public Member Functions

| Variant ()
| Default constructor. More...
| Variant (GVariant* castitem, bool take_a_reference=false)
| GVariant constructor. More...
Variant< T > | get () const
| Gets the contents of the Variant. More...
Public Member Functions inherited from Glib::VariantContainerBase
| VariantContainerBase ()
| Default constructor. More...
| VariantContainerBase (GVariant* castitem, bool take_a_reference=false)
| GVariant constructor. More...
gsize | get_n_children () const
| Determines the number of children in a container Variant instance. More...
void | get_child (VariantBase& child, gsize index=0) const
| Reads a child item out of this instance. More...
VariantBase | get_child (gsize index=0)
| Reads a child item out of a container Variant instance. More...
bool | get_maybe (VariantBase& maybe) const
| If this is a maybe-typed instance, try to extract its value. More...
Public Member Functions inherited from Glib::VariantBase
| VariantBase ()
| Constructs an invalid object. More...
| VariantBase (GVariant* castitem, bool make_a_copy=false)
| VariantBase (const VariantBase& src)
VariantBase& | operator= (const VariantBase& src)
| VariantBase (VariantBase&& other) noexcept
VariantBase& | operator= (VariantBase&& other) noexcept
| ~VariantBase () noexcept
void | swap (VariantBase& other) noexcept
GVariant* | gobj ()
const GVariant* | gobj () const
GVariant* | gobj_copy () const
| Provides access to the underlying C instance. The caller is responsible for freeing it. Use when directly setting fields in structs. More...
| operator BoolExpr () const
| Test whether the Variant has an underlying instance. More...
| operator bool () const
| Test whether the Variant has an underlying instance. More...
void | init (const GVariant* cobject, bool take_a_reference=false)
| Replace the underlying GVariant. More...
VariantType | get_type () const
| Determines the type of value. More...
std::string | get_type_string () const
| Returns the type string of value. More...
bool | is_floating () const
| Checks whether value has a floating reference count. More...
bool | is_of_type (const VariantType& type) const
| Checks if a value has a type matching the provided type. More...
bool | is_container () const
| Checks if value is a container. More...
GVariantClass | classify () const
| Classifies value according to its top-level type. More...
gsize | get_size () const
| Determines the number of bytes that would be required to store value with g_variant_store(). More...
gconstpointer | get_data ()
| Returns a pointer to the serialised form of a Variant instance. More...
gconstpointer | get_data () const
| Returns a pointer to the serialised form of a Variant instance. More...
Glib::RefPtr< const Glib::Bytes > | get_data_as_bytes () const
| Returns a pointer to the serialised form of a Variant instance. More...
void | store (gpointer data) const
| Stores the serialised form of value at data. More...
Glib::ustring | print (bool type_annotate=false) const
| Pretty-prints value in the format understood by g_variant_parse(). More...
guint | hash () const
| Generates a hash value for a Variant instance. More...
bool | equal (const VariantBase& other) const
| Checks if *this and other have the same type and value. More...
void | get_normal_form (VariantBase& result) const
| Gets a VariantBase instance that has the same value as this variant and is trusted to be in normal form. More...
bool | is_normal_form () const
| Checks if value is in normal form. More...
void | byteswap (VariantBase& result) const
| Performs a byteswapping operation on the contents of this variant. More...
bool | check_format_string (const std::string& format_string, bool copy_only=false) const
| Checks if calling g_variant_get() with format_string on value would be valid from a type-compatibility standpoint. More...
template<>
VariantContainerBase | cast_dynamic (const VariantBase& v)

## Static Public Member Functions

static const VariantType& | variant_type ()
| Gets the VariantType. More...
static Variant< Variant< T > > | create (const Variant< T >& data)
| Creates a new Variant< Variant<T> >. More...
Static Public Member Functions inherited from Glib::VariantContainerBase
static VariantContainerBase | create_tuple (const std::vector< VariantBase >& children)
| Create a tuple variant from a vector of its variant children. More...
static VariantContainerBase | create_tuple (const VariantBase& child)
| Create a tuple variant with a single variant child. More...
static VariantContainerBase | create_maybe (const VariantType& child_type, const VariantBase& child=VariantBase())
| Depending on if child is `nullptr`, either wraps child inside of a maybe container or creates a Nothing instance for the given type. More...
Static Public Member Functions inherited from Glib::VariantBase
template<class V_CastTo >
static V_CastTo | cast_dynamic (const VariantBase& v)
| Cast to a specific variant type. More...

## Additional Inherited Members

Protected Attributes inherited from Glib::VariantBase
GVariant* | gobject_
Related Functions inherited from Glib::VariantBase
void | swap (VariantBase& lhs, VariantBase& rhs) noexcept
Glib::VariantBase | wrap (GVariant* object, bool take_copy=false)
| A Glib::wrap() method for this object. More...

## Detailed Description

### template<class T>
class Glib::Variant< Variant< T > >

Specialization of Variant containing a Variant<T>.

Perhaps the main use of this is as a maybe-typed (i.e. nullable) Variant, as it inherits the methods create_maybe() and get_maybe() from VariantContainerBase, plus get_n_children() to allow checking whether there is a contained value, i.e. the inner Variant is not `nothing`.

Since glibmm 2.36:

## Member Typedef Documentation

template <class T >

using Glib::Variant< Variant< T > >::CppContainerType = Variant<CppType>

template <class T >

using Glib::Variant< Variant< T > >::CppType = Variant<T>

template <class T >

using Glib::Variant< Variant< T > >::CType = GVariant*

## Constructor & Destructor Documentation

template <class T >

Glib::Variant< Variant< T > >::Variant | ( |  | ) |

Default constructor.

template <class T >

Glib::Variant< Variant< T > >::Variant | ( | GVariant< Variant< T > >* | 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).

Since glibmm 2.36:

## Member Function Documentation

template <class T >

Variant< Variant< T > > Glib::Variant< Variant< T > >::create | ( | const Variant< T >& | data | ) |

static

Creates a new Variant< Variant<T> >.

Parameters

  data | The value of the new Variant.

Returns
  The new Variant.

Since glibmm 2.36:

template <class T >

Variant< T > Glib::Variant< Variant< T > >::get | ( |  | ) | const

Gets the contents of the Variant.

Returns
  The contents of the Variant.

Since glibmm 2.36:

template <class T >

const VariantType& Glib::Variant< Variant< T > >::variant_type | ( |  | ) |

static

Gets the VariantType.

Returns
  The VariantType.

Since glibmm 2.36: