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