| Current File : //usr/share/doc/dbus/api/group__DBusMarshal.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: marshaling and unmarshaling</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="#define-members">Defines</a> |
<a href="#enum-members">Enumerations</a> |
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">marshaling and unmarshaling</div> </div>
<div class="ingroups"><a class="el" href="group__DBusInternals.html">D-Bus secret internal implementation details</a></div></div><!--header-->
<div class="contents">
<p>functions to marshal/unmarshal data from the wire
<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="structHeaderFieldType.html">HeaderFieldType</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structDBusTypeReaderClass.html">DBusTypeReaderClass</a></td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Virtual table for a type reader. <a href="structDBusTypeReaderClass.html#details">More...</a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structReplacementBlock.html">ReplacementBlock</a></td></tr>
<tr><td colspan="2"><h2><a name="define-members"></a>
Defines</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga935ea6d7c6bb72a10c670f5ef3e34d49"></a><!-- doxytag: member="DBusMarshal::FIELDS_ARRAY_SIGNATURE_OFFSET" ref="ga935ea6d7c6bb72a10c670f5ef3e34d49" args="" -->
#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusMarshal.html#ga935ea6d7c6bb72a10c670f5ef3e34d49">FIELDS_ARRAY_SIGNATURE_OFFSET</a>   6</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Offset from start of _dbus_header_signature_str to the signature of the fields array. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gaca36ac2e9b37067279d1bc967793e071"></a><!-- doxytag: member="DBusMarshal::FIELDS_ARRAY_ELEMENT_SIGNATURE_OFFSET" ref="gaca36ac2e9b37067279d1bc967793e071" args="" -->
#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusMarshal.html#gaca36ac2e9b37067279d1bc967793e071">FIELDS_ARRAY_ELEMENT_SIGNATURE_OFFSET</a>   7</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Offset from start of _dbus_header_signature_str to the signature of an element of the fields array. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gaa5b7e77f37761139698892e4b8aad029"></a><!-- doxytag: member="DBusMarshal::BYTE_ORDER_OFFSET" ref="gaa5b7e77f37761139698892e4b8aad029" args="" -->
#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusMarshal.html#gaa5b7e77f37761139698892e4b8aad029">BYTE_ORDER_OFFSET</a>   0</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Offset to byte order from start of header. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gaf4fe78df75f4afa2ec63304462614b03"></a><!-- doxytag: member="DBusMarshal::TYPE_OFFSET" ref="gaf4fe78df75f4afa2ec63304462614b03" args="" -->
#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusMarshal.html#gaf4fe78df75f4afa2ec63304462614b03">TYPE_OFFSET</a>   1</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Offset to type from start of header. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga7fe1bac4010cdc7e27de1e19702c071e"></a><!-- doxytag: member="DBusMarshal::FLAGS_OFFSET" ref="ga7fe1bac4010cdc7e27de1e19702c071e" args="" -->
#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusMarshal.html#ga7fe1bac4010cdc7e27de1e19702c071e">FLAGS_OFFSET</a>   2</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Offset to flags from start of header. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga4f04ecce1223b00d263c0accdea144ad"></a><!-- doxytag: member="DBusMarshal::VERSION_OFFSET" ref="ga4f04ecce1223b00d263c0accdea144ad" args="" -->
#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusMarshal.html#ga4f04ecce1223b00d263c0accdea144ad">VERSION_OFFSET</a>   3</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Offset to version from start of header. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga190a2d89e79c9d76fcba4f06ec8b5b5c"></a><!-- doxytag: member="DBusMarshal::BODY_LENGTH_OFFSET" ref="ga190a2d89e79c9d76fcba4f06ec8b5b5c" args="" -->
#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusMarshal.html#ga190a2d89e79c9d76fcba4f06ec8b5b5c">BODY_LENGTH_OFFSET</a>   4</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Offset to body length from start of header. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga4a9c0639714b478a4905cdd6e999b6b3"></a><!-- doxytag: member="DBusMarshal::SERIAL_OFFSET" ref="ga4a9c0639714b478a4905cdd6e999b6b3" args="" -->
#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusMarshal.html#ga4a9c0639714b478a4905cdd6e999b6b3">SERIAL_OFFSET</a>   8</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Offset to client serial from start of header. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gae9759e0de1d8a650f37632c3dc22427e"></a><!-- doxytag: member="DBusMarshal::FIELDS_ARRAY_LENGTH_OFFSET" ref="gae9759e0de1d8a650f37632c3dc22427e" args="" -->
#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusMarshal.html#gae9759e0de1d8a650f37632c3dc22427e">FIELDS_ARRAY_LENGTH_OFFSET</a>   12</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Offset to fields array length from start of header. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gaaa085e57f49f527ef210e842be999929"></a><!-- doxytag: member="DBusMarshal::FIRST_FIELD_OFFSET" ref="gaaa085e57f49f527ef210e842be999929" args="" -->
#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusMarshal.html#gaaa085e57f49f527ef210e842be999929">FIRST_FIELD_OFFSET</a>   16</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Offset to first field in header. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga37be3d294f5be31c95bc7620e451b0b2"></a><!-- doxytag: member="DBusMarshal::EXPECTED_TYPE_OF_FIELD" ref="ga37be3d294f5be31c95bc7620e451b0b2" args="(field)" -->
#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusMarshal.html#ga37be3d294f5be31c95bc7620e451b0b2">EXPECTED_TYPE_OF_FIELD</a>(field)   (_dbus_header_field_types[field].type)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Macro to look up the correct type for a field. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gaa10402f90ea6e004e3b9f04eea34f73c"></a><!-- doxytag: member="DBusMarshal::MAX_POSSIBLE_HEADER_PADDING" ref="gaa10402f90ea6e004e3b9f04eea34f73c" args="" -->
#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusMarshal.html#gaa10402f90ea6e004e3b9f04eea34f73c">MAX_POSSIBLE_HEADER_PADDING</a>   7</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">The most padding we could ever need for a header. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gaef7e86e442aeb887c8bfe5559cd4eabb"></a><!-- doxytag: member="DBusMarshal::HEADER_END_BEFORE_PADDING" ref="gaef7e86e442aeb887c8bfe5559cd4eabb" args="(header)" -->
#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusMarshal.html#gaef7e86e442aeb887c8bfe5559cd4eabb">HEADER_END_BEFORE_PADDING</a>(header)   (<a class="el" href="group__DBusString.html#gaa5136e6fd2c5188f4b88de7863369c6d">_dbus_string_get_length</a> (&(header)->data) - (header)->padding)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Compute the end of the header, ignoring padding. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga2055dc20f1e0c13064cebf1fb65b8ce8"></a><!-- doxytag: member="DBusMarshal::RECURSIVE_MARSHAL_READ_TRACE" ref="ga2055dc20f1e0c13064cebf1fb65b8ce8" args="" -->
#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusMarshal.html#ga2055dc20f1e0c13064cebf1fb65b8ce8">RECURSIVE_MARSHAL_READ_TRACE</a>   0</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">turn this on to get deluged in TypeReader verbose spam <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga428a18f23d9a4c59560f03fd2088fe7f"></a><!-- doxytag: member="DBusMarshal::RECURSIVE_MARSHAL_WRITE_TRACE" ref="ga428a18f23d9a4c59560f03fd2088fe7f" args="" -->
#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusMarshal.html#ga428a18f23d9a4c59560f03fd2088fe7f">RECURSIVE_MARSHAL_WRITE_TRACE</a>   0</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">turn this on to get deluged in TypeWriter verbose spam <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gacca774d24b7d7e790b169f23d3362497"></a><!-- doxytag: member="DBusMarshal::ARRAY_READER_LEN_POS" ref="gacca774d24b7d7e790b169f23d3362497" args="(reader)" -->
#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusMarshal.html#gacca774d24b7d7e790b169f23d3362497">ARRAY_READER_LEN_POS</a>(reader)   ((reader)->u.array.start_pos - ((int)(reader)->array_len_offset) - 4)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">compute position of array length given array_len_offset, which is the offset back from start_pos to end of the len <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusMarshal.html#ga8eb3b26eec8ebfeef410caa4acc9570d">VALID_INITIAL_NAME_CHARACTER</a>(c)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Determine wether the given character is valid as the first character in a name. <a href="#ga8eb3b26eec8ebfeef410caa4acc9570d"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusMarshal.html#ga11d63128bf5c1b7e0164be7072c6c6c7">VALID_NAME_CHARACTER</a>(c)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Determine wether the given character is valid as a second or later character in a name. <a href="#ga11d63128bf5c1b7e0164be7072c6c6c7"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusMarshal.html#ga1ec58a1d7a35131dd81c6eb99b9a2950">VALID_INITIAL_BUS_NAME_CHARACTER</a>(c)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Determine wether the given character is valid as the first character in a bus name. <a href="#ga1ec58a1d7a35131dd81c6eb99b9a2950"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusMarshal.html#ga225bd010fa638c822271047157a880f2">VALID_BUS_NAME_CHARACTER</a>(c)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Determine wether the given character is valid as a second or later character in a bus name. <a href="#ga225bd010fa638c822271047157a880f2"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga6751169d8d53eb2d4b3002ebd9bd021a"></a><!-- doxytag: member="DBusMarshal::_dbus_validate_utf8" ref="ga6751169d8d53eb2d4b3002ebd9bd021a" args="(s, b, e)" -->
#define </td><td class="memItemRight" valign="bottom"><b>_dbus_validate_utf8</b>(s, b, e)   <a class="el" href="group__DBusString.html#ga65f0f04b7c9371406fc87343f691e8da">_dbus_string_validate_utf8</a> (s, b, e)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusMarshal.html#gab17853bba6b5508dc2d1eddad7e40946">DECLARE_DBUS_NAME_CHECK</a>(what)   <a class="el" href="group__DBusTypes.html#ga39c9cb0f3a2a8ad6f55cc4855d035349">dbus_bool_t</a> _dbus_check_is_valid_##what (const char *name)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">A name check is used in _dbus_return_if_fail(), it's not suitable for validating untrusted data. <a href="#gab17853bba6b5508dc2d1eddad7e40946"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusMarshal.html#ga2d30023893c9483413f63d2b8d4e1fb9">DEFINE_DBUS_NAME_CHECK</a>(what)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Define a name check to be used in _dbus_return_if_fail() statements. <a href="#ga2d30023893c9483413f63d2b8d4e1fb9"></a><br/></td></tr>
<tr><td colspan="2"><h2><a name="enum-members"></a>
Enumerations</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom">{ <b>MARSHAL_AS_STRING</b>,
<b>MARSHAL_AS_SIGNATURE</b>,
<b>MARSHAL_AS_BYTE_ARRAY</b>
}</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusMarshal.html#gaf9dce059725fa793c44b219460cbbe6d">DBusValidationMode</a> { <b>DBUS_VALIDATION_MODE_WE_TRUST_THIS_DATA_ABSOLUTELY</b>,
<b>DBUS_VALIDATION_MODE_DATA_IS_UNTRUSTED</b>
}</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">This is used rather than a bool for high visibility. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusMarshal.html#ga0c4521d30d6650a33673a4d7f9cc007c">DBusValidity</a> </td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">This is primarily used in unit testing, so we can verify that each invalid message is invalid for the expected reasons. <a href="group__DBusMarshal.html#ga0c4521d30d6650a33673a4d7f9cc007c">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__DBusMarshal.html#ga44e670d715bb678045f3d79b35920b0b">_dbus_pack_uint32</a> (<a class="el" href="group__DBusTypes.html#gaf513803b030613a669cc7ef199f90a8b">dbus_uint32_t</a> value, int byte_order, unsigned char *data)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Packs a 32 bit unsigned integer into a data pointer. <a href="#ga44e670d715bb678045f3d79b35920b0b"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__DBusTypes.html#ga8132d71032da957f08ce4e0ec87f2063">dbus_uint16_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusMarshal.html#ga09651b41b9a5aca37b0e2ff269880d6a">_dbus_unpack_uint16</a> (int byte_order, const unsigned char *data)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Unpacks a 16 bit unsigned integer from a data pointer. <a href="#ga09651b41b9a5aca37b0e2ff269880d6a"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__DBusTypes.html#gaf513803b030613a669cc7ef199f90a8b">dbus_uint32_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusMarshal.html#ga50a9187b315cfcd6b311ed1b36488c05">_dbus_unpack_uint32</a> (int byte_order, const unsigned char *data)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Unpacks a 32 bit unsigned integer from a data pointer. <a href="#ga50a9187b315cfcd6b311ed1b36488c05"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusMarshal.html#ga4bcfb6a664c7e46c7ffc31f96d532a02">_dbus_marshal_set_uint32</a> (<a class="el" href="structDBusString.html">DBusString</a> *str, int pos, <a class="el" href="group__DBusTypes.html#gaf513803b030613a669cc7ef199f90a8b">dbus_uint32_t</a> value, int byte_order)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Sets the 4 bytes at the given offset to a marshaled unsigned integer, replacing anything found there previously. <a href="#ga4bcfb6a664c7e46c7ffc31f96d532a02"></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__DBusMarshal.html#ga854526bdf221a5e82b2e14581ac17d8f">_dbus_marshal_set_basic</a> (<a class="el" href="structDBusString.html">DBusString</a> *str, int pos, int type, const void *value, int byte_order, int *old_end_pos, int *new_end_pos)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Sets an existing basic type value to a new value. <a href="#ga854526bdf221a5e82b2e14581ac17d8f"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__DBusTypes.html#gaf513803b030613a669cc7ef199f90a8b">dbus_uint32_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusMarshal.html#ga6dd82a202c19758cbf76dbed2946615d">_dbus_marshal_read_uint32</a> (const <a class="el" href="structDBusString.html">DBusString</a> *str, int pos, int byte_order, int *new_pos)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Convenience function to demarshal a 32 bit unsigned integer. <a href="#ga6dd82a202c19758cbf76dbed2946615d"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusMarshal.html#gab331e099fa8cf3d94cf33ad7b20c81ae">_dbus_marshal_read_basic</a> (const <a class="el" href="structDBusString.html">DBusString</a> *str, int pos, int type, void *value, int byte_order, int *new_pos)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Demarshals a basic-typed value. <a href="#gab331e099fa8cf3d94cf33ad7b20c81ae"></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__DBusMarshal.html#ga54323d48921de8c5bd04ae01548312bb">_dbus_marshal_write_basic</a> (<a class="el" href="structDBusString.html">DBusString</a> *str, int insert_at, int type, const void *value, int byte_order, int *pos_after)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Marshals a basic-typed value. <a href="#ga54323d48921de8c5bd04ae01548312bb"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusMarshal.html#gaec86e8e1ae2f25b673ae6d900ab323c7">_dbus_swap_array</a> (unsigned char *data, int n_elements, int alignment)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Swaps the elements of an array to the opposite byte order. <a href="#gaec86e8e1ae2f25b673ae6d900ab323c7"></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__DBusMarshal.html#ga990da87b984d8917da26b89a6470fdf5">_dbus_marshal_write_fixed_multi</a> (<a class="el" href="structDBusString.html">DBusString</a> *str, int insert_at, int element_type, const void *value, int n_elements, int byte_order, int *pos_after)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Marshals a block of values of fixed-length type all at once, as an optimization. <a href="#ga990da87b984d8917da26b89a6470fdf5"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusMarshal.html#gafd1ab7e9bd8e74cc41f03c76f4dce2dd">_dbus_marshal_skip_basic</a> (const <a class="el" href="structDBusString.html">DBusString</a> *str, int type, int byte_order, int *pos)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Skips over a basic-typed value, reporting the following position. <a href="#gafd1ab7e9bd8e74cc41f03c76f4dce2dd"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusMarshal.html#ga8d9c5bcc039d9099df197a125a7259b8">_dbus_marshal_skip_array</a> (const <a class="el" href="structDBusString.html">DBusString</a> *str, int element_type, int byte_order, int *pos)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Skips an array, returning the next position. <a href="#ga8d9c5bcc039d9099df197a125a7259b8"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusMarshal.html#ga2ba80f227880e442c140bc67653b0abd">_dbus_type_get_alignment</a> (int typecode)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Gets the alignment requirement for the given type; will be 1, 4, or 8. <a href="#ga2ba80f227880e442c140bc67653b0abd"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">const char * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusMarshal.html#ga48a595c2b26dce6e9c25ce040e5247e5">_dbus_type_to_string</a> (int typecode)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns a string describing the given type. <a href="#ga48a595c2b26dce6e9c25ce040e5247e5"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusMarshal.html#ga7f3320a0b0f7633cdf5c149588ae9bd9">_dbus_verbose_bytes</a> (const unsigned char *data, int len, int offset)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">If in verbose mode, print a block of binary data. <a href="#ga7f3320a0b0f7633cdf5c149588ae9bd9"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusMarshal.html#ga3926bb35edf78d114cf0c341fe3258e0">_dbus_verbose_bytes_of_string</a> (const <a class="el" href="structDBusString.html">DBusString</a> *str, int start, int len)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Dump the given part of the string to verbose log. <a href="#ga3926bb35edf78d114cf0c341fe3258e0"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusMarshal.html#ga5866a0fd058aed3396402d0456144fd2">_dbus_first_type_in_signature</a> (const <a class="el" href="structDBusString.html">DBusString</a> *str, int pos)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Get the first type in the signature. <a href="#ga5866a0fd058aed3396402d0456144fd2"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusMarshal.html#ga61cc8d9c4e4217be654455d8eb45544c">_dbus_first_type_in_signature_c_str</a> (const char *str, int pos)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Similar to <a class="el" href="group__DBusMarshal.html#ga5866a0fd058aed3396402d0456144fd2" title="Get the first type in the signature.">_dbus_first_type_in_signature</a>, but operates on a C string buffer. <a href="#ga61cc8d9c4e4217be654455d8eb45544c"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusMarshal.html#ga609a4b8c0b65096890766fda73a4c40f">_dbus_marshal_byteswap</a> (const <a class="el" href="structDBusString.html">DBusString</a> *signature, int signature_start, int old_byte_order, int new_byte_order, <a class="el" href="structDBusString.html">DBusString</a> *value_str, int value_pos)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Byteswaps the marshaled data in the given value_str. <a href="#ga609a4b8c0b65096890766fda73a4c40f"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gab49ca4819ef45b26463427bb09060844"></a><!-- doxytag: member="DBusMarshal::_DBUS_STRING_DEFINE_STATIC" ref="gab49ca4819ef45b26463427bb09060844" args="(_dbus_header_signature_str, DBUS_HEADER_SIGNATURE)" -->
 </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusMarshal.html#gab49ca4819ef45b26463427bb09060844">_DBUS_STRING_DEFINE_STATIC</a> (_dbus_header_signature_str, <a class="el" href="group__DBusProtocol.html#ga82e39a6508e551fb14c7bdbb17590cc6">DBUS_HEADER_SIGNATURE</a>)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Static <a class="el" href="structDBusString.html">DBusString</a> containing the signature of a message header. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga4d454446fbca28c07187eb8bb627f70b"></a><!-- doxytag: member="DBusMarshal::_DBUS_STRING_DEFINE_STATIC" ref="ga4d454446fbca28c07187eb8bb627f70b" args="(_dbus_local_interface_str, DBUS_INTERFACE_LOCAL)" -->
 </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusMarshal.html#ga4d454446fbca28c07187eb8bb627f70b">_DBUS_STRING_DEFINE_STATIC</a> (_dbus_local_interface_str, <a class="el" href="group__DBusShared.html#ga9ef6478aae637449ec0c5de1679f75ce">DBUS_INTERFACE_LOCAL</a>)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Static <a class="el" href="structDBusString.html">DBusString</a> containing the local interface. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga991dd170f3d84b4bf195caf3a1046d28"></a><!-- doxytag: member="DBusMarshal::_DBUS_STRING_DEFINE_STATIC" ref="ga991dd170f3d84b4bf195caf3a1046d28" args="(_dbus_local_path_str, DBUS_PATH_LOCAL)" -->
 </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusMarshal.html#ga991dd170f3d84b4bf195caf3a1046d28">_DBUS_STRING_DEFINE_STATIC</a> (_dbus_local_path_str, <a class="el" href="group__DBusShared.html#ga850990a54a46142ee7c5f8174cc932c1">DBUS_PATH_LOCAL</a>)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Static <a class="el" href="structDBusString.html">DBusString</a> containing the local path. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">char </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusMarshal.html#ga65c023673b837c27e8ccda5c2528d806">_dbus_header_get_byte_order</a> (const <a class="el" href="structDBusHeader.html">DBusHeader</a> *header)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the header's byte order. <a href="#ga65c023673b837c27e8ccda5c2528d806"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusMarshal.html#ga4427247494fc5c988498c5a87d42092d">_dbus_header_get_message_type</a> (<a class="el" href="structDBusHeader.html">DBusHeader</a> *header)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Gets the type of the message. <a href="#ga4427247494fc5c988498c5a87d42092d"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusMarshal.html#gad92e0b1992cf96a4da642a4a54a5d26d">_dbus_header_set_serial</a> (<a class="el" href="structDBusHeader.html">DBusHeader</a> *header, <a class="el" href="group__DBusTypes.html#gaf513803b030613a669cc7ef199f90a8b">dbus_uint32_t</a> serial)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Sets the serial number of a header. <a href="#gad92e0b1992cf96a4da642a4a54a5d26d"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__DBusTypes.html#gaf513803b030613a669cc7ef199f90a8b">dbus_uint32_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusMarshal.html#ga7ec7222423db42935aae4a24499ee0fb">_dbus_header_get_serial</a> (<a class="el" href="structDBusHeader.html">DBusHeader</a> *header)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">See <a class="el" href="group__DBusMessage.html#ga390710c25564c80025a006c376da2030" title="Returns the serial of a message or 0 if none has been specified.">dbus_message_get_serial()</a> <a href="#ga7ec7222423db42935aae4a24499ee0fb"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusMarshal.html#ga6d41ad4de211c87f4b8a43340b6893e2">_dbus_header_reinit</a> (<a class="el" href="structDBusHeader.html">DBusHeader</a> *header)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Re-initializes a header that was previously initialized and never freed. <a href="#ga6d41ad4de211c87f4b8a43340b6893e2"></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__DBusMarshal.html#gabe1b78193d712976734a39d35842f033">_dbus_header_init</a> (<a class="el" href="structDBusHeader.html">DBusHeader</a> *header)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Initializes a header, but doesn't prepare it for use; to make the header valid, you have to call <a class="el" href="group__DBusMarshal.html#gac7901e4196f10d4763df89b42d5db03e" title="Fills in the primary fields of the header, so the header is ready for use.">_dbus_header_create()</a>. <a href="#gabe1b78193d712976734a39d35842f033"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusMarshal.html#gab90a814a27aeeace7e02c4ed130539cf">_dbus_header_free</a> (<a class="el" href="structDBusHeader.html">DBusHeader</a> *header)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Frees a header. <a href="#gab90a814a27aeeace7e02c4ed130539cf"></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__DBusMarshal.html#ga0d5aad82f8bf5a314dcf3f70930e254b">_dbus_header_copy</a> (const <a class="el" href="structDBusHeader.html">DBusHeader</a> *header, <a class="el" href="structDBusHeader.html">DBusHeader</a> *dest)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Initializes dest with a copy of the given header. <a href="#ga0d5aad82f8bf5a314dcf3f70930e254b"></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__DBusMarshal.html#gac7901e4196f10d4763df89b42d5db03e">_dbus_header_create</a> (<a class="el" href="structDBusHeader.html">DBusHeader</a> *header, int byte_order, int message_type, const char *destination, const char *path, const char *interface, const char *member, const char *error_name)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Fills in the primary fields of the header, so the header is ready for use. <a href="#gac7901e4196f10d4763df89b42d5db03e"></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__DBusMarshal.html#ga674d74081baf6e7531e0d4a286724210">_dbus_header_have_message_untrusted</a> (int max_message_length, <a class="el" href="group__DBusMarshal.html#ga0c4521d30d6650a33673a4d7f9cc007c">DBusValidity</a> *validity, int *byte_order, int *fields_array_len, int *header_len, int *body_len, const <a class="el" href="structDBusString.html">DBusString</a> *str, int start, int len)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Given data long enough to contain the length of the message body and the fields array, check whether the data is long enough to contain the entire message (assuming the claimed lengths are accurate). <a href="#ga674d74081baf6e7531e0d4a286724210"></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__DBusMarshal.html#ga0c3a3f95d9a53b91a0cd0b260196685b">_dbus_header_load</a> (<a class="el" href="structDBusHeader.html">DBusHeader</a> *header, <a class="el" href="group__DBusMarshal.html#gaf9dce059725fa793c44b219460cbbe6d">DBusValidationMode</a> mode, <a class="el" href="group__DBusMarshal.html#ga0c4521d30d6650a33673a4d7f9cc007c">DBusValidity</a> *validity, int byte_order, int fields_array_len, int header_len, int body_len, const <a class="el" href="structDBusString.html">DBusString</a> *str, int start, int len)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Creates a message header from potentially-untrusted data. <a href="#ga0c3a3f95d9a53b91a0cd0b260196685b"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusMarshal.html#ga0cff04252f97f6a25552c368199897f5">_dbus_header_update_lengths</a> (<a class="el" href="structDBusHeader.html">DBusHeader</a> *header, int body_len)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Fills in the correct body length. <a href="#ga0cff04252f97f6a25552c368199897f5"></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__DBusMarshal.html#ga4349de00b7754a337526e36fda133464">_dbus_header_set_field_basic</a> (<a class="el" href="structDBusHeader.html">DBusHeader</a> *header, int field, int type, const void *value)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Sets the value of a field with basic type. <a href="#ga4349de00b7754a337526e36fda133464"></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__DBusMarshal.html#ga499973a18dcb17d854eaf14101a66736">_dbus_header_get_field_basic</a> (<a class="el" href="structDBusHeader.html">DBusHeader</a> *header, int field, int type, void *value)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Gets the value of a field with basic type. <a href="#ga499973a18dcb17d854eaf14101a66736"></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__DBusMarshal.html#gaf4661ba8e7067f349ba03c9f5776bbb0">_dbus_header_get_field_raw</a> (<a class="el" href="structDBusHeader.html">DBusHeader</a> *header, int field, const <a class="el" href="structDBusString.html">DBusString</a> **str, int *pos)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Gets the raw marshaled data for a field. <a href="#gaf4661ba8e7067f349ba03c9f5776bbb0"></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__DBusMarshal.html#ga7814248f4d74d109d29dc00487cd9b0c">_dbus_header_delete_field</a> (<a class="el" href="structDBusHeader.html">DBusHeader</a> *header, int field)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Deletes a field, if it exists. <a href="#ga7814248f4d74d109d29dc00487cd9b0c"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusMarshal.html#gad2073f8f2f2ba3b710aa929dced34cc3">_dbus_header_toggle_flag</a> (<a class="el" href="structDBusHeader.html">DBusHeader</a> *header, <a class="el" href="group__DBusTypes.html#gaf513803b030613a669cc7ef199f90a8b">dbus_uint32_t</a> flag, <a class="el" href="group__DBusTypes.html#ga39c9cb0f3a2a8ad6f55cc4855d035349">dbus_bool_t</a> value)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Toggles a message flag bit, turning on the bit if value = TRUE and flipping it off if value = FALSE. <a href="#gad2073f8f2f2ba3b710aa929dced34cc3"></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__DBusMarshal.html#ga56619efed3088554b8760edd246b4157">_dbus_header_get_flag</a> (<a class="el" href="structDBusHeader.html">DBusHeader</a> *header, <a class="el" href="group__DBusTypes.html#gaf513803b030613a669cc7ef199f90a8b">dbus_uint32_t</a> flag)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Gets a message flag bit, returning TRUE if the bit is set. <a href="#ga56619efed3088554b8760edd246b4157"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusMarshal.html#gae5277c7b7bfb7b85e421baceac0398c8">_dbus_header_byteswap</a> (<a class="el" href="structDBusHeader.html">DBusHeader</a> *header, int new_order)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Swaps the header into the given order if required. <a href="#gae5277c7b7bfb7b85e421baceac0398c8"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusMarshal.html#gaf2f5b2f027fa7d24f6179c6dbdf71a83">_dbus_type_signature_next</a> (const char *type_str, int *type_pos)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Skips to the next "complete" type inside a type signature. <a href="#gaf2f5b2f027fa7d24f6179c6dbdf71a83"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusMarshal.html#ga35d70cf69b1196518367e3e68e9b2dd2">_dbus_type_reader_init</a> (<a class="el" href="structDBusTypeReader.html">DBusTypeReader</a> *reader, int byte_order, const <a class="el" href="structDBusString.html">DBusString</a> *type_str, int type_pos, const <a class="el" href="structDBusString.html">DBusString</a> *value_str, int value_pos)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Initializes a type reader. <a href="#ga35d70cf69b1196518367e3e68e9b2dd2"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusMarshal.html#ga3a5845f555f11c33ebaa71a75abff661">_dbus_type_reader_init_types_only</a> (<a class="el" href="structDBusTypeReader.html">DBusTypeReader</a> *reader, const <a class="el" href="structDBusString.html">DBusString</a> *type_str, int type_pos)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Like <a class="el" href="group__DBusMarshal.html#ga35d70cf69b1196518367e3e68e9b2dd2" title="Initializes a type reader.">_dbus_type_reader_init()</a> but the iteration is over the signature, not over values. <a href="#ga3a5845f555f11c33ebaa71a75abff661"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusMarshal.html#gab8e39cb8084247d54d7f272c51622a73">_dbus_type_reader_get_current_type</a> (const <a class="el" href="structDBusTypeReader.html">DBusTypeReader</a> *reader)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Gets the type of the value the reader is currently pointing to; or for a types-only reader gets the type it's currently pointing to. <a href="#gab8e39cb8084247d54d7f272c51622a73"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusMarshal.html#ga6e5439f7ca5ee8a1ce943ddab7611d0d">_dbus_type_reader_get_element_type</a> (const <a class="el" href="structDBusTypeReader.html">DBusTypeReader</a> *reader)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Gets the type of an element of the array the reader is currently pointing to. <a href="#ga6e5439f7ca5ee8a1ce943ddab7611d0d"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusMarshal.html#ga2a8ab1152821950b1fe29e000954981c">_dbus_type_reader_get_value_pos</a> (const <a class="el" href="structDBusTypeReader.html">DBusTypeReader</a> *reader)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Gets the current position in the value block. <a href="#ga2a8ab1152821950b1fe29e000954981c"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusMarshal.html#gac87315d74386314ec3b148ef737626d2">_dbus_type_reader_read_raw</a> (const <a class="el" href="structDBusTypeReader.html">DBusTypeReader</a> *reader, const unsigned char **value_location)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Get the address of the marshaled value in the data being read. <a href="#gac87315d74386314ec3b148ef737626d2"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusMarshal.html#gaa54355ee98d6721d7a29b5ae7d92eb9a">_dbus_type_reader_read_basic</a> (const <a class="el" href="structDBusTypeReader.html">DBusTypeReader</a> *reader, void *value)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Reads a basic-typed value, as with <a class="el" href="group__DBusMarshal.html#gab331e099fa8cf3d94cf33ad7b20c81ae" title="Demarshals a basic-typed value.">_dbus_marshal_read_basic()</a>. <a href="#gaa54355ee98d6721d7a29b5ae7d92eb9a"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusMarshal.html#ga7def93d676d528c261aa274cea41c29d">_dbus_type_reader_get_array_length</a> (const <a class="el" href="structDBusTypeReader.html">DBusTypeReader</a> *reader)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the number of bytes in the array. <a href="#ga7def93d676d528c261aa274cea41c29d"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusMarshal.html#gae9a65c05e58ace9c83352f65af2fe745">_dbus_type_reader_read_fixed_multi</a> (const <a class="el" href="structDBusTypeReader.html">DBusTypeReader</a> *reader, void *value, int *n_elements)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Reads a block of fixed-length basic values, from the current point in an array to the end of the array. <a href="#gae9a65c05e58ace9c83352f65af2fe745"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusMarshal.html#ga082b410820c74b2a6ca816a8e0c91803">_dbus_type_reader_recurse</a> (<a class="el" href="structDBusTypeReader.html">DBusTypeReader</a> *reader, <a class="el" href="structDBusTypeReader.html">DBusTypeReader</a> *sub)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Initialize a new reader pointing to the first type and corresponding value that's a child of the current container. <a href="#ga082b410820c74b2a6ca816a8e0c91803"></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__DBusMarshal.html#ga746c09512d4905f2d2fac7ed4c3c63c2">_dbus_type_reader_next</a> (<a class="el" href="structDBusTypeReader.html">DBusTypeReader</a> *reader)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Skip to the next value on this "level". <a href="#ga746c09512d4905f2d2fac7ed4c3c63c2"></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__DBusMarshal.html#ga97a59dbd1597ef1b267457e809f095de">_dbus_type_reader_has_next</a> (const <a class="el" href="structDBusTypeReader.html">DBusTypeReader</a> *reader)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Check whether there's another value on this "level". <a href="#ga97a59dbd1597ef1b267457e809f095de"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusMarshal.html#ga4578cc623c8b0978ca780ce0ab950fdb">_dbus_type_reader_get_signature</a> (const <a class="el" href="structDBusTypeReader.html">DBusTypeReader</a> *reader, const <a class="el" href="structDBusString.html">DBusString</a> **str_p, int *start_p, int *len_p)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Gets the string and range of said string containing the signature of the current value. <a href="#ga4578cc623c8b0978ca780ce0ab950fdb"></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__DBusMarshal.html#gaaf11ca429434c2c280f5fad34ed95204">_dbus_type_reader_set_basic</a> (<a class="el" href="structDBusTypeReader.html">DBusTypeReader</a> *reader, const void *value, const <a class="el" href="structDBusTypeReader.html">DBusTypeReader</a> *realign_root)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Sets a new value for the basic type value pointed to by the reader, leaving the reader valid to continue reading. <a href="#gaaf11ca429434c2c280f5fad34ed95204"></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__DBusMarshal.html#gaa4057610b3d9e81fed212c17f6599516">_dbus_type_reader_delete</a> (<a class="el" href="structDBusTypeReader.html">DBusTypeReader</a> *reader, const <a class="el" href="structDBusTypeReader.html">DBusTypeReader</a> *realign_root)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Recursively deletes any value pointed to by the reader, leaving the reader valid to continue reading. <a href="#gaa4057610b3d9e81fed212c17f6599516"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusMarshal.html#gadeb83962df31e074874e957d17a0d4d1">_dbus_type_writer_init</a> (<a class="el" href="structDBusTypeWriter.html">DBusTypeWriter</a> *writer, int byte_order, <a class="el" href="structDBusString.html">DBusString</a> *type_str, int type_pos, <a class="el" href="structDBusString.html">DBusString</a> *value_str, int value_pos)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Initialize a write iterator, which is used to write out values in serialized D-Bus format. <a href="#gadeb83962df31e074874e957d17a0d4d1"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusMarshal.html#gaa9ecf7e96d5323bc1da9cdf0c3f2c1e7">_dbus_type_writer_init_types_delayed</a> (<a class="el" href="structDBusTypeWriter.html">DBusTypeWriter</a> *writer, int byte_order, <a class="el" href="structDBusString.html">DBusString</a> *value_str, int value_pos)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Initialize a write iterator, with the signature to be provided later. <a href="#gaa9ecf7e96d5323bc1da9cdf0c3f2c1e7"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusMarshal.html#ga863b2f232a21582f9e6fe1951b09da91">_dbus_type_writer_add_types</a> (<a class="el" href="structDBusTypeWriter.html">DBusTypeWriter</a> *writer, <a class="el" href="structDBusString.html">DBusString</a> *type_str, int type_pos)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Adds type string to the writer, if it had none. <a href="#ga863b2f232a21582f9e6fe1951b09da91"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusMarshal.html#ga34d675b57c7e6569707d22ba76ae010c">_dbus_type_writer_remove_types</a> (<a class="el" href="structDBusTypeWriter.html">DBusTypeWriter</a> *writer)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Removes type string from the writer. <a href="#ga34d675b57c7e6569707d22ba76ae010c"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusMarshal.html#ga1f101175ce6f33221fcb59f0b46349bd">_dbus_type_writer_init_values_only</a> (<a class="el" href="structDBusTypeWriter.html">DBusTypeWriter</a> *writer, int byte_order, const <a class="el" href="structDBusString.html">DBusString</a> *type_str, int type_pos, <a class="el" href="structDBusString.html">DBusString</a> *value_str, int value_pos)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Like <a class="el" href="group__DBusMarshal.html#gadeb83962df31e074874e957d17a0d4d1" title="Initialize a write iterator, which is used to write out values in serialized D-Bus format...">_dbus_type_writer_init()</a>, except the type string passed in should correspond to an existing signature that matches what you're going to write out. <a href="#ga1f101175ce6f33221fcb59f0b46349bd"></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__DBusMarshal.html#ga4c0a1036e59dac270141052d951baff2">_dbus_type_writer_recurse</a> (<a class="el" href="structDBusTypeWriter.html">DBusTypeWriter</a> *writer, int container_type, const <a class="el" href="structDBusString.html">DBusString</a> *contained_type, int contained_type_start, <a class="el" href="structDBusTypeWriter.html">DBusTypeWriter</a> *sub)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Opens a new container and writes out the initial information for that container. <a href="#ga4c0a1036e59dac270141052d951baff2"></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__DBusMarshal.html#gacc2b4c348f93898f6269feb0bf055617">_dbus_type_writer_append_array</a> (<a class="el" href="structDBusTypeWriter.html">DBusTypeWriter</a> *writer, const <a class="el" href="structDBusString.html">DBusString</a> *contained_type, int contained_type_start, <a class="el" href="structDBusTypeWriter.html">DBusTypeWriter</a> *sub)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Append to an existing array. <a href="#gacc2b4c348f93898f6269feb0bf055617"></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__DBusMarshal.html#gacbe7eddf4f9c19da91b742087fcc111a">_dbus_type_writer_unrecurse</a> (<a class="el" href="structDBusTypeWriter.html">DBusTypeWriter</a> *writer, <a class="el" href="structDBusTypeWriter.html">DBusTypeWriter</a> *sub)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Closes a container created by <a class="el" href="group__DBusMarshal.html#ga4c0a1036e59dac270141052d951baff2" title="Opens a new container and writes out the initial information for that container.">_dbus_type_writer_recurse()</a> and writes any additional information to the values block. <a href="#gacbe7eddf4f9c19da91b742087fcc111a"></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__DBusMarshal.html#ga0103b0214766b0ff1ca05bcc7f1e631b">_dbus_type_writer_write_basic</a> (<a class="el" href="structDBusTypeWriter.html">DBusTypeWriter</a> *writer, int type, const void *value)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Writes out a basic type. <a href="#ga0103b0214766b0ff1ca05bcc7f1e631b"></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__DBusMarshal.html#gacf99495cbed7462992b6a231563b4528">_dbus_type_writer_write_fixed_multi</a> (<a class="el" href="structDBusTypeWriter.html">DBusTypeWriter</a> *writer, int element_type, const void *value, int n_elements)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Writes a block of fixed-length basic values, i.e. <a href="#gacf99495cbed7462992b6a231563b4528"></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__DBusMarshal.html#ga4905750705d220efe9dfc71f49bedc11">_dbus_type_writer_write_reader</a> (<a class="el" href="structDBusTypeWriter.html">DBusTypeWriter</a> *writer, <a class="el" href="structDBusTypeReader.html">DBusTypeReader</a> *reader)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Iterate through all values in the given reader, writing a copy of each value to the writer. <a href="#ga4905750705d220efe9dfc71f49bedc11"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__DBusMarshal.html#ga0c4521d30d6650a33673a4d7f9cc007c">DBusValidity</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusMarshal.html#ga42e50826b5cf62921728432a8e35292c">_dbus_validate_signature_with_reason</a> (const <a class="el" href="structDBusString.html">DBusString</a> *type_str, int type_pos, int len)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Verifies that the range of type_str from type_pos to type_end is a valid signature. <a href="#ga42e50826b5cf62921728432a8e35292c"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__DBusMarshal.html#ga0c4521d30d6650a33673a4d7f9cc007c">DBusValidity</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusMarshal.html#gae997884ec8091aacb5492c2b5a7eaef9">_dbus_validate_body_with_reason</a> (const <a class="el" href="structDBusString.html">DBusString</a> *expected_signature, int expected_signature_start, int byte_order, int *bytes_remaining, const <a class="el" href="structDBusString.html">DBusString</a> *value_str, int value_pos, int len)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Verifies that the range of value_str from value_pos to value_end is a legitimate value of type expected_signature. <a href="#gae997884ec8091aacb5492c2b5a7eaef9"></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__DBusMarshal.html#ga616ba4a0280b10222930aedadb7ea8d9">_dbus_validate_path</a> (const <a class="el" href="structDBusString.html">DBusString</a> *str, int start, int len)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Checks that the given range of the string is a valid object path name in the D-Bus protocol. <a href="#ga616ba4a0280b10222930aedadb7ea8d9"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gaf556cf614f291d931deb07fdeb74369f"></a><!-- doxytag: member="DBusMarshal::_dbus_validity_to_error_message" ref="gaf556cf614f291d931deb07fdeb74369f" args="(DBusValidity validity)" -->
