#ifndef FREELIST_H #define FREELIST_H #include #include #include typedef struct FreeListBlock FreeListBlock; typedef struct { FreeListBlock *free; uintptr_t start; uintptr_t end; size_t size; size_t allocated; } FreeList; int fl_init(FreeList *fl, uintptr_t start, size_t size_bytes, size_t itemsize); int fl_free(FreeList *fl, void *ptr); int fl_is_managed(FreeList *fl, void *ptr); void *fl_alloc(FreeList *fl); size_t fl_check(FreeList *fl); size_t fl_allocated(FreeList *fl); size_t fl_available(FreeList *fl); size_t fl_capacity(FreeList *fl); float fl_utilization(FreeList *fl, size_t itemsize); #endif // FREELIST_H