28 #define BH_PARENT(i) ((i - 1)/2) 29 #define BH_LEFT(i) (2*(i) + 1) 30 #define BH_RIGHT(i) (2*(i)+2) 31 #define BH_ELEMENT_COPY(heap, dest, src) (memcpy (dest, src, (heap)->elem_size)) 33 #define BH_SWAP(heap, left, right) \ 36 BH_ELEMENT_COPY (heap, (heap)->swap_buf, BH_ELEMENT (heap, left)); \ 37 BH_ELEMENT_COPY (heap, BH_ELEMENT (heap, left), BH_ELEMENT (heap, right)); \ 38 BH_ELEMENT_COPY (heap, BH_ELEMENT (heap, right), (heap)->swap_buf); \ 42 #define BH_CMP(heap, l, r) \ 43 (heap->cmp_func (BH_ELEMENT (heap, l), BH_ELEMENT (heap, r), heap->cmp_arg)) 85 if (left <= heap->element_count - 1 &&
BH_CMP (heap, left, largest) ==
BH_GT)
90 if (right <= heap->element_count - 1 &&
BH_CMP (heap, right, largest) ==
BH_GT)
140 memset (heap->
members, 0, max_capacity * elem_size);
262 if (replaced !=
NULL)
399 #if defined(CUBRID_DEBUG) 445 assert (index < heap->element_count);
#define ER_BINARY_HEAP_OUT_OF_RANGE
bool bh_is_consistent(BINARY_HEAP *heap)
#define BH_SWAP(heap, left, right)
void bh_down_heap(BINARY_HEAP *heap, int index)
void bh_to_sorted_array(BINARY_HEAP *heap)
void bh_element_at(BINARY_HEAP *heap, int index, void *elem)
#define assert_release(e)
static void bh_replace_max(BINARY_HEAP *heap, void *elem)
int bh_insert(BINARY_HEAP *heap, void *elem)
bool bh_extract_max(BINARY_HEAP *heap, void *extract_elem)
int bh_add(BINARY_HEAP *heap, void *elem)
bool bh_is_full(BINARY_HEAP *heap)
void er_set(int severity, const char *file_name, const int line_no, int err_id, int num_args,...)
void bh_destroy(THREAD_ENTRY *thread_p, BINARY_HEAP *heap)
static void bh_up_heap(BINARY_HEAP *heap, int index)
void bh_build_heap(BINARY_HEAP *heap)
#define ER_OUT_OF_VIRTUAL_MEMORY
#define BH_ELEMENT_COPY(heap, dest, src)
bool bh_peek_max(BINARY_HEAP *heap, void *peek_elem)
#define db_private_free(thrd, ptr)
#define db_private_alloc(thrd, size)
bh_key_comparator cmp_func
#define BH_CMP(heap, l, r)
BH_TRY_INSERT_RESULT bh_try_insert(BINARY_HEAP *heap, void *elem, void *replaced)
BH_CMP_RESULT(* bh_key_comparator)(const void *left, const void *right, BH_CMP_ARG arg)
BINARY_HEAP * bh_create(THREAD_ENTRY *thread_p, int max_capacity, int elem_size, bh_key_comparator cmp_func, BH_CMP_ARG cmp_arg)
#define BH_ELEMENT(heap, i)