Sophie

Sophie

distrib > Fedora > 16 > i386 > by-pkgid > 4bc66056a634db26a1f4d0845dc41ca6 > files > 1150

mrpt-doc-0.9.5-0.1.20110925svn2670.fc16.i686.rpm

<!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>CObject.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> &gt; <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&#160;Page</span></a></li>
      <li><a href="pages.html"><span>Related&#160;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&#160;List</span></a></li>
      <li><a href="globals.html"><span>File&#160;Members</span></a></li>
    </ul>
  </div>
</div>
<div class="header">
  <div class="summary">
<a href="#nested-classes">Classes</a> &#124;
<a href="#namespaces">Namespaces</a> &#124;
<a href="#define-members">Defines</a> &#124;
<a href="#func-members">Functions</a>  </div>
  <div class="headertitle">
<div class="title">CObject.h File Reference</div>  </div>
</div>
<div class="contents">
<div class="textblock"><code>#include &lt;<a class="el" href="utils__defs_8h_source.html">mrpt/utils/utils_defs.h</a>&gt;</code><br/>
<code>#include &lt;<a class="el" href="safe__pointers_8h_source.html">mrpt/utils/safe_pointers.h</a>&gt;</code><br/>
</div><div class="textblock"><div class="dynheader">
Include dependency graph for CObject.h:</div>
<div class="dyncontent">
<div class="center"><img src="_c_object_8h__incl.png" border="0" usemap="#_c_object_8h" alt=""/></div>
<map name="_c_object_8h" id="_c_object_8h">
<area shape="rect" id="node3" href="utils__defs_8h.html" title="mrpt/utils/utils_defs.h" alt="" coords="1677,155,1824,181"/><area shape="rect" id="node137" href="safe__pointers_8h.html" title="mrpt/utils/safe_pointers.h" alt="" coords="1789,80,1957,107"/><area shape="rect" id="node7" href="os_8h.html" title="mrpt/system/os.h" alt="" coords="555,229,679,256"/><area shape="rect" id="node20" href="base_2include_2mrpt_2base_2link__pragmas_8h.html" title="mrpt/base/link_pragmas.h" alt="" coords="2251,453,2423,480"/><area shape="rect" id="node23" href="boost__join_8h.html" title="mrpt/utils/boost_join.h" alt="" coords="2225,528,2375,555"/><area shape="rect" id="node25" href="base_2include_2mrpt_2utils_2types_8h.html" title="mrpt/utils/types.h" alt="" coords="1271,304,1393,331"/><area shape="rect" id="node80" href="mrpt__macros_8h.html" title="mrpt/utils/mrpt_macros.h" alt="" coords="278,304,444,331"/><area shape="rect" id="node83" href="compiler__fixes_8h.html" title="mrpt/utils/compiler_fixes.h" alt="" coords="1814,229,1988,256"/><area shape="rect" id="node108" href="smart__ptr_8hpp.html" title="mrpt/otherlibs/stlplus/smart_ptr.hpp" alt="" coords="2572,304,2799,331"/><area shape="rect" id="node125" href="bits_8h.html" title="mrpt/utils/bits.h" alt="" coords="3173,229,3284,256"/><area shape="rect" id="node37" href="mrpt__stdint_8h.html" title="mrpt/utils/mrpt_stdint.h" alt="" coords="1706,453,1861,480"/><area shape="rect" id="node42" href="mrpt__inttypes_8h.html" title="mrpt/utils/mrpt_inttypes.h" alt="" coords="1699,379,1869,405"/><area shape="rect" id="node45" href="math__frwds_8h.html" title="mrpt/math/math_frwds.h" alt="" coords="726,379,889,405"/><area shape="rect" id="node61" href="_dense.html" title="Eigen/Dense" alt="" coords="605,379,701,405"/><area shape="rect" id="node40" href="pstdint_8h.html" title="pstdint.h" alt="" coords="1748,528,1820,555"/><area shape="rect" id="node63" href="_core.html" title="Core" alt="" coords="328,453,379,480"/><area shape="rect" id="node110" href="containers__fixes_8hpp.html" title="containers_fixes.hpp" alt="" coords="2835,453,2977,480"/><area shape="rect" id="node112" href="exceptions_8hpp.html" title="exceptions.hpp" alt="" coords="2794,379,2904,405"/><area shape="rect" id="node119" href="atomic__incr_8h.html" title="mrpt/synch/atomic_incr.h" alt="" coords="2601,379,2769,405"/><area shape="rect" id="node123" href="smart__ptr_8tpp.html" title="smart_ptr.tpp" alt="" coords="2929,379,3028,405"/><area shape="rect" id="node127" href="_s_s_e__types_8h.html" title="mrpt/utils/SSE_types.h" alt="" coords="3171,304,3328,331"/></map>
</div>
</div><div class="textblock"><div class="dynheader">
This graph shows which files directly or indirectly include this file:</div>
<div class="dyncontent">
<div class="center"><img src="_c_object_8h__dep__incl.png" border="0" usemap="#_c_object_8hdep" alt=""/></div>
<map name="_c_object_8hdep" id="_c_object_8hdep">
<area shape="rect" id="node3" href="_c_serializable_8h.html" title="CSerializable.h" alt="" coords="2055,155,2165,181"/><area shape="rect" id="node9" href="base_2include_2mrpt_2utils_8h.html" title="utils.h" alt="" coords="830,528,887,555"/><area shape="rect" id="node154" href="_c_stream_8h.html" title="CStream.h" alt="" coords="2108,80,2193,107"/><area shape="rect" id="node5" href="stl__extensions_8h.html" title="stl_extensions.h" alt="" coords="1401,304,1517,331"/><area shape="rect" id="node7" href="_c_spline_interpolator1_d_8h.html" title="CSplineInterpolator1D.h" alt="" coords="1857,379,2017,405"/><area shape="rect" id="node11" href="_c_network_of_poses_8h.html" title="CNetworkOfPoses.h" alt="" coords="1690,379,1832,405"/><area shape="rect" id="node13" href="_h_m_t___s_l_a_m__common_8h.html" title="HMT_SLAM_common.h" alt="" coords="1503,379,1665,405"/><area shape="rect" id="node15" href="_c_h_m_h_map_node_8h.html" title="CHMHMapNode.h" alt="" coords="1417,528,1547,555"/><area shape="rect" id="node18" href="metaprogramming_8h.html" title="metaprogramming.h" alt="" coords="1143,229,1280,256"/><area shape="rect" id="node22" href="_c_array_8h.html" title="CArray.h" alt="" coords="1897,229,1971,256"/><area shape="rect" id="node24" href="_c_matrix_fixed_numeric_8h.html" title="CMatrixFixedNumeric.h" alt="" coords="2012,304,2171,331"/><area shape="rect" id="node26" href="_c_matrix_8h.html" title="CMatrix.h" alt="" coords="2653,379,2731,405"/><area shape="rect" id="node28" href="_c_image_8h.html" title="CImage.h" alt="" coords="3331,453,3409,480"/><area shape="rect" id="node31" href="_c_observation3_d_range_scan_8h.html" title="CObservation3DRangeScan.h" alt="" coords="2754,528,2952,555"/><area shape="rect" id="node33" href="_c_open_g_l_viewport_8h.html" title="COpenGLViewport.h" alt="" coords="4275,528,4417,555"/><area shape="rect" id="node35" href="_c_occupancy_grid_map2_d_8h.html" title="COccupancyGridMap2D.h" alt="" coords="3437,528,3611,555"/><area shape="rect" id="node37" href="_c_random_field_grid_map2_d_8h.html" title="CRandomFieldGridMap2D.h" alt="" coords="4025,528,4212,555"/><area shape="rect" id="node39" href="_t_camera_8h.html" title="TCamera.h" alt="" coords="2094,379,2180,405"/><area shape="rect" id="node43" href="_c_matrix_template_numeric_8h.html" title="CMatrixTemplateNumeric.h" alt="" coords="2199,229,2381,256"/><area shape="rect" id="node46" href="_c_matrix_d_8h.html" title="CMatrixD.h" alt="" coords="4087,304,4176,331"/><area shape="rect" id="node48" href="_c_pose3_d_p_d_f_8h.html" title="CPose3DPDF.h" alt="" coords="3365,379,3481,405"/><area shape="rect" id="node51" href="_c_pose_p_d_f_8h.html" title="CPosePDF.h" alt="" coords="2410,304,2509,331"/><area shape="rect" id="node53" href="_c_point_p_d_f_8h.html" title="CPointPDF.h" alt="" coords="2529,379,2628,405"/><area shape="rect" id="node55" href="_c_matrix_b_8h.html" title="CMatrixB.h" alt="" coords="2297,304,2385,331"/><area shape="rect" id="node63" href="_c_point2_d_8h.html" title="CPoint2D.h" alt="" coords="3695,229,3785,256"/><area shape="rect" id="node65" href="_c_point2_d_p_d_f_8h.html" title="CPoint2DPDF.h" alt="" coords="2691,304,2807,331"/><area shape="rect" id="node67" href="_c_metric_map_8h.html" title="CMetricMap.h" alt="" coords="3472,304,3576,331"/><area shape="rect" id="node69" href="_c_observation2_d_range_scan_8h.html" title="CObservation2DRangeScan.h" alt="" coords="2255,379,2453,405"/><area shape="rect" id="node71" href="_c_sensory_frame_8h.html" title="CSensoryFrame.h" alt="" coords="2023,453,2151,480"/><area shape="rect" id="node77" href="_c_polygon_8h.html" title="CPolygon.h" alt="" coords="1847,304,1937,331"/><area shape="rect" id="node82" href="_c_pose2_d_grid_template_8h.html" title="CPose2DGridTemplate.h" alt="" coords="2660,229,2828,256"/><area shape="rect" id="node86" href="_c_probability_particle_8h.html" title="CProbabilityParticle.h" alt="" coords="2853,229,3000,256"/><area shape="rect" id="node88" href="_c_poses2_d_sequence_8h.html" title="CPoses2DSequence.h" alt="" coords="3025,229,3179,256"/><area shape="rect" id="node90" href="_c_poses3_d_sequence_8h.html" title="CPoses3DSequence.h" alt="" coords="3204,229,3357,256"/><area shape="rect" id="node92" href="_c_message_8h.html" title="CMessage.h" alt="" coords="647,453,743,480"/><area shape="rect" id="node95" href="_c_string_list_8h.html" title="CStringList.h" alt="" coords="767,453,865,480"/><area shape="rect" id="node99" href="_c_memory_chunk_8h.html" title="CMemoryChunk.h" alt="" coords="940,379,1068,405"/><area shape="rect" id="node102" href="_c_m_h_properties_values_list_8h.html" title="CMHPropertiesValuesList.h" alt="" coords="991,453,1175,480"/><area shape="rect" id="node108" href="_c_simple_database_8h.html" title="CSimpleDatabase.h" alt="" coords="44,453,183,480"/><area shape="rect" id="node111" href="_c_properties_values_list_8h.html" title="CPropertiesValuesList.h" alt="" coords="257,453,420,480"/><area shape="rect" id="node115" href="_c_type_selector_8h.html" title="CTypeSelector.h" alt="" coords="1249,453,1369,480"/><area shape="rect" id="node119" href="_c_list_of_classes_8h.html" title="CListOfClasses.h" alt="" coords="445,453,571,480"/><area shape="rect" id="node122" href="_c_robot_simulator_8h.html" title="CRobotSimulator.h" alt="" coords="631,379,764,405"/><area shape="rect" id="node125" href="_c_detectable_object_8h.html" title="CDetectableObject.h" alt="" coords="2887,304,3031,331"/><area shape="rect" id="node127" href="_c_observation_8h.html" title="CObservation.h" alt="" coords="3810,229,3923,256"/><area shape="rect" id="node134" href="_c_observation_gas_sensors_8h.html" title="CObservationGasSensors.h" alt="" coords="3601,304,3785,331"/><area shape="rect" id="node136" href="_c_observation_wireless_power_8h.html" title="CObservationWirelessPower.h" alt="" coords="3810,304,4011,331"/><area shape="rect" id="node140" href="_c_base_g_u_i_window_8h.html" title="CBaseGUIWindow.h" alt="" coords="3383,229,3527,256"/><area shape="rect" id="node142" href="_c_renderizable_8h.html" title="CRenderizable.h" alt="" coords="3551,229,3669,256"/></map>
</div>
</div>
<p><a href="_c_object_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">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1utils_1_1_c_object_ptr.html">mrpt::utils::CObjectPtr</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">A smart pointer to a <a class="el" href="classmrpt_1_1utils_1_1_c_object.html" title="The virtual base class of all MRPT classes with a unified RTTI system.">CObject</a> object.  <a href="classmrpt_1_1utils_1_1_c_object_ptr.html#details">More...</a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structmrpt_1_1utils_1_1_t_runtime_class_id.html">mrpt::utils::TRuntimeClassId</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">A structure that holds runtime class type information.  <a href="structmrpt_1_1utils_1_1_t_runtime_class_id.html#details">More...</a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structmrpt_1_1utils_1_1_c_l_a_s_s_i_n_i_t.html">mrpt::utils::CLASSINIT</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Auxiliary structure used for CObject-based RTTI.  <a href="structmrpt_1_1utils_1_1_c_l_a_s_s_i_n_i_t.html#details">More...</a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1utils_1_1_c_object.html">mrpt::utils::CObject</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">The virtual base class of all MRPT classes with a unified RTTI system.  <a href="classmrpt_1_1utils_1_1_c_object.html#details">More...</a><br/></td></tr>
<tr><td colspan="2"><h2><a name="namespaces"></a>
Namespaces</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemrpt.html">mrpt</a></td></tr>
<tr><td class="mdescLeft">&#160;</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 &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemrpt_1_1utils.html">mrpt::utils</a></td></tr>
<tr><td class="mdescLeft">&#160;</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 class="memItemLeft" align="right" valign="top">namespace &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacestd.html">std</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight"><p>STL namespace. </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&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_c_object_8h.html#a3b29d8d0ead735ece9941e7a58619c7c">IMPLEMENTS_VIRTUAL_MRPT_OBJECT</a>(class_name, base_class_name, NameSpace)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">This must be inserted as implementation of some required members for virtual CSerializable classes:  <a href="#a3b29d8d0ead735ece9941e7a58619c7c"></a><br/></td></tr>
<tr><td colspan="2"><h2><a name="func-members"></a>
Functions</h2></td></tr>
<tr><td class="memTemplParams" colspan="2">template&lt;typename T , typename C , typename COUNTER &gt; </td></tr>
<tr><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacestd.html#aa9ad07b649a4150faee2aabbb67ce985">std::operator==</a> (const <a class="el" href="classstlplus_1_1smart__ptr__base.html">stlplus::smart_ptr_base</a>&lt; T, C, COUNTER &gt; &amp;a, const <a class="el" href="classstlplus_1_1smart__ptr__base.html">stlplus::smart_ptr_base</a>&lt; T, C, COUNTER &gt; &amp;b)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">This operator enables comparing two smart pointers with "==" to test whether they point to the same object.  <a href="#aa9ad07b649a4150faee2aabbb67ce985"></a><br/></td></tr>
<tr><td class="memTemplParams" colspan="2">template&lt;typename T , typename C , typename COUNTER &gt; </td></tr>
<tr><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacestd.html#ac5064aedf453a9c7606180988e266da3">std::operator!=</a> (const <a class="el" href="classstlplus_1_1smart__ptr__base.html">stlplus::smart_ptr_base</a>&lt; T, C, COUNTER &gt; &amp;a, const <a class="el" href="classstlplus_1_1smart__ptr__base.html">stlplus::smart_ptr_base</a>&lt; T, C, COUNTER &gt; &amp;b)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">This operator enables comparing two smart pointers with "!=" to test whether they don't point to the same object.  <a href="#ac5064aedf453a9c7606180988e266da3"></a><br/></td></tr>
<tr><td colspan="2"><h2><a name="member-group"></a>
RTTI classes and functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_c_object_8h.html#ae1e916f2fdc79ed0da6508acdb1848a0">CLASS_ID</a>(class_name)&#160;&#160;&#160;static_cast&lt;const <a class="el" href="structmrpt_1_1utils_1_1_t_runtime_class_id.html">mrpt::utils::TRuntimeClassId</a>*&gt;(&amp;class_name::class##class_name)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Access to runtime class ID for a defined class name.  <a href="#ae1e916f2fdc79ed0da6508acdb1848a0"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_c_object_8h.html#a50425f043b81147fed5f71d2e26ca337">CLASS_ID_NAMESPACE</a>(class_name, namespaceName)&#160;&#160;&#160;static_cast&lt;const <a class="el" href="structmrpt_1_1utils_1_1_t_runtime_class_id.html">mrpt::utils::TRuntimeClassId</a>*&gt;(&amp;namespaceName::class_name::class##class_name)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Access to runtime class ID for a defined class name.  <a href="#a50425f043b81147fed5f71d2e26ca337"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_c_object_8h.html#a08316b183b1a5337ac5b82533ac2dd19">CLASS_ID_TEMPLATE</a>(class_name, T)&#160;&#160;&#160;static_cast&lt;const <a class="el" href="structmrpt_1_1utils_1_1_t_runtime_class_id.html">mrpt::utils::TRuntimeClassId</a>*&gt;(&amp; template &lt;class T&gt; class_name&lt;T&gt;::class##class_name)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Access to runtime class ID for a defined template class name.  <a href="#a08316b183b1a5337ac5b82533ac2dd19"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_c_object_8h.html#a794ea7da2e1f7eb092d140ca5091e982">IS_CLASS</a>(ptrObj, class_name)&#160;&#160;&#160;((ptrObj)-&gt;GetRuntimeClass()==CLASS_ID(class_name))</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Evaluates to true if the given pointer to an object (derived from <a class="el" href="classmrpt_1_1utils_1_1_c_serializable.html" title="The virtual base class which provides a unified interface for all persistent objects in MRPT...">mrpt::utils::CSerializable</a>) is of the given class.  <a href="#a794ea7da2e1f7eb092d140ca5091e982"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_c_object_8h.html#a8047e96932be100635bab4f27731320f">IS_DERIVED</a>(ptrObj, class_name)&#160;&#160;&#160;((ptrObj)-&gt;GetRuntimeClass()-&gt;derivedFrom(CLASS_ID(class_name)))</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Evaluates to true if the given pointer to an object (derived from <a class="el" href="classmrpt_1_1utils_1_1_c_serializable.html" title="The virtual base class which provides a unified interface for all persistent objects in MRPT...">mrpt::utils::CSerializable</a>) is an instance of the given class or any of its derived classes.  <a href="#a8047e96932be100635bab4f27731320f"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_c_object_8h.html#a89a1b701b9898005d954af26d92766fe">DEFINE_MRPT_OBJECT</a>(class_name)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">This declaration must be inserted in all CObject classes definition, within the class declaration.  <a href="#a89a1b701b9898005d954af26d92766fe"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_c_object_8h.html#a0e854723702802213de8c20bf5697bff">DEFINE_MRPT_OBJECT_PRE_CUSTOM_BASE_LINKAGE</a>(class_name, base_name, _LINKAGE_)&#160;&#160;&#160;DEFINE_MRPT_OBJECT_PRE_CUSTOM_BASE_LINKAGE2(class_name, base_name, _LINKAGE_ class_name)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_c_object_8h.html#a1933e899c6d001e2a59dd430115a10ac">DEFINE_MRPT_OBJECT_PRE_CUSTOM_BASE_NO_LINKAGE</a>(class_name, base_name)&#160;&#160;&#160;DEFINE_MRPT_OBJECT_PRE_CUSTOM_BASE_LINKAGE2(class_name, base_name, class_name)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_c_object_8h.html#afd9e3f83bf8b2ef843831523123740f1">DEFINE_MRPT_OBJECT_PRE_CUSTOM_BASE_LINKAGE2</a>(class_name, base_name, class_name_LINKAGE_)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">This declaration must be inserted in all CObject classes definition, before the class declaration.  <a href="#afd9e3f83bf8b2ef843831523123740f1"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_c_object_8h.html#ada0eb782a89c90e1ae6dc5def698af50">DEFINE_MRPT_OBJECT_PRE_CUSTOM_LINKAGE</a>(class_name, _LINKAGE_)&#160;&#160;&#160;DEFINE_MRPT_OBJECT_PRE_CUSTOM_LINKAGE2(class_name, _LINKAGE_ class_name)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_c_object_8h.html#abe63fbee64570d9d4f9b34c46ac9b719">DEFINE_MRPT_OBJECT_PRE_NO_LINKAGE</a>(class_name)&#160;&#160;&#160;DEFINE_MRPT_OBJECT_PRE_CUSTOM_LINKAGE2(class_name, class_name)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_c_object_8h.html#abc5e24242cdf25470fbdd69a3e6a4a99">DEFINE_MRPT_OBJECT_PRE_CUSTOM_LINKAGE2</a>(class_name, class_name_LINKAGE_)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">This declaration must be inserted in all CObject classes definition, before the class declaration.  <a href="#abc5e24242cdf25470fbdd69a3e6a4a99"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_c_object_8h.html#a9bb6492c8bbf8569f3752ba06e689e91">DEFINE_MRPT_OBJECT_PRE_CUSTOM_BASE</a>(class_name, base_name)&#160;&#160;&#160;DEFINE_MRPT_OBJECT_PRE_CUSTOM_BASE_LINKAGE(class_name, base_name, BASE_IMPEXP )</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">This declaration must be inserted in all CObject classes definition, before the class declaration.  <a href="#a9bb6492c8bbf8569f3752ba06e689e91"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_c_object_8h.html#aa64e4575978b49af0f2d47b1fdf5ad75">DEFINE_MRPT_OBJECT_PRE</a>(class_name)&#160;&#160;&#160;DEFINE_MRPT_OBJECT_PRE_CUSTOM_LINKAGE(class_name, BASE_IMPEXP )</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">This declaration must be inserted in all CObject classes definition, before the class declaration.  <a href="#aa64e4575978b49af0f2d47b1fdf5ad75"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_c_object_8h.html#a821c31b2df70d6b3c0f8b0d49374a009">IMPLEMENTS_MRPT_OBJECT</a>(class_name, base, NameSpace)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">This must be inserted in all CObject classes implementation files.  <a href="#a821c31b2df70d6b3c0f8b0d49374a009"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_c_object_8h.html#a80d5b68d3ba12ec5f640ce53651b121b">DEFINE_VIRTUAL_MRPT_OBJECT</a>(class_name)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">This declaration must be inserted in virtual CSerializable classes definition:  <a href="#a80d5b68d3ba12ec5f640ce53651b121b"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">typedef safe_ptr&lt; TRuntimeClassId &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__mrpt__base__grp.html#ga9a8b385c06e33bb7ab5a8fc51ad10fc8">mrpt::utils::TRuntimeClassIdPtr</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">A wrapper class for a "TRuntimeClassId *", well-defined with respect to copy operators and constructors.  <a href="group__mrpt__base__grp.html#ga9a8b385c06e33bb7ab5a8fc51ad10fc8"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">class BASE_IMPEXP&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__mrpt__base__grp.html#gab4b900b831f6e7bbc7557cd35cd1c46b">mrpt::utils::CObject</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void BASE_IMPEXP&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__mrpt__base__grp.html#ga5af77a9809680e1559cde8167361518e">mrpt::utils::registerClass</a> (const <a class="el" href="structmrpt_1_1utils_1_1_t_runtime_class_id.html">mrpt::utils::TRuntimeClassId</a> *pNewClass)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Register a class into the MRPT internal list of "CSerializable" descendents.  <a href="group__mrpt__base__grp.html#ga5af77a9809680e1559cde8167361518e"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void BASE_IMPEXP&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__mrpt__base__grp.html#ga3d32f87193923526b0dd86ed968fb854">mrpt::utils::registerClassCustomName</a> (const char *customName, const TRuntimeClassId *pNewClass)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Mostly for internal use within mrpt sources, to handle exceptional cases with multiple serialization names for backward compatibility (CMultiMetricMaps, <a class="el" href="classmrpt_1_1utils_1_1_c_image.html" title="A class for storing images as grayscale or RGB bitmaps.">CImage</a>,...)  <a href="group__mrpt__base__grp.html#ga3d32f87193923526b0dd86ed968fb854"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classstd_1_1vector.html">std::vector</a>&lt; const <br class="typebreak"/>
<a class="el" href="structmrpt_1_1utils_1_1_t_runtime_class_id.html">mrpt::utils::TRuntimeClassId</a> * &gt;<br class="typebreak"/>
 BASE_IMPEXP&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__mrpt__base__grp.html#ga69eeb95bbeaa786937d070c300169a32">mrpt::utils::getAllRegisteredClasses</a> ()</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns a list with all the classes registered in the system through <a class="el" href="group__mrpt__base__grp.html#ga5af77a9809680e1559cde8167361518e" title="Register a class into the MRPT internal list of &quot;CSerializable&quot; descendents.">mrpt::utils::registerClass</a>.  <a href="group__mrpt__base__grp.html#ga69eeb95bbeaa786937d070c300169a32"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">const TRuntimeClassId BASE_IMPEXP *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__mrpt__base__grp.html#ga6e361b1e00875a96e3a74936b65ddbec">mrpt::utils::findRegisteredClass</a> (const <a class="el" href="classstd_1_1string.html">std::string</a> &amp;className)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Return info about a given class by its name, or NULL if the class is not registered.  <a href="group__mrpt__base__grp.html#ga6e361b1e00875a96e3a74936b65ddbec"></a><br/></td></tr>
