6 #ifndef OPENDDS_DCPS_SAMPLE_H 7 #define OPENDDS_DCPS_SAMPLE_H 14 #include <dds/DdsDynamicDataC.h> 20 #ifndef OPENDDS_SAFETY_PROFILE 23 template <
typename T,
typename Tag>
26 template <
typename T,
typename Tag>
56 : mutability_(Mutable)
62 : mutability_(mutability)
72 return mutability_ == ReadOnly;
80 virtual bool serialize(
Serializer& ser)
const = 0;
83 virtual bool compare(
const Sample& other)
const = 0;
90 return copy(mutability, extent_);
93 #ifndef OPENDDS_SAFETY_PROFILE 94 virtual DDS::DynamicData_var get_dynamic_data(DDS::DynamicType_ptr type)
const = 0;
97 virtual const void* native_data()
const = 0;
99 #ifndef OPENDDS_NO_CONTENT_SUBSCRIPTION_PROFILE 109 bool operator()(
const Sample_rch& lhs,
const Sample_rch& rhs)
const 111 return lhs->compare(*rhs);
115 template <
typename NativeType>
125 :
Sample(ReadOnly, extent)
135 :
Sample(ReadOnly, extent)
179 return *
const_cast<NativeType*
>(data_);
184 return KeyOnlyType(*data_);
189 return MutableKeyOnlyType(mutable_data());
195 return ser << key_only_data();
197 return ser << data();
204 return ser >> mutable_key_only_data();
206 return ser >> mutable_data();
224 return typename TraitsType::LessThanType()(*data_, *other_same_kind->
data_);
229 return MarshalTraitsType::to_message_block(mb, data());
234 return MarshalTraitsType::from_message_block(mutable_data(), mb);
239 NativeType* new_data =
new NativeType;
242 make_rch<Sample_T<NativeType> >(
const_cast<const NativeType*
>(new_data), extent) :
243 make_rch<Sample_T<NativeType> >(new_data, extent));
246 #ifndef OPENDDS_SAFETY_PROFILE 249 # if OPENDDS_HAS_DYNAMIC_DATA_ADAPTER 250 if (!dynamic_data_ && data_) {
251 dynamic_data_ = read_only() ?
252 XTypes::get_dynamic_data_adapter<NativeType, NativeType>(type, *data_) :
253 XTypes::get_dynamic_data_adapter<NativeType, NativeType>(type, mutable_data());
255 return dynamic_data_;
257 ACE_UNUSED_ARG(type);
268 #ifndef OPENDDS_NO_CONTENT_SUBSCRIPTION_PROFILE 271 return evaluator.
eval(*data_, params);
278 #if OPENDDS_HAS_DYNAMIC_DATA_ADAPTER NativeType & mutable_data() const
DDS::DynamicData_var get_dynamic_data(DDS::DynamicType_ptr type) const
bool eval(FilterEvaluator &evaluator, const DDS::StringSeq ¶ms) const
const LogLevel::Value value
Sample_rch copy(Mutability mutability, Extent extent) const
const NativeType & data() const
size_t serialized_size(const Encoding &enc) const
RcHandle< Sample_T< NativeType > > Rch
RcHandle< const Sample > ConstSample_rch
#define OpenDDS_Dcps_Export
#define OPENDDS_ASSERT(C)
bool from_message_block(const ACE_Message_Block &mb)
DDSTraits< NativeType > TraitsType
MarshalTraits< NativeType > MarshalTraitsType
void serialized_size(const Encoding &encoding, size_t &size, const SequenceNumber &)
DCPS::KeyOnly< const NativeType > KeyOnlyType
DCPS::KeyOnly< NativeType > MutableKeyOnlyType
Class to serialize and deserialize data for DDS.
Sample_T(NativeType &data, Extent extent=Full)
Sample_rch copy(Mutability mutability) const
MutableKeyOnlyType mutable_key_only_data() const
Sample_T(NativeType *data, Extent extent=Full)
#define OPENDDS_HAS_DYNAMIC_DATA_ADAPTER
Sample_T(const NativeType *data, Extent extent=Full)
bool operator()(const Sample_rch &lhs, const Sample_rch &rhs) const
DDS::DynamicData_var dynamic_data_
const void * native_data() const
bool to_message_block(ACE_Message_Block &mb) const
bool compare(const Sample &other) const
Sample_T(const NativeType &data, Extent extent=Full)
bool eval(const T &sample, const DDS::StringSeq ¶ms) const
RcHandle< Sample > Sample_rch
DDS::ReturnCode_t copy(DDS::DynamicData_ptr dest, DDS::DynamicData_ptr src)
bool serialize(Serializer &ser) const
#define OPENDDS_END_VERSIONED_NAMESPACE_DECL
RcHandle< T > dynamic_rchandle_cast(const RcHandle< U > &h)
DDS::DynamicData_ptr get_dynamic_data_adapter(DDS::DynamicType_ptr type, const T &value)
KeyOnlyType key_only_data() const
Sample(Mutability mutability, Extent extent)
The Internal API and Implementation of OpenDDS.
sequence< string > StringSeq
bool deserialize(Serializer &ser)