basic/prioq: add prioq_peek_item()
This commit is contained in:
+3
-4
@@ -259,15 +259,14 @@ int prioq_reshuffle(Prioq *q, void *data, unsigned *idx) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
void *prioq_peek(Prioq *q) {
|
||||
|
||||
void *prioq_peek_by_index(Prioq *q, unsigned idx) {
|
||||
if (!q)
|
||||
return NULL;
|
||||
|
||||
if (q->n_items <= 0)
|
||||
if (idx >= q->n_items)
|
||||
return NULL;
|
||||
|
||||
return q->items[0].data;
|
||||
return q->items[idx].data;
|
||||
}
|
||||
|
||||
void *prioq_pop(Prioq *q) {
|
||||
|
||||
+7
-1
@@ -19,8 +19,14 @@ int prioq_put(Prioq *q, void *data, unsigned *idx);
|
||||
int prioq_remove(Prioq *q, void *data, unsigned *idx);
|
||||
int prioq_reshuffle(Prioq *q, void *data, unsigned *idx);
|
||||
|
||||
void *prioq_peek(Prioq *q) _pure_;
|
||||
void *prioq_peek_by_index(Prioq *q, unsigned idx) _pure_;
|
||||
static inline void *prioq_peek(Prioq *q) {
|
||||
return prioq_peek_by_index(q, 0);
|
||||
}
|
||||
void *prioq_pop(Prioq *q);
|
||||
|
||||
#define PRIOQ_FOREACH_ITEM(q, p) \
|
||||
for (unsigned _i = 0; (p = prioq_peek_by_index(q, _i)); _i++)
|
||||
|
||||
unsigned prioq_size(Prioq *q) _pure_;
|
||||
bool prioq_isempty(Prioq *q) _pure_;
|
||||
|
||||
Reference in New Issue
Block a user