glibmm: 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< Variant< T > >
Specialization of Variant containing a Variant<T>. More...

class Glib::Variant< Glib::ustring >
Specialization of Variant containing a Glib::ustring , for variants of type string, object path, or signature. More...

class Glib::Variant< std::string >
Specialization of Variant containing a std::string , for variants of type bytestring, string, 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 its 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 Variant 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.