New emp_searchque()

This commit is contained in:
Markus Armbruster 2008-03-13 22:30:43 +01:00
parent 292f92f705
commit 942eddf533
2 changed files with 16 additions and 0 deletions

View file

@ -43,6 +43,8 @@ struct emp_qelem {
extern void emp_remque(struct emp_qelem *); extern void emp_remque(struct emp_qelem *);
extern void emp_initque(struct emp_qelem *); extern void emp_initque(struct emp_qelem *);
extern struct emp_qelem *emp_searchque(struct emp_qelem *, void *,
int (*)(struct emp_qelem *, void *));
extern void emp_insque(struct emp_qelem *, struct emp_qelem *); extern void emp_insque(struct emp_qelem *, struct emp_qelem *);
#endif #endif

View file

@ -33,6 +33,7 @@
#include <config.h> #include <config.h>
#include <stddef.h>
#include "queue.h" #include "queue.h"
void void
@ -58,6 +59,19 @@ emp_remque(struct emp_qelem *elem)
elem->q_back->q_forw = elem->q_forw; elem->q_back->q_forw = elem->q_forw;
} }
struct emp_qelem *
emp_searchque(struct emp_qelem *queue, void *key,
int (*test)(struct emp_qelem *, void *))
{
struct emp_qelem *qp;
for (qp = queue->q_forw; qp != queue; qp = qp->q_forw) {
if (test(qp, key))
return qp;
}
return NULL;
}
void void
emp_initque(struct emp_qelem *elem) emp_initque(struct emp_qelem *elem)
{ {