11#ifndef RTI_DDS_FLAT_FLATTYPETRAITS_HPP_
12#define RTI_DDS_FLAT_FLATTYPETRAITS_HPP_
14#include "rti/flat/Offset.hpp"
15#include "rti/flat/SequenceOffsets.hpp"
16#include "rti/flat/AggregationBuilders.hpp"
18namespace rti {
namespace flat {
66struct flat_type_traits;
68template <
typename T,
unsigned int N>
69struct flat_type_traits<FinalArrayOffset<T, N> > {
70 typedef typename flat_type_traits<T>::plain_type plain_type;
73template <
typename T,
unsigned int N>
74struct flat_type_traits<PrimitiveArrayOffset<T, N> > {
79struct flat_type_traits<PrimitiveSequenceOffset<T> > {
83template <
typename T,
unsigned int N>
84struct flat_type_traits<FinalAlignedArrayOffset<T, N> > {
85 typedef typename flat_type_traits<T>::plain_type plain_type;
88template <
typename T,
unsigned int N>
89struct flat_type_traits<MutableArrayOffset<T, N> > {
90 typedef typename flat_type_traits<T>::plain_type plain_type;
94struct flat_type_traits<SequenceOffset<T> > {
95 typedef typename flat_type_traits<T>::plain_type plain_type;
99struct flat_type_traits<StringOffset > :
100 flat_type_traits<PrimitiveSequenceOffset<char> > {
104struct flat_type_traits<PrimitiveOffset<T> > {
105 typedef T plain_type;
219template <
typename OffsetType>
222 RTI_FLAT_CHECK_PRECONDITION(offset.is_cpp_compatible(),
return NULL);
224 offset.get_buffer());
231template <
typename OffsetType>
234 RTI_FLAT_CHECK_PRECONDITION(offset.is_cpp_compatible(),
return NULL);
236 offset.get_buffer());
241template <
typename OffsetKind>
242struct offset_kind_is_fixed_size {
247struct offset_kind_is_fixed_size<
rti::flat::fixed_size_type_tag_t> {
256struct is_fixed_size_type
257 : detail::offset_kind_is_fixed_size<typename T::Offset::offset_kind>
flat_type_traits< OffsetType >::plain_type * plain_cast(OffsetType &offset)
Casts into an equivalent plain C++ type.
Definition: FlatTypeTraits.hpp:220
The RTI namespace.
Definition: AggregationBuilders.hpp:18
Given a Sample, an Offset or a Builder, it allows obtaining the other types.
Definition: FlatSample.hpp:340