* @return CORBA_TRUE if the allocation was sucessfull, CORBA_FALSE if wasn't.
*/
#define forb_sequence_alloc_buf(seq, num_elements) \
- __forb_sequence_alloc_buf_internal(&(seq), sizeof(seq), \
- (void**)&(seq)._buffer, &(seq)._maximum, \
- (num_elements), sizeof(*(seq)._buffer))
-
-#define forb_sequence_alloc(seq_ptr, num_elements) do { \
- (seq_ptr) = forb_malloc(sizeof(*(seq_ptr))); \
- memset((seq_ptr), 0, sizeof(*(seq_ptr))); \
- forb_sequence_alloc_buf(*(seq_ptr), (num_elements)); \
+ __forb_sequence_alloc_buf_internal((seq), sizeof(*(seq)), \
+ (void**)&(seq)->_buffer, &(seq)->_maximum, \
+ (num_elements), sizeof(*(seq)->_buffer))
+
+#define forb_sequence_alloc(seq, num_elements) do { \
+ (seq) = forb_malloc(sizeof(*(seq))); \
+ memset((seq), 0, sizeof(*(seq))); \
+ forb_sequence_alloc_buf((seq), (num_elements)); \
} while(0)
static inline void forb_no_destructor() {}
#define forb_sequence_free_buf(seq, elem_destructor) do { \
- if (CORBA_sequence_get_release(&(seq))) { \
+ if (CORBA_sequence_get_release(seq)) { \
CORBA_unsigned_long i; \
- for (i=0; i<(seq)._length; i++) { \
- elem_destructor(&(seq)._buffer[i]); \
+ for (i=0; i<(seq)->_length; i++) { \
+ elem_destructor(&(seq)->_buffer[i]); \
} \
- forb_free((seq)._buffer); \
+ forb_free((seq)->_buffer); \
} \
} while(0)
-#define forb_sequence_free(seq_ptr, elem_destructor) do { \
- forb_sequence_free_buf(*(seq_ptr), (elem_destructor)); \
- forb_free(seq_ptr); \
+#define forb_sequence_free(seq, elem_destructor) do { \
+ forb_sequence_free_buf((seq), (elem_destructor)); \
+ forb_free(seq); \
} while(0)
-#define forb_sequence_elem(seq, index) ((seq)._buffer[index])
+#define forb_sequence_elem(seq, index) ((seq)->_buffer[(index)])
-#define forb_sequence_length(seq) ((seq)._length)
+#define forb_sequence_length(seq) ((seq)->_length)
#define forb_sequence_foreach(seq, elemptr) \
for ((elemptr)=&forb_sequence_elem((seq), 0); \
forb_sequence_alloc(s, 10);
WVPASS(s);
CORBA_sequence_set_release(s, 1);
- WVPASS(forb_sequence_length(*s) == 0);
+ WVPASS(forb_sequence_length(s) == 0);
forb_sequence_free(s, destructor);
WVPASS(destructor_called == 0);
forb_sequence_alloc(s, 10);
WVPASS(s);
for (i=0; i<10; i++)
- forb_sequence_elem(*s, i) = i;
- forb_sequence_length(*s) = 10;
- WVPASS(forb_sequence_length(*s) == 10);
+ forb_sequence_elem(s, i) = i;
+ forb_sequence_length(s) = 10;
+ WVPASS(forb_sequence_length(s) == 10);
forb_sequence_free(s, destructor);
WVPASS(destructor_called == 0);
WVPASS(s);
CORBA_sequence_set_release(s, 1);
for (i=0; i<10; i++)
- forb_sequence_elem(*s, i) = i;
- forb_sequence_length(*s) = 10;
- WVPASS(forb_sequence_length(*s) == 10);
+ forb_sequence_elem(s, i) = i;
+ forb_sequence_length(s) = 10;
+ WVPASS(forb_sequence_length(s) == 10);
- forb_sequence_foreach(*s, e) {
+ forb_sequence_foreach(s, e) {
foreach_retuned_sum += *e;
}
WVPASS(foreach_retuned_sum == 45);