Go to the documentation of this file.
21 #define csnip_heap_SiftUp(u, v, au_lessthan_av, swap_au_av, K, N, i) \
23 size_t u = (size_t)(i); \
26 size_t v = (u - 1) / (K); \
27 if (au_lessthan_av) { \
35 #define csnip_heap_SiftDown(u, v, au_lessthan_av, swap_au_av, K, N, i) \
38 size_t csnip_heap_i = (size_t)(i); \
39 v = csnip_heap_i * (K) + 1; \
40 while (v < (size_t)(N)) { \
41 size_t csnip_heap_nu = \
42 csnip_Min(v + (K), (size_t)(N)); \
44 while (u < csnip_heap_nu) { \
59 #define csnip_heap_Heapify(u, v, au_lessthan_av, swap_au_av, K, N) \
63 size_t csnip_h_make_i = ((N) - 1) / (K); \
65 csnip_heap_SiftDown(u, v, \
66 au_lessthan_av, swap_au_av, \
67 K, N, csnip_h_make_i); \
68 if (csnip_h_make_i == 0) \
85 #define CSNIP_HEAP_DECL_FUNCS(scope, prefix, gen_args) \
86 scope void prefix ## sift_up(csnip_pp_prepend_##gen_args \
88 scope void prefix ## sift_down(csnip_pp_prepend_##gen_args \
90 scope void prefix ## heapify(csnip_pp_list_##gen_args);
119 #define CSNIP_HEAP_DEF_FUNCS(scope, prefix, gen_args, \
120 u, v, au_lessthan_av, swap_au_av, K, N) \
121 scope void prefix ## sift_up(csnip_pp_prepend_##gen_args \
124 csnip_heap_SiftUp(u, v, \
125 au_lessthan_av, swap_au_av, \
129 scope void prefix ## sift_down(csnip_pp_prepend_##gen_args \
132 csnip_heap_SiftDown(u, v, \
133 au_lessthan_av, swap_au_av, \
137 scope void prefix ## heapify(csnip_pp_list_##gen_args) \
139 csnip_heap_Heapify(u, v, \
140 au_lessthan_av, swap_au_av, \
148 #if defined(CSNIP_SHORT_NAMES) && !defined(CSNIP_HEAP_HAVE_SHORT_NAMES)
149 #define heap_SiftUp csnip_heap_SiftUp
150 #define heap_SiftDown csnip_heap_SiftDown
151 #define heap_Heapify csnip_heap_Heapify
152 #define CSNIP_HEAP_HAVE_SHORT_NAMES