const char * </td><td class="memItemRight" valign="bottom"><b>_dbus_validity_to_error_message</b> (<a class="el" href="group__DBusMarshal.html#ga0c4521d30d6650a33673a4d7f9cc007c">DBusValidity</a> validity)</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__DBusMarshal.html#ga0ad919783f887a9b6f428e262beaeed9">_dbus_validate_interface</a> (const <a class="el" href="structDBusString.html">DBusString</a> *str, int start, int len)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Checks that the given range of the string is a valid interface name in the D-Bus protocol. <a href="#ga0ad919783f887a9b6f428e262beaeed9"></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__DBusMarshal.html#gaf647272768029cb23a4e0d3f493587da">_dbus_validate_member</a> (const <a class="el" href="structDBusString.html">DBusString</a> *str, int start, int len)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Checks that the given range of the string is a valid member name in the D-Bus protocol. <a href="#gaf647272768029cb23a4e0d3f493587da"></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__DBusMarshal.html#ga6d8075f3b60e2e71aad061aa44b120fe">_dbus_validate_error_name</a> (const <a class="el" href="structDBusString.html">DBusString</a> *str, int start, int len)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Checks that the given range of the string is a valid error name in the D-Bus protocol. <a href="#ga6d8075f3b60e2e71aad061aa44b120fe"></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__DBusMarshal.html#gaab91a04fa2a96b8ce8843beae7327cd0">_dbus_validate_bus_name</a> (const <a class="el" href="structDBusString.html">DBusString</a> *str, int start, int len)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Checks that the given range of the string is a valid bus name in the D-Bus protocol. <a href="#gaab91a04fa2a96b8ce8843beae7327cd0"></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__DBusMarshal.html#ga0d034ebf7eb41cede67c86757ce22261">_dbus_validate_bus_namespace</a> (const <a class="el" href="structDBusString.html">DBusString</a> *str, int start, int len)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Checks that the given range of the string is a prefix of a valid bus name in the D-Bus protocol. <a href="#ga0d034ebf7eb41cede67c86757ce22261"></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__DBusMarshal.html#ga8d7aa58f6484d5d24f275dd65f101676">_dbus_validate_signature</a> (const <a class="el" href="structDBusString.html">DBusString</a> *str, int start, int len)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Checks that the given range of the string is a valid message type signature in the D-Bus protocol. <a href="#ga8d7aa58f6484d5d24f275dd65f101676"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gafc52be1357121d1ba57d2b381ce3bd33"></a><!-- doxytag: member="DBusMarshal::DECLARE_DBUS_NAME_CHECK" ref="gafc52be1357121d1ba57d2b381ce3bd33" args="(path)" -->
 </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusMarshal.html#gafc52be1357121d1ba57d2b381ce3bd33">DECLARE_DBUS_NAME_CHECK</a> (path)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">defines _dbus_check_is_valid_path() <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga540ccb97245861b105db0066245957be"></a><!-- doxytag: member="DBusMarshal::DECLARE_DBUS_NAME_CHECK" ref="ga540ccb97245861b105db0066245957be" args="(interface)" -->
 </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusMarshal.html#ga540ccb97245861b105db0066245957be">DECLARE_DBUS_NAME_CHECK</a> (interface)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">defines _dbus_check_is_valid_interface() <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gabc341dacc35d8243ed6350646bf8e685"></a><!-- doxytag: member="DBusMarshal::DECLARE_DBUS_NAME_CHECK" ref="gabc341dacc35d8243ed6350646bf8e685" args="(member)" -->
 </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusMarshal.html#gabc341dacc35d8243ed6350646bf8e685">DECLARE_DBUS_NAME_CHECK</a> (member)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">defines _dbus_check_is_valid_member() <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gac396456d8607c59950426c253f7f2b06"></a><!-- doxytag: member="DBusMarshal::DECLARE_DBUS_NAME_CHECK" ref="gac396456d8607c59950426c253f7f2b06" args="(error_name)" -->
 </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusMarshal.html#gac396456d8607c59950426c253f7f2b06">DECLARE_DBUS_NAME_CHECK</a> (error_name)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">defines _dbus_check_is_valid_error_name() <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga1389b299c4eeeb226d819c0c97d51e5b"></a><!-- doxytag: member="DBusMarshal::DECLARE_DBUS_NAME_CHECK" ref="ga1389b299c4eeeb226d819c0c97d51e5b" args="(bus_name)" -->
 </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusMarshal.html#ga1389b299c4eeeb226d819c0c97d51e5b">DECLARE_DBUS_NAME_CHECK</a> (bus_name)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">defines _dbus_check_is_valid_bus_name() <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga0b23332725bff9dfa7cec49603cfb149"></a><!-- doxytag: member="DBusMarshal::DECLARE_DBUS_NAME_CHECK" ref="ga0b23332725bff9dfa7cec49603cfb149" args="(signature)" -->
 </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusMarshal.html#ga0b23332725bff9dfa7cec49603cfb149">DECLARE_DBUS_NAME_CHECK</a> (signature)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">defines _dbus_check_is_valid_signature() <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gaef0b21f97857a0333d84b84f4d98a7da"></a><!-- doxytag: member="DBusMarshal::DECLARE_DBUS_NAME_CHECK" ref="gaef0b21f97857a0333d84b84f4d98a7da" args="(utf8)" -->
 </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusMarshal.html#gaef0b21f97857a0333d84b84f4d98a7da">DECLARE_DBUS_NAME_CHECK</a> (utf8)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">defines _dbus_check_is_valid_utf8() <br/></td></tr>
