From c27ca11794af7f07515933cd323e5ff63e09ba5e Mon Sep 17 00:00:00 2001 From: schlesgal Date: Thu, 27 Jan 2022 20:55:38 +0200 Subject: [PATCH] Update StructArrayTransformation.cxx Based on case #00048420 --- .../cpp/StructArrayTransformation.cxx | 103 +++++++++--------- 1 file changed, 52 insertions(+), 51 deletions(-) diff --git a/examples/routing_service/routing_service_struct_array_transf/cpp/StructArrayTransformation.cxx b/examples/routing_service/routing_service_struct_array_transf/cpp/StructArrayTransformation.cxx index 000702422..59ff3dc28 100644 --- a/examples/routing_service/routing_service_struct_array_transf/cpp/StructArrayTransformation.cxx +++ b/examples/routing_service/routing_service_struct_array_transf/cpp/StructArrayTransformation.cxx @@ -23,57 +23,58 @@ using dds::sub::SampleInfo; * (see TransformedSensorDataExample.idl). * */ -DynamicData *StructArrayTransformation::convert_sample( - const DynamicData *input_sample) -{ - SensorAttributesCollection native_collection = - rti::core::xtypes::convert( - *input_sample); - - SensorData native_sensor_data; - /* Map elements from SensorAttributesCollection to SensorData */ - for (int32_t count = 0; count < native_collection.sensor_array().size(); - ++count) { - native_sensor_data.id().at(count) = - native_collection.sensor_array().at(count).id(); - native_sensor_data.value().at(count) = - native_collection.sensor_array().at(count).value(); - native_sensor_data.is_active().at(count) = - native_collection.sensor_array().at(count).is_active(); - } +DynamicData* StructArrayTransformation::convert_sample( + const DynamicData* input_sample) +{ + SensorData native_sensor_data; + // We obtain the array of SensorAttributes: + DynamicData array_sensor = input_sample->value("sensor_array"); + int32_t size = array_sensor.member_count(); + for (int32_t count = 0; count < size; ++count) { + // We get the SensorAttributes from the array: + DynamicData sensor_attributes_native = + array_sensor.value(count + 1); + // We fill SensorData with the values from SensorAttributesCollection: + native_sensor_data.id()[count] = + sensor_attributes_native.value("id"); + native_sensor_data.value()[count] = + sensor_attributes_native.value("value"); + native_sensor_data.is_active()[count] = + sensor_attributes_native.value("is_active"); + } - return new DynamicData(rti::core::xtypes::convert(native_sensor_data)); + return new DynamicData(rti::core::xtypes::convert(native_sensor_data)); } void StructArrayTransformation::transform( - std::vector &output_sample_seq, - std::vector &output_info_seq, - const std::vector &input_sample_seq, - const std::vector &input_info_seq) + std::vector& output_sample_seq, + std::vector& output_info_seq, + const std::vector& input_sample_seq, + const std::vector& input_info_seq) { - // resize the output sample and info sequences to hold as many samples - // as the input sequences - output_sample_seq.resize(input_sample_seq.size()); - output_info_seq.resize(input_info_seq.size()); + // resize the output sample and info sequences to hold as many samples + // as the input sequences + output_sample_seq.resize(input_sample_seq.size()); + output_info_seq.resize(input_info_seq.size()); - // Convert each individual input sample - for (size_t i = 0; i < input_sample_seq.size(); ++i) { - // convert data - output_sample_seq[i] = convert_sample(input_sample_seq[i]); - // copy info as is - output_info_seq[i] = new SampleInfo(*input_info_seq[i]); - } + // Convert each individual input sample + for (size_t i = 0; i < input_sample_seq.size(); ++i) { + // convert data + output_sample_seq[i] = convert_sample(input_sample_seq[i]); + // copy info as is + output_info_seq[i] = new SampleInfo(*input_info_seq[i]); + } } void StructArrayTransformation::return_loan( - std::vector &sample_seq, - std::vector &info_seq) + std::vector& sample_seq, + std::vector& info_seq) { - for (size_t i = 0; i < sample_seq.size(); ++i) { - delete sample_seq[i]; - delete info_seq[i]; - } + for (size_t i = 0; i < sample_seq.size(); ++i) { + delete sample_seq[i]; + delete info_seq[i]; + } } @@ -81,25 +82,25 @@ void StructArrayTransformation::return_loan( * --- StructArrayTransformationPlugin ---------------------------------------- */ StructArrayTransformationPlugin::StructArrayTransformationPlugin( - const rti::routing::PropertySet &) + const rti::routing::PropertySet&) { - // no configuration properties for this plug-in + // no configuration properties for this plug-in } -rti::routing::transf::Transformation * - StructArrayTransformationPlugin::create_transformation( - const rti::routing::TypeInfo &, - const rti::routing::TypeInfo &, - const rti::routing::PropertySet &) +rti::routing::transf::Transformation* +StructArrayTransformationPlugin::create_transformation( + const rti::routing::TypeInfo&, + const rti::routing::TypeInfo&, + const rti::routing::PropertySet&) { - return new StructArrayTransformation(); + return new StructArrayTransformation(); } void StructArrayTransformationPlugin::delete_transformation( - rti::routing::transf::Transformation *transformation) + rti::routing::transf::Transformation* transformation) { - delete transformation; + delete transformation; } -RTI_TRANSFORMATION_PLUGIN_CREATE_FUNCTION_DEF(StructArrayTransformationPlugin); \ No newline at end of file +RTI_TRANSFORMATION_PLUGIN_CREATE_FUNCTION_DEF(StructArrayTransformationPlugin);