26 #ifndef CDCONTAINERS_INCLUDE_CDCONTAINERS_QUEUE_H 27 #define CDCONTAINERS_INCLUDE_CDCONTAINERS_QUEUE_H 178 #ifdef CDC_USE_SHORT_NAMES 181 #define queue_ctor(...) cdc_queue_ctor(__VA_ARGS__) 182 #define queue_ctorl(...) cdc_queue_ctorl(__VA_ARGS__) 183 #define queue_ctorv(...) cdc_queue_ctorv(__VA_ARGS__) 184 #define queue_dtor(...) cdc_queue_dtor(__VA_ARGS__) 187 #define queue_front(...) cdc_queue_front(__VA_ARGS__) 188 #define queue_back(...) cdc_queue_back(__VA_ARGS__) 191 #define queue_empty(...) cdc_queue_empty(__VA_ARGS__) 192 #define queue_size(...) cdc_queue_size(__VA_ARGS__) 195 #define queue_push(...) cdc_queue_push(__VA_ARGS__) 196 #define queue_pop(...) cdc_queue_pop(__VA_ARGS__) 197 #define queue_swap(...) cdc_queue_swap(__VA_ARGS__) 200 #endif // CDCONTAINERS_INCLUDE_CDCONTAINERS_QUEUE_H static size_t cdc_queue_size(struct cdc_queue *q)
Returns the number of items in the queue.
Definition: queue.h:136
void * container
Definition: queue.h:44
const struct cdc_sequence_table * table
Definition: queue.h:45
The cdc_queue struct.
Definition: queue.h:43
void *(* front)(void *cntr)
Definition: isequence.h:45
static void * cdc_queue_back(struct cdc_queue *q)
Returns pointer to the last element in the queue. This function assumes that the queue isn't empty...
Definition: queue.h:111
static void * cdc_queue_front(struct cdc_queue *q)
Returns pointer to the first element in the queue. This function assumes that the queue isn't empty...
Definition: queue.h:98
enum cdc_stat cdc_queue_ctorl(const struct cdc_sequence_table *table, struct cdc_queue **q, struct cdc_data_info *info,...)
Constructs a queue, initialized by an arbitrary number of pointers. The last item must be NULL...
void *(* back)(void *cntr)
Definition: isequence.h:46
The cdc_sequence_table is a sequence container interface.
bool(* empty)(void *cntr)
Definition: isequence.h:47
cdc_stat
Definition: status.h:24
static void cdc_queue_pop(struct cdc_queue *q)
Removes the head item in the queue. This function assumes that the queue isn't empty.
Definition: queue.h:163
size_t(* size)(void *cntr)
Definition: isequence.h:48
void cdc_queue_swap(struct cdc_queue *a, struct cdc_queue *b)
Swaps queues a and b. This operation is very fast and never fails.
enum cdc_stat(* push_back)(void *cntr, void *elem)
Definition: isequence.h:49
void(* pop_front)(void *cntr)
Definition: isequence.h:52
The cdc_data_info struct used to initialize contaners.
Definition: common.h:71
enum cdc_stat cdc_queue_ctor(const struct cdc_sequence_table *table, struct cdc_queue **q, struct cdc_data_info *info)
Constructs an empty queue.
static bool cdc_queue_empty(struct cdc_queue *q)
Returns true if the queue has size 0; otherwise returns false.
Definition: queue.h:124
enum cdc_stat cdc_queue_ctorv(const struct cdc_sequence_table *table, struct cdc_queue **q, struct cdc_data_info *info, va_list args)
Constructs a queue, initialized by args The last item must be NULL.
void cdc_queue_dtor(struct cdc_queue *q)
Destroys the queue.
static enum cdc_stat cdc_queue_push(struct cdc_queue *q, void *elem)
Adds value elem to the tail of the queue.
Definition: queue.h:151
The cdc_sequence_table struct.
Definition: isequence.h:41