Info.cpp
Go to the documentation of this file.
00001 /* Generated from orogen/templates/typekit/type_info/Info.cpp */
00002 
00003 #include <<%= typekit.name %>/Types.hpp>
00004 #include <<%= typekit.name %>/type_info/BoostSerialization.hpp>
00005 #include <<%= type.info_type_header %>>
00006 <% if type.full_name == "/std/string" %>
00007 #include <rtt/typekit/StdStringTypeInfo.hpp>
00008 <% end %>
00009 
00010 <% base_class =
00011     if !Orocos::TypekitMarshallers::TypeInfo::Plugin.rtt_scripting?
00012         ["RTT::types::PrimitiveTypeInfo< #{type.cxx_name} >", "RTT::types::TemplateConnFactory< #{type.cxx_name} >"]
00013     elsif type.full_name == "/std/string"
00014         ["RTT::types::StdStringTypeInfo"]
00015     else
00016         ["#{type.info_type}< #{type.cxx_name} >"]
00017     end
00018 %>
00019 
00020 namespace orogen_typekits {
00021     struct <%= type.method_name(true) %>TypeInfo :
00022         public <%= base_class.join(", public ") %>
00023     {
00024         <%= type.method_name(true) %>TypeInfo()
00025             : <%= base_class.first %>("<%= type.full_name %>") {}
00026 
00027 <%  if !Orocos::TypekitMarshallers::TypeInfo::Plugin.rtt_scripting? %>
00028         bool installTypeInfoObject(RTT::types::TypeInfo* ti) {
00029             // This shared pointer MUST be taken HERE, and MUST be pointing to
00030             // the most derived class. Otherwise, you'll get double-free at
00031             // deinitialization time
00032             boost::shared_ptr< <%= type.method_name(true) %>TypeInfo > mthis =
00033                 boost::dynamic_pointer_cast< <%= type.method_name(true) %>TypeInfo >( this->getSharedPtr() );
00034 
00035             // Allow base to install first
00036             RTT::types::PrimitiveTypeInfo< <%= type.cxx_name %> >::installTypeInfoObject(ti);
00037             // Install the factories for primitive types
00038             ti->setPortFactory(mthis);
00039 
00040             return false;
00041         }
00042 <% end %>
00043 
00044     };
00045 
00046     RTT::types::TypeInfoGenerator* <%= type.method_name(true) %>_TypeInfo()
00047     { return new <%= type.method_name(true) %>TypeInfo(); }
00048 
00049 }
00050 
00051 <%= Generation.render_template('typekit', 'TemplateInstanciation.cpp', binding) %>
00052 


orogen
Author(s): Sylvain Joyeux/sylvain.joyeux@m4x.org
autogenerated on Wed Sep 16 2015 10:36:40