/* * Copyright 2013 (c) Anna Schumaker. */ #include #include #include static inline void *__queue_init(struct queue *queue, void *data) { if (queue->q_ops) return queue->q_ops->qop_init(queue, data); return NULL; } static inline void __queue_deinit(struct queue *queue) { if (queue->q_ops) queue->q_ops->qop_deinit(queue); } void queue_init(struct queue *queue, const struct queue_ops *ops, void *data) { queue->q_length = 0; queue->q_sort = NULL; queue->q_ops = ops; g_queue_init(&queue->q_tracks); queue_iter_init(queue, &queue->q_cur); queue->q_private = __queue_init(queue, data); } void queue_deinit(struct queue *queue) { g_queue_clear(&queue->q_tracks); __queue_deinit(queue); g_slist_free(queue->q_sort); queue->q_sort = NULL; }