</table>
<hr/><h2>Define Documentation</h2>
<a class="anchor" id="ae1e916f2fdc79ed0da6508acdb1848a0"></a><!-- doxytag: member="CObject.h::CLASS_ID" ref="ae1e916f2fdc79ed0da6508acdb1848a0" args="(class_name)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define CLASS_ID</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">class_name</td><td>)</td>
          <td>&#160;&#160;&#160;static_cast&lt;const <a class="el" href="structmrpt_1_1utils_1_1_t_runtime_class_id.html">mrpt::utils::TRuntimeClassId</a>*&gt;(&amp;class_name::class##class_name)</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Access to runtime class ID for a defined class name. </p>

<p>Definition at line <a class="el" href="_c_object_8h_source.html#l00103">103</a> of file <a class="el" href="_c_object_8h_source.html">CObject.h</a>.</p>

<p>Referenced by <a class="el" href="_c_object_8h_source.html#l00142">mrpt::utils::CObject::GetRuntimeClass()</a>, <a class="el" href="_c_rawlog_8h_source.html#l00226">mrpt::slam::CRawlog::iterator::getType()</a>, and <a class="el" href="_c_rawlog_8h_source.html#l00260">mrpt::slam::CRawlog::const_iterator::getType()</a>.</p>

</div>
</div>
<a class="anchor" id="a50425f043b81147fed5f71d2e26ca337"></a><!-- doxytag: member="CObject.h::CLASS_ID_NAMESPACE" ref="a50425f043b81147fed5f71d2e26ca337" args="(class_name, namespaceName)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define CLASS_ID_NAMESPACE</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">class_name, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">namespaceName&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td>&#160;&#160;&#160;static_cast&lt;const <a class="el" href="structmrpt_1_1utils_1_1_t_runtime_class_id.html">mrpt::utils::TRuntimeClassId</a>*&gt;(&amp;namespaceName::class_name::class##class_name)</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Access to runtime class ID for a defined class name. </p>

