Rename BzHeap to BzHeapHead

This commit is contained in:
2023-11-15 14:33:35 +01:00
parent c23bf3a48f
commit 5a1401e9b8

View File

@@ -2,28 +2,28 @@
#include "../core/memory.h" #include "../core/memory.h"
typedef struct BzHeap { typedef struct BzHeapHead {
i32 capacity; i32 capacity;
i32 size; i32 size;
i32 stride; i32 stride;
i32 weightOffset; i32 weightOffset;
} BzHeap; } BzHeapHead;
#define HEAP_HEAD(heap) (((BzHeap *)heap) - 1) #define HEAP_HEAD(heap) (((BzHeapHead *)heap) - 1)
#define HEAP_LEFT(i) ((i32)(i * 2 + 1)) #define HEAP_LEFT(i) ((i32)(i * 2 + 1))
#define HEAP_RIGHT(i) ((i32)(i * 2 + 2)) #define HEAP_RIGHT(i) ((i32)(i * 2 + 2))
#define HEAP_PARENT(i) ((i32) ((i - 1) / 2)) #define HEAP_PARENT(i) ((i32) ((i - 1) / 2))
static void heapSiftUp(BzHeap *head, void *heap); static void heapSiftUp(BzHeapHead *head, void *heap);
static void heapSiftDown(BzHeap *head, void *heap); static void heapSiftDown(BzHeapHead *head, void *heap);
void *_bzHeapNew(i32 startCapacity, i32 stride, i32 weightOffset) { void *_bzHeapNew(i32 startCapacity, i32 stride, i32 weightOffset) {
i32 numBytes = sizeof(BzHeap) + (startCapacity + 1) * stride; i32 numBytes = sizeof(BzHeapHead) + (startCapacity + 1) * stride;
BzHeap *heap = bzAlloc(numBytes); BzHeapHead *heap = bzAlloc(numBytes);
heap[0] = (BzHeap) { heap[0] = (BzHeapHead) {
.capacity=startCapacity, .capacity=startCapacity,
.size=0, .size=0,
.stride=stride, .stride=stride,
@@ -37,7 +37,7 @@ void _bzHeapFree(void *heap) {
bzFree(HEAP_HEAD(heap)); bzFree(HEAP_HEAD(heap));
} }
void _bzHeapClear(void *heap) { void _bzHeapClear(void *heap) {
BzHeap *head = HEAP_HEAD(heap); BzHeapHead *head = HEAP_HEAD(heap);
head->size = 0; head->size = 0;
} }
@@ -49,7 +49,7 @@ bool _bzHeapIsEmpty(void *heap) {
} }
i32 _bzHeapPop(void *heap) { i32 _bzHeapPop(void *heap) {
BzHeap *head = HEAP_HEAD(heap); BzHeapHead *head = HEAP_HEAD(heap);
BZ_ASSERT(head->size > 0); BZ_ASSERT(head->size > 0);
// Move first to index capacity (for output) // Move first to index capacity (for output)
@@ -65,7 +65,7 @@ i32 _bzHeapPop(void *heap) {
return head->capacity; return head->capacity;
} }
void _bzHeapPush(void *heap) { void _bzHeapPush(void *heap) {
BzHeap *head = HEAP_HEAD(heap); BzHeapHead *head = HEAP_HEAD(heap);
BZ_ASSERT(head->size + 1 < head->capacity); BZ_ASSERT(head->size + 1 < head->capacity);
void *item = ((u8 *)heap) + head->capacity * head->stride; void *item = ((u8 *)heap) + head->capacity * head->stride;
@@ -78,7 +78,7 @@ i32 _bzHeapPushTmpIdx(void *heap) {
return HEAP_HEAD(heap)->capacity; return HEAP_HEAD(heap)->capacity;
} }
static void heapSwap(BzHeap *head, void *heap, i32 aIdx, i32 bIdx) { static void heapSwap(BzHeapHead *head, void *heap, i32 aIdx, i32 bIdx) {
u8 *aItem = ((u8 *)heap) + aIdx * head->stride; u8 *aItem = ((u8 *)heap) + aIdx * head->stride;
u8 *bItem = ((u8 *)heap) + bIdx * head->stride; u8 *bItem = ((u8 *)heap) + bIdx * head->stride;
@@ -88,12 +88,12 @@ static void heapSwap(BzHeap *head, void *heap, i32 aIdx, i32 bIdx) {
bzMemMove(aItem, bItem, head->stride); bzMemMove(aItem, bItem, head->stride);
bzMemMove(bItem, tmp, head->stride); bzMemMove(bItem, tmp, head->stride);
} }
static int heapCmp(BzHeap *head, void *heap, i32 lhs, i32 rhs) { static int heapCmp(BzHeapHead *head, void *heap, i32 lhs, i32 rhs) {
int *aWeight = (i32 *) (((u8 *)heap) + lhs * head->stride + head->weightOffset); int *aWeight = (i32 *) (((u8 *)heap) + lhs * head->stride + head->weightOffset);
int *bWeight = (i32 *) (((u8 *)heap) + rhs * head->stride + head->weightOffset); int *bWeight = (i32 *) (((u8 *)heap) + rhs * head->stride + head->weightOffset);
return (*aWeight) - (*bWeight); return (*aWeight) - (*bWeight);
} }
static void heapSiftUp(BzHeap *head, void *heap) { static void heapSiftUp(BzHeapHead *head, void *heap) {
i32 idx = head->size - 1; i32 idx = head->size - 1;
while (idx >= 0) { while (idx >= 0) {
@@ -105,7 +105,7 @@ static void heapSiftUp(BzHeap *head, void *heap) {
} }
} }
static void heapSiftDown(BzHeap *head, void *heap) { static void heapSiftDown(BzHeapHead *head, void *heap) {
i32 idx = 0; i32 idx = 0;
while (idx < head->size) { while (idx < head->size) {