KGRKJGETMRETU895U-589TY5MIGM5JGB5SDFESFREWTGR54TY
Server : Apache/2.2.17 (Unix) mod_ssl/2.2.17 OpenSSL/0.9.8e-fips-rhel5 DAV/2 PHP/5.2.17
System : Linux localhost 2.6.18-419.el5 #1 SMP Fri Feb 24 22:47:42 UTC 2017 x86_64
User : nobody ( 99)
PHP Version : 5.2.17
Disable Function : NONE
Directory :  /usr/share/devhelp/books/dbus/api/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : //usr/share/devhelp/books/dbus/api/group__DBusSignature.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>D-Bus: Type signature parsing</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.4.7 -->
<div class="tabs">
  <ul>
    <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
    <li><a href="modules.html"><span>Modules</span></a></li>
    <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
    <li><a href="files.html"><span>Files</span></a></li>
    <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
  </ul></div>
<h1>Type signature parsing<br>
<small>
[<a class="el" href="group__DBus.html">D-Bus low-level public API</a>]</small>
</h1>Parsing D-Bus type signatures.  
<a href="#_details">More...</a><table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Data Structures</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structDBusSignatureIter.html">DBusSignatureIter</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><a class="el" href="structDBusSignatureIter.html">DBusSignatureIter</a> struct; contains no public fields.  <a href="structDBusSignatureIter.html#_details">More...</a><br></td></tr>
<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusSignature.html#g36ce12e778b0837f87f516c118b43efc">dbus_signature_iter_init</a> (<a class="el" href="structDBusSignatureIter.html">DBusSignatureIter</a> *iter, const char *signature)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Initializes a <a class="el" href="structDBusSignatureIter.html">DBusSignatureIter</a> for reading a type signature.  <a href="#g36ce12e778b0837f87f516c118b43efc"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusSignature.html#g80c3703775e249df8bd980d7c34967f0">dbus_signature_iter_get_current_type</a> (const <a class="el" href="structDBusSignatureIter.html">DBusSignatureIter</a> *iter)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns the current type pointed to by the iterator.  <a href="#g80c3703775e249df8bd980d7c34967f0"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusSignature.html#g395a3862b315c821dce7043a6464970a">dbus_signature_iter_get_signature</a> (const <a class="el" href="structDBusSignatureIter.html">DBusSignatureIter</a> *iter)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns the signature of the single complete type starting at the given iterator.  <a href="#g395a3862b315c821dce7043a6464970a"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusSignature.html#gcf30e7e6f66905c8c76f3b8b1d254cb4">dbus_signature_iter_get_element_type</a> (const <a class="el" href="structDBusSignatureIter.html">DBusSignatureIter</a> *iter)</td></tr>

<tr><td class="mdescLeft">&nbsp;</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="#gcf30e7e6f66905c8c76f3b8b1d254cb4"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__DBusTypes.html#g39c9cb0f3a2a8ad6f55cc4855d035349">dbus_bool_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusSignature.html#g0da9963d092223bc0ed5e30b52ddd156">dbus_signature_iter_next</a> (<a class="el" href="structDBusSignatureIter.html">DBusSignatureIter</a> *iter)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Skip to the next value on this "level".  <a href="#g0da9963d092223bc0ed5e30b52ddd156"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusSignature.html#g1ded93db371633fd1420c77d9690a5d7">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">&nbsp;</td><td class="mdescRight">Initialize a new iterator pointing to the first type in the current container.  <a href="#g1ded93db371633fd1420c77d9690a5d7"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__DBusTypes.html#g39c9cb0f3a2a8ad6f55cc4855d035349">dbus_bool_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusSignature.html#ge03b59a40be9d77098138bf9854f14e4">dbus_signature_validate</a> (const char *signature, <a class="el" href="structDBusError.html">DBusError</a> *error)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Check a type signature for validity.  <a href="#ge03b59a40be9d77098138bf9854f14e4"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__DBusTypes.html#g39c9cb0f3a2a8ad6f55cc4855d035349">dbus_bool_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusSignature.html#g626a1e937b83f73516c3e0fdcf083052">dbus_signature_validate_single</a> (const char *signature, <a class="el" href="structDBusError.html">DBusError</a> *error)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Check that a type signature is both valid and contains exactly one complete type.  <a href="#g626a1e937b83f73516c3e0fdcf083052"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__DBusTypes.html#g39c9cb0f3a2a8ad6f55cc4855d035349">dbus_bool_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusSignature.html#g6e71e0d4ab3d7e68d2b906f43475544b">dbus_type_is_container</a> (int typecode)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">A "container type" can contain basic types, or nested container types.  <a href="#g6e71e0d4ab3d7e68d2b906f43475544b"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__DBusTypes.html#g39c9cb0f3a2a8ad6f55cc4855d035349">dbus_bool_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusSignature.html#g2d8d39cba08f450645a17651478a0ad4">dbus_type_is_basic</a> (int typecode)</td></tr>

