slitter 0.1.0

A C- and Rust-callable slab allocator with a focus on safety
Documentation
#include "mag.h"

extern bool slitter__magazine_is_exhausted(const struct magazine *);
extern void *slitter__magazine_get_non_empty(struct magazine *);
extern void slitter__magazine_put_non_full(struct magazine *, void *);

void *
slitter__magazine_get(struct magazine *restrict mag)
{

	if (slitter__magazine_is_exhausted(mag))
		return NULL;

	return slitter__magazine_get_non_empty(mag);
}

void *
slitter__magazine_put(struct magazine *restrict mag, void *alloc)
{

	if (slitter__magazine_is_exhausted(mag))
		return alloc;

	slitter__magazine_put_non_full(mag, alloc);
	return NULL;
}

size_t
slitter__magazine_capacity(void)
{

	return SLITTER__MAGAZINE_SIZE;
}

size_t
slitter__magazine_storage_sizeof(void)
{

	return sizeof(struct magazine_storage);
}

size_t
slitter__magazine_sizeof(void)
{

	return sizeof(struct magazine);
}