-#include <sched.h>
+#include <sched.h> // for sched_yield
+#include "bits/callback.h" // for Transformer
#include "queue.h"
void queue_ini(Queue *queue)
pthread_mutex_destroy(&queue->mtx);
}
-void queue_clr(Queue *queue, Callback iter, void *arg, Transformer trans)
+void queue_clr(Queue *queue, void *iter, void *arg, void *trans)
{
list_clr(&queue->lst, iter, arg, trans);
}
return success;
}
-void *queue_deq(Queue *queue, Transformer trans)
+void *queue_deq(Queue *queue, void *trans)
{
void *dat = NULL;
list_nrm(&queue->lst, node);
if (trans)
- dat = trans(dat);
+ dat = ((Transformer) trans)(dat);
} else {
pthread_cond_wait(&queue->cnd, &queue->mtx);
}