<tr><td class="mdescLeft">&nbsp;</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="#g2d8d39cba08f450645a17651478a0ad4"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__DBusTypes.html#g39c9cb0f3a2a8ad6f55cc4855d035349">dbus_bool_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusSignature.html#g435ffc74ae015cc193175f5b864872bc">dbus_type_is_fixed</a> (int typecode)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Tells you whether values of this type can change length if you set them to some other value.  <a href="#g435ffc74ae015cc193175f5b864872bc"></a><br></td></tr>
</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
Parsing D-Bus type signatures. 
<p>
<hr><h2>Function Documentation</h2>
<a class="anchor" name="g80c3703775e249df8bd980d7c34967f0"></a><!-- doxytag: member="dbus-signature.c::dbus_signature_iter_get_current_type" ref="g80c3703775e249df8bd980d7c34967f0" args="(const DBusSignatureIter *iter)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int dbus_signature_iter_get_current_type           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="structDBusSignatureIter.html">DBusSignatureIter</a> *&nbsp;</td>
          <td class="paramname"> <em>iter</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Returns the current type pointed to by the iterator. 
<p>
If the iterator is pointing at a type code such as 's', then it will be returned directly.<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#g1ded93db371633fd1420c77d9690a5d7">dbus_signature_iter_recurse()</a> to parse the container type.<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>iter</em>&nbsp;</td><td>pointer to an iterator </td></tr>
  </table>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd>current type (e.g. <a class="el" href="group__DBusProtocol.html#g7eb77066dadf5415896b44c56d93acce">DBUS_TYPE_STRING</a>, <a class="el" href="group__DBusProtocol.html#g8912f600f81a773066ca03d9163613a9">DBUS_TYPE_ARRAY</a>) </dd></dl>

<p>
Definition at line <a class="el" href="dbus-signature_8c-source.html#l00090">90</a> of file <a class="el" href="dbus-signature_8c-source.html">dbus-signature.c</a>.
<p>
References <a class="el" href="dbus-marshal-basic_8c-source.html#l01473">_dbus_first_type_in_signature_c_str()</a>, and <a class="el" href="dbus-signature_8c-source.html#l00035">DBusSignatureRealIter::pos</a>.
<p>
Referenced by <a class="el" href="dbus-signature_8c-source.html#l00144">dbus_signature_iter_get_element_type()</a>, <a class="el" href="dbus-signature_8c-source.html#l00205">dbus_signature_iter_recurse()</a>, and <a class="el" href="dbus-signature_8c-source.html#l00256">dbus_signature_validate_single()</a>.
</div>
</div><p>
<a class="anchor" name="gcf30e7e6f66905c8c76f3b8b1d254cb4"></a><!-- doxytag: member="dbus-signature.c::dbus_signature_iter_get_element_type" ref="gcf30e7e6f66905c8c76f3b8b1d254cb4" args="(const DBusSignatureIter *iter)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int dbus_signature_iter_get_element_type           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="structDBusSignatureIter.html">DBusSignatureIter</a> *&nbsp;</td>
          <td class="paramname"> <em>iter</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"></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>