<p>Definition at line <a class="el" href="_c_object_8h_source.html#l00107">107</a> of file <a class="el" href="_c_object_8h_source.html">CObject.h</a>.</p>

<p>Referenced by <a class="el" href="_c_open_g_l_viewport_8h_source.html#l00237">mrpt::opengl::COpenGLViewport::getByClass()</a>, and <a class="el" href="_c_set_of_objects_8h_source.html#l00120">mrpt::opengl::CSetOfObjects::getByClass()</a>.</p>

</div>
</div>
<a class="anchor" id="a08316b183b1a5337ac5b82533ac2dd19"></a><!-- doxytag: member="CObject.h::CLASS_ID_TEMPLATE" ref="a08316b183b1a5337ac5b82533ac2dd19" args="(class_name, T)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define CLASS_ID_TEMPLATE</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">class_name, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">T&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td>&#160;&#160;&#160;static_cast&lt;const <a class="el" href="structmrpt_1_1utils_1_1_t_runtime_class_id.html">mrpt::utils::TRuntimeClassId</a>*&gt;(&amp; template &lt;class T&gt; class_name&lt;T&gt;::class##class_name)</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Access to runtime class ID for a defined template class name. </p>

<p>Definition at line <a class="el" href="_c_object_8h_source.html#l00111">111</a> of file <a class="el" href="_c_object_8h_source.html">CObject.h</a>.</p>

