7#ifndef ZEPHYR_INCLUDE_SYS_MIN_HEAP_H_
8#define ZEPHYR_INCLUDE_SYS_MIN_HEAP_H_
77#define MIN_HEAP_DEFINE(name, storage, cap, size, cmp_func) \
78 struct min_heap name; \
79 min_heap_init(&name, storage, cap, size, cmp_func)
77#define MIN_HEAP_DEFINE(name, storage, cap, size, cmp_func) \ …
90#define MIN_HEAP_DEFINE_STATIC(name, cap, elem_sz, align, cmp_func) \
91 static uint8_t name##_storage[(cap) * (elem_sz)] __aligned(align); \
92 static struct min_heap name = { \
93 .storage = name##_storage, \
95 .elem_size = (elem_sz), \
90#define MIN_HEAP_DEFINE_STATIC(name, cap, elem_sz, align, cmp_func) \ …
172 __ASSERT_NO_MSG(heap !=
NULL);
174 return (heap->
size == 0);
202 const void *other,
size_t *out_id);
233#define MIN_HEAP_FOREACH(heap, node_var, body) \
234 do { for (size_t _i = 0; _i < (heap)->size && \
235 (((node_var) = min_heap_get_element((heap), _i)) || true); \
233#define MIN_HEAP_FOREACH(heap, node_var, body) \ …
void * min_heap_peek(const struct min_heap *heap)
Peek at the top element of the min-heap.
void * min_heap_find(struct min_heap *heap, min_heap_eq_t eq, const void *other, size_t *out_id)
Search for a node in the heap matching a condition.
int min_heap_push(struct min_heap *heap, const void *item)
Push an element into the min-heap.
int(* min_heap_cmp_t)(const void *a, const void *b)
Comparator function type for min-heap ordering.
Definition min_heap.h:38
void min_heap_init(struct min_heap *heap, void *storage, size_t cap, size_t elem_size, min_heap_cmp_t cmp)
Initialize a min-heap instance at runtime.
static bool min_heap_is_empty(struct min_heap *heap)
Check if the min heap is empty.
Definition min_heap.h:170
bool(* min_heap_eq_t)(const void *node, const void *other)
Equality function for finding a node in the heap.
Definition min_heap.h:49
bool min_heap_remove(struct min_heap *heap, size_t id, void *out_buf)
Remove a specific element from the min-heap.
static void * min_heap_get_element(const struct min_heap *heap, size_t index)
Get a pointer to the element at the specified index.
Definition min_heap.h:212
bool min_heap_pop(struct min_heap *heap, void *out_buf)
Remove and return the highest priority element in the heap.
#define NULL
Definition iar_missing_defs.h:20
#define bool
Definition stdbool.h:13
__UINTPTR_TYPE__ uintptr_t
Definition stdint.h:105
min-heap data structure with user-provided comparator.
Definition min_heap.h:55
min_heap_cmp_t cmp
Comparator function.
Definition min_heap.h:65
void * storage
Raw pointer to contiguous memory for elements.
Definition min_heap.h:57
size_t size
Current elements count.
Definition min_heap.h:63
size_t elem_size
Size of each element.
Definition min_heap.h:61
size_t capacity
Maximum number of elements.
Definition min_heap.h:59