33 #ifndef reda_sequence_h
34 #define reda_sequence_h
55 #define REDA_SEQUENCE_API_UNTYPED 0
70 #define REDA_SEQUENCE_API_BASIC 1
89 #define REDA_SEQUENCE_API_FULL 2
94 #ifndef REDA_SEQUENCE_API_DEFAULT
96 #define REDA_SEQUENCE_API_DEFAULT REDA_SEQUENCE_API_FULL
98 #define REDA_SEQUENCE_API_DEFAULT REDA_SEQUENCE_API_BASIC
101 #if REDA_SEQUENCE_API_DEFAULT < REDA_SEQUENCE_API_BASIC
102 #error "REDA_SEQUENCE_API_DEFAULT must be at least REDA_SEQUENCE_API_BASIC"
109 #ifndef REDA_SEQUENCE_API_USER_DEFAULT
111 #define REDA_SEQUENCE_API_USER_DEFAULT REDA_SEQUENCE_API_FULL
113 #define REDA_SEQUENCE_API_USER_DEFAULT REDA_SEQUENCE_API_BASIC
116 #if REDA_SEQUENCE_API_USER_DEFAULT < REDA_SEQUENCE_API_BASIC
117 #error "REDA_SEQUENCE_API_USER_DEFAULT must be at least REDA_SEQUENCE_API_BASIC"
122 #define REDA_DEFINE_SEQUENCE_INITIALIZER(t_) \
123 { NULL,0,0,sizeof(t_),0,NULL,NULL }
126 #define REDA_DEFINE_EMPTY_SEQUENCE_INITIALIZER \
127 { NULL,0,0,0,0,NULL,NULL }
132 struct REDA_Sequence;
137 #define REDA_SEQUENCE_FLAG_LOAN 0x01
142 #define REDA_SEQUENCE_FLAG_DISCONTIGUOUS 0x02
158 MUST_CHECK_RETURN REDADllExport
RTI_BOOL
159 REDA_Sequence_initialize(
struct REDA_Sequence *
self, RTI_INT32 element_size);
175 SHOULD_CHECK_RETURN REDADllExport
RTI_BOOL
176 REDA_Sequence_finalize(
struct REDA_Sequence *
self);
193 REDADllExport RTI_INT32
194 REDA_Sequence_get_maximum(
const struct REDA_Sequence *
self);
222 MUST_CHECK_RETURN REDADllExport
RTI_BOOL
223 REDA_Sequence_set_maximum(
struct REDA_Sequence *
self, RTI_INT32 new_max,
239 REDADllExport RTI_INT32
240 REDA_Sequence_get_length(
const struct REDA_Sequence *
self);
259 MUST_CHECK_RETURN REDADllExport
RTI_BOOL
260 REDA_Sequence_set_length(
struct REDA_Sequence *
self, RTI_INT32 new_length);
277 MUST_CHECK_RETURN REDADllExport
void*
278 REDA_Sequence_get_buffer(
const struct REDA_Sequence *
self);
297 MUST_CHECK_RETURN REDADllExport
RTI_BOOL
298 REDA_Sequence_set_buffer(
struct REDA_Sequence *
self,
void *buffer);
315 MUST_CHECK_RETURN REDADllExport
void*
316 REDA_Sequence_get_reference(
const struct REDA_Sequence *
self,RTI_INT32 index);
344 MUST_CHECK_RETURN REDADllExport
struct REDA_Sequence*
345 REDA_Sequence_copy(
struct REDA_Sequence *
self,
346 const struct REDA_Sequence *src,
373 REDA_Sequence_is_equal(
const struct REDA_Sequence *left,
374 const struct REDA_Sequence *right,
397 MUST_CHECK_RETURN REDADllExport
RTI_BOOL
398 REDA_Sequence_loan_contiguous(
struct REDA_Sequence *
self,
void *buffer,
399 RTI_INT32 new_length, RTI_INT32 new_max);
422 MUST_CHECK_RETURN REDADllExport
RTI_BOOL
423 REDA_Sequence_loan_discontiguous(
struct REDA_Sequence *
self,
void *buffer,
424 RTI_INT32 new_length, RTI_INT32 new_max);
438 MUST_CHECK_RETURN REDADllExport
RTI_BOOL
439 REDA_Sequence_unloan(
struct REDA_Sequence *
self);
455 REDA_Sequence_has_ownership(
const struct REDA_Sequence *
self);
471 REDA_Sequence_has_discontiguous_buffer(
const struct REDA_Sequence *
self);
487 REDA_Sequence_set_token(
struct REDA_Sequence *
self,
void *token1,
void *token2);
503 REDA_Sequence_get_token(
const struct REDA_Sequence *
self,
void **token1,
void **token2);