Minheap
include/structures/minheap.h View source View on GitHubStructs
Section titled “Structs”minheap_node
Section titled “minheap_node” struct minheap_node (2 fields) source
§
atomic_uint64_t key §
atomic_uint32_t index minheap
Section titled “minheap” struct minheap (4 fields) source
Functions
Section titled “Functions”minheap_insert
Section titled “minheap_insert”void minheap_insert(
struct minheap *heap,
struct minheap_node *node,
uint64_t key
) source minheap_remove
Section titled “minheap_remove”void minheap_remove(struct minheap *heap, struct minheap_node *node) source minheap_expand
Section titled “minheap_expand”minheap_peek
Section titled “minheap_peek”struct minheap_node * minheap_peek(struct minheap *heap) source minheap_pop
Section titled “minheap_pop”struct minheap_node * minheap_pop(struct minheap *heap) source minheap_node_valid
Section titled “minheap_node_valid”bool minheap_node_valid(struct minheap_node *node) source Variables
Section titled “Variables”cc_nullable
Section titled “cc_nullable”Macros
Section titled “Macros”MINHEAP_INIT_CAP
Section titled “MINHEAP_INIT_CAP”#define MINHEAP_INIT_CAP 32 source MINHEAP_INDEX_INVALID
Section titled “MINHEAP_INDEX_INVALID”#define MINHEAP_INDEX_INVALID ((uint32_t) -1) source minheap_for_each
Section titled “minheap_for_each”#define minheap_for_each(node_ptr_, heap_) source Expansion
#define minheap_for_each(node_ptr_, heap_) \
for (uint32_t __mh_idx = 0; \
__mh_idx < (heap_)->size && \
(((node_ptr_) = ((heap_)->nodes[__mh_idx])), true); \
__mh_idx++) MINHEAP_SIZE
Section titled “MINHEAP_SIZE”#define MINHEAP_SIZE(mh) source Expansion
#define MINHEAP_SIZE(mh) (atomic_load(&mh->size)) MINHEAP_CAPACITY
Section titled “MINHEAP_CAPACITY”#define MINHEAP_CAPACITY(mh) source Expansion
#define MINHEAP_CAPACITY(mh) (atomic_load(&mh->capacity)) MINHEAP_NODE_KEY
Section titled “MINHEAP_NODE_KEY”#define MINHEAP_NODE_KEY(mhn) source Expansion
#define MINHEAP_NODE_KEY(mhn) (atomic_load(&mhn->key)) MINHEAP_NODE_INDEX
Section titled “MINHEAP_NODE_INDEX”#define MINHEAP_NODE_INDEX(mhn) source Expansion
#define MINHEAP_NODE_INDEX(mhn) (atomic_load(&mhn->index)) MINHEAP_SET_SIZE
Section titled “MINHEAP_SET_SIZE”#define MINHEAP_SET_SIZE(mh, n) source Expansion
#define MINHEAP_SET_SIZE(mh, n) (atomic_store(&mh->size, n)) MINHEAP_SET_CAPACITY
Section titled “MINHEAP_SET_CAPACITY”#define MINHEAP_SET_CAPACITY(mh, n) source Expansion
#define MINHEAP_SET_CAPACITY(mh, n) (atomic_store(&mh->capacity, n)) MINHEAP_NODE_SET_KEY
Section titled “MINHEAP_NODE_SET_KEY”#define MINHEAP_NODE_SET_KEY(mhn, n) source Expansion
#define MINHEAP_NODE_SET_KEY(mhn, n) (atomic_store(&mhn->key, n)) MINHEAP_NODE_SET_INDEX
Section titled “MINHEAP_NODE_SET_INDEX”#define MINHEAP_NODE_SET_INDEX(mhn, n) source Expansion
#define MINHEAP_NODE_SET_INDEX(mhn, n) (atomic_store(&mhn->index, n)) MINHEAP_NODE_INVALID
Section titled “MINHEAP_NODE_INVALID”#define MINHEAP_NODE_INVALID(mhn) source Expansion
#define MINHEAP_NODE_INVALID(mhn) \
(MINHEAP_NODE_INDEX(mhn) == MINHEAP_INDEX_INVALID) MINHEAP_MARK_NODE_INVALID
Section titled “MINHEAP_MARK_NODE_INVALID”#define MINHEAP_MARK_NODE_INVALID(mhn) source Expansion
#define MINHEAP_MARK_NODE_INVALID(mhn) \
(MINHEAP_NODE_SET_INDEX(mhn, MINHEAP_INDEX_INVALID))