98 a->first_child->prev_or_parent =
b;
99 b->prev_or_parent =
a;
100 b->next_sibling =
a->first_child;
202 Assert(*prev_ptr == node);
215 *prev_ptr = replacement;
221 *prev_ptr = next_sibling;
281 newroot =
merge(heap, newroot, curr);
294#ifdef PAIRINGHEAP_DEBUG
308 dumpfunc(node,
buf, opaque);
311 pairingheap_dump_recurse(
buf, node->
first_child, dumpfunc, opaque, depth + 1, node);
312 prev_or_parent = node;
329 pairingheap_dump_recurse(&
buf, heap->
ph_root, dumpfunc, opaque, 0, NULL);
static int compare(const void *arg1, const void *arg2)
Assert(PointerIsAligned(start, uint64))
char * pstrdup(const char *in)
void pfree(void *pointer)
void pairingheap_remove(pairingheap *heap, pairingheap_node *node)
void pairingheap_add(pairingheap *heap, pairingheap_node *node)
static pairingheap_node * merge(pairingheap *heap, pairingheap_node *a, pairingheap_node *b)
pairingheap * pairingheap_allocate(pairingheap_comparator compare, void *arg)
pairingheap_node * pairingheap_remove_first(pairingheap *heap)
void pairingheap_free(pairingheap *heap)
pairingheap_node * pairingheap_first(pairingheap *heap)
static pairingheap_node * merge_children(pairingheap *heap, pairingheap_node *children)
#define pairingheap_is_empty(h)
int(* pairingheap_comparator)(const pairingheap_node *a, const pairingheap_node *b, void *arg)
void appendStringInfoSpaces(StringInfo str, int count)
void appendStringInfoChar(StringInfo str, char ch)
void initStringInfo(StringInfo str)
struct pairingheap_node * next_sibling
struct pairingheap_node * prev_or_parent
struct pairingheap_node * first_child
pairingheap_comparator ph_compare
pairingheap_node * ph_root