Lines Matching refs:queue
25 * u_vector is a vector based queue for storing arbitrary
57 int u_vector_init_pow2(struct u_vector *queue,
61 void *u_vector_add(struct u_vector *queue);
62 void *u_vector_remove(struct u_vector *queue);
65 u_vector_init(struct u_vector *queue,
71 return u_vector_init_pow2(queue, initial_element_count, element_size);
75 u_vector_length(struct u_vector *queue)
77 return (queue->head - queue->tail) / queue->element_size;
96 u_vector_finish(struct u_vector *queue)
98 free(queue->data);
107 #define u_vector_foreach(elem, queue) \
108 STATIC_ASSERT(__builtin_types_compatible_p(__typeof__(queue), struct u_vector *)); \
109 for (uint32_t __u_vector_offset = (queue)->tail; \
110 elem = u_vector_element_cast(elem)((char *)(queue)->data + \
111 (__u_vector_offset & ((queue)->size - 1))), \
112 __u_vector_offset != (queue)->head; \
113 __u_vector_offset += (queue)->element_size)