00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #ifndef COREDX_DYNTYPE_H
00024 #define COREDX_DYNTYPE_H
00025
00026 #include <dds/dds.h>
00027 #include <dds/dds_typesupport.h>
00028
00029 #ifdef __cplusplus
00030 extern "C" {
00031 #endif
00032
00033 typedef struct _TypeDefinition * DDS_TypeDefinition;
00034 typedef struct _DynamicType * DDS_DynamicType;
00035
00054 typedef enum {
00055 DDS_TYPECODE_NULL=0,
00056 DDS_TYPECODE_SHORT,
00057 DDS_TYPECODE_LONG,
00058 DDS_TYPECODE_USHORT,
00059 DDS_TYPECODE_ULONG,
00060 DDS_TYPECODE_FLOAT,
00061 DDS_TYPECODE_DOUBLE,
00062 DDS_TYPECODE_BOOLEAN,
00063 DDS_TYPECODE_CHAR,
00064 DDS_TYPECODE_OCTET,
00065 DDS_TYPECODE_STRUCT,
00066 DDS_TYPECODE_UNION,
00067 DDS_TYPECODE_ENUM,
00068 DDS_TYPECODE_STRING,
00069 DDS_TYPECODE_SEQUENCE,
00070 DDS_TYPECODE_ARRAY,
00071 DDS_TYPECODE_ALIAS,
00072 DDS_TYPECODE_LONGLONG,
00073 DDS_TYPECODE_ULONGLONG,
00074 DDS_TYPECODE_LONGDOUBLE,
00075 DDS_TYPECODE_WCHAR,
00076 DDS_TYPECODE_WSTRING,
00077 DDS_TYPECODE_VALUE,
00078 DDS_TYPECODE_VALUE_PARAM
00079 } DDS_TypeCodeKind;
00080
00081 typedef struct DDS_DynamicType_EnumConstant {
00082 char * name;
00083 uint32_t value;
00084 } DDS_DynamicType_EnumConstant_t;
00085
00103 COREDX_C_ADD_API DDS_TypeCodeKind DDS_DynamicType_get_type( DDS_DynamicType t );
00104
00105
00110 COREDX_C_ADD_API unsigned char DDS_DynamicType_get_octet( DDS_DynamicType t );
00115 COREDX_C_ADD_API unsigned char DDS_DynamicType_get_boolean( DDS_DynamicType t );
00120 COREDX_C_ADD_API char DDS_DynamicType_get_char( DDS_DynamicType t );
00125 COREDX_C_ADD_API int16_t DDS_DynamicType_get_short( DDS_DynamicType t );
00130 COREDX_C_ADD_API uint16_t DDS_DynamicType_get_ushort( DDS_DynamicType t );
00135 COREDX_C_ADD_API int32_t DDS_DynamicType_get_long( DDS_DynamicType t );
00140 COREDX_C_ADD_API uint32_t DDS_DynamicType_get_ulong( DDS_DynamicType t );
00145 COREDX_C_ADD_API int64_t DDS_DynamicType_get_longlong( DDS_DynamicType t );
00150 COREDX_C_ADD_API uint64_t DDS_DynamicType_get_ulonglong( DDS_DynamicType t );
00155 COREDX_C_ADD_API float DDS_DynamicType_get_float( DDS_DynamicType t );
00160 COREDX_C_ADD_API double DDS_DynamicType_get_double( DDS_DynamicType t );
00161
00162
00163
00164
00165
00166
00167
00173 COREDX_C_ADD_API int32_t DDS_DynamicType_enum_get_num_constants( DDS_DynamicType t);
00174
00182 COREDX_C_ADD_API void DDS_DynamicType_EnumConstant_delete( DDS_DynamicType_EnumConstant_t * ec);
00183
00190 COREDX_C_ADD_API DDS_DynamicType_EnumConstant_t * DDS_DynamicType_enum_get_constant( DDS_DynamicType t,
00191 int32_t index );
00198 COREDX_C_ADD_API DDS_DynamicType_EnumConstant_t * DDS_DynamicType_enum_get_constant_by_name( DDS_DynamicType t,
00199 const char * name);
00206 COREDX_C_ADD_API DDS_DynamicType_EnumConstant_t * DDS_DynamicType_enum_get_constant_by_value( DDS_DynamicType t,
00207 uint32_t val);
00211 COREDX_C_ADD_API uint32_t DDS_DynamicType_enum_get_value( DDS_DynamicType t );
00212
00213
00214
00215
00220 COREDX_C_ADD_API const char * DDS_DynamicType_get_string( DDS_DynamicType t );
00221
00222
00232 COREDX_C_ADD_API uint32_t DDS_DynamicType_get_max_length(DDS_DynamicType t);
00233
00234
00242 COREDX_C_ADD_API uint32_t DDS_DynamicType_get_length(DDS_DynamicType t);
00250 COREDX_C_ADD_API DDS_DynamicType DDS_DynamicType_get_element_type(DDS_DynamicType t);
00258 COREDX_C_ADD_API DDS_DynamicType DDS_DynamicType_get_element(DDS_DynamicType t, uint32_t n);
00259
00260
00269 COREDX_C_ADD_API uint32_t DDS_DynamicType_get_num_fields(DDS_DynamicType t);
00276 COREDX_C_ADD_API DDS_DynamicType DDS_DynamicType_get_field(DDS_DynamicType t, uint32_t n);
00283 COREDX_C_ADD_API const char * DDS_DynamicType_get_field_name(DDS_DynamicType t, uint32_t n);
00284
00285
00293 COREDX_C_ADD_API unsigned char DDS_DynamicType_get_field_key(DDS_DynamicType t, uint32_t n);
00294
00295
00302 COREDX_C_ADD_API DDS_DynamicType DDS_DynamicType_get_discriminator(DDS_DynamicType t);
00310 COREDX_C_ADD_API int32_t DDS_DynamicType_get_default_field(DDS_DynamicType t);
00318 COREDX_C_ADD_API uint32_t DDS_DynamicType_get_field_num_labels(DDS_DynamicType t, uint32_t field);
00327 COREDX_C_ADD_API int32_t DDS_DynamicType_get_field_label(DDS_DynamicType t, uint32_t field, uint32_t label);
00333 COREDX_C_ADD_API DDS_DynamicType DDS_DynamicType_get_selected_field(DDS_DynamicType t);
00334
00335
00336
00337
00338
00343 COREDX_C_API DDS_TypeDefinition DDS_create_type_definition(const unsigned char *typecodes,
00344 uint32_t tc_len,
00345 unsigned char tc_encoding);
00354 COREDX_C_API DDS_TypeDefinition DDS_create_type_definition_from_typecode(const unsigned char *typecodes,
00355 uint32_t tc_len,
00356 unsigned char tc_encoding);
00363 COREDX_C_API DDS_TypeDefinition DDS_create_type_definition_from_dynamictype(DDS_DynamicType dtype);
00364
00371 COREDX_C_ADD_API DDS_TypeSupport DDS_create_dynamic_typesupport( DDS_TypeDefinition type_def );
00372
00377 COREDX_C_ADD_API DDS_TypeSupport DDS_DynamicType_create_typesupport( DDS_DynamicType t );
00378
00382 COREDX_C_ADD_API void DDS_destroy_dynamic_typesupport(DDS_TypeSupport ts);
00383
00391 COREDX_C_ADD_API DDS_ReturnCode_t DynamicTypeTypeSupport_register_type(DDS_DomainParticipant domain,
00392 const char * type_name,
00393 DDS_TypeSupport type_support);
00394
00401 COREDX_C_ADD_API DDS_ReturnCode_t DDS_DynamicTypeTypeSupport_register_type(DDS_TypeSupport type_support,
00402 DDS_DomainParticipant domain,
00403 const char * type_name);
00404
00413 COREDX_C_ADD_API DDS_ReturnCode_t DDS_DynamicTypeTypeSupport_set_encoding(DDS_TypeSupport type_support,
00414 DDS_DataRepresentationId_t code);
00415
00424 COREDX_C_ADD_API DDS_ReturnCode_t DDS_DynamicTypeTypeSupport_set_decoding(DDS_TypeSupport type_support,
00425 DDS_DataRepresentationId_t code);
00426
00432 COREDX_C_API DDS_DynamicType DDS_TypeDefinition_create_dynamictype(DDS_TypeDefinition type_def);
00433
00434 DECLARE_SEQ( DDS_DynamicType , DDS_DynamicTypePtrSeq );
00435
00436
00437
00438
00446 typedef DDS_DataReader DDS_DynamicTypeDataReader;
00447
00448 COREDX_C_ADD_API DDS_ReturnCode_t DDS_DynamicTypeDataReader_read ( DDS_DataReader dr,
00449 DDS_DynamicTypePtrSeq * received_data,
00450 DDS_SampleInfoSeq * sample_infos,
00451 int max_samples,
00452 DDS_SampleStateMask sample_states,
00453 DDS_ViewStateMask view_states,
00454 DDS_InstanceStateMask instance_states);
00455
00456 COREDX_C_ADD_API DDS_ReturnCode_t DDS_DynamicTypeDataReader_take ( DDS_DataReader dr,
00457 DDS_DynamicTypePtrSeq * received_data,
00458 DDS_SampleInfoSeq * sample_infos,
00459 int max_samples,
00460 DDS_SampleStateMask sample_states,
00461 DDS_ViewStateMask view_states,
00462 DDS_InstanceStateMask instance_states);
00463 COREDX_C_ADD_API DDS_ReturnCode_t DDS_DynamicTypeDataReader_read_w_condition ( DDS_DataReader dr,
00464 DDS_DynamicTypePtrSeq * received_data,
00465 DDS_SampleInfoSeq * sample_infos,
00466 int max_samples,
00467 DDS_ReadCondition a_condition);
00468
00469 COREDX_C_ADD_API DDS_ReturnCode_t DDS_DynamicTypeDataReader_take_w_condition ( DDS_DataReader dr,
00470 DDS_DynamicTypePtrSeq * received_data,
00471 DDS_SampleInfoSeq * sample_infos,
00472 int max_samples,
00473 DDS_ReadCondition a_condition);
00474
00475 COREDX_C_ADD_API DDS_ReturnCode_t DDS_DynamicTypeDataReader_read_next_sample ( DDS_DataReader dr,
00476 DDS_DynamicType received_data,
00477 DDS_SampleInfo * sample_info);
00478
00479 COREDX_C_ADD_API DDS_ReturnCode_t DDS_DynamicTypeDataReader_take_next_sample ( DDS_DataReader dr,
00480 DDS_DynamicType received_data,
00481 DDS_SampleInfo * sample_info);
00482
00483 COREDX_C_ADD_API DDS_ReturnCode_t DDS_DynamicTypeDataReader_read_instance ( DDS_DataReader dr,
00484 DDS_DynamicTypePtrSeq * received_data,
00485 DDS_SampleInfoSeq * sample_infos,
00486 int max_samples,
00487 DDS_InstanceHandle_t a_handle,
00488 DDS_SampleStateMask sample_states,
00489 DDS_ViewStateMask view_states,
00490 DDS_InstanceStateMask instance_states);
00491
00492 COREDX_C_ADD_API DDS_ReturnCode_t DDS_DynamicTypeDataReader_take_instance ( DDS_DataReader dr,
00493 DDS_DynamicTypePtrSeq * received_data,
00494 DDS_SampleInfoSeq * sample_infos,
00495 int max_samples,
00496 DDS_InstanceHandle_t a_handle,
00497 DDS_SampleStateMask sample_states,
00498 DDS_ViewStateMask view_states,
00499 DDS_InstanceStateMask instance_states);
00500
00501 COREDX_C_ADD_API DDS_ReturnCode_t DDS_DynamicTypeDataReader_read_next_instance ( DDS_DataReader dr,
00502 DDS_DynamicTypePtrSeq * received_data,
00503 DDS_SampleInfoSeq * sample_infos,
00504 int max_samples,
00505 DDS_InstanceHandle_t previous_handle,
00506 DDS_SampleStateMask sample_states,
00507 DDS_ViewStateMask view_states,
00508 DDS_InstanceStateMask instance_states);
00509 COREDX_C_ADD_API DDS_ReturnCode_t DDS_DynamicTypeDataReader_take_next_instance ( DDS_DataReader dr,
00510 DDS_DynamicTypePtrSeq * received_data,
00511 DDS_SampleInfoSeq * sample_infos,
00512 int max_samples,
00513 DDS_InstanceHandle_t previous_handle,
00514 DDS_SampleStateMask sample_states,
00515 DDS_ViewStateMask view_states,
00516 DDS_InstanceStateMask instance_states);
00517
00518 COREDX_C_ADD_API DDS_ReturnCode_t DDS_DynamicTypeDataReader_read_next_instance_w_condition( DDS_DataReader dr,
00519 DDS_DynamicTypePtrSeq * received_data,
00520 DDS_SampleInfoSeq * sample_infos,
00521 int max_samples,
00522 DDS_InstanceHandle_t previous_handle,
00523 DDS_ReadCondition a_condition);
00524 COREDX_C_ADD_API DDS_ReturnCode_t DDS_DynamicTypeDataReader_take_next_instance_w_condition( DDS_DataReader dr,
00525 DDS_DynamicTypePtrSeq * received_data,
00526 DDS_SampleInfoSeq * sample_infos,
00527 int max_samples,
00528 DDS_InstanceHandle_t previous_handle,
00529 DDS_ReadCondition a_condition);
00530 COREDX_C_ADD_API DDS_ReturnCode_t DDS_DynamicTypeDataReader_return_loan ( DDS_DataReader dr,
00531 DDS_DynamicTypePtrSeq * received_data,
00532 DDS_SampleInfoSeq * sample_infos);
00533
00534 COREDX_C_ADD_API DDS_ReturnCode_t DDS_DynamicTypeDataReader_get_key_value ( DDS_DataReader dr,
00535 DDS_DynamicType key_holder,
00536 DDS_InstanceHandle_t handle);
00537
00538 COREDX_C_ADD_API DDS_InstanceHandle_t DDS_DynamicTypeDataReader_lookup_instance ( DDS_DataReader dr,
00539 DDS_DynamicType instance_data);
00540
00541
00542
00543
00544
00545
00550 COREDX_C_ADD_API DDS_DynamicType DDS_DynamicType_alloc(DDS_TypeCodeKind type_code);
00556 COREDX_C_ADD_API DDS_DynamicType DDS_DynamicType_alloc_basic(DDS_TypeCodeKind type_code);
00565 COREDX_C_ADD_API DDS_DynamicType DDS_DynamicType_alloc_enum();
00571 COREDX_C_ADD_API DDS_DynamicType DDS_DynamicType_alloc_string();
00582 COREDX_C_ADD_API DDS_DynamicType DDS_DynamicType_alloc_array();
00592 COREDX_C_ADD_API DDS_DynamicType DDS_DynamicType_alloc_sequence();
00599 COREDX_C_ADD_API DDS_DynamicType DDS_DynamicType_alloc_struct();
00617 COREDX_C_ADD_API DDS_DynamicType DDS_DynamicType_alloc_union();
00618
00627 COREDX_C_API void DDS_DynamicType_free(DDS_DynamicType t);
00628
00629
00635 COREDX_C_ADD_API DDS_ReturnCode_t DDS_DynamicType_set_octet( DDS_DynamicType t, unsigned char c );
00641 COREDX_C_ADD_API DDS_ReturnCode_t DDS_DynamicType_set_boolean( DDS_DynamicType t, unsigned char c );
00647 COREDX_C_ADD_API DDS_ReturnCode_t DDS_DynamicType_set_char( DDS_DynamicType t, char c );
00653 COREDX_C_ADD_API DDS_ReturnCode_t DDS_DynamicType_set_short( DDS_DynamicType t, short c );
00659 COREDX_C_ADD_API DDS_ReturnCode_t DDS_DynamicType_set_ushort( DDS_DynamicType t, unsigned short c );
00665 COREDX_C_ADD_API DDS_ReturnCode_t DDS_DynamicType_set_long( DDS_DynamicType t, long c );
00671 COREDX_C_ADD_API DDS_ReturnCode_t DDS_DynamicType_set_ulong( DDS_DynamicType t, unsigned long c );
00677 COREDX_C_ADD_API DDS_ReturnCode_t DDS_DynamicType_set_longlong( DDS_DynamicType t, int64_t c );
00683 COREDX_C_ADD_API DDS_ReturnCode_t DDS_DynamicType_set_ulonglong( DDS_DynamicType t, uint64_t c );
00689 COREDX_C_ADD_API DDS_ReturnCode_t DDS_DynamicType_set_float( DDS_DynamicType t, float c );
00695 COREDX_C_ADD_API DDS_ReturnCode_t DDS_DynamicType_set_double( DDS_DynamicType t, double c );
00696
00697
00698
00699
00700
00701
00702
00703
00710 COREDX_C_ADD_API DDS_ReturnCode_t DDS_DynamicType_enum_set_num_constants( DDS_DynamicType t, int32_t num );
00719 COREDX_C_ADD_API DDS_ReturnCode_t DDS_DynamicType_enum_set_constant( DDS_DynamicType t, int32_t n,
00720 const char *name, uint32_t val );
00726 COREDX_C_ADD_API DDS_ReturnCode_t DDS_DynamicType_enum_set_value( DDS_DynamicType t, uint32_t val);
00727
00737 COREDX_C_ADD_API DDS_ReturnCode_t DDS_DynamicType_set_string( DDS_DynamicType t, const char * c );
00738
00739
00747 COREDX_C_ADD_API DDS_ReturnCode_t DDS_DynamicType_set_max_length(DDS_DynamicType t, uint32_t n);
00748
00749
00763 COREDX_C_ADD_API DDS_ReturnCode_t DDS_DynamicType_set_length(DDS_DynamicType t, uint32_t n);
00769 COREDX_C_ADD_API DDS_ReturnCode_t DDS_DynamicType_set_element_type(DDS_DynamicType t, DDS_DynamicType e);
00777 COREDX_C_ADD_API DDS_ReturnCode_t DDS_DynamicType_set_element(DDS_DynamicType t, uint32_t n, DDS_DynamicType e);
00778
00779
00785 COREDX_C_ADD_API DDS_ReturnCode_t DDS_DynamicType_set_num_fields(DDS_DynamicType t, uint32_t n);
00799 COREDX_C_ADD_API DDS_ReturnCode_t DDS_DynamicType_set_field(DDS_DynamicType t, uint32_t n, const char * field_name,
00800 DDS_DynamicType e, unsigned char key);
00801
00802
00818 COREDX_C_ADD_API DDS_ReturnCode_t DDS_DynamicType_set_discriminator(DDS_DynamicType t, DDS_DynamicType d);
00829 COREDX_C_ADD_API DDS_ReturnCode_t DDS_DynamicType_set_default_field(DDS_DynamicType t, int field);
00844 COREDX_C_ADD_API DDS_ReturnCode_t DDS_DynamicType_set_field_num_labels(DDS_DynamicType t, uint32_t field, uint32_t n);
00852 COREDX_C_ADD_API DDS_ReturnCode_t DDS_DynamicType_set_field_label(DDS_DynamicType t, uint32_t field, uint32_t label, int32_t val);
00853
00854
00855
00856
00864 typedef DDS_DataWriter DDS_DynamicTypeDataWriter;
00865
00866 COREDX_C_ADD_API DDS_InstanceHandle_t DDS_DynamicTypeDataWriter_register_instance(DDS_DataWriter dw,
00867 const DDS_DynamicType instance_data);
00868
00869 COREDX_C_ADD_API DDS_InstanceHandle_t DDS_DynamicTypeDataWriter_register_instance_w_timestamp(DDS_DataWriter dw,
00870 const DDS_DynamicType instance_data,
00871 const DDS_Time_t source_timestamp);
00872
00873 COREDX_C_ADD_API DDS_ReturnCode_t DDS_DynamicTypeDataWriter_unregister_instance(DDS_DataWriter dw,
00874 const DDS_DynamicType instance_data,
00875 const DDS_InstanceHandle_t handle);
00876
00877 COREDX_C_ADD_API DDS_ReturnCode_t DDS_DynamicTypeDataWriter_unregister_instance_w_timestamp(DDS_DataWriter dw,
00878 const DDS_DynamicType instance_data,
00879 const DDS_InstanceHandle_t handle,
00880 const DDS_Time_t source_timestamp);
00881
00882 COREDX_C_ADD_API DDS_ReturnCode_t DDS_DynamicTypeDataWriter_write(DDS_DataWriter dw,
00883 const DDS_DynamicType instance_data,
00884 const DDS_InstanceHandle_t handle);
00885
00886 COREDX_C_ADD_API DDS_ReturnCode_t DDS_DynamicTypeDataWriter_write_w_timestamp(DDS_DataWriter dw,
00887 const DDS_DynamicType instance_data,
00888 const DDS_InstanceHandle_t handle,
00889 const DDS_Time_t source_timestamp);
00890
00891 COREDX_C_ADD_API DDS_ReturnCode_t DDS_DynamicTypeDataWriter_dispose(DDS_DataWriter dw,
00892 const DDS_DynamicType instance_data,
00893 const DDS_InstanceHandle_t instance_handle);
00894
00895 COREDX_C_ADD_API DDS_ReturnCode_t DDS_DynamicTypeDataWriter_dispose_w_timestamp(DDS_DataWriter dw,
00896 const DDS_DynamicType instance_data,
00897 const DDS_InstanceHandle_t instance_handle,
00898 const DDS_Time_t source_timestamp);
00899
00900 COREDX_C_ADD_API DDS_ReturnCode_t DDS_DynamicTypeDataWriter_get_key_value( DDS_DataWriter dw,
00901 DDS_DynamicType key_holder,
00902 const DDS_InstanceHandle_t handle);
00903
00904 COREDX_C_ADD_API DDS_InstanceHandle_t DDS_DynamicTypeDataWriter_lookup_instance(DDS_DataWriter dw,
00905 const DDS_DynamicType instance_data);
00906
00907
00908 #ifdef __cplusplus
00909 };
00910 #endif
00911
00912
00913 #endif