Properly link flecs library

This commit is contained in:
2023-11-09 11:38:29 +01:00
parent dc585396c3
commit 8edcf9305c
1392 changed files with 390081 additions and 164 deletions

View File

@@ -0,0 +1,83 @@
/**
* @file datastructures/stack_allocator.h
* @brief Stack allocator.
*/
#ifndef FLECS_STACK_ALLOCATOR_H
#define FLECS_STACK_ALLOCATOR_H
/** Stack allocator for quick allocation of small temporary values */
#define ECS_STACK_PAGE_SIZE (4096)
typedef struct ecs_stack_page_t {
void *data;
struct ecs_stack_page_t *next;
int16_t sp;
uint32_t id;
} ecs_stack_page_t;
typedef struct ecs_stack_t {
ecs_stack_page_t first;
ecs_stack_page_t *tail_page;
ecs_stack_cursor_t *tail_cursor;
#ifdef FLECS_DEBUG
int32_t cursor_count;
#endif
} ecs_stack_t;
FLECS_DBG_API
void flecs_stack_init(
ecs_stack_t *stack);
FLECS_DBG_API
void flecs_stack_fini(
ecs_stack_t *stack);
FLECS_DBG_API
void* flecs_stack_alloc(
ecs_stack_t *stack,
ecs_size_t size,
ecs_size_t align);
#define flecs_stack_alloc_t(stack, T)\
flecs_stack_alloc(stack, ECS_SIZEOF(T), ECS_ALIGNOF(T))
#define flecs_stack_alloc_n(stack, T, count)\
flecs_stack_alloc(stack, ECS_SIZEOF(T) * count, ECS_ALIGNOF(T))
FLECS_DBG_API
void* flecs_stack_calloc(
ecs_stack_t *stack,
ecs_size_t size,
ecs_size_t align);
#define flecs_stack_calloc_t(stack, T)\
flecs_stack_calloc(stack, ECS_SIZEOF(T), ECS_ALIGNOF(T))
#define flecs_stack_calloc_n(stack, T, count)\
flecs_stack_calloc(stack, ECS_SIZEOF(T) * count, ECS_ALIGNOF(T))
FLECS_DBG_API
void flecs_stack_free(
void *ptr,
ecs_size_t size);
#define flecs_stack_free_t(ptr, T)\
flecs_stack_free(ptr, ECS_SIZEOF(T))
#define flecs_stack_free_n(ptr, T, count)\
flecs_stack_free(ptr, ECS_SIZEOF(T) * count)
void flecs_stack_reset(
ecs_stack_t *stack);
FLECS_DBG_API
ecs_stack_cursor_t* flecs_stack_get_cursor(
ecs_stack_t *stack);
FLECS_DBG_API
void flecs_stack_restore_cursor(
ecs_stack_t *stack,
ecs_stack_cursor_t *cursor);
#endif