| Current File : //usr/share/doc/dbus/api/group__DBusSignature.html |
<!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"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<title>D-Bus: Type signature parsing</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">D-Bus
 <span id="projectnumber">1.8.20</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- Generated by Doxygen 1.7.6.1 -->
<div id="navrow1" 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="annotated.html"><span>Data Structures</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
</div>
<div class="header">
<div class="summary">
<a href="#nested-classes">Data Structures</a> |
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">Type signature parsing</div> </div>
<div class="ingroups"><a class="el" href="group__DBus.html">D-Bus low-level public API</a></div></div><!--header-->
<div class="contents">
<p>Parsing D-Bus type signatures.
<a href="#details">More...</a></p>
<table class="memberdecls">
<tr><td colspan="2"><h2><a name="nested-classes"></a>
Data Structures</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structDBusSignatureIter.html">DBusSignatureIter</a></td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight"><a class="el" href="structDBusSignatureIter.html" title="DBusSignatureIter struct; contains no public fields.">DBusSignatureIter</a> struct; contains no public fields. <a href="structDBusSignatureIter.html#details">More...</a><br/></td></tr>
<tr><td colspan="2"><h2><a name="func-members"></a>
Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusSignature.html#gaba53b1756fe7f665d0657cc50253e3c8">dbus_signature_iter_init</a> (<a class="el" href="structDBusSignatureIter.html">DBusSignatureIter</a> *iter, const char *signature)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Initializes a <a class="el" href="structDBusSignatureIter.html" title="DBusSignatureIter struct; contains no public fields.">DBusSignatureIter</a> for reading a type signature. <a href="#gaba53b1756fe7f665d0657cc50253e3c8"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusSignature.html#gac4761ce10d60d7581cfe98beb6a9c57c">dbus_signature_iter_get_current_type</a> (const <a class="el" href="structDBusSignatureIter.html">DBusSignatureIter</a> *iter)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the current type pointed to by the iterator. <a href="#gac4761ce10d60d7581cfe98beb6a9c57c"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">char * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusSignature.html#ga898bbc14392cbedc087ce0be68d35c98">dbus_signature_iter_get_signature</a> (const <a class="el" href="structDBusSignatureIter.html">DBusSignatureIter</a> *iter)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the signature of the single complete type starting at the given iterator. <a href="#ga898bbc14392cbedc087ce0be68d35c98"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusSignature.html#gaebb26dbc79dae5e11629f38b2c8277fd">dbus_signature_iter_get_element_type</a> (const <a class="el" href="structDBusSignatureIter.html">DBusSignatureIter</a> *iter)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Convenience function for returning the element type of an array; This function allows you to avoid initializing a sub-iterator and getting its current type. <a href="#gaebb26dbc79dae5e11629f38b2c8277fd"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__DBusTypes.html#ga39c9cb0f3a2a8ad6f55cc4855d035349">dbus_bool_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusSignature.html#ga90e48ef4b86180ba033727107b03bd29">dbus_signature_iter_next</a> (<a class="el" href="structDBusSignatureIter.html">DBusSignatureIter</a> *iter)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Skip to the next value on this "level". <a href="#ga90e48ef4b86180ba033727107b03bd29"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusSignature.html#ga0bd324faaf2dad5d075de3ff6c9b6796">dbus_signature_iter_recurse</a> (const <a class="el" href="structDBusSignatureIter.html">DBusSignatureIter</a> *iter, <a class="el" href="structDBusSignatureIter.html">DBusSignatureIter</a> *subiter)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Initialize a new iterator pointing to the first type in the current container. <a href="#ga0bd324faaf2dad5d075de3ff6c9b6796"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__DBusTypes.html#ga39c9cb0f3a2a8ad6f55cc4855d035349">dbus_bool_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusSignature.html#ga0f4b81be4f6193c7d8da0ee214772e02">dbus_signature_validate</a> (const char *signature, <a class="el" href="structDBusError.html">DBusError</a> *error)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Check a type signature for validity. <a href="#ga0f4b81be4f6193c7d8da0ee214772e02"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__DBusTypes.html#ga39c9cb0f3a2a8ad6f55cc4855d035349">dbus_bool_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusSignature.html#gac375412dd15a7412967a927d17b6f3d8">dbus_signature_validate_single</a> (const char *signature, <a class="el" href="structDBusError.html">DBusError</a> *error)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Check that a type signature is both valid and contains exactly one complete type. <a href="#gac375412dd15a7412967a927d17b6f3d8"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__DBusTypes.html#ga39c9cb0f3a2a8ad6f55cc4855d035349">dbus_bool_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusSignature.html#gaa0c4c8aa34fa266daa55bd37bdad39b8">dbus_type_is_container</a> (int typecode)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">A "container type" can contain basic types, or nested container types. <a href="#gaa0c4c8aa34fa266daa55bd37bdad39b8"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__DBusTypes.html#ga39c9cb0f3a2a8ad6f55cc4855d035349">dbus_bool_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusSignature.html#ga2d8afef7d754cf15d6b9733f00654c0e">dbus_type_is_basic</a> (int typecode)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">A "basic type" is a somewhat arbitrary concept, but the intent is to include those types that are fully-specified by a single typecode, with no additional type information or nested values. <a href="#ga2d8afef7d754cf15d6b9733f00654c0e"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__DBusTypes.html#ga39c9cb0f3a2a8ad6f55cc4855d035349">dbus_bool_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusSignature.html#ga2f89962cbd33e4ad843824157bae2093">dbus_type_is_fixed</a> (int typecode)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Tells you whether values of this type can change length if you set them to some other value. <a href="#ga2f89962cbd33e4ad843824157bae2093"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__DBusTypes.html#ga39c9cb0f3a2a8ad6f55cc4855d035349">dbus_bool_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusSignature.html#ga7093ae3b35eb073dab939dae69b8c689">dbus_type_is_valid</a> (int typecode)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Return <a class="el" href="group__DBusMacros.html#gaa8cecfc5c5c054d2875c03e77b7be15d" title="Expands to "1".">TRUE</a> if the argument is a valid typecode. <a href="#ga7093ae3b35eb073dab939dae69b8c689"></a><br/></td></tr>
</table>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
<p>Parsing D-Bus type signatures. </p>
<hr/><h2>Function Documentation</h2>
<a class="anchor" id="gac4761ce10d60d7581cfe98beb6a9c57c"></a><!-- doxytag: member="dbus-signature.c::dbus_signature_iter_get_current_type" ref="gac4761ce10d60d7581cfe98beb6a9c57c" args="(const DBusSignatureIter *iter)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">DBUS_EXPORT int <a class="el" href="group__DBusSignature.html#gac4761ce10d60d7581cfe98beb6a9c57c">dbus_signature_iter_get_current_type</a> </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="structDBusSignatureIter.html">DBusSignatureIter</a> * </td>
<td class="paramname"><em>iter</em></td><td>)</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Returns the current type pointed to by the iterator. </p>
<p>If the iterator is pointing at a type code such as 's', then it will be returned directly.</p>
<p>However, when the parser encounters a container type start character such as '(' for a structure, the corresponding type for the container will be returned, e.g. DBUS_TYPE_STRUCT, not '('. In this case, you should initialize a sub-iterator with <a class="el" href="group__DBusSignature.html#ga0bd324faaf2dad5d075de3ff6c9b6796" title="Initialize a new iterator pointing to the first type in the current container.">dbus_signature_iter_recurse()</a> to parse the container type.</p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">iter</td><td>pointer to an iterator </td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>current type (e.g. <a class="el" href="group__DBusProtocol.html#ga7eb77066dadf5415896b44c56d93acce" title="Type code marking a UTF-8 encoded, nul-terminated Unicode string.">DBUS_TYPE_STRING</a>, <a class="el" href="group__DBusProtocol.html#ga8912f600f81a773066ca03d9163613a9" title="Type code marking a D-Bus array type.">DBUS_TYPE_ARRAY</a>) </dd></dl>
<p>Definition at line <a class="el" href="dbus-signature_8c_source.html#l00092">92</a> of file <a class="el" href="dbus-signature_8c_source.html">dbus-signature.c</a>.</p>
<p>References <a class="el" href="dbus-marshal-basic_8c_source.html#l01431">_dbus_first_type_in_signature_c_str()</a>, and <a class="el" href="dbus-signature_8c_source.html#l00037">DBusSignatureRealIter::pos</a>.</p>
<p>Referenced by <a class="el" href="dbus-signature_8c_source.html#l00146">dbus_signature_iter_get_element_type()</a>, <a class="el" href="dbus-signature_8c_source.html#l00207">dbus_signature_iter_recurse()</a>, and <a class="el" href="dbus-signature_8c_source.html#l00264">dbus_signature_validate_single()</a>.</p>
</div>
</div>
<a class="anchor" id="gaebb26dbc79dae5e11629f38b2c8277fd"></a><!-- doxytag: member="dbus-signature.c::dbus_signature_iter_get_element_type" ref="gaebb26dbc79dae5e11629f38b2c8277fd" args="(const DBusSignatureIter *iter)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">DBUS_EXPORT int <a class="el" href="group__DBusSignature.html#gaebb26dbc79dae5e11629f38b2c8277fd">dbus_signature_iter_get_element_type</a> </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="structDBusSignatureIter.html">DBusSignatureIter</a> * </td>
<td class="paramname"><em>iter</em></td><td>)</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Convenience function for returning the element type of an array; This function allows you to avoid initializing a sub-iterator and getting its current type. </p>
<p>Undefined behavior results if you invoke this function when the current type of the iterator is not <a class="el" href="group__DBusProtocol.html#ga8912f600f81a773066ca03d9163613a9" title="Type code marking a D-Bus array type.">DBUS_TYPE_ARRAY</a>.</p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">iter</td><td>pointer to an iterator </td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>current array element type </dd></dl>
<p>Definition at line <a class="el" href="dbus-signature_8c_source.html#l00146">146</a> of file <a class="el" href="dbus-signature_8c_source.html">dbus-signature.c</a>.</p>
<p>References <a class="el" href="dbus-marshal-basic_8c_source.html#l01431">_dbus_first_type_in_signature_c_str()</a>, <a class="el" href="dbus-signature_8c_source.html#l00092">dbus_signature_iter_get_current_type()</a>, <a class="el" href="dbus-protocol_8h_source.html#l00120">DBUS_TYPE_ARRAY</a>, <a class="el" href="dbus-protocol_8h_source.html#l00060">DBUS_TYPE_INVALID</a>, and <a class="el" href="dbus-signature_8c_source.html#l00037">DBusSignatureRealIter::pos</a>.</p>
</div>
</div>
<a class="anchor" id="ga898bbc14392cbedc087ce0be68d35c98"></a><!-- doxytag: member="dbus-signature.c::dbus_signature_iter_get_signature" ref="ga898bbc14392cbedc087ce0be68d35c98" args="(const DBusSignatureIter *iter)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">DBUS_EXPORT char * <a class="el" href="group__DBusSignature.html#ga898bbc14392cbedc087ce0be68d35c98">dbus_signature_iter_get_signature</a> </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="structDBusSignatureIter.html">DBusSignatureIter</a> * </td>
<td class="paramname"><em>iter</em></td><td>)</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Returns the signature of the single complete type starting at the given iterator. </p>
<p>For example, if the iterator is pointing at the start of "(ii)ii" (which is "a struct of two ints, followed by an int, followed by an
int"), then "(ii)" would be returned. If the iterator is pointing at one of the "i" then just that "i" would be returned.</p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">iter</td><td>pointer to an iterator </td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>current signature; or <a class="el" href="group__DBusMacros.html#ga070d2ce7b6bb7e5c05602aa8c308d0c4" title="A null pointer, defined appropriately for C or C++.">NULL</a> if no memory. Should be freed with <a class="el" href="group__DBusMemory.html#ga34e666b19b015035a9a31e53da84b39a" title="Frees a block of memory previously allocated by dbus_malloc() or dbus_malloc0().">dbus_free()</a> </dd></dl>
<p>Definition at line <a class="el" href="dbus-signature_8c_source.html#l00112">112</a> of file <a class="el" href="dbus-signature_8c_source.html">dbus-signature.c</a>.</p>
<p>References <a class="el" href="dbus-string_8c_source.html#l01119">_dbus_string_append_len()</a>, <a class="el" href="dbus-string_8c_source.html#l00242">_dbus_string_free()</a>, <a class="el" href="dbus-string_8c_source.html#l00175">_dbus_string_init()</a>, <a class="el" href="dbus-string_8c_source.html#l00624">_dbus_string_steal_data()</a>, <a class="el" href="dbus-marshal-recursive_8c_source.html#l00341">_dbus_type_signature_next()</a>, <a class="el" href="group__DBusMacros.html#ga070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</a>, and <a class="el" href="dbus-signature_8c_source.html#l00037">DBusSignatureRealIter::pos</a>.</p>
</div>
</div>
<a class="anchor" id="gaba53b1756fe7f665d0657cc50253e3c8"></a><!-- doxytag: member="dbus-signature.c::dbus_signature_iter_init" ref="gaba53b1756fe7f665d0657cc50253e3c8" args="(DBusSignatureIter *iter, const char *signature)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">DBUS_EXPORT void <a class="el" href="group__DBusSignature.html#gaba53b1756fe7f665d0657cc50253e3c8">dbus_signature_iter_init</a> </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structDBusSignatureIter.html">DBusSignatureIter</a> * </td>
<td class="paramname"><em>iter</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char * </td>
<td class="paramname"><em>signature</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Initializes a <a class="el" href="structDBusSignatureIter.html" title="DBusSignatureIter struct; contains no public fields.">DBusSignatureIter</a> for reading a type signature. </p>
<p>This function is not safe to use on invalid signatures; be sure to validate potentially invalid signatures with dbus_signature_validate before using this function.</p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">iter</td><td>pointer to an iterator to initialize </td></tr>
<tr><td class="paramname">signature</td><td>the type signature </td></tr>
</table>
</dd>
</dl>
<p>Definition at line <a class="el" href="dbus-signature_8c_source.html#l00067">67</a> of file <a class="el" href="dbus-signature_8c_source.html">dbus-signature.c</a>.</p>
<p>References <a class="el" href="group__DBusMacros.html#gaa93f0eb578d23995850d61f7d61c55c1">FALSE</a>, <a class="el" href="dbus-signature_8c_source.html#l00038">DBusSignatureRealIter::finished</a>, <a class="el" href="dbus-signature_8c_source.html#l00039">DBusSignatureRealIter::in_array</a>, and <a class="el" href="dbus-signature_8c_source.html#l00037">DBusSignatureRealIter::pos</a>.</p>
<p>Referenced by <a class="el" href="dbus-signature_8c_source.html#l00264">dbus_signature_validate_single()</a>.</p>
</div>
</div>
<a class="anchor" id="ga90e48ef4b86180ba033727107b03bd29"></a><!-- doxytag: member="dbus-signature.c::dbus_signature_iter_next" ref="ga90e48ef4b86180ba033727107b03bd29" args="(DBusSignatureIter *iter)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">DBUS_EXPORT <a class="el" href="group__DBusTypes.html#ga39c9cb0f3a2a8ad6f55cc4855d035349">dbus_bool_t</a> <a class="el" href="group__DBusSignature.html#ga90e48ef4b86180ba033727107b03bd29">dbus_signature_iter_next</a> </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structDBusSignatureIter.html">DBusSignatureIter</a> * </td>
<td class="paramname"><em>iter</em></td><td>)</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Skip to the next value on this "level". </p>
<p>e.g. the next field in a struct, the next value in an array. Returns <a class="el" href="group__DBusMacros.html#gaa93f0eb578d23995850d61f7d61c55c1" title="Expands to "0".">FALSE</a> at the end of the current container.</p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">iter</td><td>the iterator </td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>FALSE if nothing more to read at or below this level </dd></dl>
<p>Definition at line <a class="el" href="dbus-signature_8c_source.html#l00164">164</a> of file <a class="el" href="dbus-signature_8c_source.html">dbus-signature.c</a>.</p>
<p>References <a class="el" href="dbus-marshal-recursive_8c_source.html#l00341">_dbus_type_signature_next()</a>, <a class="el" href="dbus-protocol_8h_source.html#l00168">DBUS_DICT_ENTRY_END_CHAR</a>, <a class="el" href="dbus-protocol_8h_source.html#l00160">DBUS_STRUCT_END_CHAR</a>, <a class="el" href="dbus-protocol_8h_source.html#l00060">DBUS_TYPE_INVALID</a>, <a class="el" href="group__DBusMacros.html#gaa93f0eb578d23995850d61f7d61c55c1">FALSE</a>, <a class="el" href="dbus-signature_8c_source.html#l00038">DBusSignatureRealIter::finished</a>, <a class="el" href="dbus-signature_8c_source.html#l00039">DBusSignatureRealIter::in_array</a>, <a class="el" href="dbus-signature_8c_source.html#l00037">DBusSignatureRealIter::pos</a>, and <a class="el" href="group__DBusMacros.html#gaa8cecfc5c5c054d2875c03e77b7be15d">TRUE</a>.</p>
<p>Referenced by <a class="el" href="dbus-signature_8c_source.html#l00264">dbus_signature_validate_single()</a>.</p>
</div>
</div>
<a class="anchor" id="ga0bd324faaf2dad5d075de3ff6c9b6796"></a><!-- doxytag: member="dbus-signature.c::dbus_signature_iter_recurse" ref="ga0bd324faaf2dad5d075de3ff6c9b6796" args="(const DBusSignatureIter *iter, DBusSignatureIter *subiter)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">DBUS_EXPORT void <a class="el" href="group__DBusSignature.html#ga0bd324faaf2dad5d075de3ff6c9b6796">dbus_signature_iter_recurse</a> </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="structDBusSignatureIter.html">DBusSignatureIter</a> * </td>
<td class="paramname"><em>iter</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structDBusSignatureIter.html">DBusSignatureIter</a> * </td>
<td class="paramname"><em>subiter</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Initialize a new iterator pointing to the first type in the current container. </p>
<p>The results are undefined when calling this if the current type is a non-container (i.e. if <a class="el" href="group__DBusSignature.html#gaa0c4c8aa34fa266daa55bd37bdad39b8" title="A "container type" can contain basic types, or nested container types.">dbus_type_is_container()</a> returns <a class="el" href="group__DBusMacros.html#gaa93f0eb578d23995850d61f7d61c55c1" title="Expands to "0".">FALSE</a> for the result of <a class="el" href="group__DBusSignature.html#gac4761ce10d60d7581cfe98beb6a9c57c" title="Returns the current type pointed to by the iterator.">dbus_signature_iter_get_current_type()</a>).</p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">iter</td><td>the current interator </td></tr>
<tr><td class="paramname">subiter</td><td>an iterator to initialize pointing to the first child </td></tr>
</table>
</dd>
</dl>
<p>Definition at line <a class="el" href="dbus-signature_8c_source.html#l00207">207</a> of file <a class="el" href="dbus-signature_8c_source.html">dbus-signature.c</a>.</p>
<p>References <a class="el" href="dbus-signature_8c_source.html#l00092">dbus_signature_iter_get_current_type()</a>, <a class="el" href="dbus-protocol_8h_source.html#l00120">DBUS_TYPE_ARRAY</a>, <a class="el" href="dbus-signature_8c_source.html#l00294">dbus_type_is_container()</a>, <a class="el" href="group__DBusMacros.html#gaa93f0eb578d23995850d61f7d61c55c1">FALSE</a>, <a class="el" href="dbus-signature_8c_source.html#l00039">DBusSignatureRealIter::in_array</a>, <a class="el" href="dbus-signature_8c_source.html#l00037">DBusSignatureRealIter::pos</a>, and <a class="el" href="group__DBusMacros.html#gaa8cecfc5c5c054d2875c03e77b7be15d">TRUE</a>.</p>
</div>
</div>
<a class="anchor" id="ga0f4b81be4f6193c7d8da0ee214772e02"></a><!-- doxytag: member="dbus-signature.c::dbus_signature_validate" ref="ga0f4b81be4f6193c7d8da0ee214772e02" args="(const char *signature, DBusError *error)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">DBUS_EXPORT <a class="el" href="group__DBusTypes.html#ga39c9cb0f3a2a8ad6f55cc4855d035349">dbus_bool_t</a> <a class="el" href="group__DBusSignature.html#ga0f4b81be4f6193c7d8da0ee214772e02">dbus_signature_validate</a> </td>
<td>(</td>
<td class="paramtype">const char * </td>
<td class="paramname"><em>signature</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structDBusError.html">DBusError</a> * </td>
<td class="paramname"><em>error</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Check a type signature for validity. </p>
<p>Remember that <a class="el" href="group__DBusMacros.html#ga070d2ce7b6bb7e5c05602aa8c308d0c4" title="A null pointer, defined appropriately for C or C++.">NULL</a> can always be passed instead of a DBusError*, if you don't care about having an error name and message.</p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">signature</td><td>a potentially invalid type signature </td></tr>
<tr><td class="paramname">error</td><td>error return </td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd><a class="el" href="group__DBusMacros.html#gaa8cecfc5c5c054d2875c03e77b7be15d" title="Expands to "1".">TRUE</a> if signature is valid or <a class="el" href="group__DBusMacros.html#gaa93f0eb578d23995850d61f7d61c55c1" title="Expands to "0".">FALSE</a> if an error is set </dd></dl>
<p>Definition at line <a class="el" href="dbus-signature_8c_source.html#l00233">233</a> of file <a class="el" href="dbus-signature_8c_source.html">dbus-signature.c</a>.</p>
<p>References <a class="el" href="dbus-string_8c_source.html#l00722">_dbus_string_get_length()</a>, <a class="el" href="dbus-string_8c_source.html#l00190">_dbus_string_init_const()</a>, <a class="el" href="dbus-marshal-validate_8c_source.html#l00051">_dbus_validate_signature_with_reason()</a>, <a class="el" href="dbus-protocol_8h_source.html#l00437">DBUS_ERROR_INVALID_SIGNATURE</a>, <a class="el" href="dbus-errors_8c_source.html#l00354">dbus_set_error()</a>, <a class="el" href="group__DBusMacros.html#gaa93f0eb578d23995850d61f7d61c55c1">FALSE</a>, and <a class="el" href="group__DBusMacros.html#gaa8cecfc5c5c054d2875c03e77b7be15d">TRUE</a>.</p>
<p>Referenced by <a class="el" href="dbus-signature_8c_source.html#l00264">dbus_signature_validate_single()</a>.</p>
</div>
</div>
<a class="anchor" id="gac375412dd15a7412967a927d17b6f3d8"></a><!-- doxytag: member="dbus-signature.c::dbus_signature_validate_single" ref="gac375412dd15a7412967a927d17b6f3d8" args="(const char *signature, DBusError *error)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">DBUS_EXPORT <a class="el" href="group__DBusTypes.html#ga39c9cb0f3a2a8ad6f55cc4855d035349">dbus_bool_t</a> <a class="el" href="group__DBusSignature.html#gac375412dd15a7412967a927d17b6f3d8">dbus_signature_validate_single</a> </td>
<td>(</td>
<td class="paramtype">const char * </td>
<td class="paramname"><em>signature</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structDBusError.html">DBusError</a> * </td>
<td class="paramname"><em>error</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Check that a type signature is both valid and contains exactly one complete type. </p>
<p>"One complete type" means a single basic type, array, struct, or dictionary, though the struct or array may be arbitrarily recursive and complex. More than one complete type would mean for example "ii" or two integers in sequence.</p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">signature</td><td>a potentially invalid type signature </td></tr>
<tr><td class="paramname">error</td><td>error return </td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd><a class="el" href="group__DBusMacros.html#gaa8cecfc5c5c054d2875c03e77b7be15d" title="Expands to "1".">TRUE</a> if signature is valid and has exactly one complete type </dd></dl>
<p>Definition at line <a class="el" href="dbus-signature_8c_source.html#l00264">264</a> of file <a class="el" href="dbus-signature_8c_source.html">dbus-signature.c</a>.</p>
<p>References <a class="el" href="dbus-protocol_8h_source.html#l00437">DBUS_ERROR_INVALID_SIGNATURE</a>, <a class="el" href="dbus-errors_8c_source.html#l00354">dbus_set_error()</a>, <a class="el" href="dbus-signature_8c_source.html#l00092">dbus_signature_iter_get_current_type()</a>, <a class="el" href="dbus-signature_8c_source.html#l00067">dbus_signature_iter_init()</a>, <a class="el" href="dbus-signature_8c_source.html#l00164">dbus_signature_iter_next()</a>, <a class="el" href="dbus-signature_8c_source.html#l00233">dbus_signature_validate()</a>, <a class="el" href="dbus-protocol_8h_source.html#l00060">DBUS_TYPE_INVALID</a>, <a class="el" href="group__DBusMacros.html#gaa93f0eb578d23995850d61f7d61c55c1">FALSE</a>, and <a class="el" href="group__DBusMacros.html#gaa8cecfc5c5c054d2875c03e77b7be15d">TRUE</a>.</p>
</div>
</div>
<a class="anchor" id="ga2d8afef7d754cf15d6b9733f00654c0e"></a><!-- doxytag: member="dbus-signature.c::dbus_type_is_basic" ref="ga2d8afef7d754cf15d6b9733f00654c0e" args="(int typecode)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">DBUS_EXPORT <a class="el" href="group__DBusTypes.html#ga39c9cb0f3a2a8ad6f55cc4855d035349">dbus_bool_t</a> <a class="el" href="group__DBusSignature.html#ga2d8afef7d754cf15d6b9733f00654c0e">dbus_type_is_basic</a> </td>
<td>(</td>
<td class="paramtype">int </td>
<td class="paramname"><em>typecode</em></td><td>)</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>A "basic type" is a somewhat arbitrary concept, but the intent is to include those types that are fully-specified by a single typecode, with no additional type information or nested values. </p>
<p>So all numbers and strings are basic types and structs, arrays, and variants are not basic types. <a class="el" href="group__DBusProtocol.html#gaa9588da889743b2119dc6664712ae51e" title="Type code that is never equal to a legitimate type code.">DBUS_TYPE_INVALID</a> is not a basic type.</p>
<p>It is an error to pass an invalid type-code, other than DBUS_TYPE_INVALID, to this function. The valid type-codes are defined by <a class="el" href="dbus-protocol_8h_source.html">dbus-protocol.h</a> and can be checked with <a class="el" href="group__DBusSignature.html#ga7093ae3b35eb073dab939dae69b8c689" title="Return TRUE if the argument is a valid typecode.">dbus_type_is_valid()</a>.</p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">typecode</td><td>either a valid type-code or DBUS_TYPE_INVALID </td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd><a class="el" href="group__DBusMacros.html#gaa8cecfc5c5c054d2875c03e77b7be15d" title="Expands to "1".">TRUE</a> if type is basic </dd></dl>
<p>Definition at line <a class="el" href="dbus-signature_8c_source.html#l00318">318</a> of file <a class="el" href="dbus-signature_8c_source.html">dbus-signature.c</a>.</p>
<p>References <a class="el" href="dbus-protocol_8h_source.html#l00060">DBUS_TYPE_INVALID</a>, <a class="el" href="dbus-signature_8c_source.html#l00383">dbus_type_is_valid()</a>, and <a class="el" href="group__DBusMacros.html#gaa93f0eb578d23995850d61f7d61c55c1">FALSE</a>.</p>
<p>Referenced by <a class="el" href="dbus-marshal-basic_8c_source.html#l00492">_dbus_marshal_read_basic()</a>, <a class="el" href="dbus-marshal-basic_8c_source.html#l00794">_dbus_marshal_write_basic()</a>, <a class="el" href="dbus-message_8c_source.html#l00796">_dbus_message_iter_get_args_valist()</a>, <a class="el" href="dbus-marshal-recursive_8c_source.html#l01363">_dbus_type_reader_set_basic()</a>, <a class="el" href="dbus-marshal-validate_8c_source.html#l00051">_dbus_validate_signature_with_reason()</a>, <a class="el" href="dbus-message_8c_source.html#l01824">dbus_message_append_args_valist()</a>, and <a class="el" href="dbus-message_8c_source.html#l02656">dbus_message_iter_append_basic()</a>.</p>
</div>
</div>
<a class="anchor" id="gaa0c4c8aa34fa266daa55bd37bdad39b8"></a><!-- doxytag: member="dbus-signature.c::dbus_type_is_container" ref="gaa0c4c8aa34fa266daa55bd37bdad39b8" args="(int typecode)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">DBUS_EXPORT <a class="el" href="group__DBusTypes.html#ga39c9cb0f3a2a8ad6f55cc4855d035349">dbus_bool_t</a> <a class="el" href="group__DBusSignature.html#gaa0c4c8aa34fa266daa55bd37bdad39b8">dbus_type_is_container</a> </td>
<td>(</td>
<td class="paramtype">int </td>
<td class="paramname"><em>typecode</em></td><td>)</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>A "container type" can contain basic types, or nested container types. </p>
<p><a class="el" href="group__DBusProtocol.html#gaa9588da889743b2119dc6664712ae51e" title="Type code that is never equal to a legitimate type code.">DBUS_TYPE_INVALID</a> is not a container type.</p>
<p>It is an error to pass an invalid type-code, other than DBUS_TYPE_INVALID, to this function. The valid type-codes are defined by <a class="el" href="dbus-protocol_8h_source.html">dbus-protocol.h</a> and can be checked with <a class="el" href="group__DBusSignature.html#ga7093ae3b35eb073dab939dae69b8c689" title="Return TRUE if the argument is a valid typecode.">dbus_type_is_valid()</a>.</p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">typecode</td><td>either a valid type-code or DBUS_TYPE_INVALID </td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd><a class="el" href="group__DBusMacros.html#gaa8cecfc5c5c054d2875c03e77b7be15d" title="Expands to "1".">TRUE</a> if type is a container </dd></dl>
<p>Definition at line <a class="el" href="dbus-signature_8c_source.html#l00294">294</a> of file <a class="el" href="dbus-signature_8c_source.html">dbus-signature.c</a>.</p>
<p>References <a class="el" href="dbus-protocol_8h_source.html#l00060">DBUS_TYPE_INVALID</a>, <a class="el" href="dbus-signature_8c_source.html#l00383">dbus_type_is_valid()</a>, and <a class="el" href="group__DBusMacros.html#gaa93f0eb578d23995850d61f7d61c55c1">FALSE</a>.</p>
<p>Referenced by <a class="el" href="dbus-message_8c_source.html#l02849">dbus_message_iter_open_container()</a>, and <a class="el" href="dbus-signature_8c_source.html#l00207">dbus_signature_iter_recurse()</a>.</p>
</div>
</div>
<a class="anchor" id="ga2f89962cbd33e4ad843824157bae2093"></a><!-- doxytag: member="dbus-signature.c::dbus_type_is_fixed" ref="ga2f89962cbd33e4ad843824157bae2093" args="(int typecode)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">DBUS_EXPORT <a class="el" href="group__DBusTypes.html#ga39c9cb0f3a2a8ad6f55cc4855d035349">dbus_bool_t</a> <a class="el" href="group__DBusSignature.html#ga2f89962cbd33e4ad843824157bae2093">dbus_type_is_fixed</a> </td>
<td>(</td>
<td class="paramtype">int </td>
<td class="paramname"><em>typecode</em></td><td>)</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Tells you whether values of this type can change length if you set them to some other value. </p>
<p>For this purpose, you assume that the first byte of the old and new value would be in the same location, so alignment padding is not a factor.</p>
<p>This function is useful to determine whether <a class="el" href="group__DBusMessage.html#gae195a3312ae445e7ef0196854f3523f8" title="Reads a block of fixed-length values from the message iterator.">dbus_message_iter_get_fixed_array()</a> may be used.</p>
<p>Some structs are fixed-size (if they contain only fixed-size types) but struct is not considered a fixed type for purposes of this function.</p>
<p>It is an error to pass an invalid type-code, other than DBUS_TYPE_INVALID, to this function. The valid type-codes are defined by <a class="el" href="dbus-protocol_8h_source.html">dbus-protocol.h</a> and can be checked with <a class="el" href="group__DBusSignature.html#ga7093ae3b35eb073dab939dae69b8c689" title="Return TRUE if the argument is a valid typecode.">dbus_type_is_valid()</a>.</p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">typecode</td><td>either a valid type-code or DBUS_TYPE_INVALID </td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd><a class="el" href="group__DBusMacros.html#gaa93f0eb578d23995850d61f7d61c55c1" title="Expands to "0".">FALSE</a> if the type can occupy different lengths </dd></dl>
<p>Definition at line <a class="el" href="dbus-signature_8c_source.html#l00349">349</a> of file <a class="el" href="dbus-signature_8c_source.html">dbus-signature.c</a>.</p>
<p>References <a class="el" href="dbus-protocol_8h_source.html#l00070">DBUS_TYPE_BOOLEAN</a>, <a class="el" href="dbus-protocol_8h_source.html#l00066">DBUS_TYPE_BYTE</a>, <a class="el" href="dbus-protocol_8h_source.html#l00098">DBUS_TYPE_DOUBLE</a>, <a class="el" href="dbus-protocol_8h_source.html#l00074">DBUS_TYPE_INT16</a>, <a class="el" href="dbus-protocol_8h_source.html#l00082">DBUS_TYPE_INT32</a>, <a class="el" href="dbus-protocol_8h_source.html#l00090">DBUS_TYPE_INT64</a>, <a class="el" href="dbus-protocol_8h_source.html#l00060">DBUS_TYPE_INVALID</a>, <a class="el" href="dbus-signature_8c_source.html#l00383">dbus_type_is_valid()</a>, <a class="el" href="dbus-protocol_8h_source.html#l00078">DBUS_TYPE_UINT16</a>, <a class="el" href="dbus-protocol_8h_source.html#l00086">DBUS_TYPE_UINT32</a>, <a class="el" href="dbus-protocol_8h_source.html#l00094">DBUS_TYPE_UINT64</a>, <a class="el" href="dbus-protocol_8h_source.html#l00114">DBUS_TYPE_UNIX_FD</a>, <a class="el" href="group__DBusMacros.html#gaa93f0eb578d23995850d61f7d61c55c1">FALSE</a>, and <a class="el" href="group__DBusMacros.html#gaa8cecfc5c5c054d2875c03e77b7be15d">TRUE</a>.</p>
<p>Referenced by <a class="el" href="dbus-marshal-basic_8c_source.html#l01020">_dbus_marshal_write_fixed_multi()</a>, <a class="el" href="dbus-message_8c_source.html#l00796">_dbus_message_iter_get_args_valist()</a>, <a class="el" href="dbus-marshal-recursive_8c_source.html#l00924">_dbus_type_reader_read_fixed_multi()</a>, <a class="el" href="dbus-marshal-recursive_8c_source.html#l01363">_dbus_type_reader_set_basic()</a>, <a class="el" href="dbus-marshal-recursive_8c_source.html#l02359">_dbus_type_writer_write_fixed_multi()</a>, <a class="el" href="dbus-message_8c_source.html#l01824">dbus_message_append_args_valist()</a>, <a class="el" href="dbus-message_8c_source.html#l02791">dbus_message_iter_append_fixed_array()</a>, and <a class="el" href="dbus-message_8c_source.html#l02391">dbus_message_iter_get_fixed_array()</a>.</p>
</div>
</div>
<a class="anchor" id="ga7093ae3b35eb073dab939dae69b8c689"></a><!-- doxytag: member="dbus-signature.c::dbus_type_is_valid" ref="ga7093ae3b35eb073dab939dae69b8c689" args="(int typecode)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">DBUS_EXPORT <a class="el" href="group__DBusTypes.html#ga39c9cb0f3a2a8ad6f55cc4855d035349">dbus_bool_t</a> <a class="el" href="group__DBusSignature.html#ga7093ae3b35eb073dab939dae69b8c689">dbus_type_is_valid</a> </td>
<td>(</td>
<td class="paramtype">int </td>
<td class="paramname"><em>typecode</em></td><td>)</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Return <a class="el" href="group__DBusMacros.html#gaa8cecfc5c5c054d2875c03e77b7be15d" title="Expands to "1".">TRUE</a> if the argument is a valid typecode. </p>
<p><a class="el" href="group__DBusProtocol.html#gaa9588da889743b2119dc6664712ae51e" title="Type code that is never equal to a legitimate type code.">DBUS_TYPE_INVALID</a> surprisingly enough is not considered valid, and random unknown bytes aren't either. This function is safe with untrusted data.</p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">typecode</td><td>a potential type-code </td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd><a class="el" href="group__DBusMacros.html#gaa8cecfc5c5c054d2875c03e77b7be15d" title="Expands to "1".">TRUE</a> if valid </dd></dl>
<p>Definition at line <a class="el" href="dbus-signature_8c_source.html#l00383">383</a> of file <a class="el" href="dbus-signature_8c_source.html">dbus-signature.c</a>.</p>
<p>References <a class="el" href="dbus-protocol_8h_source.html#l00120">DBUS_TYPE_ARRAY</a>, <a class="el" href="dbus-protocol_8h_source.html#l00070">DBUS_TYPE_BOOLEAN</a>, <a class="el" href="dbus-protocol_8h_source.html#l00066">DBUS_TYPE_BYTE</a>, <a class="el" href="dbus-protocol_8h_source.html#l00143">DBUS_TYPE_DICT_ENTRY</a>, <a class="el" href="dbus-protocol_8h_source.html#l00098">DBUS_TYPE_DOUBLE</a>, <a class="el" href="dbus-protocol_8h_source.html#l00074">DBUS_TYPE_INT16</a>, <a class="el" href="dbus-protocol_8h_source.html#l00082">DBUS_TYPE_INT32</a>, <a class="el" href="dbus-protocol_8h_source.html#l00090">DBUS_TYPE_INT64</a>, <a class="el" href="dbus-protocol_8h_source.html#l00106">DBUS_TYPE_OBJECT_PATH</a>, <a class="el" href="dbus-protocol_8h_source.html#l00110">DBUS_TYPE_SIGNATURE</a>, <a class="el" href="dbus-protocol_8h_source.html#l00102">DBUS_TYPE_STRING</a>, <a class="el" href="dbus-protocol_8h_source.html#l00136">DBUS_TYPE_STRUCT</a>, <a class="el" href="dbus-protocol_8h_source.html#l00078">DBUS_TYPE_UINT16</a>, <a class="el" href="dbus-protocol_8h_source.html#l00086">DBUS_TYPE_UINT32</a>, <a class="el" href="dbus-protocol_8h_source.html#l00094">DBUS_TYPE_UINT64</a>, <a class="el" href="dbus-protocol_8h_source.html#l00114">DBUS_TYPE_UNIX_FD</a>, <a class="el" href="dbus-protocol_8h_source.html#l00124">DBUS_TYPE_VARIANT</a>, <a class="el" href="group__DBusMacros.html#gaa93f0eb578d23995850d61f7d61c55c1">FALSE</a>, and <a class="el" href="group__DBusMacros.html#gaa8cecfc5c5c054d2875c03e77b7be15d">TRUE</a>.</p>
<p>Referenced by <a class="el" href="dbus-marshal-validate_8c_source.html#l00051">_dbus_validate_signature_with_reason()</a>, <a class="el" href="dbus-connection_8c_source.html#l03105">dbus_connection_can_send_type()</a>, <a class="el" href="dbus-signature_8c_source.html#l00318">dbus_type_is_basic()</a>, <a class="el" href="dbus-signature_8c_source.html#l00294">dbus_type_is_container()</a>, and <a class="el" href="dbus-signature_8c_source.html#l00349">dbus_type_is_fixed()</a>.</p>
</div>
</div>
</div><!-- contents -->
<hr class="footer"/><address class="footer"><small>
Generated on Thu Mar 3 2016 17:50:33 for D-Bus by  <a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.7.6.1
</small></address>
</body>
</html>