dds-language_binding.idl 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267
  1. module DDS {
  2. local interface DynamicType;
  3. local interface DynamicTypeBuilder;
  4. valuetype TypeDescriptor;
  5. typedef sequence<string> IncludePathSeq;
  6. local interface DynamicTypeBuilderFactory {
  7. /*static*/ DynamicTypeBuilderFactory get_instance();
  8. /*static*/ DDS::ReturnCode_t delete_instance();
  9. DynamicType get_primitive_type(in TypeKind kind);
  10. DynamicTypeBuilder create_type(in TypeDescriptor descriptor);
  11. DynamicTypeBuilder create_type_copy(in DynamicType type);
  12. DynamicTypeBuilder create_type_w_type_object(in TypeObject type_object);
  13. DynamicTypeBuilder create_string_type(in unsigned long bound);
  14. DynamicTypeBuilder create_wstring_type(in unsigned long bound);
  15. DynamicTypeBuilder create_sequence_type(in DynamicType element_type, in unsigned long bound);
  16. DynamicTypeBuilder create_array_type(in DynamicType element_type, in BoundSeq bound);
  17. DynamicTypeBuilder create_map_type(in DynamicType key_element_type, in DynamicType element_type, in unsigned long bound);
  18. DynamicTypeBuilder create_bitmask_type(in unsigned long bound);
  19. DynamicTypeBuilder create_type_w_uri( in string document_url, in string type_name, in IncludePathSeq include_paths);
  20. DynamicTypeBuilder create_type_w_document( in string document, in string type_name, in IncludePathSeq include_paths);
  21. DDS::ReturnCode_t delete_type(in DynamicType type);
  22. };
  23. interface TypeSupport {
  24. // ReturnCode_t register_type(
  25. // in DomainParticipant domain,
  26. // in string type_name);
  27. // string get_type_name();
  28. // DynamicType get_type();
  29. };
  30. /* Implied IDL for type "Foo":
  31. interface FooTypeSupport : DDS::TypeSupport {
  32. DDS::ReturnCode_t register_type( in DDS::DomainParticipant participant, in string type_name);
  33. string get_type_name();
  34. DynamicType get_type();
  35. Foo create_sample(in DynamicData src);
  36. DynamicData create_dynamic_sample(in Foo src);
  37. }; */
  38. interface DynamicTypeSupport : TypeSupport {
  39. /* This interface shall instantiate the type FooTypeSupport
  40. * defined by the DDS specification where "Foo" is DynamicData.
  41. */
  42. /*static*/ DynamicTypeSupport create_type_support( in DynamicType type);
  43. /*static*/ DDS::ReturnCode_t delete_type_support( in DynamicTypeSupport type_support);
  44. DDS::ReturnCode_t register_type( in DDS::DomainParticipant participant, in ObjectName type_name);
  45. ObjectName get_type_name();
  46. };
  47. typedef map<ObjectName, ObjectName> Parameters;
  48. valuetype AnnotationDescriptor {
  49. public DynamicType type;
  50. DDS::ReturnCode_t get_value( inout ObjectName value, in ObjectName key);
  51. DDS::ReturnCode_t get_all_value( inout Parameters value);
  52. DDS::ReturnCode_t set_value( in ObjectName key, in ObjectName value);
  53. DDS::ReturnCode_t copy_from(in AnnotationDescriptor other);
  54. boolean equals(in AnnotationDescriptor other);
  55. boolean is_consistent();
  56. };
  57. valuetype TypeDescriptor {
  58. public TypeKind kind;
  59. public ObjectName name;
  60. public DynamicType base_type;
  61. public DynamicType discriminator_type;
  62. public BoundSeq bound;
  63. @optional public DynamicType element_type;
  64. @optional public DynamicType key_element_type;
  65. DDS::ReturnCode_t copy_from(in TypeDescriptor other);
  66. boolean equals(in TypeDescriptor other);
  67. boolean is_consistent();
  68. };
  69. valuetype MemberDescriptor {
  70. public ObjectName name;
  71. public MemberId id;
  72. public DynamicType type;
  73. public string default_value;
  74. public unsigned long index;
  75. public UnionCaseLabelSeq label;
  76. public boolean default_label;
  77. DDS::ReturnCode_t copy_from(in MemberDescriptor descriptor);
  78. boolean equals(in MemberDescriptor descriptor);
  79. boolean is_consistent();
  80. };
  81. local interface DynamicTypeMember {
  82. DDS::ReturnCode_t get_descriptor( inout MemberDescriptor descriptor);
  83. unsigned long get_annotation_count();
  84. DDS::ReturnCode_t get_annotation( inout AnnotationDescriptor descriptor, in unsigned long idx);
  85. boolean equals(in DynamicTypeMember other);
  86. MemberId get_id();
  87. ObjectName get_name();
  88. };
  89. typedef map<ObjectName, DynamicTypeMember> DynamicTypeMembersByName;
  90. typedef map<MemberId, DynamicTypeMember> DynamicTypeMembersById;
  91. local interface DynamicTypeBuilder {
  92. DDS::ReturnCode_t get_descriptor( inout TypeDescriptor descriptor);
  93. ObjectName get_name();
  94. TypeKind get_kind();
  95. DDS::ReturnCode_t get_member_by_name( inout DynamicTypeMember member, in ObjectName name);
  96. DDS::ReturnCode_t get_all_members_by_name( inout DynamicTypeMembersByName member);
  97. DDS::ReturnCode_t get_member( inout DynamicTypeMember member, in MemberId id);
  98. DDS::ReturnCode_t get_all_members( inout DynamicTypeMembersById member);
  99. unsigned long get_annotation_count();
  100. DDS::ReturnCode_t get_annotation( inout AnnotationDescriptor descriptor, in unsigned long idx);
  101. boolean equals(in DynamicType other);
  102. DDS::ReturnCode_t add_member(in MemberDescriptor descriptor);
  103. DDS::ReturnCode_t apply_annotation( in AnnotationDescriptor descriptor);
  104. DynamicType build();
  105. };
  106. local interface DynamicType {
  107. DDS::ReturnCode_t get_descriptor( inout TypeDescriptor descriptor);
  108. ObjectName get_name();
  109. TypeKind get_kind();
  110. DDS::ReturnCode_t get_member_by_name( inout DynamicTypeMember member, in ObjectName name);
  111. DDS::ReturnCode_t get_all_members_by_name( inout DynamicTypeMembersByName member);
  112. DDS::ReturnCode_t get_member( inout DynamicTypeMember member, in MemberId id);
  113. DDS::ReturnCode_t get_all_members( inout DynamicTypeMembersById member);
  114. unsigned long get_annotation_count();
  115. DDS::ReturnCode_t get_annotation( inout AnnotationDescriptor descriptor, in unsigned long idx);
  116. boolean equals(in DynamicType other);
  117. };
  118. local interface DynamicData;
  119. local interface DynamicDataFactory {
  120. /*static*/ DynamicDataFactory get_instance();
  121. /*static*/ DDS::ReturnCode_t delete_instance();
  122. DynamicData create_data();
  123. DDS::ReturnCode_t delete_data(in DynamicData data);
  124. };
  125. typedef sequence<long> Int32Seq;
  126. typedef sequence<unsigned long> UInt32Seq;
  127. typedef sequence<short> Int16Seq;
  128. typedef sequence<unsigned short> UInt16Seq;
  129. typedef sequence<long long> Int64Seq;
  130. typedef sequence<unsigned long long> UInt64Seq;
  131. typedef sequence<float> Float32Seq;
  132. typedef sequence<double> Float64Seq;
  133. typedef sequence<long double> Float128Seq;
  134. typedef sequence<char> CharSeq;
  135. typedef sequence<wchar> WcharSeq;
  136. typedef sequence<boolean> BooleanSeq;
  137. typedef sequence<octet> ByteSeq;
  138. // typedef sequence<string> StringSeq;
  139. typedef sequence<wstring> WstringSeq;
  140. local interface DynamicData {
  141. readonly attribute DynamicType type;
  142. DDS::ReturnCode_t get_descriptor( inout MemberDescriptor value, in MemberId id);
  143. DDS::ReturnCode_t set_descriptor( in MemberId id, in MemberDescriptor value);
  144. boolean equals(in DynamicData other);
  145. MemberId get_member_id_by_name(in ObjectName name);
  146. MemberId get_member_id_at_index(in unsigned long index);
  147. unsigned long get_item_count();
  148. DDS::ReturnCode_t clear_all_values();
  149. DDS::ReturnCode_t clear_nonkey_values();
  150. DDS::ReturnCode_t clear_value(in MemberId id);
  151. DynamicData loan_value(in MemberId id);
  152. DDS::ReturnCode_t return_loaned_value(in DynamicData value);
  153. DynamicData clone();
  154. DDS::ReturnCode_t get_int32_value( inout long value, in MemberId id);
  155. DDS::ReturnCode_t set_int32_value( in MemberId id, in long value);
  156. DDS::ReturnCode_t get_uint32_value( inout unsigned long value, in MemberId id);
  157. DDS::ReturnCode_t set_uint32_value( in MemberId id, in unsigned long value);
  158. DDS::ReturnCode_t get_int16_value( inout short value, in MemberId id);
  159. DDS::ReturnCode_t set_int16_value( in MemberId id, in short value);
  160. DDS::ReturnCode_t get_uint16_value( inout unsigned short value, in MemberId id);
  161. DDS::ReturnCode_t set_uint16_value( in MemberId id, in unsigned short value);
  162. DDS::ReturnCode_t get_int64_value( inout long long value, in MemberId id);
  163. DDS::ReturnCode_t set_int64_value( in MemberId id, in long long value);
  164. DDS::ReturnCode_t get_uint64_value( inout unsigned long long value, in MemberId id);
  165. DDS::ReturnCode_t set_uint64_value( in MemberId id, in unsigned long long value);
  166. DDS::ReturnCode_t get_float32_value( inout float value, in MemberId id);
  167. DDS::ReturnCode_t set_float32_value( in MemberId id, in float value);
  168. DDS::ReturnCode_t get_float64_value( inout double value, in MemberId id);
  169. DDS::ReturnCode_t set_float64_value( in MemberId id, in double value);
  170. DDS::ReturnCode_t get_float128_value( inout long double value, in MemberId id);
  171. DDS::ReturnCode_t set_float128_value( in MemberId id, in long double value);
  172. DDS::ReturnCode_t get_char8_value( inout char value, in MemberId id);
  173. DDS::ReturnCode_t set_char8_value( in MemberId id, in char value);
  174. DDS::ReturnCode_t get_char16_value( inout wchar value, in MemberId id);
  175. DDS::ReturnCode_t set_char16_value( in MemberId id, in wchar value);
  176. DDS::ReturnCode_t get_byte_value( inout octet value, in MemberId id);
  177. DDS::ReturnCode_t set_byte_value( in MemberId id, in octet value);
  178. DDS::ReturnCode_t get_boolean_value( inout boolean value, in MemberId id);
  179. DDS::ReturnCode_t set_boolean_value( in MemberId id, in boolean value);
  180. DDS::ReturnCode_t get_string_value( inout string value, in MemberId id);
  181. DDS::ReturnCode_t set_string_value( in MemberId id, in string value);
  182. DDS::ReturnCode_t get_wstring_value( inout wstring value, in MemberId id);
  183. DDS::ReturnCode_t set_wstring_value( in MemberId id, in wstring value);
  184. DDS::ReturnCode_t get_complex_value( inout DynamicData value, in MemberId id);
  185. DDS::ReturnCode_t set_complex_value( in MemberId id, in DynamicData value);
  186. DDS::ReturnCode_t get_int32_values( inout Int32Seq value, in MemberId id);
  187. DDS::ReturnCode_t set_int32_values( in MemberId id, in Int32Seq value);
  188. DDS::ReturnCode_t get_uint32_values( inout UInt32Seq value, in MemberId id);
  189. DDS::ReturnCode_t set_uint32_values( in MemberId id, in UInt32Seq value);
  190. DDS::ReturnCode_t get_int16_values( inout Int16Seq value, in MemberId id);
  191. DDS::ReturnCode_t set_int16_values( in MemberId id, in Int16Seq value);
  192. DDS::ReturnCode_t get_uint16_values( inout UInt16Seq value, in MemberId id);
  193. DDS::ReturnCode_t set_uint16_values( in MemberId id, in UInt16Seq value);
  194. DDS::ReturnCode_t get_int64_values( inout Int64Seq value, in MemberId id);
  195. DDS::ReturnCode_t set_int64_values( in MemberId id, in Int64Seq value);
  196. DDS::ReturnCode_t get_uint64_values( inout UInt64Seq value, in MemberId id);
  197. DDS::ReturnCode_t set_uint64_values( in MemberId id, in UInt64Seq value);
  198. DDS::ReturnCode_t get_float32_values( inout Float32Seq value, in MemberId id);
  199. DDS::ReturnCode_t set_float32_values( in MemberId id, in Float32Seq value);
  200. DDS::ReturnCode_t get_float64_values( inout Float64Seq value, in MemberId id);
  201. DDS::ReturnCode_t set_float64_values( in MemberId id, in Float64Seq value);
  202. DDS::ReturnCode_t get_float128_values( inout Float128Seq value, in MemberId id);
  203. DDS::ReturnCode_t set_float128_values( in MemberId id, in Float128Seq value);
  204. DDS::ReturnCode_t get_char8_values( inout CharSeq value, in MemberId id);
  205. DDS::ReturnCode_t set_char8_values( in MemberId id, in CharSeq value);
  206. DDS::ReturnCode_t get_char16_values( inout WcharSeq value, in MemberId id);
  207. DDS::ReturnCode_t set_char16_values( in MemberId id, in WcharSeq value);
  208. DDS::ReturnCode_t get_byte_values( inout ByteSeq value, in MemberId id);
  209. DDS::ReturnCode_t set_byte_values( in MemberId id, in ByteSeq value);
  210. DDS::ReturnCode_t get_boolean_values( inout BooleanSeq value, in MemberId id);
  211. DDS::ReturnCode_t set_boolean_values( in MemberId id, in BooleanSeq value);
  212. DDS::ReturnCode_t get_string_values( inout StringSeq value, in MemberId id);
  213. DDS::ReturnCode_t set_string_values( in MemberId id, in StringSeq value);
  214. DDS::ReturnCode_t get_wstring_values( inout WstringSeq value, in MemberId id);
  215. DDS::ReturnCode_t set_wstring_values( in MemberId id, in WstringSeq value);
  216. }; // local interface DynamicData
  217. }; // end module DDS