39 #ifndef cdr_serialize_h
40 #define cdr_serialize_h
42 #ifndef reda_sequence_h
43 #include "reda/reda_sequence.h"
45 #ifndef reda_sequenceNumber_h
46 #include "reda/reda_sequenceNumber.h"
49 #include "cdr/cdr_dll.h"
51 #ifndef cdr_cdr_type_h
52 #include "cdr/cdr_cdr_type.h"
55 #include "cdr/cdr_stream.h"
57 #ifndef cdr_serialize_impl_h
58 #include "cdr/cdr_serialize_impl.h"
67 #define CDR_DEFAULT_PARAMETER_ALIGNMENT (4)
70 #define CDR_get_max_size_serialized_octet CDR_get_1_byte_max_size_serialized
73 #define CDR_get_max_size_serialized_char CDR_get_1_byte_max_size_serialized
76 #define CDR_get_max_size_serialized_boolean CDR_get_1_byte_max_size_serialized
79 #define CDR_get_max_size_serialized_short CDR_get_2_byte_max_size_serialized
82 #define CDR_get_max_size_serialized_unsigned_short \
83 CDR_get_2_byte_max_size_serialized
86 #define CDR_get_max_size_serialized_long CDR_get_4_byte_max_size_serialized
89 #define CDR_get_max_size_serialized_unsigned_long \
90 CDR_get_4_byte_max_size_serialized
93 #define CDR_get_max_size_serialized_wchar CDR_get_4_byte_max_size_serialized
96 #define CDR_get_max_size_serialized_enum CDR_get_4_byte_max_size_serialized
99 #define CDR_get_max_size_serialized_float CDR_get_4_byte_max_size_serialized
102 #define CDR_get_max_size_serialized_long_long CDR_get_8_byte_max_size_serialized
105 #define CDR_get_max_size_serialized_unsigned_long_long \
106 CDR_get_8_byte_max_size_serialized
109 #define CDR_get_max_size_serialized_double CDR_get_8_byte_max_size_serialized
112 #define CDR_get_max_size_serialized_long_double CDR_get_16_byte_max_size_serialized
130 CDR_serialize_unsigned_short(
char **dest_buffer,
const RTI_UINT16 * instance,
143 CDR_deserialize_unsigned_short(
char **src_buffer, RTI_UINT16 * instance,
155 CDR_deserialize_unsigned_short_from_big_endian(
char **src_buffer,
156 RTI_UINT16 * instance);
168 CDR_serialize_unsigned_long(
char **dest_buffer,
const RTI_UINT32 * instance,
181 CDR_deserialize_unsigned_long(
char **src_buffer, RTI_UINT32 * instance,
193 CDR_serialize_unsigned_long_to_big_endian(
char **dest_buffer,
194 const RTI_UINT32 * instance);
205 CDR_deserialize_unsigned_long_from_big_endian(
char **src_buffer,
206 RTI_UINT32 * instance);
218 CDR_serialize_unsigned_long_long(
char **dest_buffer,
const RTI_UINT64 * instance,
231 CDR_deserialize_unsigned_long_long(
char **src_buffer, RTI_UINT64 * instance,
244 CDR_serialize_long_double(
char **dest_buffer,
const RTI_DOUBLE128 * instance,
257 CDR_deserialize_long_double(
char **src_buffer, RTI_DOUBLE128 * instance,
266 #define CDR_deserialize_long(__buf,__inst,_b) \
267 CDR_deserialize_unsigned_long(__buf,((RTI_UINT32*)__inst),_b)
284 MUST_CHECK_RETURN CDRDllExport RTI_BOOL
285 CDR_Stream_serialize_char(
struct CDR_Stream_t *cdrs,
const RTI_INT8 * instance);
296 MUST_CHECK_RETURN CDRDllExport RTI_BOOL
297 CDR_Stream_deserialize_char(
struct CDR_Stream_t *cdrs, RTI_INT8 * instance);
308 MUST_CHECK_RETURN CDRDllExport RTI_BOOL
309 CDR_Stream_serialize_unsigned_short(
struct CDR_Stream_t *cdrs,
310 const RTI_UINT16 * instance);
321 MUST_CHECK_RETURN CDRDllExport RTI_BOOL
322 CDR_Stream_deserialize_unsigned_short(
struct CDR_Stream_t *cdrs,
323 RTI_UINT16 * instance);
334 MUST_CHECK_RETURN CDRDllExport RTI_BOOL
335 CDR_Stream_serialize_unsigned_short_to_big_endian(
struct CDR_Stream_t *cdrs,
336 const RTI_UINT16 * instance);
347 MUST_CHECK_RETURN CDRDllExport RTI_BOOL
348 CDR_Stream_deserialize_unsigned_short_from_big_endian(
struct CDR_Stream_t *cdrs,
349 RTI_UINT16* instance);
360 MUST_CHECK_RETURN CDRDllExport RTI_BOOL
361 CDR_Stream_serialize_unsigned_long(
struct CDR_Stream_t *cdrs,
362 const RTI_UINT32 * instance);
373 MUST_CHECK_RETURN CDRDllExport RTI_BOOL
374 CDR_Stream_deserialize_unsigned_long(
struct CDR_Stream_t *cdrs,
375 RTI_UINT32 * instance);
386 MUST_CHECK_RETURN CDRDllExport RTI_BOOL
387 CDR_Stream_serialize_unsigned_long_to_big_endian(
struct CDR_Stream_t *cdrs,
388 const RTI_UINT32 * instance);
399 MUST_CHECK_RETURN CDRDllExport RTI_BOOL
400 CDR_Stream_deserialize_unsigned_long_from_big_endian(
struct CDR_Stream_t *cdrs,
401 RTI_UINT32 * instance);
412 MUST_CHECK_RETURN CDRDllExport RTI_BOOL
413 CDR_Stream_serialize_unsigned_long_long(
struct CDR_Stream_t *cdrs,
414 const RTI_UINT64 * instance);
425 MUST_CHECK_RETURN CDRDllExport RTI_BOOL
426 CDR_Stream_deserialize_unsigned_long_long(
struct CDR_Stream_t *cdrs,
427 RTI_UINT64 * instance);
438 MUST_CHECK_RETURN CDRDllExport RTI_BOOL
439 CDR_Stream_serialize_long_double(
struct CDR_Stream_t *cdrs,
440 const RTI_DOUBLE128 * in);
451 MUST_CHECK_RETURN CDRDllExport RTI_BOOL
452 CDR_Stream_deserialize_long_double(
struct CDR_Stream_t *cdrs,
453 RTI_DOUBLE128 * out);
465 MUST_CHECK_RETURN CDRDllExport RTI_BOOL
466 CDR_Stream_serialize_string(
struct CDR_Stream_t *cdrs,
467 const char *in, RTI_UINT32 max_length);
479 MUST_CHECK_RETURN CDRDllExport RTI_BOOL
480 CDR_Stream_deserialize_string(
struct CDR_Stream_t *cdrs,
481 char *out, RTI_UINT32 max_length);
493 MUST_CHECK_RETURN CDRDllExport RTI_BOOL
494 CDR_Stream_serialize_wstring(
struct CDR_Stream_t *cdrs,
495 const RTI_UINT32 *in, RTI_UINT32 max_length);
507 MUST_CHECK_RETURN CDRDllExport RTI_BOOL
508 CDR_Stream_deserialize_wstring(
struct CDR_Stream_t *cdrs,
509 RTI_UINT32 *out, RTI_UINT32 max_length);
520 MUST_CHECK_RETURN CDRDllExport RTI_BOOL
521 CDR_Stream_serialize_2_octets_big_endian(
struct CDR_Stream_t *cdrs,
522 const RTI_UINT16 * in);
533 MUST_CHECK_RETURN CDRDllExport RTI_BOOL
534 CDR_Stream_deserialize_2_octets_big_endian(
struct CDR_Stream_t *cdrs,
543 #define CDR_Stream_serialize_boolean(__s,__i) \
544 CDR_Stream_serialize_char(__s,((RTI_INT8*)__i))
547 #define CDR_Stream_deserialize_boolean(__s,__i) \
548 CDR_Stream_deserialize_char(__s,((RTI_INT8*)__i))
551 #define CDR_Stream_serialize_octet(__s,__i) \
552 CDR_Stream_serialize_char(__s,((RTI_INT8*)__i))
555 #define CDR_Stream_deserialize_octet(__s,__i) \
556 CDR_Stream_deserialize_char(__s,((RTI_INT8*)__i))
559 #define CDR_Stream_serialize_short(__s,__i) \
560 CDR_Stream_serialize_unsigned_short(__s,((RTI_UINT16*)__i))
563 #define CDR_Stream_deserialize_short(__s,__i) \
564 CDR_Stream_deserialize_unsigned_short(__s,((RTI_UINT16*)__i))
567 #define CDR_Stream_serialize_wchar(__s,__i) \
568 CDR_Stream_serialize_unsigned_long(__s,(RTI_UINT32*)__i)
571 #define CDR_Stream_deserialize_wchar(__s,__i) \
572 CDR_Stream_deserialize_unsigned_long(__s,(RTI_UINT32*)__i)
575 #define CDR_Stream_serialize_enum(__s,__i) \
576 CDR_Stream_serialize_unsigned_long(__s,(RTI_UINT32*)__i)
579 #define CDR_Stream_deserialize_enum(__s,__i) \
580 CDR_Stream_deserialize_unsigned_long(__s,(RTI_UINT32*)__i)
583 #define CDR_Stream_serialize_long(__s,__i) \
584 CDR_Stream_serialize_unsigned_long(__s,((RTI_UINT32*)__i))
587 #define CDR_Stream_deserialize_long(__s,__i) \
588 CDR_Stream_deserialize_unsigned_long(__s,((RTI_UINT32*)__i))
591 #define CDR_Stream_serialize_float(__s,__i) \
592 CDR_Stream_serialize_unsigned_long(__s,((RTI_UINT32*)__i))
595 #define CDR_Stream_deserialize_float(__s,__i) \
596 CDR_Stream_deserialize_unsigned_long(__s,((RTI_UINT32*)__i))
599 #define CDR_Stream_serialize_long_long(__s,__i) \
600 CDR_Stream_serialize_unsigned_long_long(__s,((RTI_UINT64*)__i))
603 #define CDR_Stream_deserialize_long_long(__s,__i) \
604 CDR_Stream_deserialize_unsigned_long_long(__s,((RTI_UINT64*)__i))
607 #define CDR_Stream_serialize_double(__s,__i) \
608 CDR_Stream_serialize_unsigned_long_long(__s,((RTI_UINT64*)__i))
611 #define CDR_Stream_deserialize_double(__s,__i) \
612 CDR_Stream_deserialize_unsigned_long_long(__s,((RTI_UINT64*)__i))
623 (*CDR_Stream_SerializeFunction) (
struct CDR_Stream_t * stream,
636 (*CDR_Stream_DeserializeFunction) (
struct CDR_Stream_t * stream,
653 RTI_UINT32 current_alignment,
667 MUST_CHECK_RETURN CDRDllExport RTI_BOOL
668 CDR_Stream_serialize_byte_array(
struct CDR_Stream_t *cdrs,
669 const unsigned char *in_array,
682 MUST_CHECK_RETURN CDRDllExport RTI_BOOL
683 CDR_Stream_deserialize_byte_array(
struct CDR_Stream_t *cdrs,
688 #define CDR_get_max_size_serialized_byte_array(current_alignment, length, type) \
703 MUST_CHECK_RETURN CDRDllExport RTI_BOOL
704 CDR_Stream_serialize_string_array(
struct CDR_Stream_t *cdrs,
707 RTI_UINT32 max_string_length,
708 CdrPrimitiveType type);
722 MUST_CHECK_RETURN CDRDllExport RTI_BOOL
723 CDR_Stream_deserialize_string_array(
struct CDR_Stream_t *cdrs,
726 RTI_UINT32 max_string_length,
727 CdrPrimitiveType type);
740 MUST_CHECK_RETURN CDRDllExport RTI_UINT32
741 CDR_get_max_size_serialized_string_array(RTI_UINT32 current_alignment,
743 RTI_UINT32 max_string_length,
744 CdrPrimitiveType type);
757 MUST_CHECK_RETURN CDRDllExport RTI_BOOL
758 CDR_Stream_serialize_primitive_array(
struct CDR_Stream_t *cdrs,
761 CdrPrimitiveType type);
774 MUST_CHECK_RETURN CDRDllExport RTI_BOOL
775 CDR_Stream_deserialize_primitive_array(
struct CDR_Stream_t *cdrs,
778 CdrPrimitiveType type);
788 MUST_CHECK_RETURN CDRDllExport RTI_UINT32
789 CDR_get_max_size_serialized_primitive_array(RTI_UINT32 alignment,
791 CdrPrimitiveType type);
806 MUST_CHECK_RETURN CDRDllExport RTI_BOOL
807 CDR_Stream_serialize_non_primitive_array(
struct CDR_Stream_t *stream,
810 RTI_UINT32 element_size,
811 CDR_Stream_SerializeFunction
828 MUST_CHECK_RETURN CDRDllExport RTI_BOOL
829 CDR_Stream_deserialize_non_primitive_array(
struct CDR_Stream_t *stream,
832 RTI_UINT32 element_size,
833 CDR_Stream_DeserializeFunction
834 deserialize_function,
849 MUST_CHECK_RETURN CDRDllExport RTI_UINT32
850 CDR_get_max_size_serialized_non_primitive_array(RTI_UINT32 current_alignment,
852 CDR_Stream_GetSerializedSizeFunction
853 get_serialized_size_func,
867 MUST_CHECK_RETURN CDRDllExport RTI_BOOL
868 CDR_Stream_serialize_string_sequence(
struct CDR_Stream_t *cdrs,
869 const struct REDA_Sequence* in,
870 RTI_UINT32 max_string_length,
871 CdrPrimitiveType type);
884 MUST_CHECK_RETURN CDRDllExport RTI_BOOL
885 CDR_Stream_deserialize_string_sequence(
struct CDR_Stream_t *cdrs,
886 struct REDA_Sequence* out,
887 RTI_UINT32 max_string_length,
888 CdrPrimitiveType type);
901 MUST_CHECK_RETURN CDRDllExport RTI_UINT32
902 CDR_get_max_size_serialized_string_sequence(RTI_UINT32 current_alignment,
904 RTI_UINT32 max_string_length,
905 CdrPrimitiveType type);
917 MUST_CHECK_RETURN CDRDllExport RTI_BOOL
918 CDR_Stream_serialize_primitive_sequence(
struct CDR_Stream_t *stream,
919 const struct REDA_Sequence* in,
920 CdrPrimitiveType type);
932 MUST_CHECK_RETURN CDRDllExport RTI_BOOL
933 CDR_Stream_deserialize_primitive_sequence(
struct CDR_Stream_t *stream,
934 struct REDA_Sequence* out,
935 CdrPrimitiveType type);
947 MUST_CHECK_RETURN CDRDllExport RTI_UINT32
948 CDR_get_max_size_serialized_primitive_sequence(RTI_UINT32 current_alignment,
950 CdrPrimitiveType type);
963 MUST_CHECK_RETURN CDRDllExport RTI_BOOL
964 CDR_Stream_serialize_non_primitive_sequence(
struct CDR_Stream_t *stream,
965 const struct REDA_Sequence* in,
966 CDR_Stream_SerializeFunction
982 MUST_CHECK_RETURN CDRDllExport RTI_BOOL
983 CDR_Stream_deserialize_non_primitive_sequence(
struct CDR_Stream_t *stream,
984 struct REDA_Sequence* out,
985 CDR_Stream_DeserializeFunction
986 deserialize_function,
1003 MUST_CHECK_RETURN CDRDllExport RTI_UINT32
1004 CDR_get_max_size_serialized_non_primitive_sequence(RTI_UINT32 current_alignment,
1006 CDR_Stream_GetSerializedSizeFunction
1007 get_serialized_size_func,
1020 MUST_CHECK_RETURN CDRDllExport RTI_BOOL
1021 CDR_Stream_serialize_property_sequence(
struct CDR_Stream_t *stream,
1035 MUST_CHECK_RETURN CDRDllExport RTI_UINT32
1036 CDR_get_pad_size(RTI_UINT32 current_size, RTI_UINT8 align);
1046 MUST_CHECK_RETURN CDRDllExport RTI_UINT32
1047 CDR_align_upwards(RTI_UINT32 location,
1048 RTI_UINT8 alignment);
1056 CDR_Stream_serialize_1_byte(
struct CDR_Stream_t *me,
1057 const RTI_INT8 *in);
1065 CDR_Stream_deserialize_1_byte(
struct CDR_Stream_t *me,
1074 MUST_CHECK_RETURN CDRDllExport RTI_UINT32
1075 CDR_get_2_byte_max_size_serialized(RTI_UINT32 current_size);
1082 MUST_CHECK_RETURN CDRDllExport RTI_UINT32
1083 CDR_get_4_byte_max_size_serialized(RTI_UINT32 current_size);
1090 MUST_CHECK_RETURN CDRDllExport RTI_UINT32
1091 CDR_get_8_byte_max_size_serialized(RTI_UINT32 current_size);
1098 MUST_CHECK_RETURN CDRDllExport RTI_UINT32
1099 CDR_get_16_byte_max_size_serialized(RTI_UINT32 current_size);
1107 MUST_CHECK_RETURN CDRDllExport RTI_UINT32
1108 CDR_get_max_size_serialized_string(RTI_UINT32 current_size,
1117 MUST_CHECK_RETURN CDRDllExport RTI_UINT32
1118 CDR_get_max_size_serialized_wstring(RTI_UINT32 current_size,
1132 MUST_CHECK_RETURN CDRDllExport RTI_BOOL
1133 CDR_Stream_has_remaining_space(
struct CDR_Stream_t *cdrs,
1134 RTI_UINT32 needed_space);