OpenDDS  Snapshot(2023/04/28-20:55)
DdsDynamicData.idl
Go to the documentation of this file.
1 /*
2  *
3  *
4  * Distributed under the OpenDDS License.
5  * See: http://www.opendds.org/license.html
6  */
7 
8 #ifndef OPENDDS_DDS_DYNAMIC_DATA_IDL
9 #define OPENDDS_DDS_DYNAMIC_DATA_IDL
10 
11 #ifndef OPENDDS_SAFETY_PROFILE
12 
14 #include <dds/DdsDcpsDomain.idl>
16 
17 module DDS {
18  local interface DynamicType;
19  valuetype TypeDescriptor;
20 
21  typedef sequence<string> IncludePathSeq;
22  typedef string<256> ObjectName;
23 
24  // FUTURE: Define TypeObject.
25  local interface TypeObject;
26  // FUTURE: Use correct definition of BoundSeq once defined by spec.
27  typedef sequence<unsigned long> BoundSeq;
28 
29  // ---------- TypeKinds (begin) -------------------
30  typedef octet TypeKind;
31 
32  // FUTURE: Support map.
33  //typedef map<ObjectName, ObjectName> Parameters;
34  local interface Parameters;
35 
37  public DynamicType type;
38  DDS::ReturnCode_t get_value(
39  inout ObjectName value, in ObjectName key);
40  DDS::ReturnCode_t get_all_value(
41  inout Parameters value);
42  DDS::ReturnCode_t set_value(
43  in ObjectName key, in ObjectName value);
44  DDS::ReturnCode_t copy_from(in AnnotationDescriptor other);
45  boolean equals(in AnnotationDescriptor other);
46  boolean is_consistent();
47  };
48 
50  public string placement;
51  public string text;
52 
53  DDS::ReturnCode_t copy_from(
54  in VerbatimTextDescriptor other);
55  boolean equals(
56  in VerbatimTextDescriptor other);
57  boolean is_consistent();
58  };
59 
64  };
69  };
70 
71  valuetype TypeDescriptor {
72  public TypeKind kind;
73  public ObjectName name;
76  public BoundSeq bound;
77  /*@optional*/ public DynamicType element_type;
78  /*@optional*/ public DynamicType key_element_type;
80  public boolean is_nested;
81  DDS::ReturnCode_t copy_from(in TypeDescriptor other);
82  boolean equals(in TypeDescriptor other);
83  boolean is_consistent();
84  };
85 
86  typedef unsigned long MemberId;
87  typedef sequence<long> UnionCaseLabelSeq;
88 
89  valuetype MemberDescriptor {
90  public ObjectName name;
91  public MemberId id;
92  public DynamicType type;
93  public string default_value;
94  public unsigned long index;
95  public UnionCaseLabelSeq label;
97  public boolean is_key;
98  public boolean is_optional;
99  public boolean is_must_understand;
100  public boolean is_shared;
101  public boolean is_default_label;
102  DDS::ReturnCode_t copy_from(in MemberDescriptor descriptor);
103  boolean equals(in MemberDescriptor descriptor);
104  boolean is_consistent();
105  };
106 
107  local interface DynamicTypeMember {
108  DDS::ReturnCode_t get_descriptor(
109  inout MemberDescriptor descriptor);
110  unsigned long get_annotation_count();
111  DDS::ReturnCode_t get_annotation(
112  inout AnnotationDescriptor descriptor,
113  in unsigned long idx);
114  unsigned long get_verbatim_text_count();
115  DDS::ReturnCode_t get_verbatim_text(
116  inout VerbatimTextDescriptor descriptor,
117  in unsigned long idx);
118  boolean equals(in DynamicTypeMember other);
119  MemberId get_id();
120  ObjectName get_name();
121  };
122 
123  // FUTURE: Support map.
124  // typedef map<ObjectName, DynamicTypeMember> DynamicTypeMembersByName;
125  local interface DynamicTypeMembersByName {};
126  // FUTURE: Support map.
127  // typedef map<MemberId, DynamicTypeMember> DynamicTypeMembersById;
128  local interface DynamicTypeMembersById {};
129 
130  local interface DynamicType {
131  DDS::ReturnCode_t get_descriptor(
132  inout TypeDescriptor descriptor);
133  ObjectName get_name();
134  TypeKind get_kind();
135  DDS::ReturnCode_t get_member_by_name(
136  inout DynamicTypeMember member,
137  in ObjectName name);
138  DDS::ReturnCode_t get_all_members_by_name(
139  inout DynamicTypeMembersByName member);
140  DDS::ReturnCode_t get_member(
141  inout DynamicTypeMember member,
142  in MemberId id);
143  DDS::ReturnCode_t get_all_members(
144  inout DynamicTypeMembersById member);
145  unsigned long get_member_count();
146  DDS::ReturnCode_t get_member_by_index(
147  inout DynamicTypeMember member,
148  in unsigned long index);
149  unsigned long get_annotation_count();
150  DDS::ReturnCode_t get_annotation(
151  inout AnnotationDescriptor descriptor,
152  in unsigned long idx);
153  unsigned long get_verbatim_text_count();
154  DDS::ReturnCode_t get_verbatim_text(
155  inout VerbatimTextDescriptor descriptor,
156  in unsigned long idx);
157  boolean equals(in DynamicType other);
158 
159  void clear();
160  };
161 
162  local interface DynamicData;
163 
164  local interface DynamicDataFactoryInterf {
165  // Implemented in C++
166  //static DynamicDataFactory get_instance();
167  // Not Implemented
168  //static DDS::ReturnCode_t delete_instance();
169  DynamicData create_data(in DynamicType type);
170  /// This is a NOP in OpenDDS
171  DDS::ReturnCode_t delete_data(in DynamicData data);
172  };
173 
174  local interface DynamicData {
175  readonly attribute DynamicType type;
176 
177  DDS::ReturnCode_t get_descriptor(
178  inout MemberDescriptor value,
179  in MemberId id);
180  DDS::ReturnCode_t set_descriptor(
181  in MemberId id,
183  boolean equals(in DynamicData other);
184  MemberId get_member_id_by_name(in ObjectName name);
185  MemberId get_member_id_at_index(in unsigned long index);
186  unsigned long get_item_count();
187  DDS::ReturnCode_t clear_all_values();
188  DDS::ReturnCode_t clear_nonkey_values();
189  DDS::ReturnCode_t clear_value(in MemberId id);
190  DynamicData loan_value(in MemberId id);
191  DDS::ReturnCode_t return_loaned_value(in DynamicData value);
192  DynamicData clone();
193  DDS::ReturnCode_t get_int32_value(
194  inout long value,
195  in MemberId id);
196  DDS::ReturnCode_t set_int32_value(
197  in MemberId id,
198  in long value);
199  DDS::ReturnCode_t get_uint32_value(
200  inout unsigned long value,
201  in MemberId id);
202  DDS::ReturnCode_t set_uint32_value(
203  in MemberId id,
204  in unsigned long value);
205  DDS::ReturnCode_t get_int8_value(
206  inout int8 value,
207  in MemberId id);
208  DDS::ReturnCode_t set_int8_value(
209  in MemberId id,
210  in int8 value);
211  DDS::ReturnCode_t get_uint8_value(
212  inout uint8 value,
213  in MemberId id);
214  DDS::ReturnCode_t set_uint8_value(
215  in MemberId id,
216  in uint8 value);
217  DDS::ReturnCode_t get_int16_value(
218  inout short value,
219  in MemberId id);
220  DDS::ReturnCode_t set_int16_value(
221  in MemberId id,
222  in short value);
223  DDS::ReturnCode_t get_uint16_value(
224  inout unsigned short value,
225  in MemberId id);
226  DDS::ReturnCode_t set_uint16_value(
227  in MemberId id,
228  in unsigned short value);
229  DDS::ReturnCode_t get_int64_value(
230  inout long long value,
231  in MemberId id);
232  DDS::ReturnCode_t set_int64_value(
233  in MemberId id,
234  in long long value);
235  DDS::ReturnCode_t get_uint64_value(
236  inout unsigned long long value,
237  in MemberId id);
238  DDS::ReturnCode_t set_uint64_value(
239  in MemberId id,
240  in unsigned long long value);
241  DDS::ReturnCode_t get_float32_value(
242  inout float value,
243  in MemberId id);
244  DDS::ReturnCode_t set_float32_value(
245  in MemberId id,
246  in float value);
247  DDS::ReturnCode_t get_float64_value(
248  inout double value,
249  in MemberId id);
250  DDS::ReturnCode_t set_float64_value(
251  in MemberId id,
252  in double value);
253  DDS::ReturnCode_t get_float128_value(
254  inout long double value,
255  in MemberId id);
256  DDS::ReturnCode_t set_float128_value(
257  in MemberId id,
258  in long double value);
259  DDS::ReturnCode_t get_char8_value(
260  inout char value,
261  in MemberId id);
262  DDS::ReturnCode_t set_char8_value(
263  in MemberId id,
264  in char value);
265  DDS::ReturnCode_t get_char16_value(
266  inout wchar value,
267  in MemberId id);
268  DDS::ReturnCode_t set_char16_value(
269  in MemberId id,
270  in wchar value);
271  DDS::ReturnCode_t get_byte_value(
272  inout octet value,
273  in MemberId id);
274  DDS::ReturnCode_t set_byte_value(
275  in MemberId id,
276  in octet value);
277  DDS::ReturnCode_t get_boolean_value(
278  inout boolean value,
279  in MemberId id);
280  DDS::ReturnCode_t set_boolean_value(
281  in MemberId id,
282  in boolean value);
283  DDS::ReturnCode_t get_string_value(
284  inout string value,
285  in MemberId id);
286  DDS::ReturnCode_t set_string_value(
287  in MemberId id,
288  in string value);
289  DDS::ReturnCode_t get_wstring_value(
290  inout wstring value,
291  in MemberId id);
292  DDS::ReturnCode_t set_wstring_value(
293  in MemberId id,
294  in wstring value);
295  DDS::ReturnCode_t get_complex_value(
296  inout DynamicData value,
297  in MemberId id);
298  DDS::ReturnCode_t set_complex_value(
299  in MemberId id,
300  in DynamicData value);
301  DDS::ReturnCode_t get_int32_values(
302  inout Int32Seq value,
303  in MemberId id);
304  DDS::ReturnCode_t set_int32_values(
305  in MemberId id,
306  in Int32Seq value);
307  DDS::ReturnCode_t get_uint32_values(
308  inout UInt32Seq value,
309  in MemberId id);
310  DDS::ReturnCode_t set_uint32_values(
311  in MemberId id,
312  in UInt32Seq value);
313  DDS::ReturnCode_t get_int8_values(
314  inout Int8Seq value,
315  in MemberId id);
316 
317  DDS::ReturnCode_t set_int8_values(
318  in MemberId id,
319  in Int8Seq value);
320  DDS::ReturnCode_t get_uint8_values(
321  inout UInt8Seq value,
322  in MemberId id);
323  DDS::ReturnCode_t set_uint8_values(
324  in MemberId id,
325  in UInt8Seq value);
326  DDS::ReturnCode_t get_int16_values(
327  inout Int16Seq value,
328  in MemberId id);
329  DDS::ReturnCode_t set_int16_values(
330  in MemberId id,
331  in Int16Seq value);
332  DDS::ReturnCode_t get_uint16_values(
333  inout UInt16Seq value,
334  in MemberId id);
335  DDS::ReturnCode_t set_uint16_values(
336  in MemberId id,
337  in UInt16Seq value);
338  DDS::ReturnCode_t get_int64_values(
339  inout Int64Seq value,
340  in MemberId id);
341  DDS::ReturnCode_t set_int64_values(
342  in MemberId id,
343  in Int64Seq value);
344  DDS::ReturnCode_t get_uint64_values(
345  inout UInt64Seq value,
346  in MemberId id);
347  DDS::ReturnCode_t set_uint64_values(
348  in MemberId id,
349  in UInt64Seq value);
350  DDS::ReturnCode_t get_float32_values(
351  inout Float32Seq value,
352  in MemberId id);
353  DDS::ReturnCode_t set_float32_values(
354  in MemberId id,
355  in Float32Seq value);
356  DDS::ReturnCode_t get_float64_values(
357  inout Float64Seq value,
358  in MemberId id);
359  DDS::ReturnCode_t set_float64_values(
360  in MemberId id,
361  in Float64Seq value);
362  DDS::ReturnCode_t get_float128_values(
363  inout Float128Seq value,
364  in MemberId id);
365  DDS::ReturnCode_t set_float128_values(
366  in MemberId id,
367  in Float128Seq value);
368  DDS::ReturnCode_t get_char8_values(
369  inout CharSeq value,
370  in MemberId id);
371  DDS::ReturnCode_t set_char8_values(
372  in MemberId id,
373  in CharSeq value);
374  DDS::ReturnCode_t get_char16_values(
375  inout WcharSeq value,
376  in MemberId id);
377  DDS::ReturnCode_t set_char16_values(
378  in MemberId id,
379  in WcharSeq value);
380  DDS::ReturnCode_t get_byte_values(
381  inout ByteSeq value,
382  in MemberId id);
383  DDS::ReturnCode_t set_byte_values(
384  in MemberId id,
385  in ByteSeq value);
386  DDS::ReturnCode_t get_boolean_values(
387  inout BooleanSeq value,
388  in MemberId id);
389  DDS::ReturnCode_t set_boolean_values(
390  in MemberId id,
391  in BooleanSeq value);
392  DDS::ReturnCode_t get_string_values(
393  inout StringSeq value,
394  in MemberId id);
395  DDS::ReturnCode_t set_string_values(
396  in MemberId id,
397  in StringSeq value);
398  DDS::ReturnCode_t get_wstring_values(
399  inout WstringSeq value,
400  in MemberId id);
401  DDS::ReturnCode_t set_wstring_values(
402  in MemberId id,
403  in WstringSeq value);
404  }; // local interface DynamicData
405 };
406 
407 #endif // OPENDDS_SAFETY_PROFILE
408 
409 #endif /* OPENDDS_DDS_DYNAMIC_DATA_IDL */
sequence< unsigned short > UInt16Seq
sequence< long > Int32Seq
sequence< wchar > WcharSeq
const LogLevel::Value value
Definition: debug.cpp:61
public ObjectName name
sequence< unsigned long > BoundSeq
sequence< char > CharSeq
sequence< long long > Int64Seq
readonly attribute DynamicType type
sequence< octet > key
public DynamicType base_type
public boolean is_optional
public DynamicType element_type
public unsigned long index
sequence< short > Int16Seq
string< 256 > ObjectName
public UnionCaseLabelSeq label
public boolean is_nested
sequence< unsigned long long > UInt64Seq
unsigned long MemberId
sequence< boolean > BooleanSeq
public DynamicType discriminator_type
sequence< uint8 > UInt8Seq
sequence< octet > ByteSeq
public BoundSeq bound
TryConstructKind
sequence< string > IncludePathSeq
public TryConstructKind try_construct_kind
sequence< unsigned long > UInt32Seq
public string default_value
sequence< long double > Float128Seq
public DynamicType type
sequence< float > Float32Seq
The End User API.
public boolean is_shared
const char *const name
Definition: debug.cpp:60
public DynamicType key_element_type
octet TypeKind
ExtensibilityKind
public DynamicType type
sequence< wstring > WstringSeq
public boolean is_default_label
public ExtensibilityKind extensibility_kind
public boolean is_must_understand
sequence< int8 > Int8Seq
public ObjectName name
sequence< long > UnionCaseLabelSeq
sequence< double > Float64Seq
public TypeKind kind
sequence< string > StringSeq
Definition: DdsDcpsCore.idl:50