<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <title>glibmm: Variant Data Types</title> <link href="tabs.css" rel="stylesheet" type="text/css"/> <link href="doxygen.css" rel="stylesheet" type="text/css"/> </head> <body> <!-- Generated by Doxygen 1.7.2 --> <div class="navigation" id="top"> <div class="tabs"> <ul class="tablist"> <li><a href="index.html"><span>Main Page</span></a></li> <li><a href="pages.html"><span>Related Pages</span></a></li> <li><a href="modules.html"><span>Modules</span></a></li> <li><a href="namespaces.html"><span>Namespaces</span></a></li> <li><a href="annotated.html"><span>Classes</span></a></li> <li><a href="examples.html"><span>Examples</span></a></li> </ul> </div> </div> <div class="header"> <div class="summary"> <a href="#nested-classes">Classes</a> </div> <div class="headertitle"> <h1>Variant Data Types</h1> </div> </div> <div class="contents"> <p>The <a class="el" href="classGlib_1_1Variant.html" title="Template class used for the specialization of the Variant<> classes.">Variant</a> classes deal with strongly typed variant data. <a href="#_details">More...</a></p> <table class="memberdecls"> <tr><td colspan="2"><h2><a name="nested-classes"></a> Classes</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classGlib_1_1VariantBase.html">Glib::VariantBase</a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">This is the base class for all <a class="el" href="classGlib_1_1Variant.html" title="Template class used for the specialization of the Variant<> classes.">Variant</a> types. <a href="classGlib_1_1VariantBase.html#_details">More...</a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classGlib_1_1VariantStringBase.html">Glib::VariantStringBase</a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Base class from which string variant classes derive. <a href="classGlib_1_1VariantStringBase.html#_details">More...</a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classGlib_1_1VariantContainerBase.html">Glib::VariantContainerBase</a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">The base class from which multiple-item Variants derive, such as Variants containing tuples or arrays. <a href="classGlib_1_1VariantContainerBase.html#_details">More...</a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classGlib_1_1Variant.html">Glib::Variant< T ></a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Template class used for the specialization of the Variant<> classes. <a href="classGlib_1_1Variant.html#_details">More...</a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classGlib_1_1Variant_3_01VariantBase_01_4.html">Glib::Variant< VariantBase ></a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Specialization of <a class="el" href="classGlib_1_1Variant.html" title="Template class used for the specialization of the Variant<> classes.">Variant</a> containing a <a class="el" href="classGlib_1_1VariantBase.html" title="This is the base class for all Variant types.">VariantBase</a>. <a href="classGlib_1_1Variant_3_01VariantBase_01_4.html#_details">More...</a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classGlib_1_1Variant_3_01Glib_1_1ustring_01_4.html">Glib::Variant< Glib::ustring ></a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Specialization of <a class="el" href="classGlib_1_1Variant.html" title="Template class used for the specialization of the Variant<> classes.">Variant</a> containing a <a class="el" href="classGlib_1_1ustring.html" title="Glib::ustring has much the same interface as std::string, but contains Unicode characters encoded as ...">Glib::ustring</a>, for variants of type string, bytestring, object path, or signature. <a href="classGlib_1_1Variant_3_01Glib_1_1ustring_01_4.html#_details">More...</a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classGlib_1_1Variant_3_01std_1_1string_01_4.html">Glib::Variant< std::string ></a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Specialization of <a class="el" href="classGlib_1_1Variant.html" title="Template class used for the specialization of the Variant<> classes.">Variant</a> containing a <a class="elRef" href="http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/a01202.html#ga32db3d9898c44d3b3a578b560f7758cc">std::string</a>, for variants of type bytestring, object path, or signature. <a href="classGlib_1_1Variant_3_01std_1_1string_01_4.html#_details">More...</a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classGlib_1_1Variant_3_01std_1_1vector_3_01T_01_4_01_4.html">Glib::Variant< std::vector< T > ></a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Specialization of <a class="el" href="classGlib_1_1Variant.html" title="Template class used for the specialization of the Variant<> classes.">Variant</a> containing an array of items. <a href="classGlib_1_1Variant_3_01std_1_1vector_3_01T_01_4_01_4.html#_details">More...</a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classGlib_1_1Variant_3_01std_1_1vector_3_01Glib_1_1ustring_01_4_01_4.html">Glib::Variant< std::vector< Glib::ustring > ></a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Specialization of <a class="el" href="classGlib_1_1Variant.html" title="Template class used for the specialization of the Variant<> classes.">Variant</a> containing an array of UTF-8 capable strings. <a href="classGlib_1_1Variant_3_01std_1_1vector_3_01Glib_1_1ustring_01_4_01_4.html#_details">More...</a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classGlib_1_1Variant_3_01std_1_1vector_3_01std_1_1string_01_4_01_4.html">Glib::Variant< std::vector< std::string > ></a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Specialization of <a class="el" href="classGlib_1_1Variant.html" title="Template class used for the specialization of the Variant<> classes.">Variant</a> containing an array of non-UTF-8 strings (byte string arrays). <a href="classGlib_1_1Variant_3_01std_1_1vector_3_01std_1_1string_01_4_01_4.html#_details">More...</a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classGlib_1_1Variant_3_01std_1_1map_3_01K_00_01V_01_4_01_4.html">Glib::Variant< std::map< K, V > ></a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Specialization of <a class="el" href="classGlib_1_1Variant.html" title="Template class used for the specialization of the Variant<> classes.">Variant</a> containing a dictionary (a map of (key, value) elements). <a href="classGlib_1_1Variant_3_01std_1_1map_3_01K_00_01V_01_4_01_4.html#_details">More...</a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classGlib_1_1VariantType.html">Glib::VariantType</a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight"><a class="el" href="classGlib_1_1VariantType.html" title="VariantType - The VariantBase type system.">VariantType</a> - The <a class="el" href="classGlib_1_1VariantBase.html" title="This is the base class for all Variant types.">VariantBase</a> type system. <a href="classGlib_1_1VariantType.html#_details">More...</a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classGlib_1_1Variant_3_01bool_01_4.html">Glib::Variant< bool ></a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Specialization of <a class="el" href="classGlib_1_1Variant.html" title="Template class used for the specialization of the Variant<> classes.">Glib::Variant</a> containing a bool type. <a href="classGlib_1_1Variant_3_01bool_01_4.html#_details">More...</a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classGlib_1_1Variant_3_01unsigned_01char_01_4.html">Glib::Variant< unsigned char ></a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Specialization of <a class="el" href="classGlib_1_1Variant.html" title="Template class used for the specialization of the Variant<> classes.">Glib::Variant</a> containing a unsigned char type. <a href="classGlib_1_1Variant_3_01unsigned_01char_01_4.html#_details">More...</a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classGlib_1_1Variant_3_01gint16_01_4.html">Glib::Variant< gint16 ></a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Specialization of <a class="el" href="classGlib_1_1Variant.html" title="Template class used for the specialization of the Variant<> classes.">Glib::Variant</a> containing a gint16 type. <a href="classGlib_1_1Variant_3_01gint16_01_4.html#_details">More...</a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classGlib_1_1Variant_3_01guint16_01_4.html">Glib::Variant< guint16 ></a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Specialization of <a class="el" href="classGlib_1_1Variant.html" title="Template class used for the specialization of the Variant<> classes.">Glib::Variant</a> containing a guint16 type. <a href="classGlib_1_1Variant_3_01guint16_01_4.html#_details">More...</a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classGlib_1_1Variant_3_01gint32_01_4.html">Glib::Variant< gint32 ></a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Specialization of <a class="el" href="classGlib_1_1Variant.html" title="Template class used for the specialization of the Variant<> classes.">Glib::Variant</a> containing a gint32 type. <a href="classGlib_1_1Variant_3_01gint32_01_4.html#_details">More...</a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classGlib_1_1Variant_3_01guint32_01_4.html">Glib::Variant< guint32 ></a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Specialization of <a class="el" href="classGlib_1_1Variant.html" title="Template class used for the specialization of the Variant<> classes.">Glib::Variant</a> containing a guint32 type. <a href="classGlib_1_1Variant_3_01guint32_01_4.html#_details">More...</a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classGlib_1_1Variant_3_01gint64_01_4.html">Glib::Variant< gint64 ></a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Specialization of <a class="el" href="classGlib_1_1Variant.html" title="Template class used for the specialization of the Variant<> classes.">Glib::Variant</a> containing a gint64 type. <a href="classGlib_1_1Variant_3_01gint64_01_4.html#_details">More...</a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classGlib_1_1Variant_3_01guint64_01_4.html">Glib::Variant< guint64 ></a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Specialization of <a class="el" href="classGlib_1_1Variant.html" title="Template class used for the specialization of the Variant<> classes.">Glib::Variant</a> containing a guint64 type. <a href="classGlib_1_1Variant_3_01guint64_01_4.html#_details">More...</a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classGlib_1_1Variant_3_01double_01_4.html">Glib::Variant< double ></a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Specialization of <a class="el" href="classGlib_1_1Variant.html" title="Template class used for the specialization of the Variant<> classes.">Glib::Variant</a> containing a double type. <a href="classGlib_1_1Variant_3_01double_01_4.html#_details">More...</a><br/></td></tr> </table> <hr/><a name="_details"></a><h2>Detailed Description</h2> <p>The <a class="el" href="classGlib_1_1Variant.html" title="Template class used for the specialization of the Variant<> classes.">Variant</a> classes deal with strongly typed variant data. </p> <p>A <a class="el" href="classGlib_1_1Variant.html" title="Template class used for the specialization of the Variant<> classes.">Variant</a> 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 <a class="el" href="classGlib_1_1VariantType.html" title="VariantType - The VariantBase type system.">VariantType</a>.</p> <p>See the <a class="el" href="classGlib_1_1VariantBase.html" title="This is the base class for all Variant types.">VariantBase</a> class and it's derived types, such as VariantContainerbase, and the Variant<> template type.</p> <p><a class="el" href="classGlib_1_1Variant.html" title="Template class used for the specialization of the Variant<> classes.">Variant</a> instances always have a type and a value (which are given at construction time). The type and value of a <a class="el" href="classGlib_1_1Variant.html" title="Template class used for the specialization of the Variant<> classes.">Variant</a> can never change other than by the <a class="el" href="classGlib_1_1Variant.html" title="Template class used for the specialization of the Variant<> classes.">Variant</a> itself being destroyed. A <a class="el" href="classGlib_1_1Variant.html" title="Template class used for the specialization of the Variant<> classes.">Variant</a> cannot contain a pointer.</p> <p><a class="el" href="classGlib_1_1Variant.html" title="Template class used for the specialization of the Variant<> classes.">Variant</a> 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 <a class="el" href="classGlib_1_1Variant.html" title="Template class used for the specialization of the Variant<> classes.">Variant</a> data can also be sent over the network.</p> <p><a class="el" href="classGlib_1_1Variant.html" title="Template class used for the specialization of the Variant<> classes.">Variant</a> is largely compatible with D-Bus. Almost all types of GVariant instances can be sent over D-Bus. See <a class="el" href="classGlib_1_1VariantType.html" title="VariantType - The VariantBase type system.">VariantType</a> for exceptions.</p> <p>There is a Python-inspired text language for describing <a class="el" href="classGlib_1_1Variant.html" title="Template class used for the specialization of the Variant<> classes.">Variant</a> values. <a class="el" href="classGlib_1_1Variant.html" title="Template class used for the specialization of the Variant<> classes.">Variant</a> includes a printer for this language and a parser with type inferencing.. </p> </div> <hr class="footer"/><address class="footer"><small>Generated on Tue Apr 5 2011 16:07:12 for glibmm by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.2 </small></address> </body> </html>