Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
1 change: 1 addition & 0 deletions examples/cpp/benchmark/types/BenchmarkCdrAux.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ eProsima_user_DllExport void serialize_key(
const BenchMark& data);



} // namespace fastcdr
} // namespace eprosima

Expand Down
83 changes: 83 additions & 0 deletions examples/cpp/benchmark/types/BenchmarkCdrAux.ipp
Original file line number Diff line number Diff line change
Expand Up @@ -27,13 +27,22 @@
#include <fastcdr/Cdr.h>
#include <fastcdr/CdrSizeCalculator.hpp>

#include <fastdds/dds/core/policy/QosPolicies.hpp>

#include <fastcdr/exceptions/BadParamException.h>
using namespace eprosima::fastcdr::exception;

namespace eprosima {
namespace fastcdr {


eProsima_user_DllExport bool is_BenchMark_cdr_plain(
eprosima::fastdds::dds::DataRepresentationId_t data_representation)
{
static_cast<void>(data_representation);
return false;
}

template<>
eProsima_user_DllExport size_t calculate_serialized_size(
eprosima::fastcdr::CdrSizeCalculator& calculator,
Expand Down Expand Up @@ -76,6 +85,44 @@ eProsima_user_DllExport void serialize(
scdr.end_serialize_type(current_state);
}

#if FASTCDR_VERSION_MAJOR > 2
template<>
eProsima_user_DllExport void serialize_array(
eprosima::fastcdr::Cdr& scdr,
const BenchMark* array_ptr,
const std::size_t array_size)
{
if (array_size > 0)
{
using namespace ::eprosima::fastdds::dds;
DataRepresentationId_t data_representation = (scdr.get_cdr_version() == eprosima::fastcdr::CdrVersion::XCDRv1 ?
DataRepresentationId_t::XCDR_DATA_REPRESENTATION : DataRepresentationId_t::XCDR2_DATA_REPRESENTATION);

if (is_BenchMark_cdr_plain(data_representation) &&
sizeof(BenchMark) == BenchMark_max_cdr_typesize)
{
// Serialize the first element
// to ensure correct alignment
scdr.serialize(
array_ptr[0]);

++array_ptr;

std::memcpy(
scdr.get_current_position(),
array_ptr,
(array_size - 1) * sizeof(BenchMark));

scdr.jump((array_size -1) * sizeof(BenchMark));
}
else
{
scdr.serialize_array(array_ptr, array_size);
}
}
}
#endif // FASTCDR_VERSION_MAJOR > 2

template<>
eProsima_user_DllExport void deserialize(
eprosima::fastcdr::Cdr& cdr,
Expand All @@ -101,6 +148,42 @@ eProsima_user_DllExport void deserialize(
});
}

#if FASTCDR_VERSION_MAJOR > 2
template<>
eProsima_user_DllExport void deserialize_array(
eprosima::fastcdr::Cdr& scdr,
BenchMark* array_ptr,
const std::size_t array_size)
{
if (array_size > 0)
{
using namespace ::eprosima::fastdds::dds;
DataRepresentationId_t data_representation = (scdr.get_cdr_version() == eprosima::fastcdr::CdrVersion::XCDRv1 ?
DataRepresentationId_t::XCDR_DATA_REPRESENTATION : DataRepresentationId_t::XCDR2_DATA_REPRESENTATION);

if (is_BenchMark_cdr_plain(data_representation) &&
sizeof(BenchMark) == BenchMark_max_cdr_typesize)
{
// Deserialize the first element
// accounting for alignment
scdr.deserialize_array(&array_ptr[0], 1);
++array_ptr;

std::memcpy(
reinterpret_cast<char*>(array_ptr),
scdr.get_current_position(),
(array_size - 1) * sizeof(BenchMark));

scdr.jump((array_size - 1) * sizeof(BenchMark));
}
else
{
scdr.deserialize_array(array_ptr, array_size);
}
}
}
#endif // FASTCDR_VERSION_MAJOR > 2

void serialize_key(
eprosima::fastcdr::Cdr& scdr,
const BenchMark& data)
Expand Down
20 changes: 20 additions & 0 deletions examples/cpp/benchmark/types/BenchmarkPubSubTypes.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,15 @@ using SerializedPayload_t = eprosima::fastdds::rtps::SerializedPayload_t;
using InstanceHandle_t = eprosima::fastdds::rtps::InstanceHandle_t;
using DataRepresentationId_t = eprosima::fastdds::dds::DataRepresentationId_t;

namespace eprosima {
namespace fastcdr {

bool is_BenchMark_cdr_plain(
DataRepresentationId_t data_representation);

} // namespace fastcdr
} // namespace eprosima

BenchMarkPubSubType::BenchMarkPubSubType()
{
set_name("BenchMark");
Expand Down Expand Up @@ -149,6 +158,17 @@ void BenchMarkPubSubType::delete_data(
delete(reinterpret_cast<::BenchMark*>(data));
}

#ifdef TOPIC_DATA_TYPE_API_HAS_IS_PLAIN

bool BenchMarkPubSubType::is_plain(
eprosima::fastdds::dds::DataRepresentationId_t data_representation) const
{
static_cast<void>(data_representation);
return false;
}

#endif // TOPIC_DATA_TYPE_API_HAS_IS_PLAIN

bool BenchMarkPubSubType::compute_key(
SerializedPayload_t& payload,
InstanceHandle_t& handle,
Expand Down
8 changes: 2 additions & 6 deletions examples/cpp/benchmark/types/BenchmarkPubSubTypes.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -93,12 +93,8 @@ class BenchMarkPubSubType : public eprosima::fastdds::dds::TopicDataType

#ifdef TOPIC_DATA_TYPE_API_HAS_IS_PLAIN

eProsima_user_DllExport inline bool is_plain(
eprosima::fastdds::dds::DataRepresentationId_t data_representation) const override
{
static_cast<void>(data_representation);
return false;
}
eProsima_user_DllExport bool is_plain(
eprosima::fastdds::dds::DataRepresentationId_t data_representation) const override;

#endif // TOPIC_DATA_TYPE_API_HAS_IS_PLAIN

Expand Down
1 change: 1 addition & 0 deletions examples/cpp/benchmark/types/Benchmark_bigCdrAux.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ eProsima_user_DllExport void serialize_key(
const BenchMarkBig& data);



} // namespace fastcdr
} // namespace eprosima

Expand Down
83 changes: 83 additions & 0 deletions examples/cpp/benchmark/types/Benchmark_bigCdrAux.ipp
Original file line number Diff line number Diff line change
Expand Up @@ -27,13 +27,22 @@
#include <fastcdr/Cdr.h>
#include <fastcdr/CdrSizeCalculator.hpp>

#include <fastdds/dds/core/policy/QosPolicies.hpp>

#include <fastcdr/exceptions/BadParamException.h>
using namespace eprosima::fastcdr::exception;

namespace eprosima {
namespace fastcdr {


eProsima_user_DllExport bool is_BenchMarkBig_cdr_plain(
eprosima::fastdds::dds::DataRepresentationId_t data_representation)
{
static_cast<void>(data_representation);
return false;
}

template<>
eProsima_user_DllExport size_t calculate_serialized_size(
eprosima::fastcdr::CdrSizeCalculator& calculator,
Expand Down Expand Up @@ -80,6 +89,44 @@ eProsima_user_DllExport void serialize(
scdr.end_serialize_type(current_state);
}

#if FASTCDR_VERSION_MAJOR > 2
template<>
eProsima_user_DllExport void serialize_array(
eprosima::fastcdr::Cdr& scdr,
const BenchMarkBig* array_ptr,
const std::size_t array_size)
{
if (array_size > 0)
{
using namespace ::eprosima::fastdds::dds;
DataRepresentationId_t data_representation = (scdr.get_cdr_version() == eprosima::fastcdr::CdrVersion::XCDRv1 ?
DataRepresentationId_t::XCDR_DATA_REPRESENTATION : DataRepresentationId_t::XCDR2_DATA_REPRESENTATION);

if (is_BenchMarkBig_cdr_plain(data_representation) &&
sizeof(BenchMarkBig) == BenchMarkBig_max_cdr_typesize)
{
// Serialize the first element
// to ensure correct alignment
scdr.serialize(
array_ptr[0]);

++array_ptr;

std::memcpy(
scdr.get_current_position(),
array_ptr,
(array_size - 1) * sizeof(BenchMarkBig));

scdr.jump((array_size -1) * sizeof(BenchMarkBig));
}
else
{
scdr.serialize_array(array_ptr, array_size);
}
}
}
#endif // FASTCDR_VERSION_MAJOR > 2

template<>
eProsima_user_DllExport void deserialize(
eprosima::fastcdr::Cdr& cdr,
Expand Down Expand Up @@ -109,6 +156,42 @@ eProsima_user_DllExport void deserialize(
});
}

#if FASTCDR_VERSION_MAJOR > 2
template<>
eProsima_user_DllExport void deserialize_array(
eprosima::fastcdr::Cdr& scdr,
BenchMarkBig* array_ptr,
const std::size_t array_size)
{
if (array_size > 0)
{
using namespace ::eprosima::fastdds::dds;
DataRepresentationId_t data_representation = (scdr.get_cdr_version() == eprosima::fastcdr::CdrVersion::XCDRv1 ?
DataRepresentationId_t::XCDR_DATA_REPRESENTATION : DataRepresentationId_t::XCDR2_DATA_REPRESENTATION);

if (is_BenchMarkBig_cdr_plain(data_representation) &&
sizeof(BenchMarkBig) == BenchMarkBig_max_cdr_typesize)
{
// Deserialize the first element
// accounting for alignment
scdr.deserialize_array(&array_ptr[0], 1);
++array_ptr;

std::memcpy(
reinterpret_cast<char*>(array_ptr),
scdr.get_current_position(),
(array_size - 1) * sizeof(BenchMarkBig));

scdr.jump((array_size - 1) * sizeof(BenchMarkBig));
}
else
{
scdr.deserialize_array(array_ptr, array_size);
}
}
}
#endif // FASTCDR_VERSION_MAJOR > 2

void serialize_key(
eprosima::fastcdr::Cdr& scdr,
const BenchMarkBig& data)
Expand Down
20 changes: 20 additions & 0 deletions examples/cpp/benchmark/types/Benchmark_bigPubSubTypes.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,15 @@ using SerializedPayload_t = eprosima::fastdds::rtps::SerializedPayload_t;
using InstanceHandle_t = eprosima::fastdds::rtps::InstanceHandle_t;
using DataRepresentationId_t = eprosima::fastdds::dds::DataRepresentationId_t;

namespace eprosima {
namespace fastcdr {

bool is_BenchMarkBig_cdr_plain(
DataRepresentationId_t data_representation);

} // namespace fastcdr
} // namespace eprosima

BenchMarkBigPubSubType::BenchMarkBigPubSubType()
{
set_name("BenchMarkBig");
Expand Down Expand Up @@ -149,6 +158,17 @@ void BenchMarkBigPubSubType::delete_data(
delete(reinterpret_cast<::BenchMarkBig*>(data));
}

#ifdef TOPIC_DATA_TYPE_API_HAS_IS_PLAIN

bool BenchMarkBigPubSubType::is_plain(
eprosima::fastdds::dds::DataRepresentationId_t data_representation) const
{
static_cast<void>(data_representation);
return false;
}

#endif // TOPIC_DATA_TYPE_API_HAS_IS_PLAIN

bool BenchMarkBigPubSubType::compute_key(
SerializedPayload_t& payload,
InstanceHandle_t& handle,
Expand Down
8 changes: 2 additions & 6 deletions examples/cpp/benchmark/types/Benchmark_bigPubSubTypes.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -93,12 +93,8 @@ class BenchMarkBigPubSubType : public eprosima::fastdds::dds::TopicDataType

#ifdef TOPIC_DATA_TYPE_API_HAS_IS_PLAIN

eProsima_user_DllExport inline bool is_plain(
eprosima::fastdds::dds::DataRepresentationId_t data_representation) const override
{
static_cast<void>(data_representation);
return false;
}
eProsima_user_DllExport bool is_plain(
eprosima::fastdds::dds::DataRepresentationId_t data_representation) const override;

#endif // TOPIC_DATA_TYPE_API_HAS_IS_PLAIN

Expand Down
1 change: 1 addition & 0 deletions examples/cpp/benchmark/types/Benchmark_mediumCdrAux.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ eProsima_user_DllExport void serialize_key(
const BenchMarkMedium& data);



} // namespace fastcdr
} // namespace eprosima

Expand Down
Loading
Loading