Variant Data Types

The Variant classes deal with strongly typed variant data. More...

## Classes

class | Glib::VariantBase
| This is the base class for all Variant types. More...
class | Glib::VariantStringBase
| Base class from which string variant classes derive. More...
class | Glib::VariantContainerBase
| The base class from which multiple-item Variants derive, such as Variants containing tuples or arrays. More...
class | Glib::Variant< T >
| Template class used for the specialization of the Variant<> classes. More...
class | Glib::Variant< VariantBase >
| Specialization of Variant containing a VariantBase. More...
class | Glib::Variant< Glib::ustring >
| Specialization of Variant containing a Glib::ustring, for variants of type string, bytestring, object path, or signature. More...
class | Glib::Variant< std::string >
| Specialization of Variant containing a std::string, for variants of type bytestring, object path, or signature. More...
class | Glib::Variant< std::vector< T > >
| Specialization of Variant containing an array of items. More...
class | Glib::Variant< std::vector< Glib::ustring > >
| Specialization of Variant containing an array of UTF-8 capable strings. More...
class | Glib::Variant< std::vector< std::string > >
| Specialization of Variant containing an array of non-UTF-8 strings (byte string arrays). More...
class | Glib::Variant< std::map< K, V > >
| Specialization of Variant containing a dictionary (a map of (key, value) elements). More...
class | Glib::VariantType
| VariantType - The VariantBase type system. More...
class | Glib::Variant< bool >
| Specialization of Glib::Variant containing a bool type. More...
class | Glib::Variant< unsigned char >
| Specialization of Glib::Variant containing a unsigned char type. More...
class | Glib::Variant< gint16 >
| Specialization of Glib::Variant containing a gint16 type. More...
class | Glib::Variant< guint16 >
| Specialization of Glib::Variant containing a guint16 type. More...
class | Glib::Variant< gint32 >
| Specialization of Glib::Variant containing a gint32 type. More...
class | Glib::Variant< guint32 >
| Specialization of Glib::Variant containing a guint32 type. More...
class | Glib::Variant< gint64 >
| Specialization of Glib::Variant containing a gint64 type. More...
class | Glib::Variant< guint64 >
| Specialization of Glib::Variant containing a guint64 type. More...
class | Glib::Variant< double >
| Specialization of Glib::Variant containing a double type. More...

## Detailed Description

The Variant classes deal with strongly typed variant data.

A Variant stores a value along with information about the type of that value. The range of possible values is determined by the type. The type system used is VariantType.

See the VariantBase class and it's derived types, such as VariantContainerbase, and the Variant<> template type.

Variant instances always have a type and a value (which are given at construction time). The type and value of a Variant can never change other than by the Variant itself being destroyed. A Variant cannot contain a pointer.

Variant is heavily optimised for dealing with data in serialised form. It works particularly well with data located in memory-mapped files. It can perform nearly all deserialisation operations in a small constant time, usually touching only a single memory page. Serialised Variant data can also be sent over the network.

Variant is largely compatible with D-Bus. Almost all types of #GVariant instances can be sent over D-Bus. See VariantType for exceptions.

There is a Python-inspired text language for describing Variant values. Variant includes a printer for this language and a parser with type inferencing..