</div>
</div>
<a class="anchor" id="a89a1b701b9898005d954af26d92766fe"></a><!-- doxytag: member="CObject.h::DEFINE_MRPT_OBJECT" ref="a89a1b701b9898005d954af26d92766fe" args="(class_name)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define DEFINE_MRPT_OBJECT</td>
          <td>(</td>
          <td class="paramtype">&#160;</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"><span class="comment">/*! @name RTTI stuff  */</span> \<span class="comment"></span>
<span class="comment">                        /*! @{  */</span> \
                protected: \
                        static  <span class="keyword">const</span> mrpt::utils::TRuntimeClassId* _GetBaseClass(); \
                        static mrpt::utils::CLASSINIT _init_##class_name;\
                public: \<span class="comment"></span>
<span class="comment">                        /*! A typedef for the associated smart pointer */</span> \
                        typedef class_name##Ptr SmartPtr; \
                        static  mrpt::utils::TRuntimeClassId  <span class="keyword">class</span>##class_name; \
                        static  <span class="keyword">const</span> mrpt::utils::TRuntimeClassId *classinfo; \
                        virtual <span class="keyword">const</span> mrpt::utils::TRuntimeClassId* GetRuntimeClass() <span class="keyword">const</span>; \
                        static  mrpt<a class="code" href="group__mrpt__base__grp.html#gab4b900b831f6e7bbc7557cd35cd1c46b">::utils::CObject</a>* CreateObject(); \
                        static class_name##Ptr Create(); \
                        virtual mrpt<a class="code" href="group__mrpt__base__grp.html#gab4b900b831f6e7bbc7557cd35cd1c46b">::utils::CObject</a> *duplicate() <span class="keyword">const</span>; \<span class="comment"></span>
<span class="comment">                        /*! @} */</span> \
                public: \
                        EIGEN_MAKE_ALIGNED_OPERATOR_NEW \
</pre></div>
<p>This declaration must be inserted in all CObject classes definition, within the class declaration. </p>

<p>Definition at line <a class="el" href="_c_object_8h_source.html#l00162">162</a> of file <a class="el" href="_c_object_8h_source.html">CObject.h</a>.</p>

</div>
</div>
<a class="anchor" id="aa64e4575978b49af0f2d47b1fdf5ad75"></a><!-- doxytag: member="CObject.h::DEFINE_MRPT_OBJECT_PRE" ref="aa64e4575978b49af0f2d47b1fdf5ad75" args="(class_name)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define DEFINE_MRPT_OBJECT_PRE</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">class_name</td><td>)</td>
          <td>&#160;&#160;&#160;DEFINE_MRPT_OBJECT_PRE_CUSTOM_LINKAGE(class_name, BASE_IMPEXP )</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>This declaration must be inserted in all CObject classes definition, before the class declaration. </p>

