#ifndef BEST_FIT_ALLOCATOR_H
#define BEST_FIT_ALLOCATOR_H

#include <stddef.h>

#ifdef __cplusplus
extern "C" {
#endif

typedef struct best_fit_allocator best_fit_allocator_t;

best_fit_allocator_t *bf_allocator_create(size_t pool_size);
void bf_allocator_destroy(best_fit_allocator_t *allocator);
void *bf_allocator_alloc(best_fit_allocator_t *allocator, size_t size);
void bf_allocator_free(best_fit_allocator_t *allocator, void *ptr);
void bf_allocator_print(const best_fit_allocator_t *allocator);

#ifdef __cplusplus
}
#endif
#endif /* BEST_FIT_ALLOCATOR_H */
