OpenDDS  Snapshot(2023/04/28-20:55)
DynamicDataAdapter.h
Go to the documentation of this file.
1 /*
2  * Distributed under the OpenDDS License.
3  * See: http://www.opendds.org/license.html
4  */
5 
6 #ifndef OPENDDS_DCPS_XTYPES_DYNAMIC_DATA_ADAPTER_H
7 #define OPENDDS_DCPS_XTYPES_DYNAMIC_DATA_ADAPTER_H
8 
9 #ifndef OPENDDS_SAFETY_PROFILE
10 # include <dds/DCPS/Definitions.h>
11 # if OPENDDS_HAS_DYNAMIC_DATA_ADAPTER
12 # include "DynamicDataBase.h"
13 # include "Utils.h"
14 
15 # include <vector>
16 # else
17 # include <dds/DdsDynamicDataC.h>
18 # endif
19 
21 
22 namespace OpenDDS {
23 namespace XTypes {
24 
25 // If changing just these two, also change the get_dynamic_data_adapter forward
26 // declarations in Sample.h.
27 template <typename T, typename Tag>
28 DDS::DynamicData_ptr get_dynamic_data_adapter(DDS::DynamicType_ptr type, const T& value);
29 template <typename T, typename Tag>
30 DDS::DynamicData_ptr get_dynamic_data_adapter(DDS::DynamicType_ptr type, T& value);
31 
32 template <typename T>
33 DDS::DynamicData_ptr get_dynamic_data_adapter(DDS::DynamicType_ptr type, T& value)
34 {
35  return get_dynamic_data_adapter<T, T>(type, value);
36 }
37 
38 template <typename T>
39 DDS::DynamicData_ptr get_dynamic_data_adapter(DDS::DynamicType_ptr type, const T& value)
40 {
41  return get_dynamic_data_adapter<T, T>(type, value);
42 }
43 
44 template <typename T, typename Tag>
45 const T* get_dynamic_data_adapter_value(DDS::DynamicData_ptr dda);
46 
47 # if OPENDDS_HAS_DYNAMIC_DATA_ADAPTER
48 
49 template <typename T, typename Tag = void>
51 
52 /**
53  * Base class for all classes that allow interfacing with the C++ mapping types
54  * as DynamicData.
55  *
56  * TODO:
57  * - Support direct array methods, like get_int32_values
58  * - Part of this is accessing all types as complex value.
59  * - Implement equals, clear_value, clear_all_values, and clear_nonkey_values
60  * - Respect bounds of strings and sequences.
61  * - Implement way for unions branch to initialized with a default value so
62  * get_complex_value works like DynamicDataImpl if there is no selected
63  * branch. This might be able to be done in either code generation of
64  * DynamicDataAdapterImpl or maybe purely in terms of DynamicDataAdapter.
65  */
67 public:
68  DynamicDataAdapter(DDS::DynamicType_ptr type, bool read_only)
69  : DynamicDataBase(type)
70  , read_only_(read_only)
71  {
72  }
73 
74  DDS::UInt32 get_item_count();
75  DDS::MemberId get_member_id_by_name(const char* name);
76  virtual DDS::MemberId get_member_id_at_index_impl(DDS::UInt32);
77  DDS::MemberId get_member_id_at_index(DDS::UInt32 index);
78 
79  DDS::ReturnCode_t clear_all_values();
80  DDS::ReturnCode_t clear_nonkey_values();
81  DDS::ReturnCode_t clear_value(DDS::MemberId);
82  DDS::DynamicData_ptr clone();
83 
85  DDS::MemberId id)
86  {
87  return get_raw_value("get_int8_value", &value, TK_INT8, id);
88  }
89 
91  CORBA::Int8 value)
92  {
93  return set_raw_value("set_int8_value", id, &value, TK_INT8);
94  }
95 
97  DDS::MemberId id)
98  {
99  return get_raw_value("get_uint8_value", &value, TK_UINT8, id);
100  }
101 
103  CORBA::UInt8 value)
104  {
105  return set_raw_value("set_uint8_value", id, &value, TK_UINT8);
106  }
107 
109  DDS::MemberId id)
110  {
111  return get_raw_value("get_int16_value", &value, TK_INT16, id);
112  }
113 
116  {
117  return set_raw_value("set_int16_value", id, &value, TK_INT16);
118  }
119 
121  DDS::MemberId id)
122  {
123  return get_raw_value("get_uint16_value", &value, TK_UINT16, id);
124  }
125 
128  {
129  return set_raw_value("set_uint16_value", id, &value, TK_UINT16);
130  }
131 
133  DDS::MemberId id)
134  {
135  return get_raw_value("get_int32_value", &value, TK_INT32, id);
136  }
137 
140  {
141  return set_raw_value("set_int32_value", id, &value, TK_INT32);
142  }
143 
145  DDS::MemberId id)
146  {
147  return get_raw_value("get_uint32_value", &value, TK_UINT32, id);
148  }
149 
152  {
153  return set_raw_value("set_uint32_value", id, &value, TK_UINT32);
154  }
155 
157  {
158  return get_raw_value("get_int64_value", &value, TK_INT64, id);
159  }
160 
163  {
164  return set_raw_value("set_int64_value", id, &value, TK_INT64);
165  }
166 
168  {
169  return get_raw_value("get_uint64_value", &value, TK_UINT64, id);
170  }
171 
174  {
175  return set_raw_value("set_uint64_value", id, &value, TK_UINT64);
176  }
177 
179  DDS::MemberId id)
180  {
181  return get_raw_value("get_float32_value", &value, TK_FLOAT32, id);
182  }
183 
186  {
187  return set_raw_value("set_float32_value", id, &value, TK_FLOAT32);
188  }
189 
191  DDS::MemberId id)
192  {
193  return get_raw_value("get_float64_value", &value, TK_FLOAT64, id);
194  }
195 
198  {
199  return set_raw_value("set_float64_value", id, &value, TK_FLOAT64);
200  }
201 
203  DDS::MemberId id)
204  {
205  return get_raw_value("get_float128_value", &value, TK_FLOAT128, id);
206  }
207 
210  {
211  return set_raw_value("set_float128_value", id, &value, TK_FLOAT128);
212  }
213 
215  DDS::MemberId id)
216  {
217  return get_raw_value("get_char8_value", &value, TK_CHAR8, id);
218  }
219 
222  {
223  return set_raw_value("set_char8_value", id, &value, TK_CHAR8);
224  }
225 
227  DDS::MemberId id)
228  {
229  return get_raw_value("get_char16_value", &value, TK_CHAR16, id);
230  }
231 
234  {
235  return set_raw_value("set_char16_value", id, &value, TK_CHAR16);
236  }
237 
239  DDS::MemberId id)
240  {
241  return get_raw_value("get_byte_value", &value, TK_BYTE, id);
242  }
243 
246  {
247  return set_raw_value("set_byte_value", id, &value, TK_BYTE);
248  }
249 
251  DDS::MemberId id)
252  {
253  return get_raw_value("get_boolean_value", &value, TK_BOOLEAN, id);
254  }
255 
258  {
259  return set_raw_value("set_boolean_value", id, &value, TK_BOOLEAN);
260  }
261 
263  DDS::MemberId id)
264  {
265  return get_raw_value("get_string_value", &value, TK_STRING8, id);
266  }
267 
269  const char* value)
270  {
271  return set_raw_value("set_string_value", id, value, TK_STRING8);
272  }
273 
275  DDS::MemberId id)
276  {
277  return get_raw_value("get_wstring_value", &value, TK_STRING16, id);
278  }
279 
281  const CORBA::WChar* value)
282  {
283  return set_raw_value("set_wstring_value", id, value, TK_STRING16);
284  }
285 
287  DDS::MemberId id)
288  {
289  return get_raw_value("get_complex_value", &value, TK_NONE, id);
290  }
291 
293  DDS::DynamicData_ptr value)
294  {
295  return set_raw_value("set_complex_value", id, value, TK_NONE);
296  }
297 
300  {
301  return unsupported_method("DynamicDataAdapater::get_int32_values");
302  }
303 
305  const DDS::Int32Seq&)
306  {
307  return unsupported_method("DynamicDataAdapater::set_int32_values");
308  }
309 
312  {
313  return unsupported_method("DynamicDataAdapater::get_uint32_values");
314  }
315 
317  const DDS::UInt32Seq&)
318  {
319  return unsupported_method("DynamicDataAdapater::set_uint32_values");
320  }
321 
324  {
325  return unsupported_method("DynamicDataAdapater::get_int8_values");
326  }
327 
329  const DDS::Int8Seq&)
330  {
331  return unsupported_method("DynamicDataAdapater::set_int8_values");
332  }
333 
336  {
337  return unsupported_method("DynamicDataAdapater::get_uint8_values");
338  }
339 
341  const DDS::UInt8Seq&)
342  {
343  return unsupported_method("DynamicDataAdapater::set_uint8_values");
344  }
345 
348  {
349  return unsupported_method("DynamicDataAdapater::get_int16_values");
350  }
351 
353  const DDS::Int16Seq&)
354  {
355  return unsupported_method("DynamicDataAdapater::set_int16_values");
356  }
357 
360  {
361  return unsupported_method("DynamicDataAdapater::get_uint16_values");
362  }
363 
365  const DDS::UInt16Seq&)
366  {
367  return unsupported_method("DynamicDataAdapater::set_uint16_values");
368  }
369 
372  {
373  return unsupported_method("DynamicDataAdapater::get_int64_values");
374  }
375 
377  const DDS::Int64Seq&)
378  {
379  return unsupported_method("DynamicDataAdapater::set_int64_values");
380  }
381 
384  {
385  return unsupported_method("DynamicDataAdapater::get_uint64_values");
386  }
387 
389  const DDS::UInt64Seq&)
390  {
391  return unsupported_method("DynamicDataAdapater::set_uint64_values");
392  }
393 
396  {
397  return unsupported_method("DynamicDataAdapater::get_float32_values");
398  }
399 
401  const DDS::Float32Seq&)
402  {
403  return unsupported_method("DynamicDataAdapater::set_float32_values");
404  }
405 
408  {
409  return unsupported_method("DynamicDataAdapater::get_float64_values");
410  }
411 
413  const DDS::Float64Seq&)
414  {
415  return unsupported_method("DynamicDataAdapater::set_float64_values");
416  }
417 
420  {
421  return unsupported_method("DynamicDataAdapater::get_float128_values");
422  }
423 
425  const DDS::Float128Seq&)
426  {
427  return unsupported_method("DynamicDataAdapater::set_float128_values");
428  }
429 
432  {
433  return unsupported_method("DynamicDataAdapater::get_char8_values");
434  }
435 
437  const DDS::CharSeq&)
438  {
439  return unsupported_method("DynamicDataAdapater::set_char8_values");
440  }
441 
444  {
445  return unsupported_method("DynamicDataAdapater::get_char16_values");
446  }
447 
449  const DDS::WcharSeq&)
450  {
451  return unsupported_method("DynamicDataAdapater::set_char16_values");
452  }
453 
456  {
457  return unsupported_method("DynamicDataAdapater::get_byte_values");
458  }
459 
461  const DDS::ByteSeq&)
462  {
463  return unsupported_method("DynamicDataAdapater::set_byte_values");
464  }
465 
468  {
469  return unsupported_method("DynamicDataAdapater::get_boolean_values");
470  }
471 
473  const DDS::BooleanSeq&)
474  {
475  return unsupported_method("DynamicDataAdapater::set_boolean_values");
476  }
477 
480  {
481  return unsupported_method("DynamicDataAdapater::get_string_values");
482  }
483 
485  const DDS::StringSeq&)
486  {
487  return unsupported_method("DynamicDataAdapater::set_string_values");
488  }
489 
492  {
493  return unsupported_method("DynamicDataAdapater::get_wstring_values");
494  }
495 
497  const DDS::WstringSeq&)
498  {
499  return unsupported_method("DynamicDataAdapater::set_wstring_values");
500  }
501 
502 protected:
503  const bool read_only_;
504 
505  DDS::ReturnCode_t invalid_id(const char* method, DDS::MemberId id) const;
506  DDS::ReturnCode_t missing_dda(const char* method, DDS::MemberId id) const;
507  DDS::ReturnCode_t assert_mutable(const char* method) const;
508  DDS::ReturnCode_t check_index(const char* method, DDS::UInt32 index, DDS::UInt32 size) const;
509  DDS::ReturnCode_t check_member(
510  DDS::DynamicType_var& member_type, const char* method, DDS::TypeKind tk, DDS::MemberId id);
511  DDS::ReturnCode_t check_member(const char* method, DDS::TypeKind tk, DDS::MemberId id);
512 
513  virtual DDS::ReturnCode_t get_raw_value(
514  const char* method, void* dest, DDS::TypeKind tk, DDS::MemberId id) = 0;
515 
516  virtual DDS::ReturnCode_t set_raw_value(
517  const char* method, DDS::MemberId id, const void* source, DDS::TypeKind tk) = 0;
518 
519  template <typename T>
521  const char* method, void* dest, DDS::TypeKind tk, T source, DDS::MemberId id)
522  {
523  const DDS::ReturnCode_t rc = check_member(method, tk, id);
524  if (rc == DDS::RETCODE_OK) {
525  *static_cast<T*>(dest) = source;
526  }
527  return rc;
528  }
529 
530  /*
531  * It's possible to call this function with incorrectly matched types and
532  * GCC could warn about this when the source value from set_*_value is
533  * smaller than T in get_raw_value. This isn't actually a problem because
534  * check_member requires tk to match the member's type.
535  */
536 # if OPENDDS_GCC_HAS_DIAG_PUSHPOP
537 # pragma GCC diagnostic push
538 # pragma GCC diagnostic ignored "-Warray-bounds"
539 # endif
540  template <typename T>
542  const char* method, T& dest, DDS::MemberId id, const void* source, DDS::TypeKind tk)
543  {
544  const DDS::ReturnCode_t rc = check_member(method, tk, id);
545  if (rc == DDS::RETCODE_OK) {
546  dest = *static_cast<const T*>(source);
547  }
548  return rc;
549  }
550 # if OPENDDS_GCC_HAS_DIAG_PUSHPOP
551 # pragma GCC diagnostic pop
552 # endif
553 
554  // A reference to a std::vector<bool> element isn't a bool&, so it's a special
555  // case.
557  const char* method, std::vector<bool>::reference dest, DDS::MemberId id,
558  const void* source, DDS::TypeKind tk)
559  {
560  const DDS::ReturnCode_t rc = check_member(method, tk, id);
561  if (rc == DDS::RETCODE_OK) {
562  dest = *static_cast<const bool*>(source);
563  }
564  return rc;
565  }
566 
567  /// For now dest must be a Int32 and tk must be TK_INT32
568  template <typename Enum>
570  const char* method, void* dest, DDS::TypeKind tk, Enum source, DDS::MemberId id)
571  {
572  const DDS::ReturnCode_t rc = check_member(method, tk, id);
573  if (rc == DDS::RETCODE_OK) {
574  *static_cast<DDS::Int32*>(dest) = static_cast<DDS::Int32>(source);
575  }
576  return rc;
577  }
578 
579  /// For now source must be a Int32 and tk must be TK_INT32
580  template <typename Enum>
582  const char* method, Enum& dest, DDS::MemberId id, const void* source, DDS::TypeKind tk)
583  {
584  const DDS::ReturnCode_t rc = check_member(method, tk, id);
585  if (rc == DDS::RETCODE_OK) {
586  dest = static_cast<Enum>(*static_cast<const DDS::Int32*>(source));
587  }
588  return rc;
589  }
590 
591  DDS::ReturnCode_t get_s8_raw_value(
592  const char* method, void* dest, DDS::TypeKind tk, const char* source, DDS::MemberId id);
593  DDS::ReturnCode_t set_s8_raw_value(
594  const char* method, char*& dest, DDS::MemberId id, const void* source, DDS::TypeKind tk);
595  DDS::ReturnCode_t get_cpp11_s8_raw_value(
596  const char* method, void* dest, DDS::TypeKind tk,
597  const std::string& source, DDS::MemberId id);
598  DDS::ReturnCode_t set_cpp11_s8_raw_value(
599  const char* method, std::string& dest, DDS::MemberId id,
600  const void* source, DDS::TypeKind tk);
601  DDS::ReturnCode_t get_s16_raw_value(
602  const char* method, void* dest, DDS::TypeKind tk,
603  const DDS::Char16* source, DDS::MemberId id);
604  DDS::ReturnCode_t set_s16_raw_value(
605  const char* method, DDS::Char16*& dest, DDS::MemberId id,
606  const void* source, DDS::TypeKind tk);
607  DDS::ReturnCode_t get_cpp11_s16_raw_value(
608  const char* method, void* dest, DDS::TypeKind tk,
609  const std::wstring& source, DDS::MemberId id);
610  DDS::ReturnCode_t set_cpp11_s16_raw_value(
611  const char* method, std::wstring& dest, DDS::MemberId id,
612  const void* source, DDS::TypeKind tk);
613 
614  template <typename T, typename Tag>
616  const char* method, void* dest, DDS::TypeKind tk, T& source, DDS::MemberId id)
617  {
618  DDS::DynamicType_var member_type;
619  const DDS::ReturnCode_t rc = check_member(member_type, method, tk, id);
620  if (rc != DDS::RETCODE_OK) {
621  return rc;
622  }
623  DDS::DynamicData*& dest_value = *static_cast<DDS::DynamicData**>(dest);
624  CORBA::release(dest_value);
625  dest_value = get_dynamic_data_adapter<T, Tag>(member_type, source);
626  if (!dest_value) {
627  return missing_dda(method, id);
628  }
629  return rc;
630  }
631 
632  template <typename T, typename Tag>
634  const char* method, T& dest, DDS::MemberId id, DDS::DynamicType_ptr member_type,
635  DDS::DynamicData_ptr source_dd)
636  {
637  DDS::DynamicData_var dest_dda = get_dynamic_data_adapter<T, Tag>(member_type, dest);
638  if (!dest_dda) {
639  return missing_dda(method, id);
640  }
641  return copy(dest_dda, source_dd);
642  }
643 
644  template <typename T, typename Tag>
646  const char* method, T& dest, DDS::MemberId id, const void* source, DDS::TypeKind tk)
647  {
648  DDS::DynamicType_var member_type;
649  const DDS::ReturnCode_t rc = check_member(member_type, method, tk, id);
650  if (rc != DDS::RETCODE_OK) {
651  return rc;
652  }
653 
654  DDS::DynamicData* const source_dd = static_cast<DDS::DynamicData*>(const_cast<void*>(source));
655 
656  // If the source is another DynamicDataAdapter of the member type then do a
657  // direct copy, else do an indirect copy.
658  const T* const source_value = get_dynamic_data_adapter_value<T, Tag>(source_dd);
659  if (source_value) {
660  if (source_value != &dest) {
661  dest = *source_value;
662  }
663  return DDS::RETCODE_OK;
664  }
665 
666  return set_indirect_complex_raw_value_impl<T, Tag>(method, dest, id, member_type, source_dd);
667  }
668 
669  // In the classic mapping arrays are C arrays, which can't be copied using =,
670  // so only do a indirect copy.
671  template <typename T, typename Tag>
673  const char* method, T& dest, DDS::MemberId id, const void* source, DDS::TypeKind tk)
674  {
675  DDS::DynamicType_var member_type;
676  const DDS::ReturnCode_t rc = check_member(member_type, method, tk, id);
677  if (rc != DDS::RETCODE_OK) {
678  return rc;
679  }
680  return set_indirect_complex_raw_value_impl<T, Tag>(method, dest, id, member_type,
681  static_cast<DDS::DynamicData*>(const_cast<void*>(source)));
682  }
683 };
684 
685 template <typename T>
687 public:
688  DynamicDataAdapter_T(DDS::DynamicType_ptr type, T& value)
689  : DynamicDataAdapter(type, /* read_only = */ false)
690  , value_(value)
691  {
692  }
693 
694  DynamicDataAdapter_T(DDS::DynamicType_ptr type, const T& value)
695  : DynamicDataAdapter(type, /* read_only = */ true)
696  , value_(const_cast<T&>(value))
697  {
698  }
699 
700  const T& wrapped() const
701  {
702  return value_;
703  }
704 
705 protected:
706  T& value_;
707 };
708 
709 # endif // OPENDDS_HAS_DYNAMIC_DATA_ADAPTER
710 
711 } // namespace XTypes
712 } // namespace OpenDDS
713 
715 
716 #endif // OPENDDS_SAFETY_PROFILE
717 
718 #endif // OPENDDS_DCPS_XTYPES_DYNAMIC_DATA_ADAPTER_H
ACE_CDR::Long Long
DDS::ReturnCode_t set_uint64_values(DDS::MemberId, const DDS::UInt64Seq &)
sequence< unsigned short > UInt16Seq
DDS::ReturnCode_t set_enum_raw_value(const char *method, Enum &dest, DDS::MemberId id, const void *source, DDS::TypeKind tk)
For now source must be a Int32 and tk must be TK_INT32.
sequence< long > Int32Seq
ACE_CDR::ULong MemberId
Definition: TypeObject.h:910
sequence< wchar > WcharSeq
DDS::ReturnCode_t set_boolean_value(DDS::MemberId id, CORBA::Boolean value)
const LogLevel::Value value
Definition: debug.cpp:61
const TypeKind TK_INT32
Definition: TypeObject.h:217
DDS::ReturnCode_t set_float32_values(DDS::MemberId, const DDS::Float32Seq &)
void release(T x)
const TypeKind TK_STRING16
Definition: TypeObject.h:232
DDS::ReturnCode_t get_boolean_value(CORBA::Boolean &value, DDS::MemberId id)
const TypeKind TK_FLOAT128
Definition: TypeObject.h:224
DDS::ReturnCode_t get_byte_values(DDS::ByteSeq &, DDS::MemberId)
const TypeKind TK_BYTE
Definition: TypeObject.h:215
DDS::ReturnCode_t set_float32_value(DDS::MemberId id, CORBA::Float value)
DDS::ReturnCode_t set_byte_values(DDS::MemberId, const DDS::ByteSeq &)
DDS::ReturnCode_t get_char16_values(DDS::WcharSeq &, DDS::MemberId)
DDS::ReturnCode_t get_int32_values(DDS::Int32Seq &, DDS::MemberId)
DDS::ReturnCode_t set_wstring_values(DDS::MemberId, const DDS::WstringSeq &)
Value value_
DDS::ReturnCode_t get_complex_value(DDS::DynamicData_ptr &value, DDS::MemberId id)
sequence< char > CharSeq
DDS::ReturnCode_t get_int32_value(CORBA::Long &value, DDS::MemberId id)
DDS::ReturnCode_t set_char16_value(DDS::MemberId id, CORBA::WChar value)
DDS::ReturnCode_t set_int32_values(DDS::MemberId, const DDS::Int32Seq &)
sequence< long long > Int64Seq
ACE_CDR::LongLong LongLong
#define OpenDDS_Dcps_Export
Definition: dcps_export.h:24
const TypeKind TK_INT16
Definition: TypeObject.h:216
ACE_CDR::Short Short
DDS::ReturnCode_t get_uint32_values(DDS::UInt32Seq &, DDS::MemberId)
DynamicDataAdapter(DDS::DynamicType_ptr type, bool read_only)
DDS::ReturnCode_t set_indirect_complex_raw_value_impl(const char *method, T &dest, DDS::MemberId id, DDS::DynamicType_ptr member_type, DDS::DynamicData_ptr source_dd)
const TypeKind TK_UINT16
Definition: TypeObject.h:219
DDS::ReturnCode_t set_boolean_values(DDS::MemberId, const DDS::BooleanSeq &)
DDS::ReturnCode_t set_wstring_value(DDS::MemberId id, const CORBA::WChar *value)
DDS::ReturnCode_t set_uint8_value(DDS::MemberId id, CORBA::UInt8 value)
DDS::ReturnCode_t get_uint32_value(CORBA::ULong &value, DDS::MemberId id)
DDS::ReturnCode_t get_simple_raw_value(const char *method, void *dest, DDS::TypeKind tk, T source, DDS::MemberId id)
octet Byte
Definition: DdsDcpsCore.idl:31
DynamicDataAdapter_T(DDS::DynamicType_ptr type, T &value)
DDS::ReturnCode_t get_boolean_values(DDS::BooleanSeq &, DDS::MemberId)
DDS::ReturnCode_t get_int8_values(DDS::Int8Seq &, DDS::MemberId)
DDS::ReturnCode_t get_complex_raw_value(const char *method, void *dest, DDS::TypeKind tk, T &source, DDS::MemberId id)
const TypeKind TK_INT8
Definition: TypeObject.h:225
DDS::ReturnCode_t set_float128_value(DDS::MemberId id, CORBA::LongDouble value)
DDS::ReturnCode_t set_char8_values(DDS::MemberId, const DDS::CharSeq &)
DDS::ReturnCode_t get_uint16_values(DDS::UInt16Seq &, DDS::MemberId)
DDS::ReturnCode_t set_float64_values(DDS::MemberId, const DDS::Float64Seq &)
ACE_CDR::ULongLong ULongLong
DDS::ReturnCode_t get_float64_value(CORBA::Double &value, DDS::MemberId id)
DDS::ReturnCode_t set_int8_values(DDS::MemberId, const DDS::Int8Seq &)
sequence< short > Int16Seq
DDS::ReturnCode_t set_int64_values(DDS::MemberId, const DDS::Int64Seq &)
DDS::ReturnCode_t get_enum_raw_value(const char *method, void *dest, DDS::TypeKind tk, Enum source, DDS::MemberId id)
For now dest must be a Int32 and tk must be TK_INT32.
DDS::ReturnCode_t get_int16_values(DDS::Int16Seq &, DDS::MemberId)
DDS::ReturnCode_t set_direct_complex_raw_value(const char *method, T &dest, DDS::MemberId id, const void *source, DDS::TypeKind tk)
DDS::ReturnCode_t get_int64_value_impl(DDS::Int64 &value, DDS::MemberId id)
DDS::ReturnCode_t get_uint8_values(DDS::UInt8Seq &, DDS::MemberId)
DDS::ReturnCode_t set_indirect_complex_raw_value(const char *method, T &dest, DDS::MemberId id, const void *source, DDS::TypeKind tk)
ACE_CDR::Octet TypeKind
Definition: TypeObject.h:210
DDS::ReturnCode_t get_int64_values(DDS::Int64Seq &, DDS::MemberId)
DDS::ReturnCode_t set_string_value(DDS::MemberId id, const char *value)
sequence< unsigned long long > UInt64Seq
DDS::ReturnCode_t set_int64_value(DDS::MemberId id, CORBA::LongLong value)
sequence< boolean > BooleanSeq
ACE_CDR::ULong ULong
const TypeKind TK_BOOLEAN
Definition: TypeObject.h:214
sequence< uint8 > UInt8Seq
ACE_CDR::Boolean Boolean
sequence< octet > ByteSeq
DDS::ReturnCode_t get_float128_value(CORBA::LongDouble &value, DDS::MemberId id)
DDS::ReturnCode_t get_wstring_value(CORBA::WChar *&value, DDS::MemberId id)
DDS::ReturnCode_t get_uint8_value(CORBA::UInt8 &value, DDS::MemberId id)
DDS::ReturnCode_t get_char16_value(CORBA::WChar &value, DDS::MemberId id)
DDS::ReturnCode_t set_float64_value(DDS::MemberId id, CORBA::Double value)
DDS::ReturnCode_t get_string_values(DDS::StringSeq &, DDS::MemberId)
sequence< unsigned long > UInt32Seq
DDS::ReturnCode_t get_uint64_value_impl(DDS::UInt64 &value, DDS::MemberId id)
DDS::ReturnCode_t get_byte_value(DDS::Byte &value, DDS::MemberId id)
DDS::ReturnCode_t set_byte_value(DDS::MemberId id, CORBA::Octet value)
ACE_CDR::UShort UShort
sequence< long double > Float128Seq
DDS::ReturnCode_t get_wstring_values(DDS::WstringSeq &, DDS::MemberId)
const TypeKind TK_CHAR8
Definition: TypeObject.h:227
DDS::ReturnCode_t set_int32_value(DDS::MemberId id, CORBA::Long value)
sequence< float > Float32Seq
DDS::ReturnCode_t get_float32_value(CORBA::Float &value, DDS::MemberId id)
DDS::ReturnCode_t set_uint32_value(DDS::MemberId id, CORBA::ULong value)
DDS::ReturnCode_t get_string_value(char *&value, DDS::MemberId id)
DDS::ReturnCode_t set_simple_raw_value(const char *method, T &dest, DDS::MemberId id, const void *source, DDS::TypeKind tk)
const char *const name
Definition: debug.cpp:60
DDS::ReturnCode_t get_char8_value(CORBA::Char &value, DDS::MemberId id)
const TypeKind TK_FLOAT32
Definition: TypeObject.h:222
DDS::ReturnCode_t set_char16_values(DDS::MemberId, const DDS::WcharSeq &)
DDS::ReturnCode_t set_uint32_values(DDS::MemberId, const DDS::UInt32Seq &)
const TypeKind TK_STRING8
Definition: TypeObject.h:231
DDS::ReturnCode_t set_uint16_value(DDS::MemberId id, CORBA::UShort value)
DDS::ReturnCode_t get_uint16_value(CORBA::UShort &value, DDS::MemberId id)
const TypeKind TK_UINT64
Definition: TypeObject.h:221
sequence< wstring > WstringSeq
DDS::ReturnCode_t set_int8_value(DDS::MemberId id, CORBA::Int8 value)
const TypeKind TK_INT64
Definition: TypeObject.h:218
DDS::ReturnCode_t set_uint8_values(DDS::MemberId, const DDS::UInt8Seq &)
const TypeKind TK_UINT32
Definition: TypeObject.h:220
ACE_CDR::Char Char
DDS::ReturnCode_t set_string_values(DDS::MemberId, const DDS::StringSeq &)
DDS::ReturnCode_t set_complex_value(DDS::MemberId id, DDS::DynamicData_ptr value)
DDS::ReturnCode_t set_char8_value(DDS::MemberId id, CORBA::Char value)
DDS::ReturnCode_t copy(DDS::DynamicData_ptr dest, DDS::DynamicData_ptr src)
DDS::ReturnCode_t get_float64_values(DDS::Float64Seq &, DDS::MemberId)
ACE_CDR::Octet Octet
#define OPENDDS_END_VERSIONED_NAMESPACE_DECL
const T * get_dynamic_data_adapter_value(DDS::DynamicData_ptr dda)
DDS::ReturnCode_t set_int16_values(DDS::MemberId, const DDS::Int16Seq &)
DDS::ReturnCode_t set_int16_value(DDS::MemberId id, CORBA::Short value)
const ReturnCode_t RETCODE_OK
DDS::ReturnCode_t set_float128_values(DDS::MemberId, const DDS::Float128Seq &)
wchar Char16
Definition: DdsDcpsCore.idl:45
ACE_CDR::WChar WChar
const TypeKind TK_UINT8
Definition: TypeObject.h:226
sequence< int8 > Int8Seq
DDS::ReturnCode_t get_int8_value(CORBA::Int8 &value, DDS::MemberId id)
DDS::ReturnCode_t get_int16_value(CORBA::Short &value, DDS::MemberId id)
DDS::DynamicData_ptr get_dynamic_data_adapter(DDS::DynamicType_ptr type, const T &value)
const TypeKind TK_NONE
Definition: TypeObject.h:213
DDS::ReturnCode_t set_uint16_values(DDS::MemberId, const DDS::UInt16Seq &)
sequence< double > Float64Seq
DDS::ReturnCode_t get_char8_values(DDS::CharSeq &, DDS::MemberId)
The Internal API and Implementation of OpenDDS.
Definition: AddressCache.h:28
DynamicDataAdapter_T(DDS::DynamicType_ptr type, const T &value)
const TypeKind TK_CHAR16
Definition: TypeObject.h:228
const TypeKind TK_FLOAT64
Definition: TypeObject.h:223
DDS::ReturnCode_t get_float32_values(DDS::Float32Seq &, DDS::MemberId)
DDS::ReturnCode_t set_uint64_value(DDS::MemberId id, CORBA::ULongLong value)
sequence< string > StringSeq
Definition: DdsDcpsCore.idl:50
DDS::ReturnCode_t get_float128_values(DDS::Float128Seq &, DDS::MemberId)
DDS::ReturnCode_t set_bool_vector_elem_raw_value(const char *method, std::vector< bool >::reference dest, DDS::MemberId id, const void *source, DDS::TypeKind tk)
DDS::ReturnCode_t get_uint64_values(DDS::UInt64Seq &, DDS::MemberId)