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