$search
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