4 typedef unsigned pq_id_t;
\r
5 typedef double pq_priority_t;
\r
7 /* an entry in the queue */
\r
9 pq_priority_t priority;
\r
14 typedef struct poe_queue_tag poe_queue;
\r
16 extern poe_queue *pq_create(void);
\r
18 pq_delete(poe_queue *pq);
\r
20 pq_enqueue(poe_queue *pq, pq_priority_t priority, SV *payload);
\r
22 pq_get_item_count(poe_queue *pq);
\r
24 pq_dequeue_next(poe_queue *pq, pq_priority_t *priority, pq_id_t *id, SV **payload);
\r
26 pq_get_next_priority(poe_queue *pq, pq_priority_t *priority);
\r
28 pq_remove_item(poe_queue *pq, pq_id_t id, SV *filter, pq_entry *removed);
\r
30 pq_remove_items(poe_queue *pq, SV *filter, int max_count, pq_entry **entries);
\r
32 pq_set_priority(poe_queue *pq, pq_id_t id, SV *filter, pq_priority_t new_priority);
\r
34 pq_adjust_priority(poe_queue *pq, pq_id_t id, SV *filter, double delta, pq_priority_t *priority);
\r
36 pq_peek_items(poe_queue *pq, SV *filter, int max_count, pq_entry **items);
\r
37 extern void pq_dump(poe_queue *pq);
\r