#define queue_IMPLEMENT( | | _fsuffix, | | object_t | ) typedef queue_iterator_t iteratortype##_fsuffix ; typedef object_t * iteratedtype##_fsuffix ; static inline int initfirst##_fsuffix##iterator(/*out*/queue_iterator_t * iter, queue_t * queue) __attribute__ ((always_inline)) ; static inline int free##_fsuffix##iterator(queue_iterator_t * iter) __attribute__ ((always_inline)) ; static inline bool next##_fsuffix##iterator(queue_iterator_t * iter, object_t ** node) __attribute__ ((always_inline)) ; static inline int init##_fsuffix(/*out*/queue_t * queue) __attribute__ ((always_inline)) ; static inline void initmove##_fsuffix(/*out*/queue_t * dest, queue_t * src) __attribute__ ((always_inline)) ; static inline int free##_fsuffix(queue_t * queue) __attribute__ ((always_inline)) ; static inline bool isempty##_fsuffix(const queue_t * queue) __attribute__ ((always_inline)) ; static inline object_t * first##_fsuffix(const queue_t * queue) __attribute__ ((always_inline)) ; static inline object_t * last##_fsuffix(const queue_t * queue) __attribute__ ((always_inline)) ; static inline size_t sizefirst##_fsuffix(const queue_t * queue) __attribute__ ((always_inline)) ; static inline size_t sizelast##_fsuffix(const queue_t * queue) __attribute__ ((always_inline)) ; static inline int insertfirst##_fsuffix(queue_t * queue,/*out*/object_t ** new_node) __attribute__ ((always_inline)) ; static inline int insertlast##_fsuffix(queue_t * queue,/*out*/object_t ** new_node) __attribute__ ((always_inline)) ; static inline int removefirst##_fsuffix(queue_t * queue) __attribute__ ((always_inline)) ; static inline int removelast##_fsuffix(queue_t * queue) __attribute__ ((always_inline)) ; static inline int init##_fsuffix(/*out*/queue_t * queue) { return init_queue(queue) ; } static inline void initmove##_fsuffix(/*out*/queue_t * dest, queue_t * src) { initmove_queue(dest, src) ; } static inline int free##_fsuffix(queue_t * queue) { return free_queue(queue) ; } static inline bool isempty##_fsuffix(const queue_t * queue) { return isempty_queue(queue) ; } static inline object_t * first##_fsuffix(const queue_t * queue) { return first_queue(queue, sizeof(object_t)) ; } static inline object_t * last##_fsuffix(const queue_t * queue) { return last_queue(queue, sizeof(object_t)) ; } static inline size_t sizefirst##_fsuffix(const queue_t * queue) { return sizefirst_queue(queue) ; } static inline size_t sizelast##_fsuffix(const queue_t * queue) { return sizelast_queue(queue) ; } static inline int insertfirst##_fsuffix(queue_t * queue,/*out*/object_t ** new_node) { return insertfirst_queue(queue, (void**)new_node, sizeof(object_t)) ; } static inline int insertlast##_fsuffix(queue_t * queue,/*out*/object_t ** new_node) { return insertlast_queue(queue, (void**)new_node, sizeof(object_t)) ; } static inline int removefirst##_fsuffix(queue_t * queue) { return removefirst_queue(queue, sizeof(object_t)) ; } static inline int removelast##_fsuffix(queue_t * queue) { return removelast_queue(queue, sizeof(object_t)) ; } static inline int initfirst##_fsuffix##iterator(/*out*/queue_iterator_t * iter, queue_t * queue) { return initfirst_queueiterator(iter, queue, sizeof(object_t)) ; } static inline int free##_fsuffix##iterator(queue_iterator_t * iter) { return free_queueiterator(iter) ; } static inline bool next##_fsuffix##iterator(queue_iterator_t * iter, object_t ** node) { return next_queueiterator(iter, (void**)node) ; } |
|