Implementation of a generic heap, following Chapter 10.1 of [19] .
Prototypes | |
LALHeap * | XLALHeapCreate (LALHeapDtorFcn dtor, int max_size, int min_or_max_heap, LALHeapCmpFcn cmp) |
Create a heap. More... | |
LALHeap * | XLALHeapCreate2 (LALHeapDtorFcn dtor, int max_size, int min_or_max_heap, LALHeapCmpParamFcn cmp, void *cmp_param) |
Create a heap with a parameterised comparison function. More... | |
void | XLALHeapDestroy (LALHeap *h) |
Destroy a heap and its elements. More... | |
int | XLALHeapClear (LALHeap *h) |
Clear a heap. More... | |
int | XLALHeapSize (const LALHeap *h) |
Return the size of a heap. More... | |
int | XLALHeapMaxSize (const LALHeap *h) |
Return the maximum size of a heap. More... | |
int | XLALHeapIsFull (const LALHeap *h) |
Return >0 if a limited-size heap is full, 0 otherwise (or if heap has unlimited size), or <0 on error. More... | |
const void * | XLALHeapRoot (const LALHeap *h) |
Return the root element of a heap. More... | |
int | XLALHeapResize (LALHeap *h, int max_size) |
Change the maximum size of a heap; if the heap is contracted, excess elements are destroyed. More... | |
int | XLALHeapAdd (LALHeap *h, void **x) |
Add a new element to a heap; if the heap is of fixed size and full, the root element is removed. More... | |
void * | XLALHeapExtractRoot (LALHeap *h) |
Remove the root element of a heap. More... | |
int | XLALHeapRemoveRoot (LALHeap *h) |
Remove and destroy the root element of a heap. More... | |
int | XLALHeapExchangeRoot (LALHeap *h, void **x) |
Exchange the root element of a non-empty heap with the new element in *x More... | |
int | XLALHeapVisit (const LALHeap *h, LALHeapVisitFcn visit, void *visit_param) |
Visit each element in the heap in the order given by the comparison function. More... | |
int | XLALHeapModify (LALHeap *h, LALHeapModifyFcn modify, void *modify_param) |
Visit (and possibly modify) each element in the heap in the order given by the comparison function. More... | |
const void ** | XLALHeapElements (const LALHeap *h) |
Allocate and return an array containing all elements in the heap. More... | |
Typedefs | |
typedef void(* | LALHeapDtorFcn) (void *x) |
Function which free memory associated with heap element x More... | |
typedef int(* | LALHeapCmpFcn) (const void *x, const void *y) |
Function which compares heap elements x and y More... | |
typedef int(* | LALHeapCmpParamFcn) (void *param, const void *x, const void *y) |
Function which compares heap elements x and y , with a parameter param . More... | |
typedef int(* | LALHeapVisitFcn) (void *param, const void *x) |
Function to call when visiting heap element x , with a parameter param . More... | |
typedef int(* | LALHeapModifyFcn) (void *param, void *x) |
Function to call when visiting (and possibly modify) heap element x , with a parameter param . More... | |
LALHeap * XLALHeapCreate | ( | LALHeapDtorFcn | dtor, |
int | max_size, | ||
int | min_or_max_heap, | ||
LALHeapCmpFcn | cmp | ||
) |
Create a heap.
[in] | dtor | Heap element destructor function, if required |
[in] | max_size | Maximum size of the heap; if zero, heap has unlimited size |
[in] | min_or_max_heap | -1|+1 if root of heap is minimum|maximum element |
cmp | [in[ Heap element comparison function |
LALHeap * XLALHeapCreate2 | ( | LALHeapDtorFcn | dtor, |
int | max_size, | ||
int | min_or_max_heap, | ||
LALHeapCmpParamFcn | cmp, | ||
void * | cmp_param | ||
) |
Create a heap with a parameterised comparison function.
[in] | dtor | Heap element destructor function, if required |
[in] | max_size | Maximum size of the heap; if zero, heap has unlimited size |
[in] | min_or_max_heap | -1|+1 if root of heap is minimum|maximum element |
[in] | cmp | Parameterised heap element comparison function |
[in] | cmp_param | Parameter to pass to comparison function |
void XLALHeapDestroy | ( | LALHeap * | h | ) |
int XLALHeapClear | ( | LALHeap * | h | ) |
int XLALHeapSize | ( | const LALHeap * | h | ) |
int XLALHeapMaxSize | ( | const LALHeap * | h | ) |
int XLALHeapIsFull | ( | const LALHeap * | h | ) |
const void * XLALHeapRoot | ( | const LALHeap * | h | ) |
int XLALHeapResize | ( | LALHeap * | h, |
int | max_size | ||
) |
int XLALHeapAdd | ( | LALHeap * | h, |
void ** | x | ||
) |
void * XLALHeapExtractRoot | ( | LALHeap * | h | ) |
int XLALHeapRemoveRoot | ( | LALHeap * | h | ) |
int XLALHeapExchangeRoot | ( | LALHeap * | h, |
void ** | x | ||
) |
int XLALHeapVisit | ( | const LALHeap * | h, |
LALHeapVisitFcn | visit, | ||
void * | visit_param | ||
) |
int XLALHeapModify | ( | LALHeap * | h, |
LALHeapModifyFcn | modify, | ||
void * | modify_param | ||
) |
const void ** XLALHeapElements | ( | const LALHeap * | h | ) |
typedef void(* LALHeapDtorFcn) (void *x) |
typedef int(* LALHeapCmpFcn) (const void *x, const void *y) |
typedef int(* LALHeapCmpParamFcn) (void *param, const void *x, const void *y) |
typedef int(* LALHeapVisitFcn) (void *param, const void *x) |