📄 a00674.html
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>OpenDDS: TAO::DCPS::Serializer Class Reference</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.4.7 -->
<div class="tabs">
<ul>
<li><a href="index.html"><span>Main Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li id="current"><a href="classes.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
<li><a href="dirs.html"><span>Directories</span></a></li>
<li><a href="pages.html"><span>Related Pages</span></a></li>
<li>
<form action="search.php" method="get">
<table cellspacing="0" cellpadding="0" border="0">
<tr>
<td><label> <u>S</u>earch for </label></td>
<td><input type="text" name="query" value="" size="20" accesskey="s"/></td>
</tr>
</table>
</form>
</li>
</ul></div>
<div class="tabs">
<ul>
<li><a href="classes.html"><span>Alphabetical List</span></a></li>
<li><a href="annotated.html"><span>Class List</span></a></li>
<li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
<li><a href="functions.html"><span>Class Members</span></a></li>
</ul></div>
<div class="nav">
<a class="el" href="a01308.html">TAO</a>::<a class="el" href="a01309.html">DCPS</a>::<a class="el" href="a00674.html">Serializer</a></div>
<h1>TAO::DCPS::Serializer Class Reference</h1><!-- doxytag: class="TAO::DCPS::Serializer" -->Class to serialize and deserialize data for <a class="el" href="a01300.html">DDS</a>.
<a href="#_details">More...</a>
<p>
<code>#include <Serializer.h></code>
<p>
<a href="a00050.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00674.html#52531cdda2917fddc43392a2f20c8a06">Serializer</a> (ACE_Message_Block *chain=0, bool swap_bytes=false)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual </td><td class="memItemRight" valign="bottom"><a class="el" href="a00674.html#496caef6b1dd2a4d8877072781b1fb2e">~Serializer</a> (void)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Destructor. <a href="#496caef6b1dd2a4d8877072781b1fb2e"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">ACE_Message_Block * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00674.html#e2095539ae93499e38b8703c8308f74b">add_chain</a> (ACE_Message_Block *chain)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00674.html#e7c99ee7eead9cfa0b62816852c29263">swap_bytes</a> (bool do_swap)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Establish byte swaping behavior. <a href="#e7c99ee7eead9cfa0b62816852c29263"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00674.html#3a8faa7cbf09240fae2510b990b5e758">swap_bytes</a> () const </td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Examine byte swaping behavior. <a href="#3a8faa7cbf09240fae2510b990b5e758"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00674.html#3f460631f7933d6bc356cfb869b28d33">good_bit</a> () const </td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Examine the state of the stream abstraction. <a href="#3f460631f7933d6bc356cfb869b28d33"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00674.html#7f565c8e7930bd1bb5c683267a468082">read_string</a> (ACE_CDR::Char *&dest)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Read a C string. <a href="#7f565c8e7930bd1bb5c683267a468082"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00674.html#33abf1d2ef1deeb1ca863337967e66cb">read_string</a> (ACE_CDR::WChar *&dest)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Read a WChar string. <a href="#33abf1d2ef1deeb1ca863337967e66cb"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00674.html#a40534395232feeadc0c1dea9cf7b6e4">buffer_read</a> (char *dest, size_t size, bool swap)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Read from the chain into a destination buffer. <a href="#a40534395232feeadc0c1dea9cf7b6e4"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00674.html#58ffd110ffb7de31a288aee7058d90b5">read_array</a> (char *x, size_t size, ACE_CDR::ULong length)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00674.html#79f76f0932977caaeb17a111af3302b9">buffer_write</a> (const char *src, size_t size, bool swap)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Write to the chain from a source buffer. <a href="#79f76f0932977caaeb17a111af3302b9"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00674.html#f076f1e43c09c8dcc97c183201999ec4">write_array</a> (const char *x, size_t size, ACE_CDR::ULong length)</td></tr>
<tr><td colspan="2"><div class="groupHeader"></div></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">ACE_CDR::Boolean </td><td class="memItemRight" valign="bottom"><a class="el" href="a00674.html#cc9b8a94cf799378711d7ed13a8eeeb8">read_boolean_array</a> (ACE_CDR::Boolean *x, ACE_CDR::ULong length)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">ACE_CDR::Boolean </td><td class="memItemRight" valign="bottom"><a class="el" href="a00674.html#ba73e90afcf9e2026ef199e607838131">read_char_array</a> (ACE_CDR::Char *x, ACE_CDR::ULong length)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">ACE_CDR::Boolean </td><td class="memItemRight" valign="bottom"><a class="el" href="a00674.html#5fa1cbd62a61144fd6b82874c609694e">read_wchar_array</a> (ACE_CDR::WChar *x, ACE_CDR::ULong length)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">ACE_CDR::Boolean </td><td class="memItemRight" valign="bottom"><a class="el" href="a00674.html#6a43693961017116e522d4f0ad2bc785">read_octet_array</a> (ACE_CDR::Octet *x, ACE_CDR::ULong length)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">ACE_CDR::Boolean </td><td class="memItemRight" valign="bottom"><a class="el" href="a00674.html#4e0fb4058c01f1b3a77d355452bd4e6e">read_short_array</a> (ACE_CDR::Short *x, ACE_CDR::ULong length)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">ACE_CDR::Boolean </td><td class="memItemRight" valign="bottom"><a class="el" href="a00674.html#34d1b4046404a6194408354b7e88eacd">read_ushort_array</a> (ACE_CDR::UShort *x, ACE_CDR::ULong length)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">ACE_CDR::Boolean </td><td class="memItemRight" valign="bottom"><a class="el" href="a00674.html#583aae99e0c2d6f7b9cdd7e1df1c8307">read_long_array</a> (ACE_CDR::Long *x, ACE_CDR::ULong length)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">ACE_CDR::Boolean </td><td class="memItemRight" valign="bottom"><a class="el" href="a00674.html#91d74470b446539833766d2e6459077a">read_ulong_array</a> (ACE_CDR::ULong *x, ACE_CDR::ULong length)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">ACE_CDR::Boolean </td><td class="memItemRight" valign="bottom"><a class="el" href="a00674.html#8798ab442a7c536970fa86517f5f4d05">read_longlong_array</a> (ACE_CDR::LongLong *x, ACE_CDR::ULong length)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">ACE_CDR::Boolean </td><td class="memItemRight" valign="bottom"><a class="el" href="a00674.html#42d0f20bfa6e0f66c13b5ab3cfd7e781">read_ulonglong_array</a> (ACE_CDR::ULongLong *x, ACE_CDR::ULong length)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">ACE_CDR::Boolean </td><td class="memItemRight" valign="bottom"><a class="el" href="a00674.html#35a76b52ea2a6764900779433f9024b5">read_float_array</a> (ACE_CDR::Float *x, ACE_CDR::ULong length)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">ACE_CDR::Boolean </td><td class="memItemRight" valign="bottom"><a class="el" href="a00674.html#f82a19501bdd1313f9e730c680586f57">read_double_array</a> (ACE_CDR::Double *x, ACE_CDR::ULong length)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">ACE_CDR::Boolean </td><td class="memItemRight" valign="bottom"><a class="el" href="a00674.html#adaef86c553d5f892510d550372c67f6">read_longdouble_array</a> (ACE_CDR::LongDouble *x, ACE_CDR::ULong length)</td></tr>
<tr><td colspan="2"><div class="groupHeader"></div></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">ACE_CDR::Boolean </td><td class="memItemRight" valign="bottom"><a class="el" href="a00674.html#328d20b45cc28ad8d6bca5877c514d79">write_boolean_array</a> (const ACE_CDR::Boolean *x, ACE_CDR::ULong length)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">ACE_CDR::Boolean </td><td class="memItemRight" valign="bottom"><a class="el" href="a00674.html#061ffb7b613b561202d3d6cb1f72fa8a">write_char_array</a> (const ACE_CDR::Char *x, ACE_CDR::ULong length)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">ACE_CDR::Boolean </td><td class="memItemRight" valign="bottom"><a class="el" href="a00674.html#d289d08651216adeeaa557de58432a86">write_wchar_array</a> (const ACE_CDR::WChar *x, ACE_CDR::ULong length)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">ACE_CDR::Boolean </td><td class="memItemRight" valign="bottom"><a class="el" href="a00674.html#4e9bef29562ac7f3f10afcd31b869d31">write_octet_array</a> (const ACE_CDR::Octet *x, ACE_CDR::ULong length)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">ACE_CDR::Boolean </td><td class="memItemRight" valign="bottom"><a class="el" href="a00674.html#a0c39306c889636785e5cc755244d5e7">write_short_array</a> (const ACE_CDR::Short *x, ACE_CDR::ULong length)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">ACE_CDR::Boolean </td><td class="memItemRight" valign="bottom"><a class="el" href="a00674.html#48feb87a7f315716d44c9a154ca267ee">write_ushort_array</a> (const ACE_CDR::UShort *x, ACE_CDR::ULong length)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">ACE_CDR::Boolean </td><td class="memItemRight" valign="bottom"><a class="el" href="a00674.html#aad6793ae57268941728f0c9cd6f797a">write_long_array</a> (const ACE_CDR::Long *x, ACE_CDR::ULong length)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">ACE_CDR::Boolean </td><td class="memItemRight" valign="bottom"><a class="el" href="a00674.html#bbc6a5d2fab05b9df8b72fe8def42ca0">write_ulong_array</a> (const ACE_CDR::ULong *x, ACE_CDR::ULong length)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">ACE_CDR::Boolean </td><td class="memItemRight" valign="bottom"><a class="el" href="a00674.html#d7b9978afe6eca15cbf68d80ad7bf255">write_longlong_array</a> (const ACE_CDR::LongLong *x, ACE_CDR::ULong length)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">ACE_CDR::Boolean </td><td class="memItemRight" valign="bottom"><a class="el" href="a00674.html#169faf108166a092967ad3affcdf2bcd">write_ulonglong_array</a> (const ACE_CDR::ULongLong *x, ACE_CDR::ULong length)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">ACE_CDR::Boolean </td><td class="memItemRight" valign="bottom"><a class="el" href="a00674.html#15f46505a831c147b7f7862f309adabc">write_float_array</a> (const ACE_CDR::Float *x, ACE_CDR::ULong length)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">ACE_CDR::Boolean </td><td class="memItemRight" valign="bottom"><a class="el" href="a00674.html#dff0fa7968ba6ac136e71ca29d59b6ae">write_double_array</a> (const ACE_CDR::Double *x, ACE_CDR::ULong length)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">ACE_CDR::Boolean </td><td class="memItemRight" valign="bottom"><a class="el" href="a00674.html#f1ef07e45a417c64fa88d25e14310ea7">write_longdouble_array</a> (const ACE_CDR::LongDouble *x, ACE_CDR::ULong length)</td></tr>
<tr><td colspan="2"><br><h2>Private Member Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00674.html#6eb742e67496c3aedb6a6092db536150">smemcpy</a> (char *to, const char *from, size_t n)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00674.html#643428815f741d80d17a0267bb40df04">swapcpy</a> (char *to, const char *from, size_t n)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="a00674.html#6038940f237a445438aa6c089da62155">doread</a> (char *dest, size_t size, bool swap, size_t offset)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Implementation of the actual read from the chain. <a href="#6038940f237a445438aa6c089da62155"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="a00674.html#a42b071cf66574311d2f629c2c2064fb">dowrite</a> (const char *dest, size_t size, bool swap, size_t offset)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Implementation of the actual write to the chain. <a href="#a42b071cf66574311d2f629c2c2064fb"></a><br></td></tr>
<tr><td colspan="2"><br><h2>Private Attributes</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">ACE_Message_Block * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00674.html#49156474a2db0ae2ca61ac0f351069ab">start_</a></td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Start of message block chain. <a href="#49156474a2db0ae2ca61ac0f351069ab"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">ACE_Message_Block * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00674.html#e9cdc6c8cfbc3202bcfc918ef8c5792c">current_</a></td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Currently active message block in chain. <a href="#e9cdc6c8cfbc3202bcfc918ef8c5792c"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00674.html#e2d74827b9becb90f5c1b1b358df613c">swap_bytes_</a></td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Indicates whether bytes will be swapped for this stream. <a href="#e2d74827b9becb90f5c1b1b358df613c"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00674.html#ad43388e7a20a0fcc01cb1ac92490ccc">good_bit_</a></td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Indicates the current state of the stream abstraction. <a href="#ad43388e7a20a0fcc01cb1ac92490ccc"></a><br></td></tr>
</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
Class to serialize and deserialize data for <a class="el" href="a01300.html">DDS</a>.
<p>
This class provides a mechanism to insert and extract data to and from an ACE_Message_Block chain that represents the data which can be transported on the wire to other <a class="el" href="a01300.html">DDS</a> service participants.
<p>
<hr><h2>Constructor & Destructor Documentation</h2>
<a class="anchor" name="52531cdda2917fddc43392a2f20c8a06"></a><!-- doxytag: member="TAO::DCPS::Serializer::Serializer" ref="52531cdda2917fddc43392a2f20c8a06" args="(ACE_Message_Block *chain=0, bool swap_bytes=false)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">TAO::DCPS::Serializer::Serializer </td>
<td>(</td>
<td class="paramtype">ACE_Message_Block * </td>
<td class="paramname"> <em>chain</em> = <code>0</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">bool </td>
<td class="paramname"> <em>swap_bytes</em> = <code>false</code></td><td> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td width="100%"></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Constructor with a message block chain. This installs the message block chain and sets the current block to the first in the chain. Memory management is the reponsibility of the owner of this object, and is not performed internally. Ownership of the message block chain is retained by the owner of this object and the lifetime of the chain must be longer than the use of this object.<p>
Bytes are swapped when either reading or writing from the message chain if the swap_bytes argument is true. It is the reponsibility of the owner of this object to determine whether this should be performed or not.
</div>
</div><p>
<a class="anchor" name="496caef6b1dd2a4d8877072781b1fb2e"></a><!-- doxytag: member="TAO::DCPS::Serializer::~Serializer" ref="496caef6b1dd2a4d8877072781b1fb2e" args="(void)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">TAO::DCPS::Serializer::~Serializer </td>
<td>(</td>
<td class="paramtype">void </td>
<td class="paramname"> </td>
<td> ) </td>
<td width="100%"><code> [virtual]</code></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Destructor.
<p>
</div>
</div><p>
<hr><h2>Member Function Documentation</h2>
<a class="anchor" name="e2095539ae93499e38b8703c8308f74b"></a><!-- doxytag: member="TAO::DCPS::Serializer::add_chain" ref="e2095539ae93499e38b8703c8308f74b" args="(ACE_Message_Block *chain)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">ACE_INLINE ACE_Message_Block * TAO::DCPS::Serializer::add_chain </td>
<td>(</td>
<td class="paramtype">ACE_Message_Block * </td>
<td class="paramname"> <em>chain</em> </td>
<td> ) </td>
<td width="100%"></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Add the new chain as the contained chain, return any previously held chain.
</div>
</div><p>
<a class="anchor" name="a40534395232feeadc0c1dea9cf7b6e4"></a><!-- doxytag: member="TAO::DCPS::Serializer::buffer_read" ref="a40534395232feeadc0c1dea9cf7b6e4" args="(char *dest, size_t size, bool swap)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">ACE_INLINE void TAO::DCPS::Serializer::buffer_read </td>
<td>(</td>
<td class="paramtype">char * </td>
<td class="paramname"> <em>dest</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t </td>
<td class="paramname"> <em>size</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">bool </td>
<td class="paramname"> <em>swap</em></td><td> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td width="100%"></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Read from the chain into a destination buffer.
<p>
</div>
</div><p>
<a class="anchor" name="79f76f0932977caaeb17a111af3302b9"></a><!-- doxytag: member="TAO::DCPS::Serializer::buffer_write" ref="79f76f0932977caaeb17a111af3302b9" args="(const char *src, size_t size, bool swap)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">ACE_INLINE void TAO::DCPS::Serializer::buffer_write </td>
<td>(</td>
<td class="paramtype">const char * </td>
<td class="paramname"> <em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t </td>
<td class="paramname"> <em>size</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -