#include "heap.h" void heap_init(heap_t* heap) { assert(heap); heap->size = 0; heap->cap = 0; heap->data = NULL; } void heap_free(heap_t* heap) { for (size_t i=0; isize; i++) { //value_free(heap->data[i]); //free(heap->data[i]); } free(heap->data); heap->size = 0; heap->cap = 0; heap->data = NULL; } size_t heap_alloc(heap_t* heap, value_t* value) { assert(heap); if (heap->data == NULL) { heap->cap = 2; heap->data = malloc(sizeof(value_t*) * heap->cap); } if (heap->size >= heap->cap) { heap->cap *= 2; heap->data = realloc(heap->data, sizeof(value_t*) * heap->cap); } heap->data[heap->size] = value; heap->size++; return heap->size - 1; } value_t* heap_deref(heap_t* heap, size_t addr) { assert(heap); assert(addr < heap->size); return heap->data[addr]; }