2 * Sherlock Library -- Universal Heap Macros
4 * (c) 2001 Martin Mares <mj@ucw.cz>
7 #define HEAP_BUBBLE_DOWN_J(heap,num,less,swap) \
13 if (less(heap[j],heap[l]) && (l == num || less(heap[j],heap[l+1]))) \
15 if (l != num && less(heap[l+1],heap[l])) \
21 #define HEAP_BUBBLE_UP_J(heap,num,less,swap) \
25 if (less(heap[u], heap[j])) \
31 #define HEAP_INIT(type,heap,num,less,swap) \
39 HEAP_BUBBLE_DOWN_J(heap,num,less,swap) \
44 #define HEAP_DELMIN(type,heap,num,less,swap) \
51 HEAP_BUBBLE_DOWN_J(heap,num,less,swap); \
54 #define HEAP_INSERT(type,heap,num,less,swap) \
59 HEAP_BUBBLE_UP_J(heap,num,less,swap); \
62 #define HEAP_INCREASE(type,heap,num,less,swap) \
67 HEAP_BUBBLE_DOWN_J(heap,num,less,swap); \
70 #define HEAP_DELETE(type,heap,num,less,swap,pos) \
77 if (less(heap[j], heap[num+1])) \
78 HEAP_BUBBLE_UP_J(heap,num,less,swap) \
80 HEAP_BUBBLE_DOWN_J(heap,num,less,swap); \