Undefined behavior results if you invoke this function when the current type of the iterator is not <a class="el" href="group__DBusProtocol.html#g8912f600f81a773066ca03d9163613a9">DBUS_TYPE_ARRAY</a>.<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>iter</em>&nbsp;</td><td>pointer to an iterator </td></tr>
  </table>
</dl>
<dl compact><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#l00144">144</a> of file <a class="el" href="dbus-signature_8c-source.html">dbus-signature.c</a>.
<p>
References <a class="el" href="dbus-marshal-basic_8c-source.html#l01473">_dbus_first_type_in_signature_c_str()</a>, <a class="el" href="dbus-signature_8c-source.html#l00090">dbus_signature_iter_get_current_type()</a>, <a class="el" href="dbus-protocol_8h-source.html#l00116">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#l00035">DBusSignatureRealIter::pos</a>.
</div>
</div><p>
<a class="anchor" name="g395a3862b315c821dce7043a6464970a"></a><!-- doxytag: member="dbus-signature.c::dbus_signature_iter_get_signature" ref="g395a3862b315c821dce7043a6464970a" args="(const DBusSignatureIter *iter)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">char * dbus_signature_iter_get_signature           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="structDBusSignatureIter.html">DBusSignatureIter</a> *&nbsp;</td>
          <td class="paramname"> <em>iter</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Returns the signature of the single complete type starting at the given iterator. 
<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 compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>iter</em>&nbsp;</td><td>pointer to an iterator </td></tr>
  </table>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd>current signature; or <a class="el" href="group__DBusMacros.html#g070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</a> if no memory. Should be freed with <a class="el" href="group__DBusMemory.html#g488c6b08cc8c1ddf0203243c4b27a13c">dbus_free()</a> </dd></dl>

<p>
Definition at line <a class="el" href="dbus-signature_8c-source.html#l00110">110</a> of file <a class="el" href="dbus-signature_8c-source.html">dbus-signature.c</a>.
<p>
References <a class="el" href="dbus-string_8c-source.html#l01253">_dbus_string_append_len()</a>, <a class="el" href="dbus-string_8c-source.html#l00262">_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#l00608">_dbus_string_steal_data()</a>, <a class="el" href="dbus-marshal-recursive_8c-source.html#l00327">_dbus_type_signature_next()</a>, <a class="el" href="group__DBusMacros.html#g070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</a>, and <a class="el" href="dbus-signature_8c-source.html#l00035">DBusSignatureRealIter::pos</a>.
</div>
</div><p>
<a class="anchor" name="g36ce12e778b0837f87f516c118b43efc"></a><!-- doxytag: member="dbus-signature.c::dbus_signature_iter_init" ref="g36ce12e778b0837f87f516c118b43efc" args="(DBusSignatureIter *iter, const char *signature)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void dbus_signature_iter_init           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structDBusSignatureIter.html">DBusSignatureIter</a> *&nbsp;</td>
          <td class="paramname"> <em>iter</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>signature</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Initializes a <a class="el" href="structDBusSignatureIter.html">DBusSignatureIter</a> for reading a type signature. 
<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 compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>iter</em>&nbsp;</td><td>pointer to an iterator to initialize </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>signature</em>&nbsp;</td><td>the type signature </td></tr>
  </table>
</dl>

