diff options
Diffstat (limited to 'source/blender/blenlib/BLI_heap.h')
-rw-r--r-- | source/blender/blenlib/BLI_heap.h | 21 |
1 files changed, 1 insertions, 20 deletions
diff --git a/source/blender/blenlib/BLI_heap.h b/source/blender/blenlib/BLI_heap.h index 3d7e526ebe4..dcdbf53c0bb 100644 --- a/source/blender/blenlib/BLI_heap.h +++ b/source/blender/blenlib/BLI_heap.h @@ -23,7 +23,7 @@ /** \file BLI_heap.h * \ingroup bli - * \brief A heap / priority queue ADT + * \brief A min-heap / priority queue ADT */ struct Heap; @@ -33,36 +33,17 @@ typedef struct HeapNode HeapNode; typedef void (*HeapFreeFP)(void *ptr); -/* Creates a new heap. BLI_memarena is used for allocating nodes. Removed nodes - * are recycled, so memory usage will not shrink. */ Heap *BLI_heap_new_ex(unsigned int tot_reserve) ATTR_WARN_UNUSED_RESULT; Heap *BLI_heap_new(void) ATTR_WARN_UNUSED_RESULT; void BLI_heap_clear(Heap *heap, HeapFreeFP ptrfreefp) ATTR_NONNULL(1); void BLI_heap_free(Heap *heap, HeapFreeFP ptrfreefp) ATTR_NONNULL(1); - -/* Insert heap node with a value (often a 'cost') and pointer into the heap, - * duplicate values are allowed. */ HeapNode *BLI_heap_insert(Heap *heap, float value, void *ptr) ATTR_NONNULL(1); - -/* Insert or update */ void BLI_heap_insert_or_update(Heap *heap, HeapNode **node_p, float value, void *ptr) ATTR_NONNULL(1, 2); - -/* Remove a heap node. */ void BLI_heap_remove(Heap *heap, HeapNode *node) ATTR_NONNULL(1, 2); - -/* Return 0 if the heap is empty, 1 otherwise. */ bool BLI_heap_is_empty(const Heap *heap) ATTR_NONNULL(1); - -/* Return the size of the heap. */ unsigned int BLI_heap_size(const Heap *heap) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1); - -/* Return the top node of the heap. This is the node with the lowest value. */ HeapNode *BLI_heap_top(const Heap *heap) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1); - -/* Pop the top node off the heap and return it's pointer. */ void *BLI_heap_popmin(Heap *heap) ATTR_NONNULL(1); - -/* Update the priority in the heap (may be slow but generally faster than remove/insert). */ void BLI_heap_node_value_update(Heap *heap, HeapNode *node, float value) ATTR_NONNULL(1, 2); void BLI_heap_node_value_update_ptr(Heap *heap, HeapNode *node, float value, void *ptr) ATTR_NONNULL(1, 2); |