17#ifndef LIBNAGIOS_PQUEUE_H_INCLUDED
18#define LIBNAGIOS_PQUEUE_H_INCLUDED
47typedef void (*prqueue_set_pos_f)(
void *a,
unsigned int pos);
86 prqueue_cmp_pri_f cmppri,
88 prqueue_set_pri_f setpri,
90 prqueue_set_pos_f setpos);
void * prqueue_pop(prqueue_t *q)
pop the highest-ranking item from the queue.
int prqueue_is_valid(prqueue_t *q)
checks that the pq is in the right order, etc
void prqueue_print(prqueue_t *q, FILE *out, prqueue_print_entry_f print)
print the queue
unsigned long long prqueue_pri_t
priority data type (used to be double, but ull is 107 times faster)
Definition prqueue.h:37
prqueue_pri_t(* prqueue_get_pri_f)(void *a)
callback functions to get/set/compare the priority of an element
Definition prqueue.h:40
unsigned int(* prqueue_get_pos_f)(void *a)
callback functions to get/set the position of an element
Definition prqueue.h:46
void prqueue_dump(prqueue_t *q, FILE *out, prqueue_print_entry_f print)
dump the queue and it's internal structure
prqueue_t * prqueue_init(unsigned int n, prqueue_cmp_pri_f cmppri, prqueue_get_pri_f getpri, prqueue_set_pri_f setpri, prqueue_get_pos_f getpos, prqueue_set_pos_f setpos)
initialize the queue
void prqueue_change_priority(prqueue_t *q, prqueue_pri_t new_pri, void *d)
move an existing entry to a different priority
int prqueue_remove(prqueue_t *q, void *d)
remove an item from the queue.
struct prqueue_t prqueue_t
the priority queue handle
void * prqueue_peek(prqueue_t *q)
access highest-ranking item without removing it.
void(* prqueue_print_entry_f)(FILE *out, void *a)
debug callback function to print a entry
Definition prqueue.h:51
void prqueue_free(prqueue_t *q)
free all memory used by the queue
int prqueue_insert(prqueue_t *q, void *d)
insert an item into the queue.
unsigned int prqueue_size(prqueue_t *q)
return the size of the queue.
the priority queue handle
Definition prqueue.h:56
unsigned int step
growth stepping setting
Definition prqueue.h:59
prqueue_set_pri_f setpri
callback to set priority of a node
Definition prqueue.h:62
prqueue_get_pri_f getpri
callback to get priority of a node
Definition prqueue.h:61
unsigned int size
number of elements in this queue
Definition prqueue.h:57
prqueue_set_pos_f setpos
callback to set position of a node
Definition prqueue.h:64
void ** d
The actual queue in binary heap form.
Definition prqueue.h:65
prqueue_get_pos_f getpos
callback to get position of a node
Definition prqueue.h:63
prqueue_cmp_pri_f cmppri
callback to compare nodes
Definition prqueue.h:60
unsigned int avail
slots available in this queue
Definition prqueue.h:58