<p>Definition at line <a class="el" href="_c_object_8h_source.html#l00250">250</a> of file <a class="el" href="_c_object_8h_source.html">CObject.h</a>.</p>

</div>
</div>
<a class="anchor" id="a9bb6492c8bbf8569f3752ba06e689e91"></a><!-- doxytag: member="CObject.h::DEFINE_MRPT_OBJECT_PRE_CUSTOM_BASE" ref="a9bb6492c8bbf8569f3752ba06e689e91" args="(class_name, base_name)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define DEFINE_MRPT_OBJECT_PRE_CUSTOM_BASE</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">class_name, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">base_name&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td>&#160;&#160;&#160;DEFINE_MRPT_OBJECT_PRE_CUSTOM_BASE_LINKAGE(class_name, base_name, BASE_IMPEXP )</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>This declaration must be inserted in all CObject classes definition, before the class declaration. </p>

<p>Definition at line <a class="el" href="_c_object_8h_source.html#l00245">245</a> of file <a class="el" href="_c_object_8h_source.html">CObject.h</a>.</p>

</div>
</div>
<a class="anchor" id="a0e854723702802213de8c20bf5697bff"></a><!-- doxytag: member="CObject.h::DEFINE_MRPT_OBJECT_PRE_CUSTOM_BASE_LINKAGE" ref="a0e854723702802213de8c20bf5697bff" args="(class_name, base_name, _LINKAGE_)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define DEFINE_MRPT_OBJECT_PRE_CUSTOM_BASE_LINKAGE</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">class_name, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">base_name, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">_LINKAGE_&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td>&#160;&#160;&#160;DEFINE_MRPT_OBJECT_PRE_CUSTOM_BASE_LINKAGE2(class_name, base_name, _LINKAGE_ class_name)</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Definition at line <a class="el" href="_c_object_8h_source.html#l00183">183</a> of file <a class="el" href="_c_object_8h_source.html">CObject.h</a>.</p>

