00001 #pragma once
00002 #ifndef PQUEUE_H
00003 #define PQUEUE_H
00004
00005 typedef struct pqueue pqueue_t;
00006
00007 #define PQUEUE_EFAIL 1
00008 #define PQUEUE_EFULL 2
00009 #define PQUEUE_EEMPTY 3
00010
00011 pqueue_t *pqueue_new (size_t max);
00012 void pqueue_free (pqueue_t *q);
00013
00014 int pqueue_add (pqueue_t *q, void *ptr);
00015
00016 int pqueue_add_first (pqueue_t *q, void *ptr);
00017 int pqueue_add_last (pqueue_t *q, void *ptr);
00018
00019 void *pqueue_first (pqueue_t *q);
00020 void *pqueue_last (pqueue_t *q);
00021
00022 void *pqueue_pick (pqueue_t *q, int (*pickp) (void *ptr));
00023 void *pqueue_pick_first (pqueue_t *q, int (*pickp) (void *ptr));
00024 void *pqueue_pick_last (pqueue_t *q, int (*pickp) (void *ptr));
00025
00026 size_t pqueue_count (pqueue_t *q);
00027 int pqueue_notempty (pqueue_t *q);
00028
00029 #endif