</table>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
<p>functions to marshal/unmarshal data from the wire </p>
<p>Types and functions related to converting primitive data types from wire format to native machine format, and vice versa.</p>
<p>A signature is just a string with multiple types one after the other. for example a type is "i" or "(ii)", a signature is "i(ii)" where i is int and (ii) is struct { int; int; } </p>
<hr/><h2>Define Documentation</h2>
<a class="anchor" id="gab17853bba6b5508dc2d1eddad7e40946"></a><!-- doxytag: member="dbus-marshal-validate.h::DECLARE_DBUS_NAME_CHECK" ref="gab17853bba6b5508dc2d1eddad7e40946" args="(what)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define <a class="el" href="group__DBusMarshal.html#gaef0b21f97857a0333d84b84f4d98a7da">DECLARE_DBUS_NAME_CHECK</a></td>
<td>(</td>
<td class="paramtype"> </td>
<td class="paramname">what</td><td>)</td>
<td>   <a class="el" href="group__DBusTypes.html#ga39c9cb0f3a2a8ad6f55cc4855d035349">dbus_bool_t</a> _dbus_check_is_valid_##what (const char *name)</td>
</tr>
</table>
</div>
<div class="memdoc">
<p>A name check is used in _dbus_return_if_fail(), it's not suitable for validating untrusted data. </p>
<p>use _dbus_validate_whatever for that. </p>
<p>Definition at line <a class="el" href="dbus-marshal-validate_8h_source.html#l00169">169</a> of file <a class="el" href="dbus-marshal-validate_8h_source.html">dbus-marshal-validate.h</a>.</p>
</div>
</div>
<a class="anchor" id="ga2d30023893c9483413f63d2b8d4e1fb9"></a><!-- doxytag: member="dbus-marshal-validate.h::DEFINE_DBUS_NAME_CHECK" ref="ga2d30023893c9483413f63d2b8d4e1fb9" args="(what)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define <a class="el" href="group__DBusMarshal.html#ga2d30023893c9483413f63d2b8d4e1fb9">DEFINE_DBUS_NAME_CHECK</a></td>
<td>(</td>
<td class="paramtype"> </td>
<td class="paramname">what</td><td>)</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<b>Value:</b><div class="fragment"><pre class="fragment">dbus_bool_t \
_dbus_check_is_valid_##what (<span class="keyword">const</span> <span class="keywordtype">char</span> *name) \
{ \
DBusString str; \
\
if (name == <a class="code" href="group__DBusMacros.html#ga070d2ce7b6bb7e5c05602aa8c308d0c4" title="A null pointer, defined appropriately for C or C++.">NULL</a>) \
return <a class="code" href="group__DBusMacros.html#gaa93f0eb578d23995850d61f7d61c55c1" title="Expands to "0".">FALSE</a>; <a class="code" href="group__DBusString.html#ga374640ddfa2f0b27a8356e2379ba8043" title="Initializes a constant string.">\</a>
<a class="code" href="group__DBusString.html#ga374640ddfa2f0b27a8356e2379ba8043" title="Initializes a constant string."> \</a>
<a class="code" href="group__DBusString.html#ga374640ddfa2f0b27a8356e2379ba8043" title="Initializes a constant string."> _dbus_string_init_const</a> (&str, name); \
return _dbus_validate_##what (&str, 0, \
<a class="code" href="group__DBusString.html#gaa5136e6fd2c5188f4b88de7863369c6d" title="Gets the length of a string (not including nul termination).">_dbus_string_get_length</a> (&str)); \
}
</pre></div>
<p>Define a name check to be used in _dbus_return_if_fail() statements. </p>
<p>Definition at line <a class="el" href="dbus-marshal-validate_8h_source.html#l00174">174</a> of file <a class="el" href="dbus-marshal-validate_8h_source.html">dbus-marshal-validate.h</a>.</p>
</div>
</div>
<a class="anchor" id="ga225bd010fa638c822271047157a880f2"></a><!-- doxytag: member="dbus-marshal-validate.c::VALID_BUS_NAME_CHARACTER" ref="ga225bd010fa638c822271047157a880f2" args="(c)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define <a class="el" href="group__DBusMarshal.html#ga225bd010fa638c822271047157a880f2">VALID_BUS_NAME_CHARACTER</a></td>
<td>(</td>
<td class="paramtype"> </td>
<td class="paramname">c</td><td>)</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<b>Value:</b><div class="fragment"><pre class="fragment">( ((c) >= <span class="charliteral">'0'</span> && (c) <= <span class="charliteral">'9'</span>) || \
((c) >= <span class="charliteral">'A'</span> && (c) <= <span class="charliteral">'Z'</span>) || \
((c) >= <span class="charliteral">'a'</span> && (c) <= <span class="charliteral">'z'</span>) || \
((c) == <span class="charliteral">'_'</span>) || ((c) == <span class="charliteral">'-'</span>))
</pre></div>
<p>Determine wether the given character is valid as a second or later character in a bus name. </p>
<p>Definition at line <a class="el" href="dbus-marshal-validate_8c_source.html#l01079">1079</a> of file <a class="el" href="dbus-marshal-validate_8c_source.html">dbus-marshal-validate.c</a>.</p>
</div>
</div>
<a class="anchor" id="ga1ec58a1d7a35131dd81c6eb99b9a2950"></a><!-- doxytag: member="dbus-marshal-validate.c::VALID_INITIAL_BUS_NAME_CHARACTER" ref="ga1ec58a1d7a35131dd81c6eb99b9a2950" args="(c)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define <a class="el" href="group__DBusMarshal.html#ga1ec58a1d7a35131dd81c6eb99b9a2950">VALID_INITIAL_BUS_NAME_CHARACTER</a></td>
<td>(</td>
<td class="paramtype"> </td>
<td class="paramname">c</td><td>)</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<b>Value:</b><div class="fragment"><pre class="fragment">( ((c) >= <span class="charliteral">'A'</span> && (c) <= <span class="charliteral">'Z'</span>) || \
((c) >= <span class="charliteral">'a'</span> && (c) <= <span class="charliteral">'z'</span>) || \
((c) == <span class="charliteral">'_'</span>) || ((c) == <span class="charliteral">'-'</span>))
</pre></div>
<p>Determine wether the given character is valid as the first character in a bus name. </p>
<p>Definition at line <a class="el" href="dbus-marshal-validate_8c_source.html#l01070">1070</a> of file <a class="el" href="dbus-marshal-validate_8c_source.html">dbus-marshal-validate.c</a>.</p>
</div>
</div>
<a class="anchor" id="ga8eb3b26eec8ebfeef410caa4acc9570d"></a><!-- doxytag: member="dbus-marshal-validate.c::VALID_INITIAL_NAME_CHARACTER" ref="ga8eb3b26eec8ebfeef410caa4acc9570d" args="(c)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define <a class="el" href="group__DBusMarshal.html#ga8eb3b26eec8ebfeef410caa4acc9570d">VALID_INITIAL_NAME_CHARACTER</a></td>
<td>(</td>
<td class="paramtype"> </td>
<td class="paramname">c</td><td>)</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<b>Value:</b><div class="fragment"><pre class="fragment">( ((c) >= <span class="charliteral">'A'</span> && (c) <= <span class="charliteral">'Z'</span>) || \
((c) >= <span class="charliteral">'a'</span> && (c) <= <span class="charliteral">'z'</span>) || \
((c) == <span class="charliteral">'_'</span>) )
</pre></div>
<p>Determine wether the given character is valid as the first character in a name. </p>
<p>Definition at line <a class="el" href="dbus-marshal-validate_8c_source.html#l00753">753</a> of file <a class="el" href="dbus-marshal-validate_8c_source.html">dbus-marshal-validate.c</a>.</p>
<p>Referenced by <a class="el" href="dbus-marshal-validate_8c_source.html#l00921">_dbus_validate_interface()</a>, and <a class="el" href="dbus-marshal-validate_8c_source.html#l00997">_dbus_validate_member()</a>.</p>
</div>
</div>
<a class="anchor" id="ga11d63128bf5c1b7e0164be7072c6c6c7"></a><!-- doxytag: member="dbus-marshal-validate.c::VALID_NAME_CHARACTER" ref="ga11d63128bf5c1b7e0164be7072c6c6c7" args="(c)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define <a class="el" href="group__DBusMarshal.html#ga11d63128bf5c1b7e0164be7072c6c6c7">VALID_NAME_CHARACTER</a></td>
<td>(</td>
<td class="paramtype"> </td>
<td class="paramname">c</td><td>)</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<b>Value:</b><div class="fragment"><pre class="fragment">( ((c) >= <span class="charliteral">'0'</span> && (c) <= <span class="charliteral">'9'</span>) || \
((c) >= <span class="charliteral">'A'</span> && (c) <= <span class="charliteral">'Z'</span>) || \
((c) >= <span class="charliteral">'a'</span> && (c) <= <span class="charliteral">'z'</span>) || \
((c) == <span class="charliteral">'_'</span>) )
</pre></div>
<p>Determine wether the given character is valid as a second or later character in a name. </p>
<p>Definition at line <a class="el" href="dbus-marshal-validate_8c_source.html#l00762">762</a> of file <a class="el" href="dbus-marshal-validate_8c_source.html">dbus-marshal-validate.c</a>.</p>
<p>Referenced by <a class="el" href="dbus-marshal-validate_8c_source.html#l00921">_dbus_validate_interface()</a>, <a class="el" href="dbus-marshal-validate_8c_source.html#l00997">_dbus_validate_member()</a>, and <a class="el" href="dbus-marshal-validate_8c_source.html#l00785">_dbus_validate_path()</a>.</p>
</div>
</div>
<hr/><h2>Enumeration Type Documentation</h2>
<a class="anchor" id="ga0c4521d30d6650a33673a4d7f9cc007c"></a><!-- doxytag: member="dbus-marshal-validate.h::DBusValidity" ref="ga0c4521d30d6650a33673a4d7f9cc007c" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="group__DBusMarshal.html#ga0c4521d30d6650a33673a4d7f9cc007c">DBusValidity</a></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>This is primarily used in unit testing, so we can verify that each invalid message is invalid for the expected reasons. </p>
<p>Thus we really want a distinct enum value for every codepath leaving the validator functions. Enum values are specified manually for ease of debugging (so you can see the enum value given a printf) </p>
<p>Definition at line <a class="el" href="dbus-marshal-validate_8h_source.html#l00049">49</a> of file <a class="el" href="dbus-marshal-validate_8h_source.html">dbus-marshal-validate.h</a>.</p>
</div>
</div>
<hr/><h2>Function Documentation</h2>
<a class="anchor" id="ga5866a0fd058aed3396402d0456144fd2"></a><!-- doxytag: member="dbus-marshal-basic.c::_dbus_first_type_in_signature" ref="ga5866a0fd058aed3396402d0456144fd2" args="(const DBusString *str, int pos)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int <a class="el" href="group__DBusMarshal.html#ga5866a0fd058aed3396402d0456144fd2">_dbus_first_type_in_signature</a> </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="structDBusString.html">DBusString</a> * </td>
<td class="paramname"><em>str</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>pos</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Get the first type in the signature. </p>
<p>The difference between this and just getting the first byte of the signature is that you won't get DBUS_STRUCT_BEGIN_CHAR, you'll get DBUS_TYPE_STRUCT instead.</p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">str</td><td>string containing signature </td></tr>
<tr><td class="paramname">pos</td><td>where the signature starts </td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>the first type in the signature </dd></dl>
<p>Definition at line <a class="el" href="dbus-marshal-basic_8c_source.html#l01416">1416</a> of file <a class="el" href="dbus-marshal-basic_8c_source.html">dbus-marshal-basic.c</a>.</p>
<p>References <a class="el" href="dbus-string_8c_source.html#l00545">_dbus_string_get_byte()</a>.</p>
<p>Referenced by <a class="el" href="dbus-marshal-recursive_8c_source.html#l00786">_dbus_type_reader_get_current_type()</a>, <a class="el" href="dbus-marshal-recursive_8c_source.html#l00821">_dbus_type_reader_get_element_type()</a>, <a class="el" href="dbus-marshal-recursive_8c_source.html#l00924">_dbus_type_reader_read_fixed_multi()</a>, and <a class="el" href="dbus-marshal-recursive_8c_source.html#l00989">_dbus_type_reader_recurse()</a>.</p>
</div>
</div>
<a class="anchor" id="ga61cc8d9c4e4217be654455d8eb45544c"></a><!-- doxytag: member="dbus-marshal-basic.c::_dbus_first_type_in_signature_c_str" ref="ga61cc8d9c4e4217be654455d8eb45544c" args="(const char *str, int pos)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int <a class="el" href="group__DBusMarshal.html#ga61cc8d9c4e4217be654455d8eb45544c">_dbus_first_type_in_signature_c_str</a> </td>
<td>(</td>
<td class="paramtype">const char * </td>
<td class="paramname"><em>str</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>pos</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Similar to <a class="el" href="group__DBusMarshal.html#ga5866a0fd058aed3396402d0456144fd2" title="Get the first type in the signature.">_dbus_first_type_in_signature</a>, but operates on a C string buffer. </p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">str</td><td>a C string buffer </td></tr>
<tr><td class="paramname">pos</td><td>where the signature starts </td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>the first type in the signature </dd></dl>
<p>Definition at line <a class="el" href="dbus-marshal-basic_8c_source.html#l01431">1431</a> of file <a class="el" href="dbus-marshal-basic_8c_source.html">dbus-marshal-basic.c</a>.</p>
<p>Referenced by <a class="el" href="dbus-signature_8c_source.html#l00092">dbus_signature_iter_get_current_type()</a>, and <a class="el" href="dbus-signature_8c_source.html#l00146">dbus_signature_iter_get_element_type()</a>.</p>
</div>
</div>
<a class="anchor" id="gae5277c7b7bfb7b85e421baceac0398c8"></a><!-- doxytag: member="dbus-marshal-header.c::_dbus_header_byteswap" ref="gae5277c7b7bfb7b85e421baceac0398c8" args="(DBusHeader *header, int new_order)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void <a class="el" href="group__DBusMarshal.html#gae5277c7b7bfb7b85e421baceac0398c8">_dbus_header_byteswap</a> </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structDBusHeader.html">DBusHeader</a> * </td>
<td class="paramname"><em>header</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>new_order</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Swaps the header into the given order if required. </p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">header</td><td>the header </td></tr>
<tr><td class="paramname">new_order</td><td>the new byte order </td></tr>
</table>
</dd>
</dl>
<p>Definition at line <a class="el" href="dbus-marshal-header_8c_source.html#l01496">1496</a> of file <a class="el" href="dbus-marshal-header_8c_source.html">dbus-marshal-header.c</a>.</p>
<p>References <a class="el" href="dbus-marshal-header_8c_source.html#l00174">_dbus_header_get_byte_order()</a>, <a class="el" href="dbus-marshal-byteswap_8c_source.html#l00222">_dbus_marshal_byteswap()</a>, <a class="el" href="dbus-string_8c_source.html#l00521">_dbus_string_set_byte()</a>, <a class="el" href="dbus-marshal-header_8c_source.html#l00053">BYTE_ORDER_OFFSET</a>, and <a class="el" href="dbus-marshal-header_8h_source.html#l00049">DBusHeader::data</a>.</p>
</div>
</div>
<a class="anchor" id="ga0d5aad82f8bf5a314dcf3f70930e254b"></a><!-- doxytag: member="dbus-marshal-header.c::_dbus_header_copy" ref="ga0d5aad82f8bf5a314dcf3f70930e254b" args="(const DBusHeader *header, DBusHeader *dest)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__DBusTypes.html#ga39c9cb0f3a2a8ad6f55cc4855d035349">dbus_bool_t</a> <a class="el" href="group__DBusMarshal.html#ga0d5aad82f8bf5a314dcf3f70930e254b">_dbus_header_copy</a> </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="structDBusHeader.html">DBusHeader</a> * </td>
<td class="paramname"><em>header</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structDBusHeader.html">DBusHeader</a> * </td>
<td class="paramname"><em>dest</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Initializes dest with a copy of the given header. </p>
<p>Resets the message serial to 0 on the copy.</p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">header</td><td>header to copy </td></tr>
<tr><td class="paramname">dest</td><td>destination for copy </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 not enough memory </dd></dl>
<p>Definition at line <a class="el" href="dbus-marshal-header_8c_source.html#l00490">490</a> of file <a class="el" href="dbus-marshal-header_8c_source.html">dbus-marshal-header.c</a>.</p>
<p>References <a class="el" href="dbus-marshal-header_8c_source.html#l00404">_dbus_header_set_serial()</a>, <a class="el" href="dbus-string_8c_source.html#l01265">_dbus_string_copy()</a>, <a class="el" href="dbus-string_8c_source.html#l00242">_dbus_string_free()</a>, <a class="el" href="dbus-string_8c_source.html#l00722">_dbus_string_get_length()</a>, <a class="el" href="dbus-string_8c_source.html#l00132">_dbus_string_init_preallocated()</a>, <a class="el" href="dbus-marshal-header_8h_source.html#l00049">DBusHeader::data</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-message_8c_source.html#l01587">dbus_message_copy()</a>.</p>
</div>
</div>
<a class="anchor" id="gac7901e4196f10d4763df89b42d5db03e"></a><!-- doxytag: member="dbus-marshal-header.c::_dbus_header_create" ref="gac7901e4196f10d4763df89b42d5db03e" args="(DBusHeader *header, int byte_order, int message_type, const char *destination, const char *path, const char *interface, const char *member, const char *error_name)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__DBusTypes.html#ga39c9cb0f3a2a8ad6f55cc4855d035349">dbus_bool_t</a> <a class="el" href="group__DBusMarshal.html#gac7901e4196f10d4763df89b42d5db03e">_dbus_header_create</a> </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structDBusHeader.html">DBusHeader</a> * </td>
<td class="paramname"><em>header</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>byte_order</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>message_type</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char * </td>
<td class="paramname"><em>destination</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char * </td>
<td class="paramname"><em>path</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char * </td>
<td class="paramname"><em>interface</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char * </td>
<td class="paramname"><em>member</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char * </td>
<td class="paramname"><em>error_name</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Fills in the primary fields of the header, so the header is ready for use. </p>
<p><a class="el" href="group__DBusMacros.html#ga070d2ce7b6bb7e5c05602aa8c308d0c4" title="A null pointer, defined appropriately for C or C++.">NULL</a> may be specified for some or all of the fields to avoid adding those fields. Some combinations of fields don't make sense, and passing them in will trigger an assertion failure.</p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">header</td><td>the header </td></tr>
<tr><td class="paramname">byte_order</td><td>byte order of the header </td></tr>
<tr><td class="paramname">message_type</td><td>the message type </td></tr>
<tr><td class="paramname">destination</td><td>destination field or <a class="el" href="group__DBusMacros.html#ga070d2ce7b6bb7e5c05602aa8c308d0c4" title="A null pointer, defined appropriately for C or C++.">NULL</a> </td></tr>
<tr><td class="paramname">path</td><td>path field or <a class="el" href="group__DBusMacros.html#ga070d2ce7b6bb7e5c05602aa8c308d0c4" title="A null pointer, defined appropriately for C or C++.">NULL</a> </td></tr>
<tr><td class="paramname">interface</td><td>interface field or <a class="el" href="group__DBusMacros.html#ga070d2ce7b6bb7e5c05602aa8c308d0c4" title="A null pointer, defined appropriately for C or C++.">NULL</a> </td></tr>
<tr><td class="paramname">member</td><td>member field or <a class="el" href="group__DBusMacros.html#ga070d2ce7b6bb7e5c05602aa8c308d0c4" title="A null pointer, defined appropriately for C or C++.">NULL</a> </td></tr>
<tr><td class="paramname">error_name</td><td>error name or <a class="el" href="group__DBusMacros.html#ga070d2ce7b6bb7e5c05602aa8c308d0c4" title="A null pointer, defined appropriately for C or C++.">NULL</a> </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 not enough memory </dd></dl>
<p>Definition at line <a class="el" href="dbus-marshal-header_8c_source.html#l00528">528</a> of file <a class="el" href="dbus-marshal-header_8c_source.html">dbus-marshal-header.c</a>.</p>
<p>References <a class="el" href="dbus-string_8c_source.html#l01175">_dbus_string_delete()</a>, <a class="el" href="dbus-string_8c_source.html#l00722">_dbus_string_get_length()</a>, <a class="el" href="dbus-marshal-recursive_8c_source.html#l01584">_dbus_type_writer_init_values_only()</a>, <a class="el" href="dbus-marshal-recursive_8c_source.html#l02109">_dbus_type_writer_recurse()</a>, <a class="el" href="dbus-marshal-recursive_8c_source.html#l02179">_dbus_type_writer_unrecurse()</a>, <a class="el" href="dbus-marshal-recursive_8c_source.html#l02311">_dbus_type_writer_write_basic()</a>, <a class="el" href="dbus-marshal-header_8h_source.html#l00049">DBusHeader::data</a>, <a class="el" href="dbus-protocol_8h_source.html#l00054">DBUS_BIG_ENDIAN</a>, <a class="el" href="dbus-protocol_8h_source.html#l00283">DBUS_HEADER_FIELD_DESTINATION</a>, <a class="el" href="dbus-protocol_8h_source.html#l00275">DBUS_HEADER_FIELD_ERROR_NAME</a>, <a class="el" href="dbus-protocol_8h_source.html#l00269">DBUS_HEADER_FIELD_INTERFACE</a>, <a class="el" href="dbus-protocol_8h_source.html#l00271">DBUS_HEADER_FIELD_MEMBER</a>, <a class="el" href="dbus-protocol_8h_source.html#l00265">DBUS_HEADER_FIELD_PATH</a>, <a class="el" href="dbus-protocol_8h_source.html#l00053">DBUS_LITTLE_ENDIAN</a>, <a class="el" href="dbus-protocol_8h_source.html#l00057">DBUS_MAJOR_PROTOCOL_VERSION</a>, <a class="el" href="dbus-protocol_8h_source.html#l00240">DBUS_MESSAGE_TYPE_SIGNAL</a>, <a class="el" href="dbus-protocol_8h_source.html#l00120">DBUS_TYPE_ARRAY</a>, <a class="el" href="dbus-protocol_8h_source.html#l00066">DBUS_TYPE_BYTE</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#l00102">DBUS_TYPE_STRING</a>, <a class="el" href="dbus-protocol_8h_source.html#l00086">DBUS_TYPE_UINT32</a>, <a class="el" href="group__DBusMacros.html#gaa93f0eb578d23995850d61f7d61c55c1">FALSE</a>, <a class="el" href="dbus-marshal-header_8c_source.html#l00047">FIELDS_ARRAY_SIGNATURE_OFFSET</a>, <a class="el" href="dbus-marshal-header_8c_source.html#l00123">HEADER_END_BEFORE_PADDING</a>, <a class="el" href="group__DBusMacros.html#ga070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</a>, <a class="el" href="dbus-marshal-header_8h_source.html#l00058">DBusHeader::padding</a>, and <a class="el" href="group__DBusMacros.html#gaa8cecfc5c5c054d2875c03e77b7be15d">TRUE</a>.</p>
<p>Referenced by <a class="el" href="dbus-message_8c_source.html#l01289">dbus_message_new()</a>, <a class="el" href="dbus-message_8c_source.html#l01470">dbus_message_new_error()</a>, <a class="el" href="dbus-message_8c_source.html#l01333">dbus_message_new_method_call()</a>, <a class="el" href="dbus-message_8c_source.html#l01373">dbus_message_new_method_return()</a>, and <a class="el" href="dbus-message_8c_source.html#l01424">dbus_message_new_signal()</a>.</p>
</div>
</div>
<a class="anchor" id="ga7814248f4d74d109d29dc00487cd9b0c"></a><!-- doxytag: member="dbus-marshal-header.c::_dbus_header_delete_field" ref="ga7814248f4d74d109d29dc00487cd9b0c" args="(DBusHeader *header, int field)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__DBusTypes.html#ga39c9cb0f3a2a8ad6f55cc4855d035349">dbus_bool_t</a> <a class="el" href="group__DBusMarshal.html#ga7814248f4d74d109d29dc00487cd9b0c">_dbus_header_delete_field</a> </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structDBusHeader.html">DBusHeader</a> * </td>
<td class="paramname"><em>header</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>field</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Deletes a field, if it exists. </p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">header</td><td>the header </td></tr>
<tr><td class="paramname">field</td><td>the field to delete </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 no memory </dd></dl>
<p>Definition at line <a class="el" href="dbus-marshal-header_8c_source.html#l01416">1416</a> of file <a class="el" href="dbus-marshal-header_8c_source.html">dbus-marshal-header.c</a>.</p>
<p>References <a class="el" href="dbus-marshal-recursive_8c_source.html#l01420">_dbus_type_reader_delete()</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="gab90a814a27aeeace7e02c4ed130539cf"></a><!-- doxytag: member="dbus-marshal-header.c::_dbus_header_free" ref="gab90a814a27aeeace7e02c4ed130539cf" args="(DBusHeader *header)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void <a class="el" href="group__DBusMarshal.html#gab90a814a27aeeace7e02c4ed130539cf">_dbus_header_free</a> </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structDBusHeader.html">DBusHeader</a> * </td>
<td class="paramname"><em>header</em></td><td>)</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Frees a header. </p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">header</td><td>the header </td></tr>
</table>
</dd>
</dl>
<p>Definition at line <a class="el" href="dbus-marshal-header_8c_source.html#l00476">476</a> of file <a class="el" href="dbus-marshal-header_8c_source.html">dbus-marshal-header.c</a>.</p>
<p>References <a class="el" href="dbus-string_8c_source.html#l00242">_dbus_string_free()</a>, and <a class="el" href="dbus-marshal-header_8h_source.html#l00049">DBusHeader::data</a>.</p>
<p>Referenced by <a class="el" href="dbus-message_8c_source.html#l01587">dbus_message_copy()</a>.</p>
</div>
</div>
<a class="anchor" id="ga65c023673b837c27e8ccda5c2528d806"></a><!-- doxytag: member="dbus-marshal-header.c::_dbus_header_get_byte_order" ref="ga65c023673b837c27e8ccda5c2528d806" args="(const DBusHeader *header)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">char <a class="el" href="group__DBusMarshal.html#ga65c023673b837c27e8ccda5c2528d806">_dbus_header_get_byte_order</a> </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="structDBusHeader.html">DBusHeader</a> * </td>
<td class="paramname"><em>header</em></td><td>)</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Returns the header's byte order. </p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">header</td><td>the header </td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>the byte order </dd></dl>
<p>Definition at line <a class="el" href="dbus-marshal-header_8c_source.html#l00174">174</a> of file <a class="el" href="dbus-marshal-header_8c_source.html">dbus-marshal-header.c</a>.</p>
<p>References <a class="el" href="dbus-string_8c_source.html#l00545">_dbus_string_get_byte()</a>, <a class="el" href="dbus-string_8c_source.html#l00722">_dbus_string_get_length()</a>, <a class="el" href="dbus-marshal-header_8c_source.html#l00053">BYTE_ORDER_OFFSET</a>, and <a class="el" href="dbus-marshal-header_8h_source.html#l00049">DBusHeader::data</a>.</p>
<p>Referenced by <a class="el" href="dbus-marshal-header_8c_source.html#l01496">_dbus_header_byteswap()</a>, <a class="el" href="dbus-marshal-header_8c_source.html#l01351">_dbus_header_get_field_basic()</a>, <a class="el" href="dbus-marshal-header_8c_source.html#l00427">_dbus_header_get_serial()</a>, <a class="el" href="dbus-marshal-header_8c_source.html#l01273">_dbus_header_set_field_basic()</a>, <a class="el" href="dbus-marshal-header_8c_source.html#l00404">_dbus_header_set_serial()</a>, <a class="el" href="dbus-marshal-header_8c_source.html#l01196">_dbus_header_update_lengths()</a>, <a class="el" href="dbus-message_8c_source.html#l02064">dbus_message_iter_init()</a>, and <a class="el" href="dbus-message_8c_source.html#l02421">dbus_message_iter_init_append()</a>.</p>
</div>
</div>
<a class="anchor" id="ga499973a18dcb17d854eaf14101a66736"></a><!-- doxytag: member="dbus-marshal-header.c::_dbus_header_get_field_basic" ref="ga499973a18dcb17d854eaf14101a66736" args="(DBusHeader *header, int field, int type, void *value)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__DBusTypes.html#ga39c9cb0f3a2a8ad6f55cc4855d035349">dbus_bool_t</a> <a class="el" href="group__DBusMarshal.html#ga499973a18dcb17d854eaf14101a66736">_dbus_header_get_field_basic</a> </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structDBusHeader.html">DBusHeader</a> * </td>
<td class="paramname"><em>header</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>field</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>type</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">void * </td>
<td class="paramname"><em>value</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Gets the value of a field with basic type. </p>
<p>If the field doesn't exist, returns <a class="el" href="group__DBusMacros.html#gaa93f0eb578d23995850d61f7d61c55c1" title="Expands to "0".">FALSE</a>, otherwise returns <a class="el" href="group__DBusMacros.html#gaa8cecfc5c5c054d2875c03e77b7be15d" title="Expands to "1".">TRUE</a>.</p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">header</td><td>the header </td></tr>
<tr><td class="paramname">field</td><td>the field to get </td></tr>
<tr><td class="paramname">type</td><td>the type of the value </td></tr>
<tr><td class="paramname">value</td><td>the value as for <a class="el" href="group__DBusMarshal.html#gab331e099fa8cf3d94cf33ad7b20c81ae" title="Demarshals a basic-typed value.">_dbus_marshal_read_basic()</a> </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 field doesn't exist </dd></dl>
<p>Definition at line <a class="el" href="dbus-marshal-header_8c_source.html#l01351">1351</a> of file <a class="el" href="dbus-marshal-header_8c_source.html">dbus-marshal-header.c</a>.</p>
<p>References <a class="el" href="dbus-marshal-header_8c_source.html#l00174">_dbus_header_get_byte_order()</a>, <a class="el" href="dbus-marshal-basic_8c_source.html#l00492">_dbus_marshal_read_basic()</a>, <a class="el" href="dbus-marshal-header_8h_source.html#l00049">DBusHeader::data</a>, <a class="el" href="dbus-protocol_8h_source.html#l00261">DBUS_HEADER_FIELD_INVALID</a>, <a class="el" href="dbus-protocol_8h_source.html#l00306">DBUS_HEADER_FIELD_LAST</a>, <a class="el" href="dbus-marshal-header_8c_source.html#l00090">EXPECTED_TYPE_OF_FIELD</a>, <a class="el" href="group__DBusMacros.html#gaa93f0eb578d23995850d61f7d61c55c1">FALSE</a>, <a class="el" href="dbus-marshal-header_8h_source.html#l00054">DBusHeader::fields</a>, <a class="el" href="group__DBusMacros.html#ga070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</a>, <a class="el" href="group__DBusMacros.html#gaa8cecfc5c5c054d2875c03e77b7be15d">TRUE</a>, and <a class="el" href="dbus-marshal-header_8h_source.html#l00041">DBusHeaderField::value_pos</a>.</p>
<p>Referenced by <a class="el" href="dbus-message_8c_source.html#l03450">dbus_message_get_destination()</a>, <a class="el" href="dbus-message_8c_source.html#l03397">dbus_message_get_error_name()</a>, <a class="el" href="dbus-message_8c_source.html#l03227">dbus_message_get_interface()</a>, <a class="el" href="dbus-message_8c_source.html#l03313">dbus_message_get_member()</a>, <a class="el" href="dbus-message_8c_source.html#l03096">dbus_message_get_path()</a>, <a class="el" href="dbus-message_8c_source.html#l01163">dbus_message_get_reply_serial()</a>, and <a class="el" href="dbus-message_8c_source.html#l03510">dbus_message_get_sender()</a>.</p>
</div>
</div>
<a class="anchor" id="gaf4661ba8e7067f349ba03c9f5776bbb0"></a><!-- doxytag: member="dbus-marshal-header.c::_dbus_header_get_field_raw" ref="gaf4661ba8e7067f349ba03c9f5776bbb0" args="(DBusHeader *header, int field, const DBusString **str, int *pos)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__DBusTypes.html#ga39c9cb0f3a2a8ad6f55cc4855d035349">dbus_bool_t</a> <a class="el" href="group__DBusMarshal.html#gaf4661ba8e7067f349ba03c9f5776bbb0">_dbus_header_get_field_raw</a> </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structDBusHeader.html">DBusHeader</a> * </td>
<td class="paramname"><em>header</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>field</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structDBusString.html">DBusString</a> ** </td>
<td class="paramname"><em>str</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int * </td>
<td class="paramname"><em>pos</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Gets the raw marshaled data for a field. </p>
<p>If the field doesn't exist, returns <a class="el" href="group__DBusMacros.html#gaa93f0eb578d23995850d61f7d61c55c1" title="Expands to "0".">FALSE</a>, otherwise returns <a class="el" href="group__DBusMacros.html#gaa8cecfc5c5c054d2875c03e77b7be15d" title="Expands to "1".">TRUE</a>. Returns the start of the marshaled data, i.e. usually the byte where the length starts (for strings and arrays) or for basic types just the value itself.</p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">header</td><td>the header </td></tr>
<tr><td class="paramname">field</td><td>the field to get </td></tr>
<tr><td class="paramname">str</td><td>return location for the data string </td></tr>
<tr><td class="paramname">pos</td><td>return location for start of field value </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 field doesn't exist </dd></dl>
<p>Definition at line <a class="el" href="dbus-marshal-header_8c_source.html#l01392">1392</a> of file <a class="el" href="dbus-marshal-header_8c_source.html">dbus-marshal-header.c</a>.</p>
<p>References <a class="el" href="dbus-marshal-header_8h_source.html#l00049">DBusHeader::data</a>, <a class="el" href="group__DBusMacros.html#gaa93f0eb578d23995850d61f7d61c55c1">FALSE</a>, <a class="el" href="dbus-marshal-header_8h_source.html#l00054">DBusHeader::fields</a>, <a class="el" href="group__DBusMacros.html#gaa8cecfc5c5c054d2875c03e77b7be15d">TRUE</a>, and <a class="el" href="dbus-marshal-header_8h_source.html#l00041">DBusHeaderField::value_pos</a>.</p>
</div>
</div>
<a class="anchor" id="ga56619efed3088554b8760edd246b4157"></a><!-- doxytag: member="dbus-marshal-header.c::_dbus_header_get_flag" ref="ga56619efed3088554b8760edd246b4157" args="(DBusHeader *header, dbus_uint32_t flag)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__DBusTypes.html#ga39c9cb0f3a2a8ad6f55cc4855d035349">dbus_bool_t</a> <a class="el" href="group__DBusMarshal.html#ga56619efed3088554b8760edd246b4157">_dbus_header_get_flag</a> </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structDBusHeader.html">DBusHeader</a> * </td>
<td class="paramname"><em>header</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="group__DBusTypes.html#gaf513803b030613a669cc7ef199f90a8b">dbus_uint32_t</a> </td>
<td class="paramname"><em>flag</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Gets a message flag bit, returning TRUE if the bit is set. </p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">header</td><td>the header </td></tr>
<tr><td class="paramname">flag</td><td>the message flag to get </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 the flag is set </dd></dl>
<p>Definition at line <a class="el" href="dbus-marshal-header_8c_source.html#l01479">1479</a> of file <a class="el" href="dbus-marshal-header_8c_source.html">dbus-marshal-header.c</a>.</p>
<p>References <a class="el" href="dbus-string_8c_source.html#l00497">_dbus_string_get_const_data_len()</a>, <a class="el" href="dbus-marshal-header_8h_source.html#l00049">DBusHeader::data</a>, and <a class="el" href="dbus-marshal-header_8c_source.html#l00057">FLAGS_OFFSET</a>.</p>
<p>Referenced by <a class="el" href="dbus-message_8c_source.html#l03045">dbus_message_get_auto_start()</a>, and <a class="el" href="dbus-message_8c_source.html#l03003">dbus_message_get_no_reply()</a>.</p>
</div>
</div>
<a class="anchor" id="ga4427247494fc5c988498c5a87d42092d"></a><!-- doxytag: member="dbus-marshal-header.c::_dbus_header_get_message_type" ref="ga4427247494fc5c988498c5a87d42092d" args="(DBusHeader *header)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int <a class="el" href="group__DBusMarshal.html#ga4427247494fc5c988498c5a87d42092d">_dbus_header_get_message_type</a> </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structDBusHeader.html">DBusHeader</a> * </td>
<td class="paramname"><em>header</em></td><td>)</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Gets the type of the message. </p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">header</td><td>the header </td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>the type </dd></dl>
<p>Definition at line <a class="el" href="dbus-marshal-header_8c_source.html#l00386">386</a> of file <a class="el" href="dbus-marshal-header_8c_source.html">dbus-marshal-header.c</a>.</p>
<p>References <a class="el" href="dbus-string_8c_source.html#l00545">_dbus_string_get_byte()</a>, <a class="el" href="dbus-marshal-header_8h_source.html#l00049">DBusHeader::data</a>, <a class="el" href="dbus-protocol_8h_source.html#l00232">DBUS_MESSAGE_TYPE_INVALID</a>, and <a class="el" href="dbus-marshal-header_8c_source.html#l00055">TYPE_OFFSET</a>.</p>
<p>Referenced by <a class="el" href="dbus-message_8c_source.html#l01722">dbus_message_get_type()</a>.</p>
</div>
</div>
<a class="anchor" id="ga7ec7222423db42935aae4a24499ee0fb"></a><!-- doxytag: member="dbus-marshal-header.c::_dbus_header_get_serial" ref="ga7ec7222423db42935aae4a24499ee0fb" args="(DBusHeader *header)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__DBusTypes.html#gaf513803b030613a669cc7ef199f90a8b">dbus_uint32_t</a> <a class="el" href="group__DBusMarshal.html#ga7ec7222423db42935aae4a24499ee0fb">_dbus_header_get_serial</a> </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structDBusHeader.html">DBusHeader</a> * </td>
<td class="paramname"><em>header</em></td><td>)</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>See <a class="el" href="group__DBusMessage.html#ga390710c25564c80025a006c376da2030" title="Returns the serial of a message or 0 if none has been specified.">dbus_message_get_serial()</a> </p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">header</td><td>the header </td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>the client serial </dd></dl>
<p>Definition at line <a class="el" href="dbus-marshal-header_8c_source.html#l00427">427</a> of file <a class="el" href="dbus-marshal-header_8c_source.html">dbus-marshal-header.c</a>.</p>
<p>References <a class="el" href="dbus-marshal-header_8c_source.html#l00174">_dbus_header_get_byte_order()</a>, <a class="el" href="dbus-marshal-basic_8c_source.html#l00454">_dbus_marshal_read_uint32()</a>, <a class="el" href="dbus-marshal-header_8h_source.html#l00049">DBusHeader::data</a>, <a class="el" href="group__DBusMacros.html#ga070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</a>, and <a class="el" href="dbus-marshal-header_8c_source.html#l00063">SERIAL_OFFSET</a>.</p>
<p>Referenced by <a class="el" href="dbus-marshal-header_8c_source.html#l00404">_dbus_header_set_serial()</a>, and <a class="el" href="dbus-message_8c_source.html#l01127">dbus_message_get_serial()</a>.</p>
</div>
</div>
<a class="anchor" id="ga674d74081baf6e7531e0d4a286724210"></a><!-- doxytag: member="dbus-marshal-header.c::_dbus_header_have_message_untrusted" ref="ga674d74081baf6e7531e0d4a286724210" args="(int max_message_length, DBusValidity *validity, int *byte_order, int *fields_array_len, int *header_len, int *body_len, const DBusString *str, int start, int len)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__DBusTypes.html#ga39c9cb0f3a2a8ad6f55cc4855d035349">dbus_bool_t</a> <a class="el" href="group__DBusMarshal.html#ga674d74081baf6e7531e0d4a286724210">_dbus_header_have_message_untrusted</a> </td>
<td>(</td>
<td class="paramtype">int </td>
<td class="paramname"><em>max_message_length</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="group__DBusMarshal.html#ga0c4521d30d6650a33673a4d7f9cc007c">DBusValidity</a> * </td>
<td class="paramname"><em>validity</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int * </td>
<td class="paramname"><em>byte_order</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int * </td>
<td class="paramname"><em>fields_array_len</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int * </td>
<td class="paramname"><em>header_len</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int * </td>
<td class="paramname"><em>body_len</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structDBusString.html">DBusString</a> * </td>
<td class="paramname"><em>str</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>start</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>len</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Given data long enough to contain the length of the message body and the fields array, check whether the data is long enough to contain the entire message (assuming the claimed lengths are accurate). </p>
<p>Also checks that the lengths are in sanity parameters.</p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">max_message_length</td><td>maximum length of a valid message </td></tr>
<tr><td class="paramname">validity</td><td>return location for why the data is invalid if it is </td></tr>
<tr><td class="paramname">byte_order</td><td>return location for byte order </td></tr>
<tr><td class="paramname">fields_array_len</td><td>return location for claimed fields array length </td></tr>
<tr><td class="paramname">header_len</td><td>return location for claimed header length </td></tr>
<tr><td class="paramname">body_len</td><td>return location for claimed body length </td></tr>
<tr><td class="paramname">str</td><td>the data </td></tr>
<tr><td class="paramname">start</td><td>start of data, 8-aligned </td></tr>
<tr><td class="paramname">len</td><td>length of data </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 the data is long enough for the claimed length, and the lengths were valid </dd></dl>
<p>Definition at line <a class="el" href="dbus-marshal-header_8c_source.html#l00673">673</a> of file <a class="el" href="dbus-marshal-header_8c_source.html">dbus-marshal-header.c</a>.</p>
<p>References <a class="el" href="dbus-marshal-basic_8c_source.html#l00454">_dbus_marshal_read_uint32()</a>, <a class="el" href="dbus-string_8c_source.html#l00545">_dbus_string_get_byte()</a>, <a class="el" href="dbus-marshal-header_8c_source.html#l00061">BODY_LENGTH_OFFSET</a>, <a class="el" href="dbus-marshal-header_8c_source.html#l00053">BYTE_ORDER_OFFSET</a>, <a class="el" href="dbus-protocol_8h_source.html#l00054">DBUS_BIG_ENDIAN</a>, <a class="el" href="dbus-protocol_8h_source.html#l00053">DBUS_LITTLE_ENDIAN</a>, <a class="el" href="group__DBusMacros.html#gaa93f0eb578d23995850d61f7d61c55c1">FALSE</a>, <a class="el" href="dbus-marshal-header_8c_source.html#l00065">FIELDS_ARRAY_LENGTH_OFFSET</a>, <a class="el" href="dbus-marshal-header_8c_source.html#l00067">FIRST_FIELD_OFFSET</a>, and <a class="el" href="group__DBusMacros.html#ga070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</a>.</p>
<p>Referenced by <a class="el" href="dbus-message_8c_source.html#l04302">_dbus_message_loader_queue_messages()</a>, and <a class="el" href="dbus-message_8c_source.html#l04844">dbus_message_demarshal_bytes_needed()</a>.</p>
</div>
</div>
<a class="anchor" id="gabe1b78193d712976734a39d35842f033"></a><!-- doxytag: member="dbus-marshal-header.c::_dbus_header_init" ref="gabe1b78193d712976734a39d35842f033" args="(DBusHeader *header)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__DBusTypes.html#ga39c9cb0f3a2a8ad6f55cc4855d035349">dbus_bool_t</a> <a class="el" href="group__DBusMarshal.html#gabe1b78193d712976734a39d35842f033">_dbus_header_init</a> </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structDBusHeader.html">DBusHeader</a> * </td>
<td class="paramname"><em>header</em></td><td>)</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Initializes a header, but doesn't prepare it for use; to make the header valid, you have to call <a class="el" href="group__DBusMarshal.html#gac7901e4196f10d4763df89b42d5db03e" title="Fills in the primary fields of the header, so the header is ready for use.">_dbus_header_create()</a>. </p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">header</td><td>header to initialize </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 not enough memory </dd></dl>
<p>Definition at line <a class="el" href="dbus-marshal-header_8c_source.html#l00460">460</a> of file <a class="el" href="dbus-marshal-header_8c_source.html">dbus-marshal-header.c</a>.</p>
<p>References <a class="el" href="dbus-marshal-header_8c_source.html#l00443">_dbus_header_reinit()</a>, <a class="el" href="dbus-string_8c_source.html#l00132">_dbus_string_init_preallocated()</a>, <a class="el" href="dbus-marshal-header_8h_source.html#l00049">DBusHeader::data</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="ga0c3a3f95d9a53b91a0cd0b260196685b"></a><!-- doxytag: member="dbus-marshal-header.c::_dbus_header_load" ref="ga0c3a3f95d9a53b91a0cd0b260196685b" args="(DBusHeader *header, DBusValidationMode mode, DBusValidity *validity, int byte_order, int fields_array_len, int header_len, int body_len, const DBusString *str, int start, int len)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__DBusTypes.html#ga39c9cb0f3a2a8ad6f55cc4855d035349">dbus_bool_t</a> <a class="el" href="group__DBusMarshal.html#ga0c3a3f95d9a53b91a0cd0b260196685b">_dbus_header_load</a> </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structDBusHeader.html">DBusHeader</a> * </td>
<td class="paramname"><em>header</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="group__DBusMarshal.html#gaf9dce059725fa793c44b219460cbbe6d">DBusValidationMode</a> </td>
<td class="paramname"><em>mode</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="group__DBusMarshal.html#ga0c4521d30d6650a33673a4d7f9cc007c">DBusValidity</a> * </td>
<td class="paramname"><em>validity</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>byte_order</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>fields_array_len</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>header_len</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>body_len</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structDBusString.html">DBusString</a> * </td>
<td class="paramname"><em>str</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>start</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>len</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Creates a message header from potentially-untrusted data. </p>
<p>The return value is <a class="el" href="group__DBusMacros.html#gaa8cecfc5c5c054d2875c03e77b7be15d" title="Expands to "1".">TRUE</a> if there was enough memory and the data was valid. If it returns <a class="el" href="group__DBusMacros.html#gaa8cecfc5c5c054d2875c03e77b7be15d" title="Expands to "1".">TRUE</a>, the header will be created. If it returns <a class="el" href="group__DBusMacros.html#gaa93f0eb578d23995850d61f7d61c55c1" title="Expands to "0".">FALSE</a> and *validity == #DBUS_VALIDITY_UNKNOWN_OOM_ERROR, then there wasn't enough memory. If it returns <a class="el" href="group__DBusMacros.html#gaa93f0eb578d23995850d61f7d61c55c1" title="Expands to "0".">FALSE</a> and *validity != #DBUS_VALIDITY_UNKNOWN_OOM_ERROR then the data was invalid.</p>
<p>The byte_order, fields_array_len, and body_len args should be from <a class="el" href="group__DBusMarshal.html#ga674d74081baf6e7531e0d4a286724210" title="Given data long enough to contain the length of the message body and the fields array, check whether the data is long enough to contain the entire message (assuming the claimed lengths are accurate).">_dbus_header_have_message_untrusted()</a>. Validation performed in <a class="el" href="group__DBusMarshal.html#ga674d74081baf6e7531e0d4a286724210" title="Given data long enough to contain the length of the message body and the fields array, check whether the data is long enough to contain the entire message (assuming the claimed lengths are accurate).">_dbus_header_have_message_untrusted()</a> is assumed to have been already done.</p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">header</td><td>the header (must be initialized) </td></tr>
<tr><td class="paramname">mode</td><td>whether to do validation </td></tr>
<tr><td class="paramname">validity</td><td>return location for invalidity reason </td></tr>
<tr><td class="paramname">byte_order</td><td>byte order from header </td></tr>
<tr><td class="paramname">fields_array_len</td><td>claimed length of fields array </td></tr>
<tr><td class="paramname">body_len</td><td>claimed length of body </td></tr>
<tr><td class="paramname">header_len</td><td>claimed length of header </td></tr>
<tr><td class="paramname">str</td><td>a string </td></tr>
<tr><td class="paramname">start</td><td>start of header, 8-aligned </td></tr>
<tr><td class="paramname">len</td><td>length of string to look at </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 no memory or data was invalid, <a class="el" href="group__DBusMacros.html#gaa8cecfc5c5c054d2875c03e77b7be15d" title="Expands to "1".">TRUE</a> otherwise </dd></dl>
<p>Definition at line <a class="el" href="dbus-marshal-header_8c_source.html#l00970">970</a> of file <a class="el" href="dbus-marshal-header_8c_source.html">dbus-marshal-header.c</a>.</p>
<p>References <a class="el" href="dbus-string_8c_source.html#l01357">_dbus_string_copy_len()</a>, <a class="el" href="dbus-string_8c_source.html#l00722">_dbus_string_get_length()</a>, <a class="el" href="dbus-string_8c_source.html#l00785">_dbus_string_set_length()</a>, <a class="el" href="dbus-string_8c_source.html#l02635">_dbus_string_validate_nul()</a>, <a class="el" href="dbus-marshal-recursive_8c_source.html#l00786">_dbus_type_reader_get_current_type()</a>, <a class="el" href="dbus-marshal-recursive_8c_source.html#l00838">_dbus_type_reader_get_value_pos()</a>, <a class="el" href="dbus-marshal-recursive_8c_source.html#l00733">_dbus_type_reader_init()</a>, <a class="el" href="dbus-marshal-recursive_8c_source.html#l01054">_dbus_type_reader_next()</a>, <a class="el" href="dbus-marshal-recursive_8c_source.html#l00870">_dbus_type_reader_read_basic()</a>, <a class="el" href="dbus-marshal-recursive_8c_source.html#l00989">_dbus_type_reader_recurse()</a>, <a class="el" href="dbus-marshal-validate_8c_source.html#l00703">_dbus_validate_body_with_reason()</a>, <a class="el" href="dbus-marshal-header_8c_source.html#l00061">BODY_LENGTH_OFFSET</a>, <a class="el" href="dbus-marshal-header_8c_source.html#l00053">BYTE_ORDER_OFFSET</a>, <a class="el" href="dbus-marshal-header_8h_source.html#l00049">DBusHeader::data</a>, <a class="el" href="dbus-protocol_8h_source.html#l00261">DBUS_HEADER_FIELD_INVALID</a>, <a class="el" href="dbus-protocol_8h_source.html#l00306">DBUS_HEADER_FIELD_LAST</a>, <a class="el" href="dbus-protocol_8h_source.html#l00057">DBUS_MAJOR_PROTOCOL_VERSION</a>, <a class="el" href="dbus-protocol_8h_source.html#l00232">DBUS_MESSAGE_TYPE_INVALID</a>, <a class="el" href="dbus-protocol_8h_source.html#l00120">DBUS_TYPE_ARRAY</a>, <a class="el" href="dbus-protocol_8h_source.html#l00066">DBUS_TYPE_BYTE</a>, <a class="el" href="dbus-protocol_8h_source.html#l00060">DBUS_TYPE_INVALID</a>, <a class="el" href="dbus-protocol_8h_source.html#l00136">DBUS_TYPE_STRUCT</a>, <a class="el" href="dbus-protocol_8h_source.html#l00086">DBUS_TYPE_UINT32</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>, <a class="el" href="dbus-marshal-header_8h_source.html#l00054">DBusHeader::fields</a>, <a class="el" href="dbus-marshal-header_8c_source.html#l00065">FIELDS_ARRAY_LENGTH_OFFSET</a>, <a class="el" href="dbus-marshal-header_8c_source.html#l00067">FIRST_FIELD_OFFSET</a>, <a class="el" href="dbus-marshal-header_8c_source.html#l00057">FLAGS_OFFSET</a>, <a class="el" href="dbus-marshal-header_8h_source.html#l00058">DBusHeader::padding</a>, <a class="el" href="dbus-marshal-header_8c_source.html#l00063">SERIAL_OFFSET</a>, <a class="el" href="group__DBusMacros.html#gaa8cecfc5c5c054d2875c03e77b7be15d">TRUE</a>, <a class="el" href="dbus-marshal-header_8c_source.html#l00055">TYPE_OFFSET</a>, <a class="el" href="dbus-marshal-header_8h_source.html#l00041">DBusHeaderField::value_pos</a>, and <a class="el" href="dbus-marshal-header_8c_source.html#l00059">VERSION_OFFSET</a>.</p>
</div>
</div>
<a class="anchor" id="ga6d41ad4de211c87f4b8a43340b6893e2"></a><!-- doxytag: member="dbus-marshal-header.c::_dbus_header_reinit" ref="ga6d41ad4de211c87f4b8a43340b6893e2" args="(DBusHeader *header)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void <a class="el" href="group__DBusMarshal.html#ga6d41ad4de211c87f4b8a43340b6893e2">_dbus_header_reinit</a> </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structDBusHeader.html">DBusHeader</a> * </td>
<td class="paramname"><em>header</em></td><td>)</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Re-initializes a header that was previously initialized and never freed. </p>
<p>After this, to make the header valid you have to call <a class="el" href="group__DBusMarshal.html#gac7901e4196f10d4763df89b42d5db03e" title="Fills in the primary fields of the header, so the header is ready for use.">_dbus_header_create()</a>.</p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">header</td><td>header to re-initialize </td></tr>
</table>
</dd>
</dl>
<p>Definition at line <a class="el" href="dbus-marshal-header_8c_source.html#l00443">443</a> of file <a class="el" href="dbus-marshal-header_8c_source.html">dbus-marshal-header.c</a>.</p>
<p>References <a class="el" href="dbus-string_8c_source.html#l00785">_dbus_string_set_length()</a>, <a class="el" href="dbus-marshal-header_8h_source.html#l00049">DBusHeader::data</a>, and <a class="el" href="dbus-marshal-header_8h_source.html#l00058">DBusHeader::padding</a>.</p>
<p>Referenced by <a class="el" href="dbus-marshal-header_8c_source.html#l00460">_dbus_header_init()</a>.</p>
</div>
</div>
<a class="anchor" id="ga4349de00b7754a337526e36fda133464"></a><!-- doxytag: member="dbus-marshal-header.c::_dbus_header_set_field_basic" ref="ga4349de00b7754a337526e36fda133464" args="(DBusHeader *header, int field, int type, const void *value)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__DBusTypes.html#ga39c9cb0f3a2a8ad6f55cc4855d035349">dbus_bool_t</a> <a class="el" href="group__DBusMarshal.html#ga4349de00b7754a337526e36fda133464">_dbus_header_set_field_basic</a> </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structDBusHeader.html">DBusHeader</a> * </td>
<td class="paramname"><em>header</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>field</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>type</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const void * </td>
<td class="paramname"><em>value</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Sets the value of a field with basic type. </p>
<p>If the value is a string value, it isn't allowed to be <a class="el" href="group__DBusMacros.html#ga070d2ce7b6bb7e5c05602aa8c308d0c4" title="A null pointer, defined appropriately for C or C++.">NULL</a>. If the field doesn't exist, it will be created.</p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">header</td><td>the header </td></tr>
<tr><td class="paramname">field</td><td>the field to set </td></tr>
<tr><td class="paramname">type</td><td>the type of the value </td></tr>
<tr><td class="paramname">value</td><td>the value as for <a class="el" href="group__DBusMarshal.html#ga854526bdf221a5e82b2e14581ac17d8f" title="Sets an existing basic type value to a new value.">_dbus_marshal_set_basic()</a> </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 no memory </dd></dl>
<p>Definition at line <a class="el" href="dbus-marshal-header_8c_source.html#l01273">1273</a> of file <a class="el" href="dbus-marshal-header_8c_source.html">dbus-marshal-header.c</a>.</p>
<p>References <a class="el" href="dbus-marshal-header_8c_source.html#l00174">_dbus_header_get_byte_order()</a>, <a class="el" href="dbus-marshal-recursive_8c_source.html#l02143">_dbus_type_writer_append_array()</a>, <a class="el" href="dbus-marshal-recursive_8c_source.html#l01584">_dbus_type_writer_init_values_only()</a>, <a class="el" href="dbus-marshal-recursive_8c_source.html#l02179">_dbus_type_writer_unrecurse()</a>, <a class="el" href="dbus-marshal-header_8h_source.html#l00049">DBusHeader::data</a>, <a class="el" href="dbus-protocol_8h_source.html#l00306">DBUS_HEADER_FIELD_LAST</a>, <a class="el" href="group__DBusMacros.html#gaa93f0eb578d23995850d61f7d61c55c1">FALSE</a>, <a class="el" href="dbus-marshal-header_8c_source.html#l00049">FIELDS_ARRAY_ELEMENT_SIGNATURE_OFFSET</a>, <a class="el" href="dbus-marshal-header_8c_source.html#l00065">FIELDS_ARRAY_LENGTH_OFFSET</a>, <a class="el" href="dbus-marshal-header_8c_source.html#l00047">FIELDS_ARRAY_SIGNATURE_OFFSET</a>, <a class="el" href="dbus-marshal-header_8c_source.html#l00067">FIRST_FIELD_OFFSET</a>, <a class="el" href="dbus-marshal-header_8c_source.html#l00123">HEADER_END_BEFORE_PADDING</a>, <a class="el" href="group__DBusMacros.html#gaa8cecfc5c5c054d2875c03e77b7be15d">TRUE</a>, <a class="el" href="structDBusTypeWriter.html#afe24080d2be45fb6033833a1a38d5d1a">DBusTypeWriter::u</a>, and <a class="el" href="dbus-marshal-recursive_8h_source.html#l00077">DBusTypeWriter::value_pos</a>.</p>
<p>Referenced by <a class="el" href="dbus-message_8c_source.html#l02656">dbus_message_iter_append_basic()</a>, and <a class="el" href="dbus-message_8c_source.html#l01143">dbus_message_set_reply_serial()</a>.</p>
</div>
</div>
<a class="anchor" id="gad92e0b1992cf96a4da642a4a54a5d26d"></a><!-- doxytag: member="dbus-marshal-header.c::_dbus_header_set_serial" ref="gad92e0b1992cf96a4da642a4a54a5d26d" args="(DBusHeader *header, dbus_uint32_t serial)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void <a class="el" href="group__DBusMarshal.html#gad92e0b1992cf96a4da642a4a54a5d26d">_dbus_header_set_serial</a> </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structDBusHeader.html">DBusHeader</a> * </td>
<td class="paramname"><em>header</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="group__DBusTypes.html#gaf513803b030613a669cc7ef199f90a8b">dbus_uint32_t</a> </td>
<td class="paramname"><em>serial</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Sets the serial number of a header. </p>
<p>This can only be done once on a header.</p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">header</td><td>the header </td></tr>
<tr><td class="paramname">serial</td><td>the serial </td></tr>
</table>
</dd>
</dl>
<p>Definition at line <a class="el" href="dbus-marshal-header_8c_source.html#l00404">404</a> of file <a class="el" href="dbus-marshal-header_8c_source.html">dbus-marshal-header.c</a>.</p>
<p>References <a class="el" href="dbus-marshal-header_8c_source.html#l00174">_dbus_header_get_byte_order()</a>, <a class="el" href="dbus-marshal-header_8c_source.html#l00427">_dbus_header_get_serial()</a>, <a class="el" href="dbus-marshal-basic_8c_source.html#l00253">_dbus_marshal_set_uint32()</a>, <a class="el" href="dbus-marshal-header_8h_source.html#l00049">DBusHeader::data</a>, and <a class="el" href="dbus-marshal-header_8c_source.html#l00063">SERIAL_OFFSET</a>.</p>
<p>Referenced by <a class="el" href="dbus-marshal-header_8c_source.html#l00490">_dbus_header_copy()</a>, and <a class="el" href="dbus-message_8c_source.html#l00254">dbus_message_set_serial()</a>.</p>
</div>
</div>
<a class="anchor" id="gad2073f8f2f2ba3b710aa929dced34cc3"></a><!-- doxytag: member="dbus-marshal-header.c::_dbus_header_toggle_flag" ref="gad2073f8f2f2ba3b710aa929dced34cc3" args="(DBusHeader *header, dbus_uint32_t flag, dbus_bool_t value)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void <a class="el" href="group__DBusMarshal.html#gad2073f8f2f2ba3b710aa929dced34cc3">_dbus_header_toggle_flag</a> </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structDBusHeader.html">DBusHeader</a> * </td>
<td class="paramname"><em>header</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="group__DBusTypes.html#gaf513803b030613a669cc7ef199f90a8b">dbus_uint32_t</a> </td>
<td class="paramname"><em>flag</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="group__DBusTypes.html#ga39c9cb0f3a2a8ad6f55cc4855d035349">dbus_bool_t</a> </td>
<td class="paramname"><em>value</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Toggles a message flag bit, turning on the bit if value = TRUE and flipping it off if value = FALSE. </p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">header</td><td>the header </td></tr>
<tr><td class="paramname">flag</td><td>the message flag to toggle </td></tr>
<tr><td class="paramname">value</td><td>toggle on or off </td></tr>
</table>
</dd>
</dl>
<p>Definition at line <a class="el" href="dbus-marshal-header_8c_source.html#l01457">1457</a> of file <a class="el" href="dbus-marshal-header_8c_source.html">dbus-marshal-header.c</a>.</p>
<p>References <a class="el" href="dbus-string_8c_source.html#l00473">_dbus_string_get_data_len()</a>, <a class="el" href="dbus-marshal-header_8h_source.html#l00049">DBusHeader::data</a>, and <a class="el" href="dbus-marshal-header_8c_source.html#l00057">FLAGS_OFFSET</a>.</p>
<p>Referenced by <a class="el" href="dbus-message_8c_source.html#l03026">dbus_message_set_auto_start()</a>, and <a class="el" href="dbus-message_8c_source.html#l02984">dbus_message_set_no_reply()</a>.</p>
</div>
</div>
<a class="anchor" id="ga0cff04252f97f6a25552c368199897f5"></a><!-- doxytag: member="dbus-marshal-header.c::_dbus_header_update_lengths" ref="ga0cff04252f97f6a25552c368199897f5" args="(DBusHeader *header, int body_len)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void <a class="el" href="group__DBusMarshal.html#ga0cff04252f97f6a25552c368199897f5">_dbus_header_update_lengths</a> </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structDBusHeader.html">DBusHeader</a> * </td>
<td class="paramname"><em>header</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>body_len</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Fills in the correct body length. </p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">header</td><td>the header </td></tr>
<tr><td class="paramname">body_len</td><td>the length of the body </td></tr>
</table>
</dd>
</dl>
<p>Definition at line <a class="el" href="dbus-marshal-header_8c_source.html#l01196">1196</a> of file <a class="el" href="dbus-marshal-header_8c_source.html">dbus-marshal-header.c</a>.</p>
<p>References <a class="el" href="dbus-marshal-header_8c_source.html#l00174">_dbus_header_get_byte_order()</a>, <a class="el" href="dbus-marshal-basic_8c_source.html#l00253">_dbus_marshal_set_uint32()</a>, <a class="el" href="dbus-marshal-header_8c_source.html#l00061">BODY_LENGTH_OFFSET</a>, and <a class="el" href="dbus-marshal-header_8h_source.html#l00049">DBusHeader::data</a>.</p>
<p>Referenced by <a class="el" href="dbus-message_8c_source.html#l00384">dbus_message_lock()</a>.</p>
</div>
</div>
<a class="anchor" id="ga609a4b8c0b65096890766fda73a4c40f"></a><!-- doxytag: member="dbus-marshal-byteswap.c::_dbus_marshal_byteswap" ref="ga609a4b8c0b65096890766fda73a4c40f" args="(const DBusString *signature, int signature_start, int old_byte_order, int new_byte_order, DBusString *value_str, int value_pos)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void <a class="el" href="group__DBusMarshal.html#ga609a4b8c0b65096890766fda73a4c40f">_dbus_marshal_byteswap</a> </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="structDBusString.html">DBusString</a> * </td>
<td class="paramname"><em>signature</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>signature_start</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>old_byte_order</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>new_byte_order</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structDBusString.html">DBusString</a> * </td>
<td class="paramname"><em>value_str</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>value_pos</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Byteswaps the marshaled data in the given value_str. </p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">signature</td><td>the types in the value_str </td></tr>
<tr><td class="paramname">signature_start</td><td>where in signature is the signature </td></tr>
<tr><td class="paramname">old_byte_order</td><td>the old byte order </td></tr>
<tr><td class="paramname">new_byte_order</td><td>the new byte order </td></tr>
<tr><td class="paramname">value_str</td><td>the string containing the body </td></tr>
<tr><td class="paramname">value_pos</td><td>where the values start </td></tr>
</table>
</dd>
</dl>
<p>Definition at line <a class="el" href="dbus-marshal-byteswap_8c_source.html#l00222">222</a> of file <a class="el" href="dbus-marshal-byteswap_8c_source.html">dbus-marshal-byteswap.c</a>.</p>
<p>References <a class="el" href="dbus-string_8c_source.html#l00473">_dbus_string_get_data_len()</a>, <a class="el" href="dbus-string_8c_source.html#l00722">_dbus_string_get_length()</a>, <a class="el" href="dbus-marshal-recursive_8c_source.html#l00761">_dbus_type_reader_init_types_only()</a>, <a class="el" href="group__DBusMacros.html#ga070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</a>, and <a class="el" href="group__DBusMacros.html#gaa8cecfc5c5c054d2875c03e77b7be15d">TRUE</a>.</p>
<p>Referenced by <a class="el" href="dbus-marshal-header_8c_source.html#l01496">_dbus_header_byteswap()</a>.</p>
</div>
</div>
<a class="anchor" id="gab331e099fa8cf3d94cf33ad7b20c81ae"></a><!-- doxytag: member="dbus-marshal-basic.c::_dbus_marshal_read_basic" ref="gab331e099fa8cf3d94cf33ad7b20c81ae" args="(const DBusString *str, int pos, int type, void *value, int byte_order, int *new_pos)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void <a class="el" href="group__DBusMarshal.html#gab331e099fa8cf3d94cf33ad7b20c81ae">_dbus_marshal_read_basic</a> </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="structDBusString.html">DBusString</a> * </td>
<td class="paramname"><em>str</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>pos</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>type</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">void * </td>
<td class="paramname"><em>value</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>byte_order</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int * </td>
<td class="paramname"><em>new_pos</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Demarshals a basic-typed value. </p>
<p>The "value" pointer is always the address of a variable of the basic type. So e.g. if the basic type is "double" then the pointer is a double*, and if it's "char*" then the pointer is a "char**".</p>
<p>A value of type <a class="el" href="unionDBusBasicValue.html" title="A simple value union that lets you access bytes as if they were various types; useful when dealing wi...">DBusBasicValue</a> is guaranteed to be large enough to hold any of the types that may be returned, which is handy if you are trying to do things generically. For example you can pass a DBusBasicValue* in to this function, and then pass the same DBusBasicValue* in to _dbus_marshal_basic_type() in order to move a value from one place to another.</p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">str</td><td>the string containing the data </td></tr>
<tr><td class="paramname">pos</td><td>position in the string </td></tr>
<tr><td class="paramname">type</td><td>type of value to demarshal </td></tr>
<tr><td class="paramname">value</td><td>pointer to return value data </td></tr>
<tr><td class="paramname">byte_order</td><td>the byte order </td></tr>
<tr><td class="paramname">new_pos</td><td>pointer to update with new position, or <a class="el" href="group__DBusMacros.html#ga070d2ce7b6bb7e5c05602aa8c308d0c4" title="A null pointer, defined appropriately for C or C++.">NULL</a> </td></tr>
</table>
</dd>
</dl>
<p>Definition at line <a class="el" href="dbus-marshal-basic_8c_source.html#l00492">492</a> of file <a class="el" href="dbus-marshal-basic_8c_source.html">dbus-marshal-basic.c</a>.</p>
<p>References <a class="el" href="dbus-marshal-basic_8c_source.html#l00454">_dbus_marshal_read_uint32()</a>, <a class="el" href="dbus-string_8c_source.html#l00545">_dbus_string_get_byte()</a>, <a class="el" href="dbus-string_8c_source.html#l00451">_dbus_string_get_const_data()</a>, <a class="el" href="dbus-marshal-basic_8c_source.html#l01219">_dbus_type_to_string()</a>, <a class="el" href="dbus-internals_8c_source.html#l00258">_dbus_warn_check_failed()</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-signature_8c_source.html#l00318">dbus_type_is_basic()</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#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>, and <a class="el" href="dbus-arch-deps_8h_source.html#l00037">dbus_uint64_t</a>.</p>
<p>Referenced by <a class="el" href="dbus-marshal-header_8c_source.html#l01351">_dbus_header_get_field_basic()</a>, and <a class="el" href="dbus-marshal-recursive_8c_source.html#l00870">_dbus_type_reader_read_basic()</a>.</p>
</div>
</div>
<a class="anchor" id="ga6dd82a202c19758cbf76dbed2946615d"></a><!-- doxytag: member="dbus-marshal-basic.c::_dbus_marshal_read_uint32" ref="ga6dd82a202c19758cbf76dbed2946615d" args="(const DBusString *str, int pos, int byte_order, int *new_pos)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__DBusTypes.html#gaf513803b030613a669cc7ef199f90a8b">dbus_uint32_t</a> <a class="el" href="group__DBusMarshal.html#ga6dd82a202c19758cbf76dbed2946615d">_dbus_marshal_read_uint32</a> </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="structDBusString.html">DBusString</a> * </td>
<td class="paramname"><em>str</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>pos</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>byte_order</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int * </td>
<td class="paramname"><em>new_pos</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Convenience function to demarshal a 32 bit unsigned integer. </p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">str</td><td>the string containing the data </td></tr>
<tr><td class="paramname">byte_order</td><td>the byte order </td></tr>
<tr><td class="paramname">pos</td><td>the position in the string </td></tr>
<tr><td class="paramname">new_pos</td><td>the new position of the string </td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>the demarshaled integer. </dd></dl>
<p>Definition at line <a class="el" href="dbus-marshal-basic_8c_source.html#l00454">454</a> of file <a class="el" href="dbus-marshal-basic_8c_source.html">dbus-marshal-basic.c</a>.</p>
<p>References <a class="el" href="dbus-string_8c_source.html#l00451">_dbus_string_get_const_data()</a>, <a class="el" href="dbus-string_8c_source.html#l00722">_dbus_string_get_length()</a>, and <a class="el" href="dbus-marshal-basic_8c_source.html#l00182">_dbus_unpack_uint32()</a>.</p>
<p>Referenced by <a class="el" href="dbus-marshal-header_8c_source.html#l00427">_dbus_header_get_serial()</a>, <a class="el" href="dbus-marshal-header_8c_source.html#l00673">_dbus_header_have_message_untrusted()</a>, <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#l01145">_dbus_marshal_skip_array()</a>, and <a class="el" href="dbus-marshal-basic_8c_source.html#l01077">_dbus_marshal_skip_basic()</a>.</p>
</div>
</div>
<a class="anchor" id="ga854526bdf221a5e82b2e14581ac17d8f"></a><!-- doxytag: member="dbus-marshal-basic.c::_dbus_marshal_set_basic" ref="ga854526bdf221a5e82b2e14581ac17d8f" args="(DBusString *str, int pos, int type, const void *value, int byte_order, int *old_end_pos, int *new_end_pos)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__DBusTypes.html#ga39c9cb0f3a2a8ad6f55cc4855d035349">dbus_bool_t</a> <a class="el" href="group__DBusMarshal.html#ga854526bdf221a5e82b2e14581ac17d8f">_dbus_marshal_set_basic</a> </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structDBusString.html">DBusString</a> * </td>
<td class="paramname"><em>str</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>pos</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>type</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const void * </td>
<td class="paramname"><em>value</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>byte_order</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int * </td>
<td class="paramname"><em>old_end_pos</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int * </td>
<td class="paramname"><em>new_end_pos</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Sets an existing basic type value to a new value. </p>
<p>Arguments work the same way as _dbus_marshal_basic_type().</p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">str</td><td>the string </td></tr>
<tr><td class="paramname">pos</td><td>location of the current value </td></tr>
<tr><td class="paramname">type</td><td>the type of the current and new values </td></tr>
<tr><td class="paramname">value</td><td>the address of the new value </td></tr>
<tr><td class="paramname">byte_order</td><td>byte order for marshaling </td></tr>
<tr><td class="paramname">old_end_pos</td><td>location to store end position of the old value, or <a class="el" href="group__DBusMacros.html#ga070d2ce7b6bb7e5c05602aa8c308d0c4" title="A null pointer, defined appropriately for C or C++.">NULL</a> </td></tr>
<tr><td class="paramname">new_end_pos</td><td>location to store end position of the new value, or <a class="el" href="group__DBusMacros.html#ga070d2ce7b6bb7e5c05602aa8c308d0c4" title="A null pointer, defined appropriately for C or C++.">NULL</a> </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 no memory </dd></dl>
<p>Definition at line <a class="el" href="dbus-marshal-basic_8c_source.html#l00370">370</a> of file <a class="el" href="dbus-marshal-basic_8c_source.html">dbus-marshal-basic.c</a>.</p>
<p>References <a class="el" href="dbus-string_8c_source.html#l00521">_dbus_string_set_byte()</a>, <a class="el" href="dbus-types_8h_source.html#l00149">DBusBasicValue::byt</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#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#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>, <a class="el" href="group__DBusMacros.html#ga070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</a>, <a class="el" href="dbus-types_8h_source.html#l00150">DBusBasicValue::str</a>, <a class="el" href="group__DBusMacros.html#gaa8cecfc5c5c054d2875c03e77b7be15d">TRUE</a>, <a class="el" href="dbus-types_8h_source.html#l00141">DBusBasicValue::u16</a>, and <a class="el" href="dbus-types_8h_source.html#l00143">DBusBasicValue::u32</a>.</p>
</div>
</div>
<a class="anchor" id="ga4bcfb6a664c7e46c7ffc31f96d532a02"></a><!-- doxytag: member="dbus-marshal-basic.c::_dbus_marshal_set_uint32" ref="ga4bcfb6a664c7e46c7ffc31f96d532a02" args="(DBusString *str, int pos, dbus_uint32_t value, int byte_order)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void <a class="el" href="group__DBusMarshal.html#ga4bcfb6a664c7e46c7ffc31f96d532a02">_dbus_marshal_set_uint32</a> </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structDBusString.html">DBusString</a> * </td>
<td class="paramname"><em>str</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>pos</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="group__DBusTypes.html#gaf513803b030613a669cc7ef199f90a8b">dbus_uint32_t</a> </td>
<td class="paramname"><em>value</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>byte_order</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Sets the 4 bytes at the given offset to a marshaled unsigned integer, replacing anything found there previously. </p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">str</td><td>the string to write the marshalled int to </td></tr>
<tr><td class="paramname">pos</td><td>the byte offset where int should be written </td></tr>
<tr><td class="paramname">value</td><td>the value </td></tr>
<tr><td class="paramname">byte_order</td><td>the byte order to use </td></tr>
</table>
</dd>
</dl>
<p>Definition at line <a class="el" href="dbus-marshal-basic_8c_source.html#l00253">253</a> of file <a class="el" href="dbus-marshal-basic_8c_source.html">dbus-marshal-basic.c</a>.</p>
<p>Referenced by <a class="el" href="dbus-marshal-header_8c_source.html#l00404">_dbus_header_set_serial()</a>, <a class="el" href="dbus-marshal-header_8c_source.html#l01196">_dbus_header_update_lengths()</a>, and <a class="el" href="dbus-marshal-recursive_8c_source.html#l02179">_dbus_type_writer_unrecurse()</a>.</p>
</div>
</div>
<a class="anchor" id="ga8d9c5bcc039d9099df197a125a7259b8"></a><!-- doxytag: member="dbus-marshal-basic.c::_dbus_marshal_skip_array" ref="ga8d9c5bcc039d9099df197a125a7259b8" args="(const DBusString *str, int element_type, int byte_order, int *pos)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void <a class="el" href="group__DBusMarshal.html#ga8d9c5bcc039d9099df197a125a7259b8">_dbus_marshal_skip_array</a> </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="structDBusString.html">DBusString</a> * </td>
<td class="paramname"><em>str</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>element_type</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>byte_order</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int * </td>
<td class="paramname"><em>pos</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Skips an array, returning the next position. </p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">str</td><td>the string containing the data </td></tr>
<tr><td class="paramname">element_type</td><td>the type of array elements </td></tr>
<tr><td class="paramname">byte_order</td><td>the byte order </td></tr>
<tr><td class="paramname">pos</td><td>pointer to position in the string, updated on return to new position </td></tr>
</table>
</dd>
</dl>
<p>Definition at line <a class="el" href="dbus-marshal-basic_8c_source.html#l01145">1145</a> of file <a class="el" href="dbus-marshal-basic_8c_source.html">dbus-marshal-basic.c</a>.</p>
<p>References <a class="el" href="dbus-marshal-basic_8c_source.html#l00454">_dbus_marshal_read_uint32()</a>, and <a class="el" href="dbus-marshal-basic_8c_source.html#l01173">_dbus_type_get_alignment()</a>.</p>
</div>
</div>
<a class="anchor" id="gafd1ab7e9bd8e74cc41f03c76f4dce2dd"></a><!-- doxytag: member="dbus-marshal-basic.c::_dbus_marshal_skip_basic" ref="gafd1ab7e9bd8e74cc41f03c76f4dce2dd" args="(const DBusString *str, int type, int byte_order, int *pos)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void <a class="el" href="group__DBusMarshal.html#gafd1ab7e9bd8e74cc41f03c76f4dce2dd">_dbus_marshal_skip_basic</a> </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="structDBusString.html">DBusString</a> * </td>
<td class="paramname"><em>str</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>type</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>byte_order</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int * </td>
<td class="paramname"><em>pos</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Skips over a basic-typed value, reporting the following position. </p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">str</td><td>the string containing the data </td></tr>
<tr><td class="paramname">type</td><td>type of value to read </td></tr>
<tr><td class="paramname">byte_order</td><td>the byte order </td></tr>
<tr><td class="paramname">pos</td><td>pointer to position in the string, updated on return to new position </td></tr>
</table>
</dd>
</dl>
<p>Definition at line <a class="el" href="dbus-marshal-basic_8c_source.html#l01077">1077</a> of file <a class="el" href="dbus-marshal-basic_8c_source.html">dbus-marshal-basic.c</a>.</p>
<p>References <a class="el" href="dbus-marshal-basic_8c_source.html#l00454">_dbus_marshal_read_uint32()</a>, <a class="el" href="dbus-string_8c_source.html#l00545">_dbus_string_get_byte()</a>, <a class="el" href="dbus-marshal-basic_8c_source.html#l01219">_dbus_type_to_string()</a>, <a class="el" href="dbus-internals_8c_source.html#l00230">_dbus_warn()</a>, <a class="el" href="dbus-protocol_8h_source.html#l00054">DBUS_BIG_ENDIAN</a>, <a class="el" href="dbus-protocol_8h_source.html#l00053">DBUS_LITTLE_ENDIAN</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#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#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>, and <a class="el" href="dbus-protocol_8h_source.html#l00114">DBUS_TYPE_UNIX_FD</a>.</p>
</div>
</div>
<a class="anchor" id="ga54323d48921de8c5bd04ae01548312bb"></a><!-- doxytag: member="dbus-marshal-basic.c::_dbus_marshal_write_basic" ref="ga54323d48921de8c5bd04ae01548312bb" args="(DBusString *str, int insert_at, int type, const void *value, int byte_order, int *pos_after)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__DBusTypes.html#ga39c9cb0f3a2a8ad6f55cc4855d035349">dbus_bool_t</a> <a class="el" href="group__DBusMarshal.html#ga54323d48921de8c5bd04ae01548312bb">_dbus_marshal_write_basic</a> </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structDBusString.html">DBusString</a> * </td>
<td class="paramname"><em>str</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>insert_at</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>type</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const void * </td>
<td class="paramname"><em>value</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>byte_order</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int * </td>
<td class="paramname"><em>pos_after</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Marshals a basic-typed value. </p>
<p>The "value" pointer is always the address of a variable containing the basic type value. So for example for int32 it will be dbus_int32_t*, and for string it will be const char**. This is for symmetry with <a class="el" href="group__DBusMarshal.html#gab331e099fa8cf3d94cf33ad7b20c81ae" title="Demarshals a basic-typed value.">_dbus_marshal_read_basic()</a> and to have a simple consistent rule.</p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">str</td><td>string to marshal to </td></tr>
<tr><td class="paramname">insert_at</td><td>where to insert the value </td></tr>
<tr><td class="paramname">type</td><td>type of value </td></tr>
<tr><td class="paramname">value</td><td>pointer to a variable containing the value </td></tr>
<tr><td class="paramname">byte_order</td><td>byte order </td></tr>
<tr><td class="paramname">pos_after</td><td><a class="el" href="group__DBusMacros.html#ga070d2ce7b6bb7e5c05602aa8c308d0c4" title="A null pointer, defined appropriately for C or C++.">NULL</a> or the position after the type </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> on success </dd></dl>
<p>Definition at line <a class="el" href="dbus-marshal-basic_8c_source.html#l00794">794</a> of file <a class="el" href="dbus-marshal-basic_8c_source.html">dbus-marshal-basic.c</a>.</p>
<p>References <a class="el" href="dbus-string_8c_source.html#l00597">_dbus_string_insert_byte()</a>, <a class="el" href="dbus-types_8h_source.html#l00149">DBusBasicValue::byt</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-signature_8c_source.html#l00318">dbus_type_is_basic()</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#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>, <a class="el" href="group__DBusMacros.html#ga070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</a>, <a class="el" href="dbus-types_8h_source.html#l00150">DBusBasicValue::str</a>, <a class="el" href="group__DBusMacros.html#gaa8cecfc5c5c054d2875c03e77b7be15d">TRUE</a>, <a class="el" href="dbus-types_8h_source.html#l00141">DBusBasicValue::u16</a>, and <a class="el" href="dbus-types_8h_source.html#l00143">DBusBasicValue::u32</a>.</p>
</div>
</div>
<a class="anchor" id="ga990da87b984d8917da26b89a6470fdf5"></a><!-- doxytag: member="dbus-marshal-basic.c::_dbus_marshal_write_fixed_multi" ref="ga990da87b984d8917da26b89a6470fdf5" args="(DBusString *str, int insert_at, int element_type, const void *value, int n_elements, int byte_order, int *pos_after)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__DBusTypes.html#ga39c9cb0f3a2a8ad6f55cc4855d035349">dbus_bool_t</a> <a class="el" href="group__DBusMarshal.html#ga990da87b984d8917da26b89a6470fdf5">_dbus_marshal_write_fixed_multi</a> </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structDBusString.html">DBusString</a> * </td>
<td class="paramname"><em>str</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>insert_at</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>element_type</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const void * </td>
<td class="paramname"><em>value</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>n_elements</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>byte_order</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int * </td>
<td class="paramname"><em>pos_after</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Marshals a block of values of fixed-length type all at once, as an optimization. </p>
<p><a class="el" href="group__DBusSignature.html#ga2f89962cbd33e4ad843824157bae2093" title="Tells you whether values of this type can change length if you set them to some other value...">dbus_type_is_fixed()</a> returns <a class="el" href="group__DBusMacros.html#gaa8cecfc5c5c054d2875c03e77b7be15d" title="Expands to "1".">TRUE</a> for fixed-length types, which are the basic types minus the string-like types.</p>
<p>The value argument should be the adddress of an array, so e.g. "const dbus_uint32_t**"</p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">str</td><td>string to marshal to </td></tr>
<tr><td class="paramname">insert_at</td><td>where to insert the value </td></tr>
<tr><td class="paramname">element_type</td><td>type of array elements </td></tr>
<tr><td class="paramname">value</td><td>address of an array to marshal </td></tr>
<tr><td class="paramname">n_elements</td><td>number of elements in the array </td></tr>
<tr><td class="paramname">byte_order</td><td>byte order </td></tr>
<tr><td class="paramname">pos_after</td><td><a class="el" href="group__DBusMacros.html#ga070d2ce7b6bb7e5c05602aa8c308d0c4" title="A null pointer, defined appropriately for C or C++.">NULL</a> or the position after the type </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> on success </dd></dl>
<p>Definition at line <a class="el" href="dbus-marshal-basic_8c_source.html#l01020">1020</a> of file <a class="el" href="dbus-marshal-basic_8c_source.html">dbus-marshal-basic.c</a>.</p>
<p>References <a class="el" href="dbus-marshal-basic_8c_source.html#l01219">_dbus_type_to_string()</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-signature_8c_source.html#l00349">dbus_type_is_fixed()</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>, and <a class="el" href="group__DBusMacros.html#gaa93f0eb578d23995850d61f7d61c55c1">FALSE</a>.</p>
<p>Referenced by <a class="el" href="dbus-marshal-recursive_8c_source.html#l02359">_dbus_type_writer_write_fixed_multi()</a>.</p>
</div>
</div>
<a class="anchor" id="ga44e670d715bb678045f3d79b35920b0b"></a><!-- doxytag: member="dbus-marshal-basic.c::_dbus_pack_uint32" ref="ga44e670d715bb678045f3d79b35920b0b" args="(dbus_uint32_t value, int byte_order, unsigned char *data)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void <a class="el" href="group__DBusMarshal.html#ga44e670d715bb678045f3d79b35920b0b">_dbus_pack_uint32</a> </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__DBusTypes.html#gaf513803b030613a669cc7ef199f90a8b">dbus_uint32_t</a> </td>
<td class="paramname"><em>value</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>byte_order</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned char * </td>
<td class="paramname"><em>data</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Packs a 32 bit unsigned integer into a data pointer. </p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">value</td><td>the value </td></tr>
<tr><td class="paramname">byte_order</td><td>the byte order to use </td></tr>
<tr><td class="paramname">data</td><td>the data pointer </td></tr>
</table>
</dd>
</dl>
<p>Definition at line <a class="el" href="dbus-marshal-basic_8c_source.html#l00135">135</a> of file <a class="el" href="dbus-marshal-basic_8c_source.html">dbus-marshal-basic.c</a>.</p>
</div>
</div>
<a class="anchor" id="gaec86e8e1ae2f25b673ae6d900ab323c7"></a><!-- doxytag: member="dbus-marshal-basic.c::_dbus_swap_array" ref="gaec86e8e1ae2f25b673ae6d900ab323c7" args="(unsigned char *data, int n_elements, int alignment)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void <a class="el" href="group__DBusMarshal.html#gaec86e8e1ae2f25b673ae6d900ab323c7">_dbus_swap_array</a> </td>
<td>(</td>
<td class="paramtype">unsigned char * </td>
<td class="paramname"><em>data</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>n_elements</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>alignment</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Swaps the elements of an array to the opposite byte order. </p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">data</td><td>start of array </td></tr>
<tr><td class="paramname">n_elements</td><td>number of elements </td></tr>
<tr><td class="paramname">alignment</td><td>size of each element </td></tr>
</table>
</dd>
</dl>
<p>Definition at line <a class="el" href="dbus-marshal-basic_8c_source.html#l00888">888</a> of file <a class="el" href="dbus-marshal-basic_8c_source.html">dbus-marshal-basic.c</a>.</p>
<p>References <a class="el" href="dbus-arch-deps_8h_source.html#l00037">dbus_uint64_t</a>.</p>
</div>
</div>
<a class="anchor" id="ga2ba80f227880e442c140bc67653b0abd"></a><!-- doxytag: member="dbus-marshal-basic.c::_dbus_type_get_alignment" ref="ga2ba80f227880e442c140bc67653b0abd" args="(int typecode)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int <a class="el" href="group__DBusMarshal.html#ga2ba80f227880e442c140bc67653b0abd">_dbus_type_get_alignment</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>Gets the alignment requirement for the given type; will be 1, 4, or 8. </p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">typecode</td><td>the type </td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>alignment of 1, 4, or 8 </dd></dl>
<p>Definition at line <a class="el" href="dbus-marshal-basic_8c_source.html#l01173">1173</a> of file <a class="el" href="dbus-marshal-basic_8c_source.html">dbus-marshal-basic.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>, and <a class="el" href="dbus-protocol_8h_source.html#l00124">DBUS_TYPE_VARIANT</a>.</p>
<p>Referenced by <a class="el" href="dbus-marshal-basic_8c_source.html#l01145">_dbus_marshal_skip_array()</a>, <a class="el" href="dbus-marshal-recursive_8c_source.html#l00924">_dbus_type_reader_read_fixed_multi()</a>, and <a class="el" href="dbus-message_8c_source.html#l02791">dbus_message_iter_append_fixed_array()</a>.</p>
</div>
</div>
<a class="anchor" id="gaa4057610b3d9e81fed212c17f6599516"></a><!-- doxytag: member="dbus-marshal-recursive.c::_dbus_type_reader_delete" ref="gaa4057610b3d9e81fed212c17f6599516" args="(DBusTypeReader *reader, const DBusTypeReader *realign_root)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__DBusTypes.html#ga39c9cb0f3a2a8ad6f55cc4855d035349">dbus_bool_t</a> <a class="el" href="group__DBusMarshal.html#gaa4057610b3d9e81fed212c17f6599516">_dbus_type_reader_delete</a> </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structDBusTypeReader.html">DBusTypeReader</a> * </td>
<td class="paramname"><em>reader</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structDBusTypeReader.html">DBusTypeReader</a> * </td>
<td class="paramname"><em>realign_root</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Recursively deletes any value pointed to by the reader, leaving the reader valid to continue reading. </p>
<p>Any other readers will be invalidated.</p>
<p>The provided realign_root is the reader to start from when realigning the data that follows the newly-set value. See <a class="el" href="group__DBusMarshal.html#gaaf11ca429434c2c280f5fad34ed95204" title="Sets a new value for the basic type value pointed to by the reader, leaving the reader valid to conti...">_dbus_type_reader_set_basic()</a> for more details on the realign_root paramter.</p>
<dl class="todo"><dt><b><a class="el" href="todo.html#_todo000016">Todo:</a></b></dt><dd>for now this does not delete the typecodes associated with the value, so this function should only be used for array elements.</dd></dl>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">reader</td><td>reader indicating where to delete a value </td></tr>
<tr><td class="paramname">realign_root</td><td>realign from here </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 not enough memory </dd></dl>
<p>Definition at line <a class="el" href="dbus-marshal-recursive_8c_source.html#l01420">1420</a> of file <a class="el" href="dbus-marshal-recursive_8c_source.html">dbus-marshal-recursive.c</a>.</p>
<p>References <a class="el" href="group__DBusMacros.html#gaa93f0eb578d23995850d61f7d61c55c1">FALSE</a>, <a class="el" href="dbus-marshal-recursive_8h_source.html#l00052">DBusTypeReader::klass</a>, <a class="el" href="group__DBusMacros.html#ga070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</a>, and <a class="el" href="group__DBusMacros.html#gaa8cecfc5c5c054d2875c03e77b7be15d">TRUE</a>.</p>
<p>Referenced by <a class="el" href="dbus-marshal-header_8c_source.html#l01416">_dbus_header_delete_field()</a>.</p>
</div>
</div>
<a class="anchor" id="ga7def93d676d528c261aa274cea41c29d"></a><!-- doxytag: member="dbus-marshal-recursive.c::_dbus_type_reader_get_array_length" ref="ga7def93d676d528c261aa274cea41c29d" args="(const DBusTypeReader *reader)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int <a class="el" href="group__DBusMarshal.html#ga7def93d676d528c261aa274cea41c29d">_dbus_type_reader_get_array_length</a> </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="structDBusTypeReader.html">DBusTypeReader</a> * </td>
<td class="paramname"><em>reader</em></td><td>)</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Returns the number of bytes in the array. </p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">reader</td><td>the reader to read from </td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>the number of bytes in the array </dd></dl>
<p>Definition at line <a class="el" href="dbus-marshal-recursive_8c_source.html#l00900">900</a> of file <a class="el" href="dbus-marshal-recursive_8c_source.html">dbus-marshal-recursive.c</a>.</p>
<p>References <a class="el" href="dbus-marshal-recursive_8h_source.html#l00052">DBusTypeReader::klass</a>, and <a class="el" href="dbus-marshal-recursive_8c_source.html#l00129">DBusTypeReaderClass::types_only</a>.</p>
<p>Referenced by <a class="el" href="dbus-message_8c_source.html#l02346">dbus_message_iter_get_array_len()</a>.</p>
</div>
</div>
<a class="anchor" id="gab8e39cb8084247d54d7f272c51622a73"></a><!-- doxytag: member="dbus-marshal-recursive.c::_dbus_type_reader_get_current_type" ref="gab8e39cb8084247d54d7f272c51622a73" args="(const DBusTypeReader *reader)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int <a class="el" href="group__DBusMarshal.html#gab8e39cb8084247d54d7f272c51622a73">_dbus_type_reader_get_current_type</a> </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="structDBusTypeReader.html">DBusTypeReader</a> * </td>
<td class="paramname"><em>reader</em></td><td>)</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Gets the type of the value the reader is currently pointing to; or for a types-only reader gets the type it's currently pointing to. </p>
<p>If the reader is at the end of a block or end of a container such as an array, returns <a class="el" href="group__DBusProtocol.html#gaa9588da889743b2119dc6664712ae51e" title="Type code that is never equal to a legitimate type code.">DBUS_TYPE_INVALID</a>.</p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">reader</td><td>the reader </td></tr>
</table>
</dd>
</dl>
<p>Definition at line <a class="el" href="dbus-marshal-recursive_8c_source.html#l00786">786</a> of file <a class="el" href="dbus-marshal-recursive_8c_source.html">dbus-marshal-recursive.c</a>.</p>
<p>References <a class="el" href="dbus-marshal-basic_8c_source.html#l01416">_dbus_first_type_in_signature()</a>, <a class="el" href="dbus-marshal-basic_8c_source.html#l01219">_dbus_type_to_string()</a>, <a class="el" href="dbus-marshal-recursive_8c_source.html#l00132">DBusTypeReaderClass::check_finished</a>, <a class="el" href="dbus-protocol_8h_source.html#l00164">DBUS_DICT_ENTRY_BEGIN_CHAR</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#l00156">DBUS_STRUCT_BEGIN_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="dbus-marshal-recursive_8h_source.html#l00043">DBusTypeReader::finished</a>, <a class="el" href="dbus-marshal-recursive_8h_source.html#l00052">DBusTypeReader::klass</a>, <a class="el" href="dbus-marshal-recursive_8h_source.html#l00048">DBusTypeReader::type_pos</a>, and <a class="el" href="dbus-marshal-recursive_8h_source.html#l00047">DBusTypeReader::type_str</a>.</p>
<p>Referenced by <a class="el" href="dbus-marshal-header_8c_source.html#l00970">_dbus_header_load()</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#l00821">_dbus_type_reader_get_element_type()</a>, <a class="el" href="dbus-marshal-recursive_8c_source.html#l01054">_dbus_type_reader_next()</a>, <a class="el" href="dbus-marshal-recursive_8c_source.html#l00870">_dbus_type_reader_read_basic()</a>, <a class="el" href="dbus-marshal-recursive_8c_source.html#l01363">_dbus_type_reader_set_basic()</a>, <a class="el" href="dbus-message_8c_source.html#l02139">dbus_message_iter_get_arg_type()</a>, <a class="el" href="dbus-message_8c_source.html#l02391">dbus_message_iter_get_fixed_array()</a>, and <a class="el" href="dbus-message_8c_source.html#l02064">dbus_message_iter_init()</a>.</p>
</div>
</div>
<a class="anchor" id="ga6e5439f7ca5ee8a1ce943ddab7611d0d"></a><!-- doxytag: member="dbus-marshal-recursive.c::_dbus_type_reader_get_element_type" ref="ga6e5439f7ca5ee8a1ce943ddab7611d0d" args="(const DBusTypeReader *reader)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int <a class="el" href="group__DBusMarshal.html#ga6e5439f7ca5ee8a1ce943ddab7611d0d">_dbus_type_reader_get_element_type</a> </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="structDBusTypeReader.html">DBusTypeReader</a> * </td>
<td class="paramname"><em>reader</em></td><td>)</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Gets the type of an element of the array the reader is currently pointing to. </p>
<p>It's an error to call this if <a class="el" href="group__DBusMarshal.html#gab8e39cb8084247d54d7f272c51622a73" title="Gets the type of the value the reader is currently pointing to; or for a types-only reader gets the t...">_dbus_type_reader_get_current_type()</a> doesn't return <a class="el" href="group__DBusProtocol.html#ga8912f600f81a773066ca03d9163613a9" title="Type code marking a D-Bus array type.">DBUS_TYPE_ARRAY</a> for this reader.</p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">reader</td><td>the reader </td></tr>
</table>
</dd>
</dl>
<p>Definition at line <a class="el" href="dbus-marshal-recursive_8c_source.html#l00821">821</a> of file <a class="el" href="dbus-marshal-recursive_8c_source.html">dbus-marshal-recursive.c</a>.</p>
<p>References <a class="el" href="dbus-marshal-basic_8c_source.html#l01416">_dbus_first_type_in_signature()</a>, <a class="el" href="dbus-marshal-recursive_8c_source.html#l00786">_dbus_type_reader_get_current_type()</a>, <a class="el" href="dbus-protocol_8h_source.html#l00120">DBUS_TYPE_ARRAY</a>, <a class="el" href="dbus-marshal-recursive_8h_source.html#l00048">DBusTypeReader::type_pos</a>, and <a class="el" href="dbus-marshal-recursive_8h_source.html#l00047">DBusTypeReader::type_str</a>.</p>
<p>Referenced by <a class="el" href="dbus-message_8c_source.html#l00796">_dbus_message_iter_get_args_valist()</a>, and <a class="el" href="dbus-message_8c_source.html#l02158">dbus_message_iter_get_element_type()</a>.</p>
</div>
</div>
<a class="anchor" id="ga4578cc623c8b0978ca780ce0ab950fdb"></a><!-- doxytag: member="dbus-marshal-recursive.c::_dbus_type_reader_get_signature" ref="ga4578cc623c8b0978ca780ce0ab950fdb" args="(const DBusTypeReader *reader, const DBusString **str_p, int *start_p, int *len_p)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void <a class="el" href="group__DBusMarshal.html#ga4578cc623c8b0978ca780ce0ab950fdb">_dbus_type_reader_get_signature</a> </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="structDBusTypeReader.html">DBusTypeReader</a> * </td>
<td class="paramname"><em>reader</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structDBusString.html">DBusString</a> ** </td>
<td class="paramname"><em>str_p</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int * </td>
<td class="paramname"><em>start_p</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int * </td>
<td class="paramname"><em>len_p</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Gets the string and range of said string containing the signature of the current value. </p>
<p>Essentially a more complete version of <a class="el" href="group__DBusMarshal.html#gab8e39cb8084247d54d7f272c51622a73" title="Gets the type of the value the reader is currently pointing to; or for a types-only reader gets the t...">_dbus_type_reader_get_current_type()</a> (returns the full type rather than only the outside of the onion).</p>
<p>Note though that the first byte in a struct signature is <a class="el" href="group__DBusProtocol.html#ga725657eca93175475e0694b858f51fd6" title="Code marking the start of a struct type in a type signature.">DBUS_STRUCT_BEGIN_CHAR</a> while the current type will be <a class="el" href="group__DBusProtocol.html#gae4b22a74b9edb0ec0ff6e0294794d3f9" title="STRUCT and DICT_ENTRY are sort of special since their codes can't appear in a type string...">DBUS_TYPE_STRUCT</a> so it isn't true that the first byte of the signature is always the same as the current type. Another difference is that this function will still return a signature when inside an empty array; say you recurse into empty array of int32, the signature is "i" but the current type will always be <a class="el" href="group__DBusProtocol.html#gaa9588da889743b2119dc6664712ae51e" title="Type code that is never equal to a legitimate type code.">DBUS_TYPE_INVALID</a> since there are no elements to be currently pointing to.</p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">reader</td><td>the reader </td></tr>
<tr><td class="paramname">str_p</td><td>place to return the string with the type in it </td></tr>
<tr><td class="paramname">start_p</td><td>place to return start of the type </td></tr>
<tr><td class="paramname">len_p</td><td>place to return the length of the type </td></tr>
</table>
</dd>
</dl>
<p>Definition at line <a class="el" href="dbus-marshal-recursive_8c_source.html#l01125">1125</a> of file <a class="el" href="dbus-marshal-recursive_8c_source.html">dbus-marshal-recursive.c</a>.</p>
<p>References <a class="el" href="dbus-marshal-recursive_8h_source.html#l00048">DBusTypeReader::type_pos</a>, and <a class="el" href="dbus-marshal-recursive_8h_source.html#l00047">DBusTypeReader::type_str</a>.</p>
<p>Referenced by <a class="el" href="dbus-message_8c_source.html#l02220">dbus_message_iter_get_signature()</a>.</p>
</div>
</div>
<a class="anchor" id="ga2a8ab1152821950b1fe29e000954981c"></a><!-- doxytag: member="dbus-marshal-recursive.c::_dbus_type_reader_get_value_pos" ref="ga2a8ab1152821950b1fe29e000954981c" args="(const DBusTypeReader *reader)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int <a class="el" href="group__DBusMarshal.html#ga2a8ab1152821950b1fe29e000954981c">_dbus_type_reader_get_value_pos</a> </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="structDBusTypeReader.html">DBusTypeReader</a> * </td>
<td class="paramname"><em>reader</em></td><td>)</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Gets the current position in the value block. </p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">reader</td><td>the reader </td></tr>
</table>
</dd>
</dl>
<p>Definition at line <a class="el" href="dbus-marshal-recursive_8c_source.html#l00838">838</a> of file <a class="el" href="dbus-marshal-recursive_8c_source.html">dbus-marshal-recursive.c</a>.</p>
<p>References <a class="el" href="dbus-marshal-recursive_8h_source.html#l00050">DBusTypeReader::value_pos</a>.</p>
<p>Referenced by <a class="el" href="dbus-marshal-header_8c_source.html#l00970">_dbus_header_load()</a>.</p>
</div>
</div>
<a class="anchor" id="ga97a59dbd1597ef1b267457e809f095de"></a><!-- doxytag: member="dbus-marshal-recursive.c::_dbus_type_reader_has_next" ref="ga97a59dbd1597ef1b267457e809f095de" args="(const DBusTypeReader *reader)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__DBusTypes.html#ga39c9cb0f3a2a8ad6f55cc4855d035349">dbus_bool_t</a> <a class="el" href="group__DBusMarshal.html#ga97a59dbd1597ef1b267457e809f095de">_dbus_type_reader_has_next</a> </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="structDBusTypeReader.html">DBusTypeReader</a> * </td>
<td class="paramname"><em>reader</em></td><td>)</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Check whether there's another value on this "level". </p>
<p>e.g. the next field in a struct, the next value in an array. Returns FALSE at the end of the current container.</p>
<p>You probably don't want to use this; it makes for an awkward for/while loop. A nicer one is "while ((current_type = get_current_type()) != INVALID)"</p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">reader</td><td>the reader </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-marshal-recursive_8c_source.html#l01094">1094</a> of file <a class="el" href="dbus-marshal-recursive_8c_source.html">dbus-marshal-recursive.c</a>.</p>
<p>References <a class="el" href="dbus-marshal-recursive_8c_source.html#l01054">_dbus_type_reader_next()</a>.</p>
<p>Referenced by <a class="el" href="dbus-message_8c_source.html#l02095">dbus_message_iter_has_next()</a>.</p>
</div>
</div>
<a class="anchor" id="ga35d70cf69b1196518367e3e68e9b2dd2"></a><!-- doxytag: member="dbus-marshal-recursive.c::_dbus_type_reader_init" ref="ga35d70cf69b1196518367e3e68e9b2dd2" args="(DBusTypeReader *reader, int byte_order, const DBusString *type_str, int type_pos, const DBusString *value_str, int value_pos)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void <a class="el" href="group__DBusMarshal.html#ga35d70cf69b1196518367e3e68e9b2dd2">_dbus_type_reader_init</a> </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structDBusTypeReader.html">DBusTypeReader</a> * </td>
<td class="paramname"><em>reader</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>byte_order</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structDBusString.html">DBusString</a> * </td>
<td class="paramname"><em>type_str</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>type_pos</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structDBusString.html">DBusString</a> * </td>
<td class="paramname"><em>value_str</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>value_pos</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Initializes a type reader. </p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">reader</td><td>the reader </td></tr>
<tr><td class="paramname">byte_order</td><td>the byte order of the block to read </td></tr>
<tr><td class="paramname">type_str</td><td>the signature of the block to read </td></tr>
<tr><td class="paramname">type_pos</td><td>location of signature </td></tr>
<tr><td class="paramname">value_str</td><td>the string containing values block </td></tr>
<tr><td class="paramname">value_pos</td><td>start of values block </td></tr>
</table>
</dd>
</dl>
<p>Definition at line <a class="el" href="dbus-marshal-recursive_8c_source.html#l00733">733</a> of file <a class="el" href="dbus-marshal-recursive_8c_source.html">dbus-marshal-recursive.c</a>.</p>
<p>References <a class="el" href="dbus-string_8c_source.html#l00497">_dbus_string_get_const_data_len()</a>, <a class="el" href="dbus-marshal-recursive_8h_source.html#l00052">DBusTypeReader::klass</a>, <a class="el" href="dbus-marshal-recursive_8h_source.html#l00048">DBusTypeReader::type_pos</a>, <a class="el" href="dbus-marshal-recursive_8h_source.html#l00047">DBusTypeReader::type_str</a>, and <a class="el" href="dbus-marshal-recursive_8h_source.html#l00050">DBusTypeReader::value_pos</a>.</p>
<p>Referenced by <a class="el" href="dbus-marshal-header_8c_source.html#l00970">_dbus_header_load()</a>, and <a class="el" href="dbus-message_8c_source.html#l02064">dbus_message_iter_init()</a>.</p>
</div>
</div>
<a class="anchor" id="ga3a5845f555f11c33ebaa71a75abff661"></a><!-- doxytag: member="dbus-marshal-recursive.c::_dbus_type_reader_init_types_only" ref="ga3a5845f555f11c33ebaa71a75abff661" args="(DBusTypeReader *reader, const DBusString *type_str, int type_pos)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void <a class="el" href="group__DBusMarshal.html#ga3a5845f555f11c33ebaa71a75abff661">_dbus_type_reader_init_types_only</a> </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structDBusTypeReader.html">DBusTypeReader</a> * </td>
<td class="paramname"><em>reader</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structDBusString.html">DBusString</a> * </td>
<td class="paramname"><em>type_str</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>type_pos</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Like <a class="el" href="group__DBusMarshal.html#ga35d70cf69b1196518367e3e68e9b2dd2" title="Initializes a type reader.">_dbus_type_reader_init()</a> but the iteration is over the signature, not over values. </p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">reader</td><td>the reader </td></tr>
<tr><td class="paramname">type_str</td><td>the signature string </td></tr>
<tr><td class="paramname">type_pos</td><td>location in the signature string </td></tr>
</table>
</dd>
</dl>
<p>Definition at line <a class="el" href="dbus-marshal-recursive_8c_source.html#l00761">761</a> of file <a class="el" href="dbus-marshal-recursive_8c_source.html">dbus-marshal-recursive.c</a>.</p>
<p>References <a class="el" href="dbus-string_8c_source.html#l00497">_dbus_string_get_const_data_len()</a>, <a class="el" href="dbus-marshal-recursive_8h_source.html#l00052">DBusTypeReader::klass</a>, <a class="el" href="group__DBusMacros.html#ga070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</a>, <a class="el" href="dbus-marshal-recursive_8h_source.html#l00048">DBusTypeReader::type_pos</a>, and <a class="el" href="dbus-marshal-recursive_8h_source.html#l00047">DBusTypeReader::type_str</a>.</p>
<p>Referenced by <a class="el" href="dbus-marshal-byteswap_8c_source.html#l00222">_dbus_marshal_byteswap()</a>, and <a class="el" href="dbus-marshal-validate_8c_source.html#l00703">_dbus_validate_body_with_reason()</a>.</p>
</div>
</div>
<a class="anchor" id="ga746c09512d4905f2d2fac7ed4c3c63c2"></a><!-- doxytag: member="dbus-marshal-recursive.c::_dbus_type_reader_next" ref="ga746c09512d4905f2d2fac7ed4c3c63c2" args="(DBusTypeReader *reader)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__DBusTypes.html#ga39c9cb0f3a2a8ad6f55cc4855d035349">dbus_bool_t</a> <a class="el" href="group__DBusMarshal.html#ga746c09512d4905f2d2fac7ed4c3c63c2">_dbus_type_reader_next</a> </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structDBusTypeReader.html">DBusTypeReader</a> * </td>
<td class="paramname"><em>reader</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 FALSE at the end of the current container.</p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">reader</td><td>the reader </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-marshal-recursive_8c_source.html#l01054">1054</a> of file <a class="el" href="dbus-marshal-recursive_8c_source.html">dbus-marshal-recursive.c</a>.</p>
<p>References <a class="el" href="dbus-string_8c_source.html#l00497">_dbus_string_get_const_data_len()</a>, <a class="el" href="dbus-marshal-recursive_8c_source.html#l00786">_dbus_type_reader_get_current_type()</a>, <a class="el" href="dbus-marshal-basic_8c_source.html#l01219">_dbus_type_to_string()</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-marshal-recursive_8h_source.html#l00052">DBusTypeReader::klass</a>, <a class="el" href="dbus-marshal-recursive_8c_source.html#l00133">DBusTypeReaderClass::next</a>, <a class="el" href="dbus-marshal-recursive_8h_source.html#l00048">DBusTypeReader::type_pos</a>, <a class="el" href="dbus-marshal-recursive_8h_source.html#l00047">DBusTypeReader::type_str</a>, and <a class="el" href="dbus-marshal-recursive_8h_source.html#l00050">DBusTypeReader::value_pos</a>.</p>
<p>Referenced by <a class="el" href="dbus-marshal-header_8c_source.html#l00970">_dbus_header_load()</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#l01094">_dbus_type_reader_has_next()</a>, and <a class="el" href="dbus-message_8c_source.html#l02114">dbus_message_iter_next()</a>.</p>
</div>
</div>
<a class="anchor" id="gaa54355ee98d6721d7a29b5ae7d92eb9a"></a><!-- doxytag: member="dbus-marshal-recursive.c::_dbus_type_reader_read_basic" ref="gaa54355ee98d6721d7a29b5ae7d92eb9a" args="(const DBusTypeReader *reader, void *value)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void <a class="el" href="group__DBusMarshal.html#gaa54355ee98d6721d7a29b5ae7d92eb9a">_dbus_type_reader_read_basic</a> </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="structDBusTypeReader.html">DBusTypeReader</a> * </td>
<td class="paramname"><em>reader</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">void * </td>
<td class="paramname"><em>value</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Reads a basic-typed value, as with <a class="el" href="group__DBusMarshal.html#gab331e099fa8cf3d94cf33ad7b20c81ae" title="Demarshals a basic-typed value.">_dbus_marshal_read_basic()</a>. </p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">reader</td><td>the reader </td></tr>
<tr><td class="paramname">value</td><td>the address of the value </td></tr>
</table>
</dd>
</dl>
<p>Definition at line <a class="el" href="dbus-marshal-recursive_8c_source.html#l00870">870</a> of file <a class="el" href="dbus-marshal-recursive_8c_source.html">dbus-marshal-recursive.c</a>.</p>
<p>References <a class="el" href="dbus-marshal-basic_8c_source.html#l00492">_dbus_marshal_read_basic()</a>, <a class="el" href="dbus-string_8c_source.html#l00497">_dbus_string_get_const_data_len()</a>, <a class="el" href="dbus-marshal-recursive_8c_source.html#l00786">_dbus_type_reader_get_current_type()</a>, <a class="el" href="dbus-marshal-recursive_8h_source.html#l00041">DBusTypeReader::byte_order</a>, <a class="el" href="dbus-marshal-recursive_8h_source.html#l00052">DBusTypeReader::klass</a>, <a class="el" href="group__DBusMacros.html#ga070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</a>, <a class="el" href="dbus-marshal-recursive_8h_source.html#l00048">DBusTypeReader::type_pos</a>, <a class="el" href="dbus-marshal-recursive_8h_source.html#l00047">DBusTypeReader::type_str</a>, <a class="el" href="dbus-marshal-recursive_8c_source.html#l00129">DBusTypeReaderClass::types_only</a>, <a class="el" href="dbus-marshal-recursive_8h_source.html#l00050">DBusTypeReader::value_pos</a>, and <a class="el" href="dbus-marshal-recursive_8h_source.html#l00049">DBusTypeReader::value_str</a>.</p>
<p>Referenced by <a class="el" href="dbus-marshal-header_8c_source.html#l00970">_dbus_header_load()</a>, <a class="el" href="dbus-message_8c_source.html#l00796">_dbus_message_iter_get_args_valist()</a>, and <a class="el" href="dbus-message_8c_source.html#l02293">dbus_message_iter_get_basic()</a>.</p>
</div>
</div>
<a class="anchor" id="gae9a65c05e58ace9c83352f65af2fe745"></a><!-- doxytag: member="dbus-marshal-recursive.c::_dbus_type_reader_read_fixed_multi" ref="gae9a65c05e58ace9c83352f65af2fe745" args="(const DBusTypeReader *reader, void *value, int *n_elements)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void <a class="el" href="group__DBusMarshal.html#gae9a65c05e58ace9c83352f65af2fe745">_dbus_type_reader_read_fixed_multi</a> </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="structDBusTypeReader.html">DBusTypeReader</a> * </td>
<td class="paramname"><em>reader</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">void * </td>
<td class="paramname"><em>value</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int * </td>
<td class="paramname"><em>n_elements</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Reads a block of fixed-length basic values, from the current point in an array to the end of the array. </p>
<p>Does not work for arrays of string or container types.</p>
<p>This function returns the array in-place; it does not make a copy, and it does not swap the bytes.</p>
<p>If you ask for <a class="el" href="group__DBusProtocol.html#gac30c00bb6de04d0886cfbace276ec353" title="Type code marking an 8-byte double in IEEE 754 format.">DBUS_TYPE_DOUBLE</a> you will get a "const double*" back and the "value" argument should be a "const double**" and so on.</p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">reader</td><td>the reader to read from </td></tr>
<tr><td class="paramname">value</td><td>place to return the array values </td></tr>
<tr><td class="paramname">n_elements</td><td>place to return number of array elements </td></tr>
</table>
</dd>
</dl>
<p>Definition at line <a class="el" href="dbus-marshal-recursive_8c_source.html#l00924">924</a> of file <a class="el" href="dbus-marshal-recursive_8c_source.html">dbus-marshal-recursive.c</a>.</p>
<p>References <a class="el" href="dbus-marshal-basic_8c_source.html#l01416">_dbus_first_type_in_signature()</a>, <a class="el" href="dbus-string_8c_source.html#l00497">_dbus_string_get_const_data_len()</a>, <a class="el" href="dbus-marshal-basic_8c_source.html#l01173">_dbus_type_get_alignment()</a>, <a class="el" href="dbus-protocol_8h_source.html#l00060">DBUS_TYPE_INVALID</a>, <a class="el" href="dbus-signature_8c_source.html#l00349">dbus_type_is_fixed()</a>, <a class="el" href="dbus-marshal-recursive_8h_source.html#l00052">DBusTypeReader::klass</a>, <a class="el" href="group__DBusMacros.html#ga070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</a>, <a class="el" href="dbus-marshal-recursive_8h_source.html#l00048">DBusTypeReader::type_pos</a>, <a class="el" href="dbus-marshal-recursive_8h_source.html#l00047">DBusTypeReader::type_str</a>, <a class="el" href="dbus-marshal-recursive_8c_source.html#l00129">DBusTypeReaderClass::types_only</a>, <a class="el" href="structDBusTypeReader.html#ada12bed6758840dc19b1fcb271fb01be">DBusTypeReader::u</a>, <a class="el" href="dbus-marshal-recursive_8h_source.html#l00050">DBusTypeReader::value_pos</a>, and <a class="el" href="dbus-marshal-recursive_8h_source.html#l00049">DBusTypeReader::value_str</a>.</p>
<p>Referenced by <a class="el" href="dbus-message_8c_source.html#l00796">_dbus_message_iter_get_args_valist()</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="gac87315d74386314ec3b148ef737626d2"></a><!-- doxytag: member="dbus-marshal-recursive.c::_dbus_type_reader_read_raw" ref="gac87315d74386314ec3b148ef737626d2" args="(const DBusTypeReader *reader, const unsigned char **value_location)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void <a class="el" href="group__DBusMarshal.html#gac87315d74386314ec3b148ef737626d2">_dbus_type_reader_read_raw</a> </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="structDBusTypeReader.html">DBusTypeReader</a> * </td>
<td class="paramname"><em>reader</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const unsigned char ** </td>
<td class="paramname"><em>value_location</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Get the address of the marshaled value in the data being read. </p>
<p>The address may not be aligned; you have to align it to the type of the value you want to read. Most of the demarshal routines do this for you.</p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">reader</td><td>the reader </td></tr>
<tr><td class="paramname">value_location</td><td>the address of the marshaled value </td></tr>
</table>
</dd>
</dl>
<p>Definition at line <a class="el" href="dbus-marshal-recursive_8c_source.html#l00853">853</a> of file <a class="el" href="dbus-marshal-recursive_8c_source.html">dbus-marshal-recursive.c</a>.</p>
<p>References <a class="el" href="dbus-string_8c_source.html#l00497">_dbus_string_get_const_data_len()</a>, <a class="el" href="dbus-marshal-recursive_8h_source.html#l00052">DBusTypeReader::klass</a>, <a class="el" href="dbus-marshal-recursive_8c_source.html#l00129">DBusTypeReaderClass::types_only</a>, <a class="el" href="dbus-marshal-recursive_8h_source.html#l00050">DBusTypeReader::value_pos</a>, and <a class="el" href="dbus-marshal-recursive_8h_source.html#l00049">DBusTypeReader::value_str</a>.</p>
</div>
</div>
<a class="anchor" id="ga082b410820c74b2a6ca816a8e0c91803"></a><!-- doxytag: member="dbus-marshal-recursive.c::_dbus_type_reader_recurse" ref="ga082b410820c74b2a6ca816a8e0c91803" args="(DBusTypeReader *reader, DBusTypeReader *sub)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void <a class="el" href="group__DBusMarshal.html#ga082b410820c74b2a6ca816a8e0c91803">_dbus_type_reader_recurse</a> </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structDBusTypeReader.html">DBusTypeReader</a> * </td>
<td class="paramname"><em>reader</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structDBusTypeReader.html">DBusTypeReader</a> * </td>
<td class="paramname"><em>sub</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Initialize a new reader pointing to the first type and corresponding value that's a child of the current container. </p>
<p>It's an error to call this if the current type is a non-container.</p>
<p>Note that <a class="el" href="structDBusTypeReader.html" title="The type reader is an iterator for reading values from a block of values.">DBusTypeReader</a> traverses values, not types. So if you have an empty array of array of int, you can't recurse into it. You can only recurse into each element.</p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">reader</td><td>the reader </td></tr>
<tr><td class="paramname">sub</td><td>a reader to init pointing to the first child </td></tr>
</table>
</dd>
</dl>
<p>Definition at line <a class="el" href="dbus-marshal-recursive_8c_source.html#l00989">989</a> of file <a class="el" href="dbus-marshal-recursive_8c_source.html">dbus-marshal-recursive.c</a>.</p>
<p>References <a class="el" href="dbus-marshal-basic_8c_source.html#l01416">_dbus_first_type_in_signature()</a>, <a class="el" href="dbus-string_8c_source.html#l00497">_dbus_string_get_const_data_len()</a>, <a class="el" href="dbus-marshal-basic_8c_source.html#l01219">_dbus_type_to_string()</a>, <a class="el" href="dbus-internals_8c_source.html#l00258">_dbus_warn_check_failed()</a>, <a class="el" href="dbus-protocol_8h_source.html#l00120">DBUS_TYPE_ARRAY</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#l00060">DBUS_TYPE_INVALID</a>, <a class="el" href="dbus-protocol_8h_source.html#l00136">DBUS_TYPE_STRUCT</a>, <a class="el" href="dbus-protocol_8h_source.html#l00124">DBUS_TYPE_VARIANT</a>, <a class="el" href="dbus-marshal-recursive_8c_source.html#l00128">DBusTypeReaderClass::id</a>, <a class="el" href="dbus-marshal-recursive_8h_source.html#l00052">DBusTypeReader::klass</a>, <a class="el" href="dbus-marshal-recursive_8c_source.html#l00130">DBusTypeReaderClass::recurse</a>, <a class="el" href="dbus-marshal-recursive_8h_source.html#l00048">DBusTypeReader::type_pos</a>, <a class="el" href="dbus-marshal-recursive_8h_source.html#l00047">DBusTypeReader::type_str</a>, <a class="el" href="dbus-marshal-recursive_8c_source.html#l00129">DBusTypeReaderClass::types_only</a>, and <a class="el" href="dbus-marshal-recursive_8h_source.html#l00050">DBusTypeReader::value_pos</a>.</p>
<p>Referenced by <a class="el" href="dbus-marshal-header_8c_source.html#l00970">_dbus_header_load()</a>, <a class="el" href="dbus-message_8c_source.html#l00796">_dbus_message_iter_get_args_valist()</a>, and <a class="el" href="dbus-message_8c_source.html#l02195">dbus_message_iter_recurse()</a>.</p>
</div>
</div>
<a class="anchor" id="gaaf11ca429434c2c280f5fad34ed95204"></a><!-- doxytag: member="dbus-marshal-recursive.c::_dbus_type_reader_set_basic" ref="gaaf11ca429434c2c280f5fad34ed95204" args="(DBusTypeReader *reader, const void *value, const DBusTypeReader *realign_root)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__DBusTypes.html#ga39c9cb0f3a2a8ad6f55cc4855d035349">dbus_bool_t</a> <a class="el" href="group__DBusMarshal.html#gaaf11ca429434c2c280f5fad34ed95204">_dbus_type_reader_set_basic</a> </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structDBusTypeReader.html">DBusTypeReader</a> * </td>
<td class="paramname"><em>reader</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const void * </td>
<td class="paramname"><em>value</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structDBusTypeReader.html">DBusTypeReader</a> * </td>
<td class="paramname"><em>realign_root</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Sets a new value for the basic type value pointed to by the reader, leaving the reader valid to continue reading. </p>
<p>Any other readers will be invalidated if you set a variable-length type such as a string.</p>
<p>The provided realign_root is the reader to start from when realigning the data that follows the newly-set value. The reader parameter must point to a value below the realign_root parameter. If the type being set is fixed-length, then realign_root may be <a class="el" href="group__DBusMacros.html#ga070d2ce7b6bb7e5c05602aa8c308d0c4" title="A null pointer, defined appropriately for C or C++.">NULL</a>. Only values reachable from realign_root will be realigned, so if your string contains other values you will need to deal with those somehow yourself. It is OK if realign_root is the same reader as the reader parameter, though if you aren't setting the root it may not be such a good idea.</p>
<dl class="todo"><dt><b><a class="el" href="todo.html#_todo000014">Todo:</a></b></dt><dd><a class="el" href="structDBusTypeReader.html" title="The type reader is an iterator for reading values from a block of values.">DBusTypeReader</a> currently takes "const" versions of the type and value strings, and this function modifies those strings by casting away the const, which is of course bad if we want to get picky. (To be truly clean you'd have an object which contained the type and value strings and set_basic would be a method on that object... this would also make <a class="el" href="structDBusTypeReader.html" title="The type reader is an iterator for reading values from a block of values.">DBusTypeReader</a> the same thing as DBusTypeMark. But since <a class="el" href="structDBusMessage.html" title="Internals of DBusMessage.">DBusMessage</a> is effectively that object for D-Bus it doesn't seem worth creating some random object.)</dd></dl>
<dl class="todo"><dt><b><a class="el" href="todo.html#_todo000015">Todo:</a></b></dt><dd>optimize this by only rewriting until the old and new values are at the same alignment. Frequently this should result in only replacing the value that's immediately at hand.</dd></dl>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">reader</td><td>reader indicating where to set a new value </td></tr>
<tr><td class="paramname">value</td><td>address of the value to set </td></tr>
<tr><td class="paramname">realign_root</td><td>realign from here </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 not enough memory </dd></dl>
<p>Definition at line <a class="el" href="dbus-marshal-recursive_8c_source.html#l01363">1363</a> of file <a class="el" href="dbus-marshal-recursive_8c_source.html">dbus-marshal-recursive.c</a>.</p>
<p>References <a class="el" href="dbus-string_8c_source.html#l00497">_dbus_string_get_const_data_len()</a>, <a class="el" href="dbus-string_8c_source.html#l00722">_dbus_string_get_length()</a>, <a class="el" href="dbus-marshal-recursive_8c_source.html#l00786">_dbus_type_reader_get_current_type()</a>, <a class="el" href="dbus-marshal-basic_8c_source.html#l01219">_dbus_type_to_string()</a>, <a class="el" href="dbus-marshal-basic_8c_source.html#l01360">_dbus_verbose_bytes_of_string()</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#l00349">dbus_type_is_fixed()</a>, <a class="el" href="dbus-marshal-recursive_8h_source.html#l00052">DBusTypeReader::klass</a>, <a class="el" href="group__DBusMacros.html#ga070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</a>, <a class="el" href="group__DBusMacros.html#gaa8cecfc5c5c054d2875c03e77b7be15d">TRUE</a>, <a class="el" href="dbus-marshal-recursive_8h_source.html#l00048">DBusTypeReader::type_pos</a>, <a class="el" href="dbus-marshal-recursive_8h_source.html#l00047">DBusTypeReader::type_str</a>, <a class="el" href="dbus-marshal-recursive_8c_source.html#l00129">DBusTypeReaderClass::types_only</a>, <a class="el" href="dbus-marshal-recursive_8h_source.html#l00050">DBusTypeReader::value_pos</a>, and <a class="el" href="dbus-marshal-recursive_8h_source.html#l00049">DBusTypeReader::value_str</a>.</p>
</div>
</div>
<a class="anchor" id="gaf2f5b2f027fa7d24f6179c6dbdf71a83"></a><!-- doxytag: member="dbus-marshal-recursive.c::_dbus_type_signature_next" ref="gaf2f5b2f027fa7d24f6179c6dbdf71a83" args="(const char *type_str, int *type_pos)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void <a class="el" href="group__DBusMarshal.html#gaf2f5b2f027fa7d24f6179c6dbdf71a83">_dbus_type_signature_next</a> </td>
<td>(</td>
<td class="paramtype">const char * </td>
<td class="paramname"><em>type_str</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int * </td>
<td class="paramname"><em>type_pos</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Skips to the next "complete" type inside a type signature. </p>
<p>The signature is read starting at type_pos, and the next type position is stored in the same variable.</p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">type_str</td><td>a type signature (must be valid) </td></tr>
<tr><td class="paramname">type_pos</td><td>an integer position in the type signature (in and out) </td></tr>
</table>
</dd>
</dl>
<p>Definition at line <a class="el" href="dbus-marshal-recursive_8c_source.html#l00341">341</a> of file <a class="el" href="dbus-marshal-recursive_8c_source.html">dbus-marshal-recursive.c</a>.</p>
<p>References <a class="el" href="dbus-protocol_8h_source.html#l00164">DBUS_DICT_ENTRY_BEGIN_CHAR</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#l00156">DBUS_STRUCT_BEGIN_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#l00120">DBUS_TYPE_ARRAY</a>, <a class="el" href="dbus-protocol_8h_source.html#l00060">DBUS_TYPE_INVALID</a>, <a class="el" href="group__DBusMacros.html#ga070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</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#l00112">dbus_signature_iter_get_signature()</a>, and <a class="el" href="dbus-signature_8c_source.html#l00164">dbus_signature_iter_next()</a>.</p>
</div>
</div>
<a class="anchor" id="ga48a595c2b26dce6e9c25ce040e5247e5"></a><!-- doxytag: member="dbus-marshal-basic.c::_dbus_type_to_string" ref="ga48a595c2b26dce6e9c25ce040e5247e5" args="(int typecode)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">const char* <a class="el" href="group__DBusMarshal.html#ga48a595c2b26dce6e9c25ce040e5247e5">_dbus_type_to_string</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>Returns a string describing the given type. </p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">typecode</td><td>the type to describe </td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>a constant string describing the type </dd></dl>
<p>Definition at line <a class="el" href="dbus-marshal-basic_8c_source.html#l01219">1219</a> of file <a class="el" href="dbus-marshal-basic_8c_source.html">dbus-marshal-basic.c</a>.</p>
<p>References <a class="el" href="dbus-protocol_8h_source.html#l00164">DBUS_DICT_ENTRY_BEGIN_CHAR</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#l00156">DBUS_STRUCT_BEGIN_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#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#l00060">DBUS_TYPE_INVALID</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>, and <a class="el" href="dbus-protocol_8h_source.html#l00124">DBUS_TYPE_VARIANT</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#l01077">_dbus_marshal_skip_basic()</a>, <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#l00786">_dbus_type_reader_get_current_type()</a>, <a class="el" href="dbus-marshal-recursive_8c_source.html#l01054">_dbus_type_reader_next()</a>, <a class="el" href="dbus-marshal-recursive_8c_source.html#l00989">_dbus_type_reader_recurse()</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#l02179">_dbus_type_writer_unrecurse()</a>, and <a class="el" href="dbus-message_8c_source.html#l01824">dbus_message_append_args_valist()</a>.</p>
</div>
</div>
<a class="anchor" id="ga863b2f232a21582f9e6fe1951b09da91"></a><!-- doxytag: member="dbus-marshal-recursive.c::_dbus_type_writer_add_types" ref="ga863b2f232a21582f9e6fe1951b09da91" args="(DBusTypeWriter *writer, DBusString *type_str, int type_pos)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void <a class="el" href="group__DBusMarshal.html#ga863b2f232a21582f9e6fe1951b09da91">_dbus_type_writer_add_types</a> </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structDBusTypeWriter.html">DBusTypeWriter</a> * </td>
<td class="paramname"><em>writer</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structDBusString.html">DBusString</a> * </td>
<td class="paramname"><em>type_str</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>type_pos</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Adds type string to the writer, if it had none. </p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">writer</td><td>the writer to init </td></tr>
<tr><td class="paramname">type_str</td><td>type string to add </td></tr>
<tr><td class="paramname">type_pos</td><td>type position </td></tr>
</table>
</dd>
</dl>
<p>Definition at line <a class="el" href="dbus-marshal-recursive_8c_source.html#l01546">1546</a> of file <a class="el" href="dbus-marshal-recursive_8c_source.html">dbus-marshal-recursive.c</a>.</p>
<p>References <a class="el" href="group__DBusMacros.html#ga070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</a>, <a class="el" href="dbus-marshal-recursive_8h_source.html#l00075">DBusTypeWriter::type_pos</a>, and <a class="el" href="dbus-marshal-recursive_8h_source.html#l00074">DBusTypeWriter::type_str</a>.</p>
</div>
</div>
<a class="anchor" id="gacc2b4c348f93898f6269feb0bf055617"></a><!-- doxytag: member="dbus-marshal-recursive.c::_dbus_type_writer_append_array" ref="gacc2b4c348f93898f6269feb0bf055617" args="(DBusTypeWriter *writer, const DBusString *contained_type, int contained_type_start, DBusTypeWriter *sub)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__DBusTypes.html#ga39c9cb0f3a2a8ad6f55cc4855d035349">dbus_bool_t</a> <a class="el" href="group__DBusMarshal.html#gacc2b4c348f93898f6269feb0bf055617">_dbus_type_writer_append_array</a> </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structDBusTypeWriter.html">DBusTypeWriter</a> * </td>
<td class="paramname"><em>writer</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structDBusString.html">DBusString</a> * </td>
<td class="paramname"><em>contained_type</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>contained_type_start</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structDBusTypeWriter.html">DBusTypeWriter</a> * </td>
<td class="paramname"><em>sub</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Append to an existing array. </p>
<p>Essentially, the writer will read an existing length at the write location; jump over that length; and write new fields. On unrecurse(), the existing length will be updated.</p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">writer</td><td>the writer </td></tr>
<tr><td class="paramname">contained_type</td><td>element type </td></tr>
<tr><td class="paramname">contained_type_start</td><td>position of element type </td></tr>
<tr><td class="paramname">sub</td><td>the subwriter to init </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 no memory </dd></dl>
<p>Definition at line <a class="el" href="dbus-marshal-recursive_8c_source.html#l02143">2143</a> of file <a class="el" href="dbus-marshal-recursive_8c_source.html">dbus-marshal-recursive.c</a>.</p>
<p>References <a class="el" href="dbus-protocol_8h_source.html#l00120">DBUS_TYPE_ARRAY</a>, and <a class="el" href="group__DBusMacros.html#gaa8cecfc5c5c054d2875c03e77b7be15d">TRUE</a>.</p>
<p>Referenced by <a class="el" href="dbus-marshal-header_8c_source.html#l01273">_dbus_header_set_field_basic()</a>.</p>
</div>
</div>
<a class="anchor" id="gadeb83962df31e074874e957d17a0d4d1"></a><!-- doxytag: member="dbus-marshal-recursive.c::_dbus_type_writer_init" ref="gadeb83962df31e074874e957d17a0d4d1" args="(DBusTypeWriter *writer, int byte_order, DBusString *type_str, int type_pos, DBusString *value_str, int value_pos)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void <a class="el" href="group__DBusMarshal.html#gadeb83962df31e074874e957d17a0d4d1">_dbus_type_writer_init</a> </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structDBusTypeWriter.html">DBusTypeWriter</a> * </td>
<td class="paramname"><em>writer</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>byte_order</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structDBusString.html">DBusString</a> * </td>
<td class="paramname"><em>type_str</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>type_pos</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structDBusString.html">DBusString</a> * </td>
<td class="paramname"><em>value_str</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>value_pos</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Initialize a write iterator, which is used to write out values in serialized D-Bus format. </p>
<p>The type_pos passed in is expected to be inside an already-valid, though potentially empty, type signature. This means that the byte after type_pos must be either <a class="el" href="group__DBusProtocol.html#gaa9588da889743b2119dc6664712ae51e" title="Type code that is never equal to a legitimate type code.">DBUS_TYPE_INVALID</a> (aka nul) or some other valid type. <a class="el" href="structDBusTypeWriter.html" title="The type writer is an iterator for writing to a block of values.">DBusTypeWriter</a> won't enforce that the signature is already valid (you can append the nul byte at the end if you like), but just be aware that you need the nul byte eventually and <a class="el" href="structDBusTypeWriter.html" title="The type writer is an iterator for writing to a block of values.">DBusTypeWriter</a> isn't going to write it for you.</p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">writer</td><td>the writer to init </td></tr>
<tr><td class="paramname">byte_order</td><td>the byte order to marshal into </td></tr>
<tr><td class="paramname">type_str</td><td>the string to write typecodes into </td></tr>
<tr><td class="paramname">type_pos</td><td>where to insert typecodes </td></tr>
<tr><td class="paramname">value_str</td><td>the string to write values into </td></tr>
<tr><td class="paramname">value_pos</td><td>where to insert values </td></tr>
</table>
</dd>
</dl>
<p>Definition at line <a class="el" href="dbus-marshal-recursive_8c_source.html#l01493">1493</a> of file <a class="el" href="dbus-marshal-recursive_8c_source.html">dbus-marshal-recursive.c</a>.</p>
<p>References <a class="el" href="dbus-string_8c_source.html#l00497">_dbus_string_get_const_data_len()</a>, <a class="el" href="dbus-marshal-recursive_8h_source.html#l00066">DBusTypeWriter::byte_order</a>, <a class="el" href="dbus-marshal-recursive_8h_source.html#l00068">DBusTypeWriter::container_type</a>, <a class="el" href="dbus-protocol_8h_source.html#l00060">DBUS_TYPE_INVALID</a>, <a class="el" href="dbus-marshal-recursive_8h_source.html#l00072">DBusTypeWriter::enabled</a>, <a class="el" href="group__DBusMacros.html#gaa93f0eb578d23995850d61f7d61c55c1">FALSE</a>, <a class="el" href="group__DBusMacros.html#gaa8cecfc5c5c054d2875c03e77b7be15d">TRUE</a>, <a class="el" href="dbus-marshal-recursive_8h_source.html#l00075">DBusTypeWriter::type_pos</a>, <a class="el" href="dbus-marshal-recursive_8h_source.html#l00070">DBusTypeWriter::type_pos_is_expectation</a>, <a class="el" href="dbus-marshal-recursive_8h_source.html#l00074">DBusTypeWriter::type_str</a>, <a class="el" href="dbus-marshal-recursive_8h_source.html#l00077">DBusTypeWriter::value_pos</a>, and <a class="el" href="dbus-marshal-recursive_8h_source.html#l00076">DBusTypeWriter::value_str</a>.</p>
<p>Referenced by <a class="el" href="dbus-marshal-recursive_8c_source.html#l01528">_dbus_type_writer_init_types_delayed()</a>, and <a class="el" href="dbus-marshal-recursive_8c_source.html#l01584">_dbus_type_writer_init_values_only()</a>.</p>
</div>
</div>
<a class="anchor" id="gaa9ecf7e96d5323bc1da9cdf0c3f2c1e7"></a><!-- doxytag: member="dbus-marshal-recursive.c::_dbus_type_writer_init_types_delayed" ref="gaa9ecf7e96d5323bc1da9cdf0c3f2c1e7" args="(DBusTypeWriter *writer, int byte_order, DBusString *value_str, int value_pos)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void <a class="el" href="group__DBusMarshal.html#gaa9ecf7e96d5323bc1da9cdf0c3f2c1e7">_dbus_type_writer_init_types_delayed</a> </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structDBusTypeWriter.html">DBusTypeWriter</a> * </td>
<td class="paramname"><em>writer</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>byte_order</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structDBusString.html">DBusString</a> * </td>
<td class="paramname"><em>value_str</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>value_pos</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Initialize a write iterator, with the signature to be provided later. </p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">writer</td><td>the writer to init </td></tr>
<tr><td class="paramname">byte_order</td><td>the byte order to marshal into </td></tr>
<tr><td class="paramname">value_str</td><td>the string to write values into </td></tr>
<tr><td class="paramname">value_pos</td><td>where to insert values </td></tr>
</table>
</dd>
</dl>
<p>Definition at line <a class="el" href="dbus-marshal-recursive_8c_source.html#l01528">1528</a> of file <a class="el" href="dbus-marshal-recursive_8c_source.html">dbus-marshal-recursive.c</a>.</p>
<p>References <a class="el" href="dbus-marshal-recursive_8c_source.html#l01493">_dbus_type_writer_init()</a>, and <a class="el" href="group__DBusMacros.html#ga070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</a>.</p>
<p>Referenced by <a class="el" href="dbus-message_8c_source.html#l02421">dbus_message_iter_init_append()</a>.</p>
</div>
</div>
<a class="anchor" id="ga1f101175ce6f33221fcb59f0b46349bd"></a><!-- doxytag: member="dbus-marshal-recursive.c::_dbus_type_writer_init_values_only" ref="ga1f101175ce6f33221fcb59f0b46349bd" args="(DBusTypeWriter *writer, int byte_order, const DBusString *type_str, int type_pos, DBusString *value_str, int value_pos)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void <a class="el" href="group__DBusMarshal.html#ga1f101175ce6f33221fcb59f0b46349bd">_dbus_type_writer_init_values_only</a> </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structDBusTypeWriter.html">DBusTypeWriter</a> * </td>
<td class="paramname"><em>writer</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>byte_order</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structDBusString.html">DBusString</a> * </td>
<td class="paramname"><em>type_str</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>type_pos</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structDBusString.html">DBusString</a> * </td>
<td class="paramname"><em>value_str</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>value_pos</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Like <a class="el" href="group__DBusMarshal.html#gadeb83962df31e074874e957d17a0d4d1" title="Initialize a write iterator, which is used to write out values in serialized D-Bus format...">_dbus_type_writer_init()</a>, except the type string passed in should correspond to an existing signature that matches what you're going to write out. </p>
<p>The writer will check what you write vs. this existing signature.</p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">writer</td><td>the writer to init </td></tr>
<tr><td class="paramname">byte_order</td><td>the byte order to marshal into </td></tr>
<tr><td class="paramname">type_str</td><td>the string with signature </td></tr>
<tr><td class="paramname">type_pos</td><td>start of signature </td></tr>
<tr><td class="paramname">value_str</td><td>the string to write values into </td></tr>
<tr><td class="paramname">value_pos</td><td>where to insert values </td></tr>
</table>
</dd>
</dl>
<p>Definition at line <a class="el" href="dbus-marshal-recursive_8c_source.html#l01584">1584</a> of file <a class="el" href="dbus-marshal-recursive_8c_source.html">dbus-marshal-recursive.c</a>.</p>
<p>References <a class="el" href="dbus-marshal-recursive_8c_source.html#l01493">_dbus_type_writer_init()</a>, <a class="el" href="group__DBusMacros.html#gaa8cecfc5c5c054d2875c03e77b7be15d">TRUE</a>, and <a class="el" href="dbus-marshal-recursive_8h_source.html#l00070">DBusTypeWriter::type_pos_is_expectation</a>.</p>
<p>Referenced by <a class="el" href="dbus-marshal-header_8c_source.html#l00528">_dbus_header_create()</a>, and <a class="el" href="dbus-marshal-header_8c_source.html#l01273">_dbus_header_set_field_basic()</a>.</p>
</div>
</div>
<a class="anchor" id="ga4c0a1036e59dac270141052d951baff2"></a><!-- doxytag: member="dbus-marshal-recursive.c::_dbus_type_writer_recurse" ref="ga4c0a1036e59dac270141052d951baff2" args="(DBusTypeWriter *writer, int container_type, const DBusString *contained_type, int contained_type_start, DBusTypeWriter *sub)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__DBusTypes.html#ga39c9cb0f3a2a8ad6f55cc4855d035349">dbus_bool_t</a> <a class="el" href="group__DBusMarshal.html#ga4c0a1036e59dac270141052d951baff2">_dbus_type_writer_recurse</a> </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structDBusTypeWriter.html">DBusTypeWriter</a> * </td>
<td class="paramname"><em>writer</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>container_type</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structDBusString.html">DBusString</a> * </td>
<td class="paramname"><em>contained_type</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>contained_type_start</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structDBusTypeWriter.html">DBusTypeWriter</a> * </td>
<td class="paramname"><em>sub</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Opens a new container and writes out the initial information for that container. </p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">writer</td><td>the writer </td></tr>
<tr><td class="paramname">container_type</td><td>the type of the container to open </td></tr>
<tr><td class="paramname">contained_type</td><td>the array element type or variant content type </td></tr>
<tr><td class="paramname">contained_type_start</td><td>position to look for the type </td></tr>
<tr><td class="paramname">sub</td><td>the new sub-writer to write container contents </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 no memory </dd></dl>
<p>Definition at line <a class="el" href="dbus-marshal-recursive_8c_source.html#l02109">2109</a> of file <a class="el" href="dbus-marshal-recursive_8c_source.html">dbus-marshal-recursive.c</a>.</p>
<p>References <a class="el" href="group__DBusMacros.html#gaa93f0eb578d23995850d61f7d61c55c1">FALSE</a>.</p>
<p>Referenced by <a class="el" href="dbus-marshal-header_8c_source.html#l00528">_dbus_header_create()</a>, and <a class="el" href="dbus-message_8c_source.html#l02849">dbus_message_iter_open_container()</a>.</p>
</div>
</div>
<a class="anchor" id="ga34d675b57c7e6569707d22ba76ae010c"></a><!-- doxytag: member="dbus-marshal-recursive.c::_dbus_type_writer_remove_types" ref="ga34d675b57c7e6569707d22ba76ae010c" args="(DBusTypeWriter *writer)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void <a class="el" href="group__DBusMarshal.html#ga34d675b57c7e6569707d22ba76ae010c">_dbus_type_writer_remove_types</a> </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structDBusTypeWriter.html">DBusTypeWriter</a> * </td>
<td class="paramname"><em>writer</em></td><td>)</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Removes type string from the writer. </p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">writer</td><td>the writer to remove from </td></tr>
</table>
</dd>
</dl>
<p>Definition at line <a class="el" href="dbus-marshal-recursive_8c_source.html#l01563">1563</a> of file <a class="el" href="dbus-marshal-recursive_8c_source.html">dbus-marshal-recursive.c</a>.</p>
<p>References <a class="el" href="group__DBusMacros.html#ga070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</a>, <a class="el" href="dbus-marshal-recursive_8h_source.html#l00075">DBusTypeWriter::type_pos</a>, and <a class="el" href="dbus-marshal-recursive_8h_source.html#l00074">DBusTypeWriter::type_str</a>.</p>
</div>
</div>
<a class="anchor" id="gacbe7eddf4f9c19da91b742087fcc111a"></a><!-- doxytag: member="dbus-marshal-recursive.c::_dbus_type_writer_unrecurse" ref="gacbe7eddf4f9c19da91b742087fcc111a" args="(DBusTypeWriter *writer, DBusTypeWriter *sub)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__DBusTypes.html#ga39c9cb0f3a2a8ad6f55cc4855d035349">dbus_bool_t</a> <a class="el" href="group__DBusMarshal.html#gacbe7eddf4f9c19da91b742087fcc111a">_dbus_type_writer_unrecurse</a> </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structDBusTypeWriter.html">DBusTypeWriter</a> * </td>
<td class="paramname"><em>writer</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structDBusTypeWriter.html">DBusTypeWriter</a> * </td>
<td class="paramname"><em>sub</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Closes a container created by <a class="el" href="group__DBusMarshal.html#ga4c0a1036e59dac270141052d951baff2" title="Opens a new container and writes out the initial information for that container.">_dbus_type_writer_recurse()</a> and writes any additional information to the values block. </p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">writer</td><td>the writer </td></tr>
<tr><td class="paramname">sub</td><td>the sub-writer created by <a class="el" href="group__DBusMarshal.html#ga4c0a1036e59dac270141052d951baff2" title="Opens a new container and writes out the initial information for that container.">_dbus_type_writer_recurse()</a> </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 no memory </dd></dl>
<p>Definition at line <a class="el" href="dbus-marshal-recursive_8c_source.html#l02179">2179</a> of file <a class="el" href="dbus-marshal-recursive_8c_source.html">dbus-marshal-recursive.c</a>.</p>
<p>References <a class="el" href="dbus-marshal-basic_8c_source.html#l00253">_dbus_marshal_set_uint32()</a>, <a class="el" href="dbus-string_8c_source.html#l00497">_dbus_string_get_const_data_len()</a>, <a class="el" href="dbus-marshal-basic_8c_source.html#l01219">_dbus_type_to_string()</a>, <a class="el" href="dbus-marshal-recursive_8h_source.html#l00066">DBusTypeWriter::byte_order</a>, <a class="el" href="dbus-marshal-recursive_8h_source.html#l00068">DBusTypeWriter::container_type</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#l00120">DBUS_TYPE_ARRAY</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#l00060">DBUS_TYPE_INVALID</a>, <a class="el" href="dbus-protocol_8h_source.html#l00136">DBUS_TYPE_STRUCT</a>, <a class="el" href="group__DBusMacros.html#gaa93f0eb578d23995850d61f7d61c55c1">FALSE</a>, <a class="el" href="group__DBusMacros.html#ga070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</a>, <a class="el" href="group__DBusMacros.html#gaa8cecfc5c5c054d2875c03e77b7be15d">TRUE</a>, <a class="el" href="dbus-marshal-recursive_8h_source.html#l00075">DBusTypeWriter::type_pos</a>, <a class="el" href="dbus-marshal-recursive_8h_source.html#l00070">DBusTypeWriter::type_pos_is_expectation</a>, <a class="el" href="dbus-marshal-recursive_8h_source.html#l00074">DBusTypeWriter::type_str</a>, <a class="el" href="structDBusTypeWriter.html#afe24080d2be45fb6033833a1a38d5d1a">DBusTypeWriter::u</a>, <a class="el" href="dbus-marshal-recursive_8h_source.html#l00077">DBusTypeWriter::value_pos</a>, and <a class="el" href="dbus-marshal-recursive_8h_source.html#l00076">DBusTypeWriter::value_str</a>.</p>
<p>Referenced by <a class="el" href="dbus-marshal-header_8c_source.html#l00528">_dbus_header_create()</a>, <a class="el" href="dbus-marshal-header_8c_source.html#l01273">_dbus_header_set_field_basic()</a>, and <a class="el" href="dbus-message_8c_source.html#l02918">dbus_message_iter_close_container()</a>.</p>
</div>
</div>
<a class="anchor" id="ga0103b0214766b0ff1ca05bcc7f1e631b"></a><!-- doxytag: member="dbus-marshal-recursive.c::_dbus_type_writer_write_basic" ref="ga0103b0214766b0ff1ca05bcc7f1e631b" args="(DBusTypeWriter *writer, int type, const void *value)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__DBusTypes.html#ga39c9cb0f3a2a8ad6f55cc4855d035349">dbus_bool_t</a> <a class="el" href="group__DBusMarshal.html#ga0103b0214766b0ff1ca05bcc7f1e631b">_dbus_type_writer_write_basic</a> </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structDBusTypeWriter.html">DBusTypeWriter</a> * </td>
<td class="paramname"><em>writer</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>type</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const void * </td>
<td class="paramname"><em>value</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Writes out a basic type. </p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">writer</td><td>the writer </td></tr>
<tr><td class="paramname">type</td><td>the type to write </td></tr>
<tr><td class="paramname">value</td><td>the address of the value to write </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 no memory </dd></dl>
<p>Definition at line <a class="el" href="dbus-marshal-recursive_8c_source.html#l02311">2311</a> of file <a class="el" href="dbus-marshal-recursive_8c_source.html">dbus-marshal-recursive.c</a>.</p>
<p>References <a class="el" href="dbus-string_8c_source.html#l00882">_dbus_string_alloc_space()</a>, <a class="el" href="dbus-marshal-recursive_8h_source.html#l00072">DBusTypeWriter::enabled</a>, <a class="el" href="group__DBusMacros.html#gaa93f0eb578d23995850d61f7d61c55c1">FALSE</a>, <a class="el" href="group__DBusMacros.html#ga070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</a>, <a class="el" href="group__DBusMacros.html#gaa8cecfc5c5c054d2875c03e77b7be15d">TRUE</a>, <a class="el" href="dbus-marshal-recursive_8h_source.html#l00075">DBusTypeWriter::type_pos</a>, <a class="el" href="dbus-marshal-recursive_8h_source.html#l00070">DBusTypeWriter::type_pos_is_expectation</a>, <a class="el" href="dbus-marshal-recursive_8h_source.html#l00074">DBusTypeWriter::type_str</a>, and <a class="el" href="dbus-marshal-recursive_8h_source.html#l00077">DBusTypeWriter::value_pos</a>.</p>
<p>Referenced by <a class="el" href="dbus-marshal-header_8c_source.html#l00528">_dbus_header_create()</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="gacf99495cbed7462992b6a231563b4528"></a><!-- doxytag: member="dbus-marshal-recursive.c::_dbus_type_writer_write_fixed_multi" ref="gacf99495cbed7462992b6a231563b4528" args="(DBusTypeWriter *writer, int element_type, const void *value, int n_elements)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__DBusTypes.html#ga39c9cb0f3a2a8ad6f55cc4855d035349">dbus_bool_t</a> <a class="el" href="group__DBusMarshal.html#gacf99495cbed7462992b6a231563b4528">_dbus_type_writer_write_fixed_multi</a> </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structDBusTypeWriter.html">DBusTypeWriter</a> * </td>
<td class="paramname"><em>writer</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>element_type</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const void * </td>
<td class="paramname"><em>value</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>n_elements</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Writes a block of fixed-length basic values, i.e. </p>
<p>those that are both <a class="el" href="group__DBusSignature.html#ga2f89962cbd33e4ad843824157bae2093" title="Tells you whether values of this type can change length if you set them to some other value...">dbus_type_is_fixed()</a> and _dbus_type_is_basic(). The block must be written inside an array.</p>
<p>The value parameter should be the address of said array of values, so e.g. if it's an array of double, pass in "const double**"</p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">writer</td><td>the writer </td></tr>
<tr><td class="paramname">element_type</td><td>type of stuff in the array </td></tr>
<tr><td class="paramname">value</td><td>address of the array </td></tr>
<tr><td class="paramname">n_elements</td><td>number of elements in the array </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 no memory </dd></dl>
<p>Definition at line <a class="el" href="dbus-marshal-recursive_8c_source.html#l02359">2359</a> of file <a class="el" href="dbus-marshal-recursive_8c_source.html">dbus-marshal-recursive.c</a>.</p>
<p>References <a class="el" href="dbus-marshal-basic_8c_source.html#l01020">_dbus_marshal_write_fixed_multi()</a>, <a class="el" href="dbus-marshal-recursive_8h_source.html#l00066">DBusTypeWriter::byte_order</a>, <a class="el" href="dbus-marshal-recursive_8h_source.html#l00068">DBusTypeWriter::container_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#l00349">dbus_type_is_fixed()</a>, <a class="el" href="dbus-marshal-recursive_8h_source.html#l00072">DBusTypeWriter::enabled</a>, <a class="el" href="group__DBusMacros.html#gaa93f0eb578d23995850d61f7d61c55c1">FALSE</a>, <a class="el" href="group__DBusMacros.html#gaa8cecfc5c5c054d2875c03e77b7be15d">TRUE</a>, <a class="el" href="dbus-marshal-recursive_8h_source.html#l00075">DBusTypeWriter::type_pos</a>, <a class="el" href="dbus-marshal-recursive_8h_source.html#l00070">DBusTypeWriter::type_pos_is_expectation</a>, <a class="el" href="dbus-marshal-recursive_8h_source.html#l00077">DBusTypeWriter::value_pos</a>, and <a class="el" href="dbus-marshal-recursive_8h_source.html#l00076">DBusTypeWriter::value_str</a>.</p>
<p>Referenced by <a class="el" href="dbus-message_8c_source.html#l02791">dbus_message_iter_append_fixed_array()</a>.</p>
</div>
</div>
<a class="anchor" id="ga4905750705d220efe9dfc71f49bedc11"></a><!-- doxytag: member="dbus-marshal-recursive.c::_dbus_type_writer_write_reader" ref="ga4905750705d220efe9dfc71f49bedc11" args="(DBusTypeWriter *writer, DBusTypeReader *reader)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__DBusTypes.html#ga39c9cb0f3a2a8ad6f55cc4855d035349">dbus_bool_t</a> <a class="el" href="group__DBusMarshal.html#ga4905750705d220efe9dfc71f49bedc11">_dbus_type_writer_write_reader</a> </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structDBusTypeWriter.html">DBusTypeWriter</a> * </td>
<td class="paramname"><em>writer</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structDBusTypeReader.html">DBusTypeReader</a> * </td>
<td class="paramname"><em>reader</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Iterate through all values in the given reader, writing a copy of each value to the writer. </p>
<p>The reader will be moved forward to its end position.</p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">writer</td><td>the writer to copy to </td></tr>
<tr><td class="paramname">reader</td><td>the reader to copy from </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 no memory </dd></dl>
<p>Definition at line <a class="el" href="dbus-marshal-recursive_8c_source.html#l02731">2731</a> of file <a class="el" href="dbus-marshal-recursive_8c_source.html">dbus-marshal-recursive.c</a>.</p>
<p>References <a class="el" href="group__DBusMacros.html#ga070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</a>.</p>
</div>
</div>
<a class="anchor" id="ga09651b41b9a5aca37b0e2ff269880d6a"></a><!-- doxytag: member="dbus-marshal-basic.c::_dbus_unpack_uint16" ref="ga09651b41b9a5aca37b0e2ff269880d6a" args="(int byte_order, const unsigned char *data)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__DBusTypes.html#ga8132d71032da957f08ce4e0ec87f2063">dbus_uint16_t</a> <a class="el" href="group__DBusMarshal.html#ga09651b41b9a5aca37b0e2ff269880d6a">_dbus_unpack_uint16</a> </td>
<td>(</td>
<td class="paramtype">int </td>
<td class="paramname"><em>byte_order</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const unsigned char * </td>
<td class="paramname"><em>data</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Unpacks a 16 bit unsigned integer from a data pointer. </p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">byte_order</td><td>The byte order to use </td></tr>
<tr><td class="paramname">data</td><td>the data pointer </td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>the integer </dd></dl>
<p>Definition at line <a class="el" href="dbus-marshal-basic_8c_source.html#l00161">161</a> of file <a class="el" href="dbus-marshal-basic_8c_source.html">dbus-marshal-basic.c</a>.</p>
<p>References <a class="el" href="dbus-protocol_8h_source.html#l00053">DBUS_LITTLE_ENDIAN</a>.</p>
</div>
</div>
<a class="anchor" id="ga50a9187b315cfcd6b311ed1b36488c05"></a><!-- doxytag: member="dbus-marshal-basic.c::_dbus_unpack_uint32" ref="ga50a9187b315cfcd6b311ed1b36488c05" args="(int byte_order, const unsigned char *data)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__DBusTypes.html#gaf513803b030613a669cc7ef199f90a8b">dbus_uint32_t</a> <a class="el" href="group__DBusMarshal.html#ga50a9187b315cfcd6b311ed1b36488c05">_dbus_unpack_uint32</a> </td>
<td>(</td>
<td class="paramtype">int </td>
<td class="paramname"><em>byte_order</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const unsigned char * </td>
<td class="paramname"><em>data</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Unpacks a 32 bit unsigned integer from a data pointer. </p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">byte_order</td><td>The byte order to use </td></tr>
<tr><td class="paramname">data</td><td>the data pointer </td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>the integer </dd></dl>
<p>Definition at line <a class="el" href="dbus-marshal-basic_8c_source.html#l00182">182</a> of file <a class="el" href="dbus-marshal-basic_8c_source.html">dbus-marshal-basic.c</a>.</p>
<p>References <a class="el" href="dbus-protocol_8h_source.html#l00053">DBUS_LITTLE_ENDIAN</a>.</p>
<p>Referenced by <a class="el" href="dbus-marshal-basic_8c_source.html#l00454">_dbus_marshal_read_uint32()</a>, and <a class="el" href="dbus-marshal-basic_8c_source.html#l01280">_dbus_verbose_bytes()</a>.</p>
</div>
</div>
<a class="anchor" id="gae997884ec8091aacb5492c2b5a7eaef9"></a><!-- doxytag: member="dbus-marshal-validate.c::_dbus_validate_body_with_reason" ref="gae997884ec8091aacb5492c2b5a7eaef9" args="(const DBusString *expected_signature, int expected_signature_start, int byte_order, int *bytes_remaining, const DBusString *value_str, int value_pos, int len)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__DBusMarshal.html#ga0c4521d30d6650a33673a4d7f9cc007c">DBusValidity</a> <a class="el" href="group__DBusMarshal.html#gae997884ec8091aacb5492c2b5a7eaef9">_dbus_validate_body_with_reason</a> </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="structDBusString.html">DBusString</a> * </td>
<td class="paramname"><em>expected_signature</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>expected_signature_start</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>byte_order</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int * </td>
<td class="paramname"><em>bytes_remaining</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structDBusString.html">DBusString</a> * </td>
<td class="paramname"><em>value_str</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>value_pos</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>len</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Verifies that the range of value_str from value_pos to value_end is a legitimate value of type expected_signature. </p>
<p>If this function returns <a class="el" href="group__DBusMacros.html#gaa8cecfc5c5c054d2875c03e77b7be15d" title="Expands to "1".">TRUE</a>, it will be safe to iterate over the values with <a class="el" href="structDBusTypeReader.html" title="The type reader is an iterator for reading values from a block of values.">DBusTypeReader</a>. The signature is assumed to be already valid.</p>
<p>If bytes_remaining is not <a class="el" href="group__DBusMacros.html#ga070d2ce7b6bb7e5c05602aa8c308d0c4" title="A null pointer, defined appropriately for C or C++.">NULL</a>, then leftover bytes will be stored there and #DBUS_VALID returned. If it is <a class="el" href="group__DBusMacros.html#ga070d2ce7b6bb7e5c05602aa8c308d0c4" title="A null pointer, defined appropriately for C or C++.">NULL</a>, then #DBUS_INVALID_TOO_MUCH_DATA will be returned if bytes are left over.</p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">expected_signature</td><td>the expected types in the value_str </td></tr>
<tr><td class="paramname">expected_signature_start</td><td>where in expected_signature is the signature </td></tr>
<tr><td class="paramname">byte_order</td><td>the byte order </td></tr>
<tr><td class="paramname">bytes_remaining</td><td>place to store leftover bytes </td></tr>
<tr><td class="paramname">value_str</td><td>the string containing the body </td></tr>
<tr><td class="paramname">value_pos</td><td>where the values start </td></tr>
<tr><td class="paramname">len</td><td>length of values after value_pos </td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>#DBUS_VALID if valid, reason why invalid otherwise </dd></dl>
<p>Definition at line <a class="el" href="dbus-marshal-validate_8c_source.html#l00703">703</a> of file <a class="el" href="dbus-marshal-validate_8c_source.html">dbus-marshal-validate.c</a>.</p>
<p>References <a class="el" href="dbus-string_8c_source.html#l00497">_dbus_string_get_const_data_len()</a>, <a class="el" href="dbus-string_8c_source.html#l00722">_dbus_string_get_length()</a>, <a class="el" href="dbus-marshal-recursive_8c_source.html#l00761">_dbus_type_reader_init_types_only()</a>, and <a class="el" href="group__DBusMacros.html#gaa8cecfc5c5c054d2875c03e77b7be15d">TRUE</a>.</p>
<p>Referenced by <a class="el" href="dbus-marshal-header_8c_source.html#l00970">_dbus_header_load()</a>.</p>
</div>
</div>
<a class="anchor" id="gaab91a04fa2a96b8ce8843beae7327cd0"></a><!-- doxytag: member="dbus-marshal-validate.c::_dbus_validate_bus_name" ref="gaab91a04fa2a96b8ce8843beae7327cd0" args="(const DBusString *str, int start, int len)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__DBusTypes.html#ga39c9cb0f3a2a8ad6f55cc4855d035349">dbus_bool_t</a> <a class="el" href="group__DBusMarshal.html#gaab91a04fa2a96b8ce8843beae7327cd0">_dbus_validate_bus_name</a> </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="structDBusString.html">DBusString</a> * </td>
<td class="paramname"><em>str</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>start</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>len</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Checks that the given range of the string is a valid bus name in the D-Bus protocol. </p>
<p>This includes a length restriction, etc., see the specification.</p>
<dl class="todo"><dt><b><a class="el" href="todo.html#_todo000022">Todo:</a></b></dt><dd>this is inconsistent with most of <a class="el" href="structDBusString.html">DBusString</a> in that it allows a start,len range that extends past the string end.</dd></dl>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">str</td><td>the string </td></tr>
<tr><td class="paramname">start</td><td>first byte index to check </td></tr>
<tr><td class="paramname">len</td><td>number of bytes to check </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 the byte range exists and is a valid name </dd></dl>
<p>Definition at line <a class="el" href="dbus-marshal-validate_8c_source.html#l01187">1187</a> of file <a class="el" href="dbus-marshal-validate_8c_source.html">dbus-marshal-validate.c</a>.</p>
<p>References <a class="el" href="group__DBusMacros.html#gaa93f0eb578d23995850d61f7d61c55c1">FALSE</a>.</p>
<p>Referenced by <a class="el" href="dbus-syntax_8c_source.html#l00242">dbus_validate_bus_name()</a>.</p>
</div>
</div>
<a class="anchor" id="ga0d034ebf7eb41cede67c86757ce22261"></a><!-- doxytag: member="dbus-marshal-validate.c::_dbus_validate_bus_namespace" ref="ga0d034ebf7eb41cede67c86757ce22261" args="(const DBusString *str, int start, int len)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__DBusTypes.html#ga39c9cb0f3a2a8ad6f55cc4855d035349">dbus_bool_t</a> <a class="el" href="group__DBusMarshal.html#ga0d034ebf7eb41cede67c86757ce22261">_dbus_validate_bus_namespace</a> </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="structDBusString.html">DBusString</a> * </td>
<td class="paramname"><em>str</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>start</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>len</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Checks that the given range of the string is a prefix of a valid bus name in the D-Bus protocol. </p>
<p>Unlike <a class="el" href="group__DBusMarshal.html#gaab91a04fa2a96b8ce8843beae7327cd0" title="Checks that the given range of the string is a valid bus name in the D-Bus protocol.">_dbus_validate_bus_name()</a>, this accepts strings with only one period-separated component.</p>
<dl class="todo"><dt><b><a class="el" href="todo.html#_todo000023">Todo:</a></b></dt><dd>this is inconsistent with most of <a class="el" href="structDBusString.html">DBusString</a> in that it allows a start,len range that extends past the string end.</dd></dl>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">str</td><td>the string </td></tr>
<tr><td class="paramname">start</td><td>first byte index to check </td></tr>
<tr><td class="paramname">len</td><td>number of bytes to check </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 the byte range exists and is a valid name </dd></dl>
<p>Definition at line <a class="el" href="dbus-marshal-validate_8c_source.html#l01208">1208</a> of file <a class="el" href="dbus-marshal-validate_8c_source.html">dbus-marshal-validate.c</a>.</p>
<p>References <a class="el" href="group__DBusMacros.html#gaa8cecfc5c5c054d2875c03e77b7be15d">TRUE</a>.</p>
</div>
</div>
<a class="anchor" id="ga6d8075f3b60e2e71aad061aa44b120fe"></a><!-- doxytag: member="dbus-marshal-validate.c::_dbus_validate_error_name" ref="ga6d8075f3b60e2e71aad061aa44b120fe" args="(const DBusString *str, int start, int len)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__DBusTypes.html#ga39c9cb0f3a2a8ad6f55cc4855d035349">dbus_bool_t</a> <a class="el" href="group__DBusMarshal.html#ga6d8075f3b60e2e71aad061aa44b120fe">_dbus_validate_error_name</a> </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="structDBusString.html">DBusString</a> * </td>
<td class="paramname"><em>str</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>start</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>len</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Checks that the given range of the string is a valid error name in the D-Bus protocol. </p>
<p>This includes a length restriction, etc., see the specification.</p>
<dl class="todo"><dt><b><a class="el" href="todo.html#_todo000021">Todo:</a></b></dt><dd>this is inconsistent with most of <a class="el" href="structDBusString.html">DBusString</a> in that it allows a start,len range that extends past the string end.</dd></dl>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">str</td><td>the string </td></tr>
<tr><td class="paramname">start</td><td>first byte index to check </td></tr>
<tr><td class="paramname">len</td><td>number of bytes to check </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 the byte range exists and is a valid name </dd></dl>
<p>Definition at line <a class="el" href="dbus-marshal-validate_8c_source.html#l01058">1058</a> of file <a class="el" href="dbus-marshal-validate_8c_source.html">dbus-marshal-validate.c</a>.</p>
<p>References <a class="el" href="dbus-marshal-validate_8c_source.html#l00921">_dbus_validate_interface()</a>.</p>
<p>Referenced by <a class="el" href="dbus-syntax_8c_source.html#l00195">dbus_validate_error_name()</a>.</p>
</div>
</div>
<a class="anchor" id="ga0ad919783f887a9b6f428e262beaeed9"></a><!-- doxytag: member="dbus-marshal-validate.c::_dbus_validate_interface" ref="ga0ad919783f887a9b6f428e262beaeed9" args="(const DBusString *str, int start, int len)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__DBusTypes.html#ga39c9cb0f3a2a8ad6f55cc4855d035349">dbus_bool_t</a> <a class="el" href="group__DBusMarshal.html#ga0ad919783f887a9b6f428e262beaeed9">_dbus_validate_interface</a> </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="structDBusString.html">DBusString</a> * </td>
<td class="paramname"><em>str</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>start</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>len</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Checks that the given range of the string is a valid interface name in the D-Bus protocol. </p>
<p>This includes a length restriction and an ASCII subset, see the specification.</p>
<dl class="todo"><dt><b><a class="el" href="todo.html#_todo000019">Todo:</a></b></dt><dd>this is inconsistent with most of <a class="el" href="structDBusString.html">DBusString</a> in that it allows a start,len range that extends past the string end.</dd></dl>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">str</td><td>the string </td></tr>
<tr><td class="paramname">start</td><td>first byte index to check </td></tr>
<tr><td class="paramname">len</td><td>number of bytes to check </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 the byte range exists and is a valid name </dd></dl>
<p>Definition at line <a class="el" href="dbus-marshal-validate_8c_source.html#l00921">921</a> of file <a class="el" href="dbus-marshal-validate_8c_source.html">dbus-marshal-validate.c</a>.</p>
<p>References <a class="el" href="dbus-string_8c_source.html#l00451">_dbus_string_get_const_data()</a>, <a class="el" href="dbus-string_8c_source.html#l00722">_dbus_string_get_length()</a>, <a class="el" href="dbus-protocol_8h_source.html#l00178">DBUS_MAXIMUM_NAME_LENGTH</a>, <a class="el" href="group__DBusMacros.html#gaa93f0eb578d23995850d61f7d61c55c1">FALSE</a>, <a class="el" href="group__DBusMacros.html#ga070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</a>, <a class="el" href="group__DBusMacros.html#gaa8cecfc5c5c054d2875c03e77b7be15d">TRUE</a>, <a class="el" href="dbus-marshal-validate_8c_source.html#l00753">VALID_INITIAL_NAME_CHARACTER</a>, and <a class="el" href="dbus-marshal-validate_8c_source.html#l00762">VALID_NAME_CHARACTER</a>.</p>
<p>Referenced by <a class="el" href="dbus-marshal-validate_8c_source.html#l01058">_dbus_validate_error_name()</a>, and <a class="el" href="dbus-syntax_8c_source.html#l00101">dbus_validate_interface()</a>.</p>
</div>
</div>
<a class="anchor" id="gaf647272768029cb23a4e0d3f493587da"></a><!-- doxytag: member="dbus-marshal-validate.c::_dbus_validate_member" ref="gaf647272768029cb23a4e0d3f493587da" args="(const DBusString *str, int start, int len)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__DBusTypes.html#ga39c9cb0f3a2a8ad6f55cc4855d035349">dbus_bool_t</a> <a class="el" href="group__DBusMarshal.html#gaf647272768029cb23a4e0d3f493587da">_dbus_validate_member</a> </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="structDBusString.html">DBusString</a> * </td>
<td class="paramname"><em>str</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>start</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>len</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Checks that the given range of the string is a valid member name in the D-Bus protocol. </p>
<p>This includes a length restriction, etc., see the specification.</p>
<dl class="todo"><dt><b><a class="el" href="todo.html#_todo000020">Todo:</a></b></dt><dd>this is inconsistent with most of <a class="el" href="structDBusString.html">DBusString</a> in that it allows a start,len range that extends past the string end.</dd></dl>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">str</td><td>the string </td></tr>
<tr><td class="paramname">start</td><td>first byte index to check </td></tr>
<tr><td class="paramname">len</td><td>number of bytes to check </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 the byte range exists and is a valid name </dd></dl>
<p>Definition at line <a class="el" href="dbus-marshal-validate_8c_source.html#l00997">997</a> of file <a class="el" href="dbus-marshal-validate_8c_source.html">dbus-marshal-validate.c</a>.</p>
<p>References <a class="el" href="dbus-string_8c_source.html#l00451">_dbus_string_get_const_data()</a>, <a class="el" href="dbus-string_8c_source.html#l00722">_dbus_string_get_length()</a>, <a class="el" href="dbus-protocol_8h_source.html#l00178">DBUS_MAXIMUM_NAME_LENGTH</a>, <a class="el" href="group__DBusMacros.html#gaa93f0eb578d23995850d61f7d61c55c1">FALSE</a>, <a class="el" href="group__DBusMacros.html#gaa8cecfc5c5c054d2875c03e77b7be15d">TRUE</a>, <a class="el" href="dbus-marshal-validate_8c_source.html#l00753">VALID_INITIAL_NAME_CHARACTER</a>, and <a class="el" href="dbus-marshal-validate_8c_source.html#l00762">VALID_NAME_CHARACTER</a>.</p>
<p>Referenced by <a class="el" href="dbus-syntax_8c_source.html#l00148">dbus_validate_member()</a>.</p>
</div>
</div>
<a class="anchor" id="ga616ba4a0280b10222930aedadb7ea8d9"></a><!-- doxytag: member="dbus-marshal-validate.c::_dbus_validate_path" ref="ga616ba4a0280b10222930aedadb7ea8d9" args="(const DBusString *str, int start, int len)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__DBusTypes.html#ga39c9cb0f3a2a8ad6f55cc4855d035349">dbus_bool_t</a> <a class="el" href="group__DBusMarshal.html#ga616ba4a0280b10222930aedadb7ea8d9">_dbus_validate_path</a> </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="structDBusString.html">DBusString</a> * </td>
<td class="paramname"><em>str</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>start</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>len</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Checks that the given range of the string is a valid object path name in the D-Bus protocol. </p>
<p>Part of the validation ensures that the object path contains only ASCII.</p>
<dl class="todo"><dt><b><a class="el" href="todo.html#_todo000017">Todo:</a></b></dt><dd>this is inconsistent with most of <a class="el" href="structDBusString.html">DBusString</a> in that it allows a start,len range that extends past the string end.</dd></dl>
<dl class="todo"><dt><b><a class="el" href="todo.html#_todo000018">Todo:</a></b></dt><dd>change spec to disallow more things, such as spaces in the path name</dd></dl>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">str</td><td>the string </td></tr>
<tr><td class="paramname">start</td><td>first byte index to check </td></tr>
<tr><td class="paramname">len</td><td>number of bytes to check </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 the byte range exists and is a valid name </dd></dl>
<p>Definition at line <a class="el" href="dbus-marshal-validate_8c_source.html#l00785">785</a> of file <a class="el" href="dbus-marshal-validate_8c_source.html">dbus-marshal-validate.c</a>.</p>
<p>References <a class="el" href="dbus-string_8c_source.html#l00451">_dbus_string_get_const_data()</a>, <a class="el" href="dbus-string_8c_source.html#l00722">_dbus_string_get_length()</a>, <a class="el" href="group__DBusMacros.html#gaa93f0eb578d23995850d61f7d61c55c1">FALSE</a>, <a class="el" href="group__DBusMacros.html#gaa8cecfc5c5c054d2875c03e77b7be15d">TRUE</a>, and <a class="el" href="dbus-marshal-validate_8c_source.html#l00762">VALID_NAME_CHARACTER</a>.</p>
<p>Referenced by <a class="el" href="dbus-syntax_8c_source.html#l00054">dbus_validate_path()</a>.</p>
</div>
</div>
<a class="anchor" id="ga8d7aa58f6484d5d24f275dd65f101676"></a><!-- doxytag: member="dbus-marshal-validate.c::_dbus_validate_signature" ref="ga8d7aa58f6484d5d24f275dd65f101676" args="(const DBusString *str, int start, int len)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__DBusTypes.html#ga39c9cb0f3a2a8ad6f55cc4855d035349">dbus_bool_t</a> <a class="el" href="group__DBusMarshal.html#ga8d7aa58f6484d5d24f275dd65f101676">_dbus_validate_signature</a> </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="structDBusString.html">DBusString</a> * </td>
<td class="paramname"><em>str</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>start</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>len</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Checks that the given range of the string is a valid message type signature in the D-Bus protocol. </p>
<dl class="todo"><dt><b><a class="el" href="todo.html#_todo000024">Todo:</a></b></dt><dd>this is inconsistent with most of <a class="el" href="structDBusString.html">DBusString</a> in that it allows a start,len range that extends past the string end.</dd></dl>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">str</td><td>the string </td></tr>
<tr><td class="paramname">start</td><td>first byte index to check </td></tr>
<tr><td class="paramname">len</td><td>number of bytes to check </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 the byte range exists and is a valid signature </dd></dl>
<p>Definition at line <a class="el" href="dbus-marshal-validate_8c_source.html#l01228">1228</a> of file <a class="el" href="dbus-marshal-validate_8c_source.html">dbus-marshal-validate.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-marshal-validate_8c_source.html#l00051">_dbus_validate_signature_with_reason()</a>, and <a class="el" href="group__DBusMacros.html#gaa93f0eb578d23995850d61f7d61c55c1">FALSE</a>.</p>
</div>
</div>
<a class="anchor" id="ga42e50826b5cf62921728432a8e35292c"></a><!-- doxytag: member="dbus-marshal-validate.c::_dbus_validate_signature_with_reason" ref="ga42e50826b5cf62921728432a8e35292c" args="(const DBusString *type_str, int type_pos, int len)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__DBusMarshal.html#ga0c4521d30d6650a33673a4d7f9cc007c">DBusValidity</a> <a class="el" href="group__DBusMarshal.html#ga42e50826b5cf62921728432a8e35292c">_dbus_validate_signature_with_reason</a> </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="structDBusString.html">DBusString</a> * </td>
<td class="paramname"><em>type_str</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>type_pos</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>len</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Verifies that the range of type_str from type_pos to type_end is a valid signature. </p>
<p>If this function returns <a class="el" href="group__DBusMacros.html#gaa8cecfc5c5c054d2875c03e77b7be15d" title="Expands to "1".">TRUE</a>, it will be safe to iterate over the signature with a types-only <a class="el" href="structDBusTypeReader.html" title="The type reader is an iterator for reading values from a block of values.">DBusTypeReader</a>. The range passed in should NOT include the terminating nul/DBUS_TYPE_INVALID.</p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">type_str</td><td>the string </td></tr>
<tr><td class="paramname">type_pos</td><td>where the typecodes start </td></tr>
<tr><td class="paramname">len</td><td>length of typecodes </td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>#DBUS_VALID if valid, reason why invalid otherwise </dd></dl>
<p>Definition at line <a class="el" href="dbus-marshal-validate_8c_source.html#l00051">51</a> of file <a class="el" href="dbus-marshal-validate_8c_source.html">dbus-marshal-validate.c</a>.</p>
<p>References <a class="el" href="dbus-list_8c_source.html#l00270">_dbus_list_append()</a>, <a class="el" href="dbus-list_8c_source.html#l00542">_dbus_list_clear()</a>, <a class="el" href="dbus-list_8c_source.html#l00672">_dbus_list_pop_last()</a>, <a class="el" href="dbus-string_8c_source.html#l00497">_dbus_string_get_const_data_len()</a>, <a class="el" href="dbus-protocol_8h_source.html#l00164">DBUS_DICT_ENTRY_BEGIN_CHAR</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#l00181">DBUS_MAXIMUM_SIGNATURE_LENGTH</a>, <a class="el" href="dbus-protocol_8h_source.html#l00227">DBUS_MAXIMUM_TYPE_RECURSION_DEPTH</a>, <a class="el" href="dbus-protocol_8h_source.html#l00156">DBUS_STRUCT_BEGIN_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#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#l00060">DBUS_TYPE_INVALID</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#l00383">dbus_type_is_valid()</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>, and <a class="el" href="group__DBusMacros.html#ga070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</a>.</p>
<p>Referenced by <a class="el" href="dbus-marshal-validate_8c_source.html#l01228">_dbus_validate_signature()</a>, and <a class="el" href="dbus-signature_8c_source.html#l00233">dbus_signature_validate()</a>.</p>
</div>
</div>
<a class="anchor" id="ga7f3320a0b0f7633cdf5c149588ae9bd9"></a><!-- doxytag: member="dbus-marshal-basic.c::_dbus_verbose_bytes" ref="ga7f3320a0b0f7633cdf5c149588ae9bd9" args="(const unsigned char *data, int len, int offset)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void <a class="el" href="group__DBusMarshal.html#ga7f3320a0b0f7633cdf5c149588ae9bd9">_dbus_verbose_bytes</a> </td>
<td>(</td>
<td class="paramtype">const unsigned char * </td>
<td class="paramname"><em>data</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>len</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>offset</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>If in verbose mode, print a block of binary data. </p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">data</td><td>the data </td></tr>
<tr><td class="paramname">len</td><td>the length of the data </td></tr>
<tr><td class="paramname">offset</td><td>where to start counting for byte indexes </td></tr>
</table>
</dd>
</dl>
<p>Definition at line <a class="el" href="dbus-marshal-basic_8c_source.html#l01280">1280</a> of file <a class="el" href="dbus-marshal-basic_8c_source.html">dbus-marshal-basic.c</a>.</p>
<p>References <a class="el" href="dbus-marshal-basic_8c_source.html#l00182">_dbus_unpack_uint32()</a>, <a class="el" href="dbus-protocol_8h_source.html#l00054">DBUS_BIG_ENDIAN</a>, <a class="el" href="dbus-protocol_8h_source.html#l00053">DBUS_LITTLE_ENDIAN</a>, and <a class="el" href="dbus-arch-deps_8h_source.html#l00037">dbus_uint64_t</a>.</p>
<p>Referenced by <a class="el" href="dbus-marshal-basic_8c_source.html#l01360">_dbus_verbose_bytes_of_string()</a>.</p>
</div>
</div>
<a class="anchor" id="ga3926bb35edf78d114cf0c341fe3258e0"></a><!-- doxytag: member="dbus-marshal-basic.c::_dbus_verbose_bytes_of_string" ref="ga3926bb35edf78d114cf0c341fe3258e0" args="(const DBusString *str, int start, int len)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void <a class="el" href="group__DBusMarshal.html#ga3926bb35edf78d114cf0c341fe3258e0">_dbus_verbose_bytes_of_string</a> </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="structDBusString.html">DBusString</a> * </td>
<td class="paramname"><em>str</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>start</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>len</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Dump the given part of the string to verbose log. </p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">str</td><td>the string </td></tr>
<tr><td class="paramname">start</td><td>the start of range to dump </td></tr>
<tr><td class="paramname">len</td><td>length of range </td></tr>
</table>
</dd>
</dl>
<p>Definition at line <a class="el" href="dbus-marshal-basic_8c_source.html#l01360">1360</a> of file <a class="el" href="dbus-marshal-basic_8c_source.html">dbus-marshal-basic.c</a>.</p>
<p>References <a class="el" href="dbus-string_8c_source.html#l00497">_dbus_string_get_const_data_len()</a>, <a class="el" href="dbus-string_8c_source.html#l00722">_dbus_string_get_length()</a>, and <a class="el" href="dbus-marshal-basic_8c_source.html#l01280">_dbus_verbose_bytes()</a>.</p>
<p>Referenced by <a class="el" href="dbus-sysdeps-unix_8c_source.html#l00626">_dbus_read()</a>, <a class="el" href="dbus-sysdeps-win_8c_source.html#l00379">_dbus_read_socket()</a>, <a class="el" href="dbus-sysdeps-unix_8c_source.html#l00274">_dbus_read_socket_with_unix_fds()</a>, <a class="el" href="dbus-marshal-recursive_8c_source.html#l01363">_dbus_type_reader_set_basic()</a>, <a class="el" href="dbus-sysdeps-unix_8c_source.html#l00686">_dbus_write()</a>, and <a class="el" href="dbus-sysdeps-win_8c_source.html#l00449">_dbus_write_socket()</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>