11#ifndef RTI_ROUTING_TRANSF_DETAIL_TRANSFORMATION_PLUGIN_FORWARDER_HPP_
12#define RTI_ROUTING_TRANSF_DETAIL_TRANSFORMATION_PLUGIN_FORWARDER_HPP_
14#include <rti/core/Exception.hpp>
16#include <routingservice/routingservice_transformation.h>
18#include <rti/routing/transf/detail/TransformationForwarder.hpp>
20namespace rti {
namespace routing {
namespace transf {
namespace detail {
23class TransformationPluginForwarder {
25 static RTI_RoutingServiceTransformationPlugin * create_plugin(
26 TransformationPlugin *transformation_plugin)
28 RTI_RoutingServiceTransformationPlugin *native_plugin = NULL;
29 RTIOsapiHeap_allocateStructure(
31 struct RTI_RoutingServiceTransformationPlugin);
32 rti::core::check_create_entity(
34 "RTI_RoutingServiceTransformationPlugin");
35 RTI_RoutingServiceTransformationPlugin_initialize(native_plugin);
38 rti::config::LibraryVersion version = transformation_plugin->get_version();
39 native_plugin->plugin_version.major = version.major_version();
40 native_plugin->plugin_version.minor = version.minor_version();
41 native_plugin->plugin_version.release = version.release_version();
44 native_plugin->user_object =
static_cast<void *
>(transformation_plugin);
45 native_plugin->transformation_plugin_delete =
46 TransformationPluginForwarder::delete_plugin;
47 native_plugin->transformation_plugin_create_transformation =
48 TransformationPluginForwarder::create_transformation;
49 native_plugin->transformation_plugin_delete_transformation =
50 TransformationPluginForwarder::delete_transformation;
51 native_plugin->transformation_transform =
52 TransformationForwarder::transform;
53 native_plugin->transformation_return_loan =
54 TransformationForwarder::return_loan;
55 native_plugin->transformation_update =
56 TransformationForwarder::update;
61 static void delete_plugin(
62 RTI_RoutingServiceTransformationPlugin *native_plugin,
63 RTI_RoutingServiceEnvironment *)
65 TransformationPlugin *plugin =
static_cast<TransformationPlugin *
>(
66 native_plugin->user_object);
69 RTIOsapiHeap_freeStructure(native_plugin);
72 static RTI_RoutingServiceTransformation create_transformation(
73 struct RTI_RoutingServiceTransformationPlugin *native_plugin,
74 const struct RTI_RoutingServiceTypeInfo *input_type_info,
75 const struct RTI_RoutingServiceTypeInfo *output_type_info,
76 const struct RTI_RoutingServiceProperties *native_properties,
77 RTI_RoutingServiceEnvironment *environment)
79 return TransformationForwarder::create_native(
80 static_cast<TransformationPlugin *
>(native_plugin->user_object),
88 static void delete_transformation(
89 struct RTI_RoutingServiceTransformationPlugin *native_plugin,
90 RTI_RoutingServiceTransformation native_transformation,
91 RTI_RoutingServiceEnvironment *environment)
93 TransformationForwarder::delete_native(
94 static_cast<TransformationPlugin *
>(native_plugin->user_object),
95 native_transformation,