TypelibMarshallerHandle.hpp
Go to the documentation of this file.
00001 #ifndef TYPELIB_MARSHALLER_HANDLE_HPP
00002 #define TYPELIB_MARSHALLER_HANDLE_HPP
00003 
00004 namespace orogen_transports
00005 {
00006     struct TypelibMarshallerBase::Handle
00007     {
00010         TypelibMarshallerBase* marshaller;
00014         uint8_t* typelib_sample;
00018         bool owns_typelib;
00022         uint8_t* orocos_sample;
00026         bool owns_orocos;
00027 
00028         void reset()
00029         {
00030             typelib_sample = 0;
00031             orocos_sample  = 0;
00032         }
00033 
00034         Handle(TypelibMarshallerBase* marshaller)
00035             : marshaller(marshaller)
00036             , typelib_sample(0), owns_typelib(true)
00037             , orocos_sample(0), owns_orocos(true) {}
00038 
00039         template<typename Type>
00040         Handle(TypelibMarshallerBase* marshaller, Type* data)
00041             : marshaller(marshaller)
00042             , typelib_sample(reinterpret_cast<uint8_t*>(data))
00043             , owns_typelib(true)
00044             , orocos_sample(typelib_sample)
00045             , owns_orocos(true) {}
00046 
00047         template<typename TypelibType, typename OrocosType>
00048         Handle(TypelibMarshallerBase* marshaller, TypelibType* typelib_data, OrocosType* orocos_data)
00049             : marshaller(marshaller)
00050             , typelib_sample(reinterpret_cast<uint8_t*>(typelib_data))
00051             , owns_typelib(true)
00052             , orocos_sample(reinterpret_cast<uint8_t*>(orocos_data))
00053             , owns_orocos(true) {}
00054 
00055         ~Handle()
00056         {
00057             if (owns_typelib && typelib_sample)
00058                 marshaller->deleteTypelibSample(this);
00059             if (owns_orocos && orocos_sample)
00060                 marshaller->deleteOrocosSample(this);
00061         }
00062     };
00063 }
00064 #endif
00065 


rtt_typelib
Author(s): Sylvain Joyeux/sylvain.joyeux@m4x.org
autogenerated on Mon Oct 6 2014 03:17:24