</div>
</div>
<a class="anchor" id="afd9e3f83bf8b2ef843831523123740f1"></a><!-- doxytag: member="CObject.h::DEFINE_MRPT_OBJECT_PRE_CUSTOM_BASE_LINKAGE2" ref="afd9e3f83bf8b2ef843831523123740f1" args="(class_name, base_name, class_name_LINKAGE_)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define DEFINE_MRPT_OBJECT_PRE_CUSTOM_BASE_LINKAGE2</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">class_name, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">base_name, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">class_name_LINKAGE_&#160;</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"><span class="keyword">class </span>class_name_LINKAGE_; \<span class="comment"></span>
<span class="comment">                        /*! The smart pointer type for the associated class */</span> \
                        struct class_name_LINKAGE_##Ptr : <span class="keyword">public</span> base_name##Ptr \
                        { \
                                typedef class_name <a class="code" href="eigen__plugins_8h.html#afd07186978da46f9908364e389f8a403" title="Type of the elements.">value_type</a>; \
                                inline class_name##Ptr() : base_name##Ptr(static_cast&lt;base_name*&gt;(NULL)) { } \
                                inline <span class="keyword">explicit</span> class_name##Ptr(class_name* p) : base_name##Ptr( reinterpret_cast&lt;base_name*&gt;(p) ) { } \
                                inline <span class="keyword">explicit</span> class_name##Ptr(<span class="keyword">const</span> base_name##Ptr &amp; p) : base_name##Ptr(p) { <a class="code" href="mrpt__macros_8h.html#ad30ea0382c594c0e2efe88212e9352b0">ASSERTMSG_</a>( p-&gt;GetRuntimeClass()-&gt;derivedFrom(#class_name),<a class="code" href="namespacemrpt.html#a3a27af794b658df5491e2b7678f8ccb8" title="A std::string version of C sprintf.">::mrpt::format</a>(<span class="stringliteral">&quot;Wrong typecasting of smart pointers: %s -&gt; %s&quot;</span>,p-&gt;GetRuntimeClass()-&gt;className, #class_name) )  } \
                                inline <span class="keyword">explicit</span> class_name##Ptr(<span class="keyword">const</span> <a class="code" href="classmrpt_1_1utils_1_1_c_object_ptr.html" title="A smart pointer to a CObject object.">mrpt::utils::CObjectPtr</a> &amp; p) : base_name##Ptr(p) { <a class="code" href="mrpt__macros_8h.html#ad30ea0382c594c0e2efe88212e9352b0">ASSERTMSG_</a>( p-&gt;GetRuntimeClass()-&gt;derivedFrom(#class_name),<a class="code" href="namespacemrpt.html#a3a27af794b658df5491e2b7678f8ccb8" title="A std::string version of C sprintf.">::mrpt::format</a>(<span class="stringliteral">&quot;Wrong typecasting of smart pointers: %s -&gt; %s&quot;</span>,p-&gt;GetRuntimeClass()-&gt;className, #class_name) )  } \
                                inline <span class="keywordtype">void</span> setFromPointerDoNotFreeAtDtor(<span class="keyword">const</span> class_name* p) { this-&gt;<span class="keyword">set</span>(<span class="keyword">const_cast&lt;</span><a class="code" href="classmrpt_1_1utils_1_1_c_object.html" title="The virtual base class of all MRPT classes with a unified RTTI system.">mrpt::utils::CObject</a>*<span class="keyword">&gt;</span>(<span class="keyword">reinterpret_cast&lt;</span><span class="keyword">const </span><a class="code" href="classmrpt_1_1utils_1_1_c_object.html" title="The virtual base class of all MRPT classes with a unified RTTI system.">mrpt::utils::CObject</a>*<span class="keyword">&gt;</span>(p))); m_holder-&gt;increment(); } \<span class="comment"></span>
<span class="comment">                                /*! Return the internal plain C++ pointer */</span> \
                                inline class_name * pointer() { <span class="keywordflow">return</span> <span class="keyword">reinterpret_cast&lt;</span>class_name*<span class="keyword">&gt;</span>(base_name##Ptr::pointer()); } \<span class="comment"></span>
<span class="comment">                                /*! Return the internal plain C++ pointer (const) */</span> \
                                inline <span class="keyword">const</span> class_name * pointer()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <span class="keyword">reinterpret_cast&lt;</span><span class="keyword">const </span>class_name*<span class="keyword">&gt;</span>(base_name##Ptr::pointer()); } \
                                inline class_name* operator -&gt;(<span class="keywordtype">void</span>) { <span class="keywordflow">return</span> <span class="keyword">reinterpret_cast&lt;</span>class_name*<span class="keyword">&gt;</span>( base_name##Ptr::operator -&gt;() ); } \
                                inline <span class="keyword">const</span> class_name* operator -&gt;(<span class="keywordtype">void</span>)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <span class="keyword">reinterpret_cast&lt;</span><span class="keyword">const </span>class_name*<span class="keyword">&gt;</span>( base_name##Ptr::operator -&gt;() ); } \
                                inline class_name&amp; <a class="code" href="group__container__ops__grp.html#ga6f2d8625a637a5a65585065331b5b0c5" title="a*b (element-wise multiplication)">operator *</a>(<span class="keywordtype">void</span>) { <span class="keywordflow">return</span> *<span class="keyword">reinterpret_cast&lt;</span>class_name*<span class="keyword">&gt;</span>( base_name##Ptr::operator -&gt;() ); } \
                                inline <span class="keyword">const</span> class_name&amp; <a class="code" href="group__container__ops__grp.html#ga6f2d8625a637a5a65585065331b5b0c5" title="a*b (element-wise multiplication)">operator *</a>(<span class="keywordtype">void</span>)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> *<span class="keyword">reinterpret_cast&lt;</span><span class="keyword">const </span>class_name*<span class="keyword">&gt;</span>( base_name##Ptr::operator -&gt;() ); } \
                        };
</pre></div>
<p>This declaration must be inserted in all CObject classes definition, before the class declaration. </p>

<p>Definition at line <a class="el" href="_c_object_8h_source.html#l00192">192</a> of file <a class="el" href="_c_object_8h_source.html">CObject.h</a>.</p>

</div>
</div>
<a class="anchor" id="a1933e899c6d001e2a59dd430115a10ac"></a><!-- doxytag: member="CObject.h::DEFINE_MRPT_OBJECT_PRE_CUSTOM_BASE_NO_LINKAGE" ref="a1933e899c6d001e2a59dd430115a10ac" args="(class_name, base_name)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define DEFINE_MRPT_OBJECT_PRE_CUSTOM_BASE_NO_LINKAGE</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">class_name, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">base_name&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td>&#160;&#160;&#160;DEFINE_MRPT_OBJECT_PRE_CUSTOM_BASE_LINKAGE2(class_name, base_name, class_name)</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Definition at line <a class="el" href="_c_object_8h_source.html#l00187">187</a> of file <a class="el" href="_c_object_8h_source.html">CObject.h</a>.</p>

</div>
</div>
<a class="anchor" id="ada0eb782a89c90e1ae6dc5def698af50"></a><!-- doxytag: member="CObject.h::DEFINE_MRPT_OBJECT_PRE_CUSTOM_LINKAGE" ref="ada0eb782a89c90e1ae6dc5def698af50" args="(class_name, _LINKAGE_)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define DEFINE_MRPT_OBJECT_PRE_CUSTOM_LINKAGE</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">class_name, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">_LINKAGE_&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td>&#160;&#160;&#160;DEFINE_MRPT_OBJECT_PRE_CUSTOM_LINKAGE2(class_name, _LINKAGE_ class_name)</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Definition at line <a class="el" href="_c_object_8h_source.html#l00215">215</a> of file <a class="el" href="_c_object_8h_source.html">CObject.h</a>.</p>

</div>
</div>
<a class="anchor" id="abc5e24242cdf25470fbdd69a3e6a4a99"></a><!-- doxytag: member="CObject.h::DEFINE_MRPT_OBJECT_PRE_CUSTOM_LINKAGE2" ref="abc5e24242cdf25470fbdd69a3e6a4a99" args="(class_name, class_name_LINKAGE_)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define DEFINE_MRPT_OBJECT_PRE_CUSTOM_LINKAGE2</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">class_name, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">class_name_LINKAGE_&#160;</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"><span class="keyword">class </span>class_name_LINKAGE_; \<span class="comment"></span>
<span class="comment">                        /*! The smart pointer type for the associated class */</span> \
                        struct class_name_LINKAGE_##Ptr : <span class="keyword">public</span> mrpt::utils::CObjectPtr \
                        { \
                                inline class_name##Ptr() : mrpt::utils::CObjectPtr(static_cast&lt;mrpt::utils::<a class="code" href="group__mrpt__base__grp.html#gab4b900b831f6e7bbc7557cd35cd1c46b">CObject</a>*&gt;(NULL)) { } \
                                inline <span class="keyword">explicit</span> class_name##Ptr(class_name* p) : mrpt::utils::CObjectPtr( reinterpret_cast&lt;mrpt::utils::<a class="code" href="group__mrpt__base__grp.html#gab4b900b831f6e7bbc7557cd35cd1c46b">CObject</a>*&gt;(p) ) { } \
                                inline <span class="keyword">explicit</span> class_name##Ptr(<span class="keyword">const</span> <a class="code" href="classmrpt_1_1utils_1_1_c_object_ptr.html" title="A smart pointer to a CObject object.">mrpt::utils::CObjectPtr</a> &amp; p) : mrpt::utils::CObjectPtr(p) { <a class="code" href="mrpt__macros_8h.html#ad30ea0382c594c0e2efe88212e9352b0">ASSERTMSG_</a>( p-&gt;GetRuntimeClass()-&gt;derivedFrom(#class_name),<a class="code" href="namespacemrpt.html#a3a27af794b658df5491e2b7678f8ccb8" title="A std::string version of C sprintf.">::mrpt::format</a>(<span class="stringliteral">&quot;Wrong typecasting of smart pointers: %s -&gt; %s&quot;</span>,p-&gt;GetRuntimeClass()-&gt;className, #class_name) )  } \
                                inline <span class="keywordtype">void</span> setFromPointerDoNotFreeAtDtor(<span class="keyword">const</span> class_name* p) { this-&gt;<span class="keyword">set</span>(<span class="keyword">const_cast&lt;</span><a class="code" href="classmrpt_1_1utils_1_1_c_object.html" title="The virtual base class of all MRPT classes with a unified RTTI system.">mrpt::utils::CObject</a>*<span class="keyword">&gt;</span>(<span class="keyword">reinterpret_cast&lt;</span><span class="keyword">const </span><a class="code" href="classmrpt_1_1utils_1_1_c_object.html" title="The virtual base class of all MRPT classes with a unified RTTI system.">mrpt::utils::CObject</a>*<span class="keyword">&gt;</span>(p))); m_holder-&gt;increment(); } \<span class="comment"></span>
<span class="comment">                                /*! Return the internal plain C++ pointer */</span> \
                                inline class_name * pointer() { <span class="keywordflow">return</span> <span class="keyword">reinterpret_cast&lt;</span>class_name*<span class="keyword">&gt;</span>(mrpt::utils::CObjectPtr::pointer()); } \<span class="comment"></span>
<span class="comment">                                /*! Return the internal plain C++ pointer (const) */</span> \
                                inline <span class="keyword">const</span> class_name * pointer()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <span class="keyword">reinterpret_cast&lt;</span><span class="keyword">const </span>class_name*<span class="keyword">&gt;</span>(mrpt::utils::CObjectPtr::pointer()); } \
                                inline class_name* operator -&gt;(<span class="keywordtype">void</span>) { <span class="keywordflow">return</span> <span class="keyword">reinterpret_cast&lt;</span>class_name*<span class="keyword">&gt;</span>( mrpt::utils::CObjectPtr::operator -&gt;() ); } \
                                inline <span class="keyword">const</span> class_name* operator -&gt;(<span class="keywordtype">void</span>)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <span class="keyword">reinterpret_cast&lt;</span><span class="keyword">const </span>class_name*<span class="keyword">&gt;</span>( mrpt::utils::CObjectPtr::operator -&gt;() ); } \
                                inline class_name&amp; <a class="code" href="group__container__ops__grp.html#ga6f2d8625a637a5a65585065331b5b0c5" title="a*b (element-wise multiplication)">operator *</a>(<span class="keywordtype">void</span>) { <span class="keywordflow">return</span> *<span class="keyword">reinterpret_cast&lt;</span>class_name*<span class="keyword">&gt;</span>( mrpt::utils::CObjectPtr::operator -&gt;() ); } \
                                inline <span class="keyword">const</span> class_name&amp; <a class="code" href="group__container__ops__grp.html#ga6f2d8625a637a5a65585065331b5b0c5" title="a*b (element-wise multiplication)">operator *</a>(<span class="keywordtype">void</span>)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> *<span class="keyword">reinterpret_cast&lt;</span><span class="keyword">const </span>class_name*<span class="keyword">&gt;</span>( mrpt::utils::CObjectPtr::operator -&gt;() ); } \
                        };
</pre></div>
<p>This declaration must be inserted in all CObject classes definition, before the class declaration. </p>

<p>Definition at line <a class="el" href="_c_object_8h_source.html#l00224">224</a> of file <a class="el" href="_c_object_8h_source.html">CObject.h</a>.</p>

</div>
</div>
<a class="anchor" id="abe63fbee64570d9d4f9b34c46ac9b719"></a><!-- doxytag: member="CObject.h::DEFINE_MRPT_OBJECT_PRE_NO_LINKAGE" ref="abe63fbee64570d9d4f9b34c46ac9b719" args="(class_name)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define DEFINE_MRPT_OBJECT_PRE_NO_LINKAGE</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">class_name</td><td>)</td>
          <td>&#160;&#160;&#160;DEFINE_MRPT_OBJECT_PRE_CUSTOM_LINKAGE2(class_name, class_name)</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Definition at line <a class="el" href="_c_object_8h_source.html#l00219">219</a> of file <a class="el" href="_c_object_8h_source.html">CObject.h</a>.</p>

</div>
</div>
<a class="anchor" id="a80d5b68d3ba12ec5f640ce53651b121b"></a><!-- doxytag: member="CObject.h::DEFINE_VIRTUAL_MRPT_OBJECT" ref="a80d5b68d3ba12ec5f640ce53651b121b" args="(class_name)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define DEFINE_VIRTUAL_MRPT_OBJECT</td>
          <td>(</td>
          <td class="paramtype">&#160;</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"><span class="comment">/*! @name RTTI stuff  */</span> \<span class="comment"></span>
<span class="comment">                /*! @{  */</span> \
                protected: \
                        static <span class="keyword">const</span> mrpt::utils::TRuntimeClassId* _GetBaseClass(); \
                public: \
                        static <span class="keyword">const</span> mrpt::utils::TRuntimeClassId <span class="keyword">class</span>##class_name; \
                        virtual <span class="keyword">const</span> mrpt::utils::TRuntimeClassId* GetRuntimeClass() <span class="keyword">const</span>; \
                        friend <span class="keyword">class </span><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>; \
</pre></div>
<p>This declaration must be inserted in virtual CSerializable classes definition: </p>

<p>Definition at line <a class="el" href="_c_object_8h_source.html#l00274">274</a> of file <a class="el" href="_c_object_8h_source.html">CObject.h</a>.</p>

</div>
</div>
<a class="anchor" id="a821c31b2df70d6b3c0f8b0d49374a009"></a><!-- doxytag: member="CObject.h::IMPLEMENTS_MRPT_OBJECT" ref="a821c31b2df70d6b3c0f8b0d49374a009" args="(class_name, base, NameSpace)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define IMPLEMENTS_MRPT_OBJECT</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">class_name, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">base, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">NameSpace&#160;</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">mrpt<a class="code" href="group__mrpt__base__grp.html#gab4b900b831f6e7bbc7557cd35cd1c46b">::utils::CObject</a>* NameSpace::class_name::CreateObject() \
                                { <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span><a class="code" href="classmrpt_1_1utils_1_1_c_object.html" title="The virtual base class of all MRPT classes with a unified RTTI system.">mrpt::utils::CObject</a>*<span class="keyword">&gt;</span>( <span class="keyword">new</span> NameSpace::class_name ); } \
                        NameSpace::class_name##Ptr NameSpace::class_name::Create() \
                                { <span class="keywordflow">return</span> NameSpace::class_name##Ptr( <span class="keyword">new</span> NameSpace::class_name ); } \
                        const mrpt::utils::TRuntimeClassId* NameSpace::class_name::_GetBaseClass() \
                                { <span class="keywordflow">return</span> <a class="code" href="_c_object_8h.html#ae1e916f2fdc79ed0da6508acdb1848a0" title="Access to runtime class ID for a defined class name.">CLASS_ID</a>(base); } \
                        mrpt::utils::TRuntimeClassId NameSpace::class_name::class##class_name = { \
<span class="preprocessor">                                #class_name, NameSpace::class_name::CreateObject, &amp;class_name::_GetBaseClass }; \</span>
<span class="preprocessor">                        const mrpt::utils::TRuntimeClassId *NameSpace::class_name::classinfo = &amp; NameSpace::class_name::class##class_name; \</span>
<span class="preprocessor">                        const mrpt::utils::TRuntimeClassId* NameSpace::class_name::GetRuntimeClass() const \</span>
<span class="preprocessor">                        { return CLASS_ID_NAMESPACE(class_name,NameSpace); } \</span>
<span class="preprocessor">                        mrpt::utils::CLASSINIT NameSpace::class_name::_init_##class_name(CLASS_ID(base)); \</span>
<span class="preprocessor">                        mrpt::utils::CObject * NameSpace::class_name::duplicate() const \</span>
<span class="preprocessor">                        { return static_cast&lt;mrpt::utils::CObject*&gt;( new NameSpace::class_name(*this) ); }</span>
</pre></div>
<p>This must be inserted in all CObject classes implementation files. </p>

<p>Definition at line <a class="el" href="_c_object_8h_source.html#l00255">255</a> of file <a class="el" href="_c_object_8h_source.html">CObject.h</a>.</p>

</div>
</div>
<a class="anchor" id="a3b29d8d0ead735ece9941e7a58619c7c"></a><!-- doxytag: member="CObject.h::IMPLEMENTS_VIRTUAL_MRPT_OBJECT" ref="a3b29d8d0ead735ece9941e7a58619c7c" args="(class_name, base_class_name, NameSpace)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define IMPLEMENTS_VIRTUAL_MRPT_OBJECT</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">class_name, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">base_class_name, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">NameSpace&#160;</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"><span class="keyword">const</span> mrpt::utils::TRuntimeClassId* class_name::_GetBaseClass() \
                                { <span class="keywordflow">return</span> <a class="code" href="_c_object_8h.html#ae1e916f2fdc79ed0da6508acdb1848a0" title="Access to runtime class ID for a defined class name.">CLASS_ID</a>(base_class_name); } \
                        const mrpt::utils::TRuntimeClassId class_name::class##class_name = { \
<span class="preprocessor">                                #class_name, NULL, &amp;class_name::_GetBaseClass }; \</span>
<span class="preprocessor">                        const mrpt::utils::TRuntimeClassId* class_name::GetRuntimeClass() const \</span>
<span class="preprocessor">                                { return CLASS_ID(class_name); }</span>
</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_object_8h_source.html#l00289">289</a> of file <a class="el" href="_c_object_8h_source.html">CObject.h</a>.</p>

</div>
</div>
<a class="anchor" id="a794ea7da2e1f7eb092d140ca5091e982"></a><!-- doxytag: member="CObject.h::IS_CLASS" ref="a794ea7da2e1f7eb092d140ca5091e982" args="(ptrObj, class_name)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define IS_CLASS</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">ptrObj, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">class_name&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td>&#160;&#160;&#160;((ptrObj)-&gt;GetRuntimeClass()==CLASS_ID(class_name))</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Evaluates to true if the given pointer to an object (derived from <a class="el" href="classmrpt_1_1utils_1_1_c_serializable.html" title="The virtual base class which provides a unified interface for all persistent objects in MRPT...">mrpt::utils::CSerializable</a>) is of the given class. </p>

<p>Definition at line <a class="el" href="_c_object_8h_source.html#l00114">114</a> of file <a class="el" href="_c_object_8h_source.html">CObject.h</a>.</p>

<p>Referenced by <a class="el" href="_c_open_g_l_scene_8h_source.html#l00224">mrpt::opengl::COpenGLScene::internal_visitAllObjects()</a>.</p>

</div>
</div>
<a class="anchor" id="a8047e96932be100635bab4f27731320f"></a><!-- doxytag: member="CObject.h::IS_DERIVED" ref="a8047e96932be100635bab4f27731320f" args="(ptrObj, class_name)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define IS_DERIVED</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">ptrObj, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">class_name&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td>&#160;&#160;&#160;((ptrObj)-&gt;GetRuntimeClass()-&gt;derivedFrom(CLASS_ID(class_name)))</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Evaluates to true if the given pointer to an object (derived from <a class="el" href="classmrpt_1_1utils_1_1_c_serializable.html" title="The virtual base class which provides a unified interface for all persistent objects in MRPT...">mrpt::utils::CSerializable</a>) is an instance of the given class or any of its derived classes. </p>

<p>Definition at line <a class="el" href="_c_object_8h_source.html#l00117">117</a> of file <a class="el" href="_c_object_8h_source.html">CObject.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>