diff --git a/include/malunal/allocator.h b/include/malunal/allocator.h index 0ef4a65..2252655 100644 --- a/include/malunal/allocator.h +++ b/include/malunal/allocator.h @@ -94,28 +94,14 @@ typedef struct { * virtual table for itself. Other objects which implement this, may * come with member variables. */ -typedef struct { +define_struct(allocator) { /** * @brief A pointer to an immutable allocator virtual function table. * @details Contains the function pointers to the allocator specific functions * that make this allocator function as one. */ const allocator_vtable_t* vtable; -} allocator_t; - -/** - * @brief A pointer to a mutable allocator. - * @details This is provided to simplify type declarations for functions - * requiring allocators that are meant to be mutable. - */ -typedef allocator_t* allocator_mptr_t; - -/** - * @brief A pointer to a immutable allocator view. - * @details This is provided to simplify type declarations for functions - * requiring allocators that are meant to be immutable. - */ -typedef const allocator_t* allocator_iptr_t; +}; /** diff --git a/include/malunal/allocators/arena.h b/include/malunal/allocators/arena.h index 8fc0e9f..ed41a87 100644 --- a/include/malunal/allocators/arena.h +++ b/include/malunal/allocators/arena.h @@ -24,29 +24,16 @@ /** + * @struct arena_allocator * @brief Defines a concrete arena allocator. * @details An arena allocator is a type of large push allocator. It simply * obtains large regions of memory, rounded up to the next operating * system page size, and pushes data onto those pages without any * understanding of how to dispose that data later. */ -typedef struct { +define_struct(arena_allocator) { malunal_size_t __opaque[2]; -} arena_allocator_t; - -/** - * @brief A pointer to a mutable arena allocator. - * @details This is provided to simplify type declarations for functions - * requiring arena allocators that are meant to be mutable. - */ -typedef arena_allocator_t* arena_allocator_mptr_t; - -/** - * @brief A pointer to an immutable arena allocator. - * @details This is provided to simplify type declarations for functions - * requiring arena allocators that are meant to be immutable. - */ -typedef const arena_allocator_t* arena_allocator_iptr_t; +}; /** * @brief Obtains the size of the arena allocator. diff --git a/include/malunal/allocators/linear.h b/include/malunal/allocators/linear.h index 0f41191..df99c7b 100644 --- a/include/malunal/allocators/linear.h +++ b/include/malunal/allocators/linear.h @@ -11,28 +11,15 @@ #define MALUNAL_ALLOCATORS_LINEAR_HEADER /** + * @struct linear_allocator * @brief Defines a concrete linear allocator. * @details Linear allocators, also called bump allocators, simply track small * acquisitions into the buffer that is provided to it. It does this * by knowing how much memory */ -typedef struct { +define_struct(linear_allocator) { malunal_size_t __opaque[4]; -} linear_allocator_t; - -/** - * @brief A pointer to a mutable linear allocator. - * @details This is provided to simplify type declarations for functions - * requiring linear allocators that are meant to be mutable. - */ -typedef linear_allocator_t* linear_allocator_mptr_t; - -/** - * @brief A pointer to an immutable linear allocator. - * @details This is provided to simplify type declarations for functions - * requiring linear allocators that are meant to be immutable. - */ -typedef const linear_allocator_t* linear_allocator_iptr_t; +}; /** * @brief Obtains the size of the linear allocator. diff --git a/include/malunal/allocators/pool.h b/include/malunal/allocators/pool.h index 750b70f..7ee6a02 100644 --- a/include/malunal/allocators/pool.h +++ b/include/malunal/allocators/pool.h @@ -11,6 +11,7 @@ #define MALUNAL_ALLOCATORS_POOL_HEADER /** + * @struct pool_allocator * @brief Defines a concrete pool allocator. * @details A pool allocator is a type of free listing allocator. It obtains * some underlying memory region and divides it up into chunks that @@ -20,24 +21,9 @@ * The pool allocator will automatically upsize the stride to a multiple * of two when initializing the pool. */ -typedef struct { +define_struct(pool_allocator) { malunal_size_t __opaque[7]; -} pool_allocator_t; - -/** - * @brief A pointer to a mutable pool allocator. - * @details This is provided to simplify type declarations for functions - * requiring pool allocators that are meant to be mutable. - */ -typedef pool_allocator_t* pool_allocator_mptr_t; - -/** - * @brief A pointer to an immutable pool allocator. - * @details This is provided to simplify type declarations for functions - * requiring pool allocators that are meant to be immutable. - */ -typedef const pool_allocator_t* pool_allocator_iptr_t; - +}; /** * @brief Obtains the stride of the pool allocator. diff --git a/include/malunal/allocators/stack.h b/include/malunal/allocators/stack.h index fa757eb..60e0ef9 100644 --- a/include/malunal/allocators/stack.h +++ b/include/malunal/allocators/stack.h @@ -11,6 +11,7 @@ #define MALUNAL_ALLOCATORS_STACK_HEADER /** + * @struct stack_allocator * @brief Defines a concrete stack allocator. * @details A stack allocator is one that acquires and disposes in a first in * last out manner. This is useful for temporary stacks and some @@ -19,24 +20,9 @@ * disposed must be the last acquired address or the allocator will * fail to dispose it. */ -typedef struct { +define_struct(stack_allocator) { malunal_size_t __opaque[6]; -} stack_allocator_t; - -/** - * @brief A pointer to a mutable stack allocator. - * @details This is provided to simplify type declarations for functions - * requiring stack allocators that are meant to be mutable. - */ -typedef stack_allocator_t* stack_allocator_mptr_t; - -/** - * @brief A pointer to an immutable stack allocator. - * @details This is provided to simplify type declarations for functions - * requiring stack allocators that are meant to be immutable. - */ -typedef const stack_allocator_t* stack_allocator_iptr_t; - +}; /** * @brief Obtains the stride of the stack allocator.