<!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>CSerializable.h File Reference</title> <link href="doxygen.css" rel="stylesheet" type="text/css"> <link href="tabs.css" rel="stylesheet" type="text/css"> </head><body> <div align="left"><a href="http://www.mrpt.org/">Main MRPT website</a> > <b>C++ reference</b> </div> <div align="right"> <a href="index.html"><img border="0" src="mrpt_logo.png" alt="MRPT logo"></a> </div> <!-- Generated by Doxygen 1.7.5 --> <script type="text/javascript"> var searchBox = new SearchBox("searchBox", "search",false,'Search'); </script> <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="namespaces.html"><span>Namespaces</span></a></li> <li><a href="annotated.html"><span>Classes</span></a></li> <li class="current"><a href="files.html"><span>Files</span></a></li> <li> <div id="MSearchBox" class="MSearchBoxInactive"> <div class="left"> <form id="FSearchBox" action="search.php" method="get"> <img id="MSearchSelect" src="search/mag.png" alt=""/> <input type="text" id="MSearchField" name="query" value="Search" size="20" accesskey="S" onfocus="searchBox.OnSearchFieldFocus(true)" onblur="searchBox.OnSearchFieldFocus(false)"/> </form> </div><div class="right"></div> </div> </li> </ul> </div> <div id="navrow2" class="tabs2"> <ul class="tablist"> <li><a href="files.html"><span>File List</span></a></li> <li><a href="globals.html"><span>File Members</span></a></li> </ul> </div> </div> <div class="header"> <div class="summary"> <a href="#nested-classes">Classes</a> | <a href="#namespaces">Namespaces</a> | <a href="#define-members">Defines</a> </div> <div class="headertitle"> <div class="title">CSerializable.h File Reference</div> </div> </div> <div class="contents"> <div class="textblock"><code>#include <<a class="el" href="_c_object_8h_source.html">mrpt/utils/CObject.h</a>></code><br/> <code>#include <<a class="el" href="_c_stream_8h_source.html">mrpt/utils/CStream.h</a>></code><br/> <code>#include <<a class="el" href="safe__pointers_8h_source.html">mrpt/utils/safe_pointers.h</a>></code><br/> <code>#include <set></code><br/> <code>#include <list></code><br/> </div><div class="textblock"><div class="dynheader"> Include dependency graph for CSerializable.h:</div> <div class="dyncontent"> <div class="center"><img src="_c_serializable_8h__incl.png" border="0" usemap="#_c_serializable_8h" alt=""/></div> <map name="_c_serializable_8h" id="_c_serializable_8h"> <area shape="rect" id="node3" href="_c_object_8h.html" title="mrpt/utils/CObject.h" alt="" coords="1717,155,1856,181"/><area shape="rect" id="node122" href="safe__pointers_8h.html" title="mrpt/utils/safe_pointers.h" alt="" coords="1795,229,1964,256"/><area shape="rect" id="node126" href="_c_stream_8h.html" title="mrpt/utils/CStream.h" alt="" coords="1545,80,1687,107"/><area shape="rect" id="node5" href="utils__defs_8h.html" title="mrpt/utils/utils_defs.h" alt="" coords="1620,304,1767,331"/><area shape="rect" id="node9" href="os_8h.html" title="mrpt/system/os.h" alt="" coords="1631,379,1755,405"/><area shape="rect" id="node22" href="base_2include_2mrpt_2base_2link__pragmas_8h.html" title="mrpt/base/link_pragmas.h" alt="" coords="1366,603,1537,629"/><area shape="rect" id="node25" href="boost__join_8h.html" title="mrpt/utils/boost_join.h" alt="" coords="691,677,841,704"/><area shape="rect" id="node27" href="base_2include_2mrpt_2utils_2types_8h.html" title="mrpt/utils/types.h" alt="" coords="1433,453,1556,480"/><area shape="rect" id="node69" href="mrpt__macros_8h.html" title="mrpt/utils/mrpt_macros.h" alt="" coords="2330,453,2496,480"/><area shape="rect" id="node72" href="compiler__fixes_8h.html" title="mrpt/utils/compiler_fixes.h" alt="" coords="1882,379,2056,405"/><area shape="rect" id="node99" href="smart__ptr_8hpp.html" title="mrpt/otherlibs/stlplus/smart_ptr.hpp" alt="" coords="2521,453,2748,480"/><area shape="rect" id="node116" href="bits_8h.html" title="mrpt/utils/bits.h" alt="" coords="2835,379,2945,405"/><area shape="rect" id="node39" href="mrpt__stdint_8h.html" title="mrpt/utils/mrpt_stdint.h" alt="" coords="1777,603,1932,629"/><area shape="rect" id="node42" href="mrpt__inttypes_8h.html" title="mrpt/utils/mrpt_inttypes.h" alt="" coords="1647,528,1817,555"/><area shape="rect" id="node45" href="math__frwds_8h.html" title="mrpt/math/math_frwds.h" alt="" coords="602,528,765,555"/><area shape="rect" id="node61" href="_dense.html" title="Eigen/Dense" alt="" coords="842,528,939,555"/><area shape="rect" id="node101" href="containers__fixes_8hpp.html" title="containers_fixes.hpp" alt="" coords="2778,603,2920,629"/><area shape="rect" id="node103" href="exceptions_8hpp.html" title="exceptions.hpp" alt="" coords="2709,528,2819,555"/><area shape="rect" id="node110" href="atomic__incr_8h.html" title="mrpt/synch/atomic_incr.h" alt="" coords="2341,528,2509,555"/><area shape="rect" id="node114" href="smart__ptr_8tpp.html" title="smart_ptr.tpp" alt="" coords="2585,528,2684,555"/><area shape="rect" id="node118" href="_s_s_e__types_8h.html" title="mrpt/utils/SSE_types.h" alt="" coords="2823,453,2980,480"/><area shape="rect" id="node129" href="_c_uncopiable_8h.html" title="mrpt/utils/CUncopiable.h" alt="" coords="1489,229,1655,256"/><area shape="rect" id="node133" href="exceptions_8h.html" title="mrpt/utils/exceptions.h" alt="" coords="1539,155,1692,181"/></map> </div> </div> <p><a href="_c_serializable_8h_source.html">Go to the source code of this file.</a></p> <table class="memberdecls"> <tr><td colspan="2"><h2><a name="nested-classes"></a> Classes</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structmrpt_1_1utils_1_1_c_serializable_ptr.html">mrpt::utils::CSerializablePtr</a></td></tr> <tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1utils_1_1_c_serializable.html">mrpt::utils::CSerializable</a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">The virtual base class which provides a unified interface for all persistent objects in MRPT. <a href="classmrpt_1_1utils_1_1_c_serializable.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="structmrpt_1_1utils_1_1_t_type_name.html">mrpt::utils::TTypeName</a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">A template to obtain the type of its argument as a string at compile time. <a href="structmrpt_1_1utils_1_1_t_type_name.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="structmrpt_1_1utils_1_1_t_type_name_3_01std_1_1pair_3_01_t1_00_01_t2_01_4_01_4.html">mrpt::utils::TTypeName< std::pair< T1, T2 > ></a></td></tr> <tr><td colspan="2"><h2><a name="namespaces"></a> Namespaces</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemrpt.html">mrpt</a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight"><p>This is the global namespace for all Mobile Robot Programming Toolkit (MRPT) libraries. </p> <br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemrpt_1_1utils.html">mrpt::utils</a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Classes for serialization, sockets, ini-file manipulation, streams, list of properties-values, timewatch, extensions to STL. </p> <br/></td></tr> <tr><td colspan="2"><h2><a name="define-members"></a> Defines</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_c_serializable_8h.html#a72ab55bf7ae009c89b75715cfa21e84d">DEFINE_SERIALIZABLE</a>(class_name)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">This declaration must be inserted in all CSerializable classes definition, within the class declaration. <a href="#a72ab55bf7ae009c89b75715cfa21e84d"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_c_serializable_8h.html#a4f65adffe92332a1a157f834338b1d49">DEFINE_SERIALIZABLE_PRE_CUSTOM_LINKAGE</a>(class_name, _LINKAGE_)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">This declaration must be inserted in all CSerializable classes definition, before the class declaration. <a href="#a4f65adffe92332a1a157f834338b1d49"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_c_serializable_8h.html#a5155da97198db5986e6369e2fe7a3539">DEFINE_SERIALIZABLE_PRE</a>(class_name)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">This declaration must be inserted in all CSerializable classes definition, before the class declaration. <a href="#a5155da97198db5986e6369e2fe7a3539"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_c_serializable_8h.html#a9ef523d787f6cb837a0585b790882588">DEFINE_SERIALIZABLE_PRE_CUSTOM_BASE_LINKAGE</a>(class_name, base_name, _LINKAGE_)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">This declaration must be inserted in all CSerializable classes definition, before the class declaration. <a href="#a9ef523d787f6cb837a0585b790882588"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_c_serializable_8h.html#ab89b7a3de0a1baf5a5af4454add7d0f8">DEFINE_SERIALIZABLE_PRE_CUSTOM_BASE</a>(class_name, base_name)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">This declaration must be inserted in all CSerializable classes definition, before the class declaration. <a href="#ab89b7a3de0a1baf5a5af4454add7d0f8"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_c_serializable_8h.html#a5720fe2c7372e6b325004e7bdc5dd692">IMPLEMENTS_SERIALIZABLE</a>(class_name, base, NameSpace)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">This must be inserted in all CSerializable classes implementation files: <a href="#a5720fe2c7372e6b325004e7bdc5dd692"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_c_serializable_8h.html#a5876f72cf51bfb66a82bf81cc493febc">DEFINE_VIRTUAL_SERIALIZABLE</a>(class_name)   DEFINE_VIRTUAL_MRPT_OBJECT(class_name)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">This declaration must be inserted in virtual CSerializable classes definition: <a href="#a5876f72cf51bfb66a82bf81cc493febc"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_c_serializable_8h.html#a9dcb53a0dc06be1b78b78046f7e9757a">IMPLEMENTS_VIRTUAL_SERIALIZABLE</a>(class_name, base_class_name, NameSpace)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">This must be inserted as implementation of some required members for virtual CSerializable classes: <a href="#a9dcb53a0dc06be1b78b78046f7e9757a"></a><br/></td></tr> <tr><td colspan="2"><div class="groupHeader">Conversion of type to string at compile time</div></td></tr> <tr><td colspan="2"><div class="groupText"><p>IMPORTANT: See also the implementation of Serialization for STL containers in <a class="el" href="stl__extensions_8h.html">mrpt/utils/stl_extensions.h</a> </p> </div></td></tr> <tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_c_serializable_8h.html#aac77500ae43a282574851009d7399d81">DECLARE_CUSTOM_TTYPENAME</a>(_TYPE)   namespace mrpt { namespace utils { MRPT_DECLARE_TTYPENAME(_TYPE) } }</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Identical to MRPT_DECLARE_TTYPENAME but intended for user code. <a href="#aac77500ae43a282574851009d7399d81"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_c_serializable_8h.html#a3d50ead2a44af4340ef8e3a88b78df10">MRPT_DECLARE_TTYPENAME</a>(_TYPE)</td></tr> <tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_c_serializable_8h.html#a81695246461c7c04018786a6b6e75b6d">MRPT_DECLARE_TTYPENAME_PTR</a>(_TYPE)</td></tr> <tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_c_serializable_8h.html#a988f455c4e9dbf9c78f58adc75627fdc">MRPT_DECLARE_TTYPENAME_CONTAINER</a>(_CONTAINER)</td></tr> <tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_c_serializable_8h.html#a31a2cb66ebc61fff6cd6d5e3d9465c19">MRPT_DECLARE_TTYPENAME_MAP_FOR_VECTOR</a>(_CONT)   template<> struct TTypeName <_CONT> : TTypeName<<a class="el" href="classstd_1_1vector.html">std::vector</a><_CONT::Scalar> > { };</td></tr> <tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_c_serializable_8h.html#aea6791b84a5804fa07c5a6923409b446">MRPT_DECLARE_TTYPENAME_CONTAINER_ASSOC</a>(_CONTAINER)</td></tr> <tr><td colspan="2"><h2><a name="func-members"></a> Functions</h2></td></tr> <tr><td colspan="2"><div class="groupHeader">Non-streaming serialization functions</div></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classstd_1_1string.html">std::string</a> BASE_IMPEXP </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemrpt_1_1utils.html#a06ed9b2f48694d76491290d425bcc5b8">mrpt::utils::ObjectToString</a> (const CSerializable *o)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Used to pass MRPT objects into a CORBA-like object (strings). <a href="#a06ed9b2f48694d76491290d425bcc5b8"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">void BASE_IMPEXP </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemrpt_1_1utils.html#aff5bcfca78de7fe76619e012be514536">mrpt::utils::StringToObject</a> (const <a class="el" href="classstd_1_1string.html">std::string</a> &str, CSerializablePtr &obj)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Used to pass CORBA-like objects (strings) into a MRPT object. <a href="#aff5bcfca78de7fe76619e012be514536"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">void BASE_IMPEXP </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemrpt_1_1utils.html#a16c964ccdd95e205756d4c9423d327a1">mrpt::utils::ObjectToOctetVector</a> (const CSerializable *o, vector_byte &out_vector)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Converts (serializes) an MRPT object into an array of bytes. <a href="#a16c964ccdd95e205756d4c9423d327a1"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">void BASE_IMPEXP </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemrpt_1_1utils.html#ab4df6fdf9180e0b0d68796d04bb491ea">mrpt::utils::OctetVectorToObject</a> (const vector_byte &in_data, CSerializablePtr &obj)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Converts back (de-serializes) a sequence of binary data into a MRPT object, without prior information about the object's class. <a href="#ab4df6fdf9180e0b0d68796d04bb491ea"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">void BASE_IMPEXP </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemrpt_1_1utils.html#aeae09d5d3a2adbfed024fdbe32ffda21">mrpt::utils::ObjectToRawString</a> (const CSerializable *o, <a class="el" href="classstd_1_1string.html">std::string</a> &out_str)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Converts (serializes) an MRPT object into an array of bytes within a <a class="el" href="classstd_1_1string.html" title="STL class.">std::string</a>, without codifying to avoid NULL characters. <a href="#aeae09d5d3a2adbfed024fdbe32ffda21"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">void BASE_IMPEXP </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemrpt_1_1utils.html#a42ebda9258713a4a9bada754001c4d8b">mrpt::utils::RawStringToObject</a> (const <a class="el" href="classstd_1_1string.html">std::string</a> &in_str, CSerializablePtr &obj)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Converts back (de-serializes) a sequence of binary data within a <a class="el" href="classstd_1_1string.html" title="STL class.">std::string</a> into a MRPT object, without prior information about the object's class. <a href="#a42ebda9258713a4a9bada754001c4d8b"></a><br/></td></tr> </table> <hr/><h2>Define Documentation</h2> <a class="anchor" id="aac77500ae43a282574851009d7399d81"></a><!-- doxytag: member="CSerializable.h::DECLARE_CUSTOM_TTYPENAME" ref="aac77500ae43a282574851009d7399d81" args="(_TYPE)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define DECLARE_CUSTOM_TTYPENAME</td> <td>(</td> <td class="paramtype"> </td> <td class="paramname">_TYPE</td><td>)</td> <td>   namespace mrpt { namespace utils { MRPT_DECLARE_TTYPENAME(_TYPE) } }</td> </tr> </table> </div> <div class="memdoc"> <p>Identical to MRPT_DECLARE_TTYPENAME but intended for user code. </p> <p>MUST be placed at the GLOBAL namespace. </p> <p>Definition at line <a class="el" href="_c_serializable_8h_source.html#l00179">179</a> of file <a class="el" href="_c_serializable_8h_source.html">CSerializable.h</a>.</p> </div> </div> <a class="anchor" id="a72ab55bf7ae009c89b75715cfa21e84d"></a><!-- doxytag: member="CSerializable.h::DEFINE_SERIALIZABLE" ref="a72ab55bf7ae009c89b75715cfa21e84d" args="(class_name)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define DEFINE_SERIALIZABLE</td> <td>(</td> <td class="paramtype"> </td> <td class="paramname">class_name</td><td>)</td> <td></td> </tr> </table> </div> <div class="memdoc"> <b>Value:</b><div class="fragment"><pre class="fragment"><a class="code" href="_c_object_8h.html#a89a1b701b9898005d954af26d92766fe" title="This declaration must be inserted in all CObject classes definition, within the class declaration...">DEFINE_MRPT_OBJECT</a>(class_name) \ protected: \<span class="comment"></span> <span class="comment"> /*! @name CSerializable virtual methods */</span> \<span class="comment"></span> <span class="comment"> /*! @{ */</span> \ void writeToStream(<a class="code" href="classmrpt_1_1utils_1_1_c_stream.html" title="This base class is used to provide a unified interface to files,memory buffers,..Please see the deriv...">mrpt::utils::CStream</a> &out, <span class="keywordtype">int</span> *getVersion) <span class="keyword">const</span>;\ void readFromStream(<a class="code" href="classmrpt_1_1utils_1_1_c_stream.html" title="This base class is used to provide a unified interface to files,memory buffers,..Please see the deriv...">mrpt::utils::CStream</a> &in, <span class="keywordtype">int</span> version); \ </pre></div> <p>This declaration must be inserted in all CSerializable classes definition, within the class declaration. </p> <p>Definition at line <a class="el" href="_c_serializable_8h_source.html#l00262">262</a> of file <a class="el" href="_c_serializable_8h_source.html">CSerializable.h</a>.</p> </div> </div> <a class="anchor" id="a5155da97198db5986e6369e2fe7a3539"></a><!-- doxytag: member="CSerializable.h::DEFINE_SERIALIZABLE_PRE" ref="a5155da97198db5986e6369e2fe7a3539" args="(class_name)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define DEFINE_SERIALIZABLE_PRE</td> <td>(</td> <td class="paramtype"> </td> <td class="paramname">class_name</td><td>)</td> <td></td> </tr> </table> </div> <div class="memdoc"> <b>Value:</b><div class="fragment"><pre class="fragment"><a class="code" href="_c_object_8h.html#afd9e3f83bf8b2ef843831523123740f1" title="This declaration must be inserted in all CObject classes definition, before the class declaration...">DEFINE_MRPT_OBJECT_PRE_CUSTOM_BASE_LINKAGE2</a>(class_name, <a class="code" href="namespacemrpt_1_1utils.html#a9f31abb393bf84af21fecce4c4070b40">CSerializable</a>, <a class="code" href="base_2include_2mrpt_2base_2link__pragmas_8h.html#a6045fa0129b1a3d6c8bf895470e66574">BASE_IMPEXP</a> class_name) <a class="code" href="namespacemrpt_1_1utils.html#a4aa6d0388c837d159ca801e48d601449">\</a> <a class="code" href="namespacemrpt_1_1utils.html#a4aa6d0388c837d159ca801e48d601449"> BASE_IMPEXP ::mrpt::utils::CStream</a>& <a class="code" href="namespacemrpt_1_1math.html#ab55e39255f4b544e7693867d22a70b91">operator>></a>(<a class="code" href="classmrpt_1_1utils_1_1_c_stream.html" title="This base class is used to provide a unified interface to files,memory buffers,..Please see the deriv...">mrpt::utils::CStream</a>& in, class_name##Ptr &pObj); </pre></div> <p>This declaration must be inserted in all CSerializable classes definition, before the class declaration. </p> <p>Definition at line <a class="el" href="_c_serializable_8h_source.html#l00280">280</a> of file <a class="el" href="_c_serializable_8h_source.html">CSerializable.h</a>.</p> </div> </div> <a class="anchor" id="ab89b7a3de0a1baf5a5af4454add7d0f8"></a><!-- doxytag: member="CSerializable.h::DEFINE_SERIALIZABLE_PRE_CUSTOM_BASE" ref="ab89b7a3de0a1baf5a5af4454add7d0f8" args="(class_name, base_name)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define DEFINE_SERIALIZABLE_PRE_CUSTOM_BASE</td> <td>(</td> <td class="paramtype"> </td> <td class="paramname">class_name, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"> </td> <td class="paramname">base_name </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div> <div class="memdoc"> <b>Value:</b><div class="fragment"><pre class="fragment"><a class="code" href="_c_object_8h.html#a0e854723702802213de8c20bf5697bff">DEFINE_MRPT_OBJECT_PRE_CUSTOM_BASE_LINKAGE</a>(class_name, base_name, <a class="code" href="base_2include_2mrpt_2base_2link__pragmas_8h.html#a6045fa0129b1a3d6c8bf895470e66574">BASE_IMPEXP</a> ) <a class="code" href="namespacemrpt_1_1utils.html#a4aa6d0388c837d159ca801e48d601449">\</a> <a class="code" href="namespacemrpt_1_1utils.html#a4aa6d0388c837d159ca801e48d601449"> BASE_IMPEXP ::mrpt::utils::CStream</a>& <a class="code" href="namespacemrpt_1_1math.html#ab55e39255f4b544e7693867d22a70b91">operator>></a>(<a class="code" href="classmrpt_1_1utils_1_1_c_stream.html" title="This base class is used to provide a unified interface to files,memory buffers,..Please see the deriv...">mrpt::utils::CStream</a>& in, class_name##Ptr &pObj); </pre></div> <p>This declaration must be inserted in all CSerializable classes definition, before the class declaration. </p> <p>Definition at line <a class="el" href="_c_serializable_8h_source.html#l00293">293</a> of file <a class="el" href="_c_serializable_8h_source.html">CSerializable.h</a>.</p> </div> </div> <a class="anchor" id="a9ef523d787f6cb837a0585b790882588"></a><!-- doxytag: member="CSerializable.h::DEFINE_SERIALIZABLE_PRE_CUSTOM_BASE_LINKAGE" ref="a9ef523d787f6cb837a0585b790882588" args="(class_name, base_name, _LINKAGE_)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define DEFINE_SERIALIZABLE_PRE_CUSTOM_BASE_LINKAGE</td> <td>(</td> <td class="paramtype"> </td> <td class="paramname">class_name, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"> </td> <td class="paramname">base_name, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"> </td> <td class="paramname">_LINKAGE_ </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div> <div class="memdoc"> <b>Value:</b><div class="fragment"><pre class="fragment"><a class="code" href="_c_object_8h.html#afd9e3f83bf8b2ef843831523123740f1" title="This declaration must be inserted in all CObject classes definition, before the class declaration...">DEFINE_MRPT_OBJECT_PRE_CUSTOM_BASE_LINKAGE2</a>(class_name, base_name, _LINKAGE_ class_name) <a class="code" href="namespacemrpt_1_1utils.html#a4aa6d0388c837d159ca801e48d601449">\</a> <a class="code" href="namespacemrpt_1_1utils.html#a4aa6d0388c837d159ca801e48d601449"> _LINKAGE_ ::mrpt::utils::CStream</a>& <a class="code" href="namespacemrpt_1_1math.html#ab55e39255f4b544e7693867d22a70b91">operator>></a>(<a class="code" href="classmrpt_1_1utils_1_1_c_stream.html" title="This base class is used to provide a unified interface to files,memory buffers,..Please see the deriv...">mrpt::utils::CStream</a>& in, class_name##Ptr &pObj); </pre></div> <p>This declaration must be inserted in all CSerializable classes definition, before the class declaration. </p> <p>Definition at line <a class="el" href="_c_serializable_8h_source.html#l00286">286</a> of file <a class="el" href="_c_serializable_8h_source.html">CSerializable.h</a>.</p> </div> </div> <a class="anchor" id="a4f65adffe92332a1a157f834338b1d49"></a><!-- doxytag: member="CSerializable.h::DEFINE_SERIALIZABLE_PRE_CUSTOM_LINKAGE" ref="a4f65adffe92332a1a157f834338b1d49" args="(class_name, _LINKAGE_)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define DEFINE_SERIALIZABLE_PRE_CUSTOM_LINKAGE</td> <td>(</td> <td class="paramtype"> </td> <td class="paramname">class_name, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"> </td> <td class="paramname">_LINKAGE_ </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div> <div class="memdoc"> <b>Value:</b><div class="fragment"><pre class="fragment"><a class="code" href="_c_object_8h.html#afd9e3f83bf8b2ef843831523123740f1" title="This declaration must be inserted in all CObject classes definition, before the class declaration...">DEFINE_MRPT_OBJECT_PRE_CUSTOM_BASE_LINKAGE2</a>(class_name, <a class="code" href="namespacemrpt_1_1utils.html#a9f31abb393bf84af21fecce4c4070b40">CSerializable</a>, _LINKAGE_ class_name) <a class="code" href="namespacemrpt_1_1utils.html#a4aa6d0388c837d159ca801e48d601449">\</a> <a class="code" href="namespacemrpt_1_1utils.html#a4aa6d0388c837d159ca801e48d601449"> _LINKAGE_ ::mrpt::utils::CStream</a>& <a class="code" href="namespacemrpt_1_1math.html#ab55e39255f4b544e7693867d22a70b91">operator>></a>(<a class="code" href="classmrpt_1_1utils_1_1_c_stream.html" title="This base class is used to provide a unified interface to files,memory buffers,..Please see the deriv...">mrpt::utils::CStream</a>& in, class_name##Ptr &pObj); </pre></div> <p>This declaration must be inserted in all CSerializable classes definition, before the class declaration. </p> <p>Definition at line <a class="el" href="_c_serializable_8h_source.html#l00273">273</a> of file <a class="el" href="_c_serializable_8h_source.html">CSerializable.h</a>.</p> </div> </div> <a class="anchor" id="a5876f72cf51bfb66a82bf81cc493febc"></a><!-- doxytag: member="CSerializable.h::DEFINE_VIRTUAL_SERIALIZABLE" ref="a5876f72cf51bfb66a82bf81cc493febc" args="(class_name)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define DEFINE_VIRTUAL_SERIALIZABLE</td> <td>(</td> <td class="paramtype"> </td> <td class="paramname">class_name</td><td>)</td> <td>   DEFINE_VIRTUAL_MRPT_OBJECT(class_name)</td> </tr> </table> </div> <div class="memdoc"> <p>This declaration must be inserted in virtual CSerializable classes definition: </p> <p>Definition at line <a class="el" href="_c_serializable_8h_source.html#l00306">306</a> of file <a class="el" href="_c_serializable_8h_source.html">CSerializable.h</a>.</p> </div> </div> <a class="anchor" id="a5720fe2c7372e6b325004e7bdc5dd692"></a><!-- doxytag: member="CSerializable.h::IMPLEMENTS_SERIALIZABLE" ref="a5720fe2c7372e6b325004e7bdc5dd692" args="(class_name, base, NameSpace)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define IMPLEMENTS_SERIALIZABLE</td> <td>(</td> <td class="paramtype"> </td> <td class="paramname">class_name, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"> </td> <td class="paramname">base, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"> </td> <td class="paramname">NameSpace </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div> <div class="memdoc"> <b>Value:</b><div class="fragment"><pre class="fragment"><a class="code" href="_c_object_8h.html#a821c31b2df70d6b3c0f8b0d49374a009" title="This must be inserted in all CObject classes implementation files.">IMPLEMENTS_MRPT_OBJECT</a>(class_name, base,NameSpace) <a class="code" href="namespacemrpt_1_1utils.html#a4aa6d0388c837d159ca801e48d601449">\</a> <a class="code" href="namespacemrpt_1_1utils.html#a4aa6d0388c837d159ca801e48d601449"> mrpt::utils::CStream</a>& <a class="code" href="namespacemrpt_1_1math.html#ab55e39255f4b544e7693867d22a70b91">NameSpace::operator>></a>(<a class="code" href="classmrpt_1_1utils_1_1_c_stream.html" title="This base class is used to provide a unified interface to files,memory buffers,..Please see the deriv...">mrpt::utils::CStream</a>& in, NameSpace::class_name##Ptr &pObj) \ { pObj = NameSpace::class_name##Ptr( in.ReadObject() ); <span class="keywordflow">return</span> in; } </pre></div> <p>This must be inserted in all CSerializable classes implementation files: </p> <p>Definition at line <a class="el" href="_c_serializable_8h_source.html#l00299">299</a> of file <a class="el" href="_c_serializable_8h_source.html">CSerializable.h</a>.</p> </div> </div> <a class="anchor" id="a9dcb53a0dc06be1b78b78046f7e9757a"></a><!-- doxytag: member="CSerializable.h::IMPLEMENTS_VIRTUAL_SERIALIZABLE" ref="a9dcb53a0dc06be1b78b78046f7e9757a" args="(class_name, base_class_name, NameSpace)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define IMPLEMENTS_VIRTUAL_SERIALIZABLE</td> <td>(</td> <td class="paramtype"> </td> <td class="paramname">class_name, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"> </td> <td class="paramname">base_class_name, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"> </td> <td class="paramname">NameSpace </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div> <div class="memdoc"> <b>Value:</b><div class="fragment"><pre class="fragment"><a class="code" href="_c_object_8h.html#a3b29d8d0ead735ece9941e7a58619c7c" title="This must be inserted as implementation of some required members for virtual CSerializable classes:...">IMPLEMENTS_VIRTUAL_MRPT_OBJECT</a>(class_name, base_class_name,NameSpace) <a class="code" href="namespacemrpt_1_1utils.html#a4aa6d0388c837d159ca801e48d601449">\</a> <a class="code" href="namespacemrpt_1_1utils.html#a4aa6d0388c837d159ca801e48d601449"> mrpt::utils::CStream</a>& <a class="code" href="namespacemrpt_1_1math.html#ab55e39255f4b544e7693867d22a70b91">NameSpace::operator>></a>(<a class="code" href="classmrpt_1_1utils_1_1_c_stream.html" title="This base class is used to provide a unified interface to files,memory buffers,..Please see the deriv...">mrpt::utils::CStream</a>& in, class_name##Ptr &pObj) \ { pObj = class_name##Ptr( in.ReadObject() ); <span class="keywordflow">return</span> in; } </pre></div> <p>This must be inserted as implementation of some required members for virtual CSerializable classes: </p> <p>Definition at line <a class="el" href="_c_serializable_8h_source.html#l00312">312</a> of file <a class="el" href="_c_serializable_8h_source.html">CSerializable.h</a>.</p> </div> </div> <a class="anchor" id="a3d50ead2a44af4340ef8e3a88b78df10"></a><!-- doxytag: member="CSerializable.h::MRPT_DECLARE_TTYPENAME" ref="a3d50ead2a44af4340ef8e3a88b78df10" args="(_TYPE)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define MRPT_DECLARE_TTYPENAME</td> <td>(</td> <td class="paramtype"> </td> <td class="paramname">_TYPE</td><td>)</td> <td></td> </tr> </table> </div> <div class="memdoc"> <b>Value:</b><div class="fragment"><pre class="fragment"><span class="keyword">template</span><> <span class="keyword">struct </span>TTypeName <_TYPE > { \ static std::string <span class="keyword">get</span>() { <span class="keywordflow">return</span> <a class="code" href="classstd_1_1string.html" title="STL class.">std::string</a>(#_TYPE); } }; </pre></div> <p>Definition at line <a class="el" href="_c_serializable_8h_source.html#l00182">182</a> of file <a class="el" href="_c_serializable_8h_source.html">CSerializable.h</a>.</p> </div> </div> <a class="anchor" id="a988f455c4e9dbf9c78f58adc75627fdc"></a><!-- doxytag: member="CSerializable.h::MRPT_DECLARE_TTYPENAME_CONTAINER" ref="a988f455c4e9dbf9c78f58adc75627fdc" args="(_CONTAINER)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define MRPT_DECLARE_TTYPENAME_CONTAINER</td> <td>(</td> <td class="paramtype"> </td> <td class="paramname">_CONTAINER</td><td>)</td> <td></td> </tr> </table> </div> <div class="memdoc"> <b>Value:</b><div class="fragment"><pre class="fragment"><span class="keyword">template</span>< <span class="keyword">typename</span> V > \ struct TTypeName <_CONTAINER<V> > { \ static std::string <span class="keyword">get</span>() { \ return <a class="code" href="classstd_1_1string.html" title="STL class.">std::string</a>( #_CONTAINER )+<a class="code" href="classstd_1_1string.html" title="STL class.">std::string</a>(<span class="stringliteral">"<"</span>)+<a class="code" href="classstd_1_1string.html" title="STL class.">std::string</a>( TTypeName<V>::get() ) + <a class="code" href="classstd_1_1string.html" title="STL class.">std::string</a>(<span class="stringliteral">">"</span>); \ } \ }; </pre></div> <p>Definition at line <a class="el" href="_c_serializable_8h_source.html#l00205">205</a> of file <a class="el" href="_c_serializable_8h_source.html">CSerializable.h</a>.</p> </div> </div> <a class="anchor" id="aea6791b84a5804fa07c5a6923409b446"></a><!-- doxytag: member="CSerializable.h::MRPT_DECLARE_TTYPENAME_CONTAINER_ASSOC" ref="aea6791b84a5804fa07c5a6923409b446" args="(_CONTAINER)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define MRPT_DECLARE_TTYPENAME_CONTAINER_ASSOC</td> <td>(</td> <td class="paramtype"> </td> <td class="paramname">_CONTAINER</td><td>)</td> <td></td> </tr> </table> </div> <div class="memdoc"> <b>Value:</b><div class="fragment"><pre class="fragment"><span class="keyword">template</span>< <span class="keyword">typename</span> K, <span class="keyword">typename</span> V > \ struct TTypeName <_CONTAINER<K,V> > { \ static std::string <span class="keyword">get</span>() { \ return <a class="code" href="classstd_1_1string.html" title="STL class.">std::string</a>( #_CONTAINER )+<a class="code" href="classstd_1_1string.html" title="STL class.">std::string</a>(<span class="stringliteral">"<"</span>)+<a class="code" href="classstd_1_1string.html" title="STL class.">std::string</a>( TTypeName<K>::get() )+ <a class="code" href="classstd_1_1string.html" title="STL class.">std::string</a>(<span class="stringliteral">","</span>)+<a class="code" href="classstd_1_1string.html" title="STL class.">std::string</a>( TTypeName<V>::get() )+<a class="code" href="classstd_1_1string.html" title="STL class.">std::string</a>(<span class="stringliteral">">"</span>); \ } \ }; </pre></div> <p>Definition at line <a class="el" href="_c_serializable_8h_source.html#l00238">238</a> of file <a class="el" href="_c_serializable_8h_source.html">CSerializable.h</a>.</p> </div> </div> <a class="anchor" id="a31a2cb66ebc61fff6cd6d5e3d9465c19"></a><!-- doxytag: member="CSerializable.h::MRPT_DECLARE_TTYPENAME_MAP_FOR_VECTOR" ref="a31a2cb66ebc61fff6cd6d5e3d9465c19" args="(_CONT)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define MRPT_DECLARE_TTYPENAME_MAP_FOR_VECTOR</td> <td>(</td> <td class="paramtype"> </td> <td class="paramname">_CONT</td><td>)</td> <td>   template<> struct TTypeName <_CONT> : TTypeName<<a class="el" href="classstd_1_1vector.html">std::vector</a><_CONT::Scalar> > { };</td> </tr> </table> </div> <div class="memdoc"> <p>Definition at line <a class="el" href="_c_serializable_8h_source.html#l00219">219</a> of file <a class="el" href="_c_serializable_8h_source.html">CSerializable.h</a>.</p> </div> </div> <a class="anchor" id="a81695246461c7c04018786a6b6e75b6d"></a><!-- doxytag: member="CSerializable.h::MRPT_DECLARE_TTYPENAME_PTR" ref="a81695246461c7c04018786a6b6e75b6d" args="(_TYPE)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define MRPT_DECLARE_TTYPENAME_PTR</td> <td>(</td> <td class="paramtype"> </td> <td class="paramname">_TYPE</td><td>)</td> <td></td> </tr> </table> </div> <div class="memdoc"> <b>Value:</b><div class="fragment"><pre class="fragment"><span class="keyword">template</span><> <span class="keyword">struct </span>TTypeName <_TYPE##Ptr> { \ static std::string <span class="keyword">get</span>() { <span class="keywordflow">return</span> TTypeName<_TYPE>::get(); } }; </pre></div> <p>Definition at line <a class="el" href="_c_serializable_8h_source.html#l00186">186</a> of file <a class="el" href="_c_serializable_8h_source.html">CSerializable.h</a>.</p> </div> </div> </div> <br><hr><br> <table border="0" width="100%"> <tr> <td> Page generated by <a href="http://www.doxygen.org" target="_blank">Doxygen 1.7.5</a> for MRPT 0.9.5 SVN: at Sun Sep 25 17:20:18 UTC 2011</td><td></td> <td width="100"> </td> <td width="150"> </td></tr> </table> </body></html>