<p>
Definition at line <a class="el" href="dbus-signature_8c-source.html#l00065">65</a> of file <a class="el" href="dbus-signature_8c-source.html">dbus-signature.c</a>.
<p>
References <a class="el" href="group__DBusMacros.html#ga93f0eb578d23995850d61f7d61c55c1">FALSE</a>, <a class="el" href="dbus-signature_8c-source.html#l00036">DBusSignatureRealIter::finished</a>, <a class="el" href="dbus-signature_8c-source.html#l00037">DBusSignatureRealIter::in_array</a>, and <a class="el" href="dbus-signature_8c-source.html#l00035">DBusSignatureRealIter::pos</a>.
<p>
Referenced by <a class="el" href="dbus-signature_8c-source.html#l00256">dbus_signature_validate_single()</a>.
</div>
</div><p>
<a class="anchor" name="g0da9963d092223bc0ed5e30b52ddd156"></a><!-- doxytag: member="dbus-signature.c::dbus_signature_iter_next" ref="g0da9963d092223bc0ed5e30b52ddd156" args="(DBusSignatureIter *iter)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__DBusTypes.html#g39c9cb0f3a2a8ad6f55cc4855d035349">dbus_bool_t</a> dbus_signature_iter_next           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structDBusSignatureIter.html">DBusSignatureIter</a> *&nbsp;</td>
          <td class="paramname"> <em>iter</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Skip to the next value on this "level". 
<p>
e.g. the next field in a struct, the next value in an array. Returns <a class="el" href="group__DBusMacros.html#ga93f0eb578d23995850d61f7d61c55c1">FALSE</a> at the end of the current container.<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>iter</em>&nbsp;</td><td>the iterator </td></tr>
  </table>
</dl>
<dl compact><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#l00162">162</a> of file <a class="el" href="dbus-signature_8c-source.html">dbus-signature.c</a>.
<p>
References <a class="el" href="dbus-marshal-recursive_8c-source.html#l00327">_dbus_type_signature_next()</a>, <a class="el" href="dbus-protocol_8h-source.html#l00164">DBUS_DICT_ENTRY_END_CHAR</a>, <a class="el" href="dbus-protocol_8h-source.html#l00156">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#ga93f0eb578d23995850d61f7d61c55c1">FALSE</a>, <a class="el" href="dbus-signature_8c-source.html#l00036">DBusSignatureRealIter::finished</a>, <a class="el" href="dbus-signature_8c-source.html#l00037">DBusSignatureRealIter::in_array</a>, <a class="el" href="dbus-signature_8c-source.html#l00035">DBusSignatureRealIter::pos</a>, and <a class="el" href="group__DBusMacros.html#ga8cecfc5c5c054d2875c03e77b7be15d">TRUE</a>.
<p>
Referenced by <a class="el" href="dbus-signature_8c-source.html#l00256">dbus_signature_validate_single()</a>.
</div>
</div><p>
<a class="anchor" name="g1ded93db371633fd1420c77d9690a5d7"></a><!-- doxytag: member="dbus-signature.c::dbus_signature_iter_recurse" ref="g1ded93db371633fd1420c77d9690a5d7" args="(const DBusSignatureIter *iter, DBusSignatureIter *subiter)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void dbus_signature_iter_recurse           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="structDBusSignatureIter.html">DBusSignatureIter</a> *&nbsp;</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> *&nbsp;</td>
          <td class="paramname"> <em>subiter</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Initialize a new iterator pointing to the first type in the current container. 
<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#g6e71e0d4ab3d7e68d2b906f43475544b">dbus_type_is_container()</a> returns <a class="el" href="group__DBusMacros.html#ga93f0eb578d23995850d61f7d61c55c1">FALSE</a> for the result of <a class="el" href="group__DBusSignature.html#g80c3703775e249df8bd980d7c34967f0">dbus_signature_iter_get_current_type()</a>).<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>iter</em>&nbsp;</td><td>the current interator </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>subiter</em>&nbsp;</td><td>an iterator to initialize pointing to the first child </td></tr>
  </table>
</dl>

<p>
Definition at line <a class="el" href="dbus-signature_8c-source.html#l00205">205</a> of file <a class="el" href="dbus-signature_8c-source.html">dbus-signature.c</a>.
<p>
References <a class="el" href="dbus-signature_8c-source.html#l00090">dbus_signature_iter_get_current_type()</a>, <a class="el" href="dbus-protocol_8h-source.html#l00116">DBUS_TYPE_ARRAY</a>, <a class="el" href="dbus-signature_8c-source.html#l00284">dbus_type_is_container()</a>, <a class="el" href="group__DBusMacros.html#ga93f0eb578d23995850d61f7d61c55c1">FALSE</a>, <a class="el" href="dbus-signature_8c-source.html#l00037">DBusSignatureRealIter::in_array</a>, <a class="el" href="dbus-signature_8c-source.html#l00035">DBusSignatureRealIter::pos</a>, and <a class="el" href="group__DBusMacros.html#ga8cecfc5c5c054d2875c03e77b7be15d">TRUE</a>.
</div>
</div><p>
<a class="anchor" name="ge03b59a40be9d77098138bf9854f14e4"></a><!-- doxytag: member="dbus-signature.c::dbus_signature_validate" ref="ge03b59a40be9d77098138bf9854f14e4" args="(const char *signature, DBusError *error)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__DBusTypes.html#g39c9cb0f3a2a8ad6f55cc4855d035349">dbus_bool_t</a> dbus_signature_validate           </td>
          <td>(</td>
          <td class="paramtype">const char *&nbsp;</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> *&nbsp;</td>
          <td class="paramname"> <em>error</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Check a type signature for validity. 
<p>
Remember that <a class="el" href="group__DBusMacros.html#g070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</a> can always be passed instead of a DBusError*, if you don't care about having an error name and message.<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>signature</em>&nbsp;</td><td>a potentially invalid type signature </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>error</em>&nbsp;</td><td>error return </td></tr>
  </table>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd><a class="el" href="group__DBusMacros.html#ga8cecfc5c5c054d2875c03e77b7be15d">TRUE</a> if signature is valid or <a class="el" href="group__DBusMacros.html#ga93f0eb578d23995850d61f7d61c55c1">FALSE</a> if an error is set </dd></dl>

<p>
Definition at line <a class="el" href="dbus-signature_8c-source.html#l00231">231</a> of file <a class="el" href="dbus-signature_8c-source.html">dbus-signature.c</a>.
<p>
References <a class="el" href="dbus-string_8c-source.html#l00209">_dbus_string_init_const()</a>, <a class="el" href="dbus-marshal-validate_8c-source.html#l01054">_dbus_validate_signature()</a>, <a class="el" href="dbus-protocol_8h-source.html#l00409">DBUS_ERROR_INVALID_SIGNATURE</a>, <a class="el" href="dbus-errors_8c-source.html#l00326">dbus_set_error()</a>, <a class="el" href="group__DBusMacros.html#ga93f0eb578d23995850d61f7d61c55c1">FALSE</a>, and <a class="el" href="group__DBusMacros.html#ga8cecfc5c5c054d2875c03e77b7be15d">TRUE</a>.
<p>
Referenced by <a class="el" href="dbus-signature_8c-source.html#l00256">dbus_signature_validate_single()</a>.
</div>
</div><p>
<a class="anchor" name="g626a1e937b83f73516c3e0fdcf083052"></a><!-- doxytag: member="dbus-signature.c::dbus_signature_validate_single" ref="g626a1e937b83f73516c3e0fdcf083052" args="(const char *signature, DBusError *error)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__DBusTypes.html#g39c9cb0f3a2a8ad6f55cc4855d035349">dbus_bool_t</a> dbus_signature_validate_single           </td>
          <td>(</td>
          <td class="paramtype">const char *&nbsp;</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> *&nbsp;</td>
          <td class="paramname"> <em>error</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Check that a type signature is both valid and contains exactly one complete type. 
<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 compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>signature</em>&nbsp;</td><td>a potentially invalid type signature </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>error</em>&nbsp;</td><td>error return </td></tr>
  </table>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd><a class="el" href="group__DBusMacros.html#ga8cecfc5c5c054d2875c03e77b7be15d">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#l00256">256</a> of file <a class="el" href="dbus-signature_8c-source.html">dbus-signature.c</a>.
<p>
References <a class="el" href="dbus-protocol_8h-source.html#l00409">DBUS_ERROR_INVALID_SIGNATURE</a>, <a class="el" href="dbus-errors_8c-source.html#l00326">dbus_set_error()</a>, <a class="el" href="dbus-signature_8c-source.html#l00090">dbus_signature_iter_get_current_type()</a>, <a class="el" href="dbus-signature_8c-source.html#l00065">dbus_signature_iter_init()</a>, <a class="el" href="dbus-signature_8c-source.html#l00162">dbus_signature_iter_next()</a>, <a class="el" href="dbus-signature_8c-source.html#l00231">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#ga93f0eb578d23995850d61f7d61c55c1">FALSE</a>, and <a class="el" href="group__DBusMacros.html#ga8cecfc5c5c054d2875c03e77b7be15d">TRUE</a>.
</div>
</div><p>
<a class="anchor" name="g2d8d39cba08f450645a17651478a0ad4"></a><!-- doxytag: member="dbus-signature.c::dbus_type_is_basic" ref="g2d8d39cba08f450645a17651478a0ad4" args="(int typecode)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__DBusTypes.html#g39c9cb0f3a2a8ad6f55cc4855d035349">dbus_bool_t</a> dbus_type_is_basic           </td>
          <td>(</td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>typecode</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"></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>
So all numbers and strings are basic types and structs, arrays, and variants are not basic types. <a class="el" href="group__DBusProtocol.html#ga9588da889743b2119dc6664712ae51e">DBUS_TYPE_INVALID</a> is not a basic type.<p>
This function will crash if passed a typecode that isn't in <a class="el" href="dbus-protocol_8h-source.html">dbus-protocol.h</a><p>
<dl compact><dt><b>Returns:</b></dt><dd><a class="el" href="group__DBusMacros.html#ga8cecfc5c5c054d2875c03e77b7be15d">TRUE</a> if type is basic </dd></dl>

<p>
Definition at line <a class="el" href="dbus-signature_8c-source.html#l00306">306</a> of file <a class="el" href="dbus-signature_8c-source.html">dbus-signature.c</a>.
<p>
References <a class="el" href="dbus-marshal-basic_8c-source.html#l01223">_dbus_type_is_valid()</a>, <a class="el" href="dbus-protocol_8h-source.html#l00060">DBUS_TYPE_INVALID</a>, and <a class="el" href="group__DBusMacros.html#ga93f0eb578d23995850d61f7d61c55c1">FALSE</a>.
<p>
Referenced by <a class="el" href="dbus-marshal-basic_8c-source.html#l00503">_dbus_marshal_read_basic()</a>, <a class="el" href="dbus-marshal-basic_8c-source.html#l00793">_dbus_marshal_write_basic()</a>, <a class="el" href="dbus-message_8c-source.html#l00641">_dbus_message_iter_get_args_valist()</a>, <a class="el" href="dbus-marshal-recursive_8c-source.html#l01345">_dbus_type_reader_set_basic()</a>, <a class="el" href="dbus-marshal-validate_8c-source.html#l00050">_dbus_validate_signature_with_reason()</a>, <a class="el" href="dbus-message_8c-source.html#l01514">dbus_message_append_args_valist()</a>, and <a class="el" href="dbus-message_8c-source.html#l02232">dbus_message_iter_append_basic()</a>.
</div>
</div><p>
<a class="anchor" name="g6e71e0d4ab3d7e68d2b906f43475544b"></a><!-- doxytag: member="dbus-signature.c::dbus_type_is_container" ref="g6e71e0d4ab3d7e68d2b906f43475544b" args="(int typecode)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__DBusTypes.html#g39c9cb0f3a2a8ad6f55cc4855d035349">dbus_bool_t</a> dbus_type_is_container           </td>
          <td>(</td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>typecode</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
A "container type" can contain basic types, or nested container types. 
<p>
<a class="el" href="group__DBusProtocol.html#ga9588da889743b2119dc6664712ae51e">DBUS_TYPE_INVALID</a> is not a container type.<p>
This function will crash if passed a typecode that isn't in <a class="el" href="dbus-protocol_8h-source.html">dbus-protocol.h</a><p>
<dl compact><dt><b>Returns:</b></dt><dd><a class="el" href="group__DBusMacros.html#ga8cecfc5c5c054d2875c03e77b7be15d">TRUE</a> if type is a container </dd></dl>

<p>
Definition at line <a class="el" href="dbus-signature_8c-source.html#l00284">284</a> of file <a class="el" href="dbus-signature_8c-source.html">dbus-signature.c</a>.
<p>
References <a class="el" href="dbus-marshal-basic_8c-source.html#l01223">_dbus_type_is_valid()</a>, <a class="el" href="dbus-protocol_8h-source.html#l00060">DBUS_TYPE_INVALID</a>, and <a class="el" href="group__DBusMacros.html#ga93f0eb578d23995850d61f7d61c55c1">FALSE</a>.
<p>
Referenced by <a class="el" href="dbus-message_8c-source.html#l02336">dbus_message_iter_open_container()</a>, and <a class="el" href="dbus-signature_8c-source.html#l00205">dbus_signature_iter_recurse()</a>.
</div>
</div><p>
<a class="anchor" name="g435ffc74ae015cc193175f5b864872bc"></a><!-- doxytag: member="dbus-signature.c::dbus_type_is_fixed" ref="g435ffc74ae015cc193175f5b864872bc" args="(int typecode)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__DBusTypes.html#g39c9cb0f3a2a8ad6f55cc4855d035349">dbus_bool_t</a> dbus_type_is_fixed           </td>
          <td>(</td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>typecode</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"></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>
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>
This function is useful to determine whether <a class="el" href="group__DBusMessage.html#gae8493b610544a9c155fdeab63a8e102">dbus_message_iter_get_fixed_array()</a> may be used.<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>
This function will crash if passed a typecode that isn't in <a class="el" href="dbus-protocol_8h-source.html">dbus-protocol.h</a><p>
<dl compact><dt><b>Returns:</b></dt><dd><a class="el" href="group__DBusMacros.html#ga93f0eb578d23995850d61f7d61c55c1">FALSE</a> if the type can occupy different lengths </dd></dl>

<p>
Definition at line <a class="el" href="dbus-signature_8c-source.html#l00335">335</a> of file <a class="el" href="dbus-signature_8c-source.html">dbus-signature.c</a>.
<p>
References <a class="el" href="dbus-marshal-basic_8c-source.html#l01223">_dbus_type_is_valid()</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#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-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="group__DBusMacros.html#ga93f0eb578d23995850d61f7d61c55c1">FALSE</a>, and <a class="el" href="group__DBusMacros.html#ga8cecfc5c5c054d2875c03e77b7be15d">TRUE</a>.
<p>
Referenced by <a class="el" href="dbus-marshal-basic_8c-source.html#l01022">_dbus_marshal_write_fixed_multi()</a>, <a class="el" href="dbus-message_8c-source.html#l00641">_dbus_message_iter_get_args_valist()</a>, <a class="el" href="dbus-marshal-recursive_8c-source.html#l00908">_dbus_type_reader_read_fixed_multi()</a>, <a class="el" href="dbus-marshal-recursive_8c-source.html#l01345">_dbus_type_reader_set_basic()</a>, <a class="el" href="dbus-marshal-recursive_8c-source.html#l02341">_dbus_type_writer_write_fixed_multi()</a>, <a class="el" href="dbus-message_8c-source.html#l01514">dbus_message_append_args_valist()</a>, <a class="el" href="dbus-message_8c-source.html#l02291">dbus_message_iter_append_fixed_array()</a>, and <a class="el" href="dbus-message_8c-source.html#l02036">dbus_message_iter_get_fixed_array()</a>.
</div>
</div><p>
<hr size="1"><address style="align: right;"><small>Generated on Mon Dec 14 22:26:14 2009 for D-Bus by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.7 </small></address>
</body>
</html>

Anon7 - 2021