19 #define CHUNK_EMPTY ((size_t)-1)
21 #define CHUNK_SIZE_DEFAULT (1 << 16)
23 #define CHUNK_ELEM_MIN 32
43 return ((
char *)(stack)->chunk_curr->data) + ((stack)->elem_size * (stack)->chunk_index);
67 const char *description,
150 dst = (
void *)((
char *)dst + stack->
elem_size);
158 dst = (
void *)((
char *)dst + (stack->
elem_size * n));
161 dst = (
void *)((
char *)dst - stack->
elem_size);
212 while (chunk_free_last->
next) {
213 chunk_free_last = chunk_free_last->
next;
Strict compiler flags for areas of code we want to ensure don't do conversions without us knowing abo...
Read Guarded memory(de)allocation.
#define MEM_SIZE_OVERHEAD
SyclQueue void void * src
void(* MEM_freeN)(void *vmemh)
void *(* MEM_callocN)(size_t len, const char *str)
void *(* MEM_mallocN)(size_t len, const char *str)
static const int chunk_size
void BLI_stack_clear(BLI_Stack *stack)
static void * stack_get_last_elem(BLI_Stack *stack)
void * BLI_stack_push_r(BLI_Stack *stack)
void * BLI_stack_peek(BLI_Stack *stack)
void BLI_stack_pop_n_reverse(BLI_Stack *stack, void *dst, unsigned int n)
void BLI_stack_pop_n(BLI_Stack *stack, void *dst, unsigned int n)
static void stack_free_chunks(struct StackChunk *data)
static size_t stack_chunk_elem_max_calc(const size_t elem_size, size_t chunk_size)
void BLI_stack_free(BLI_Stack *stack)
void BLI_stack_discard(BLI_Stack *stack)
BLI_Stack * BLI_stack_new(const size_t elem_size, const char *description)
#define CHUNK_SIZE_DEFAULT
size_t BLI_stack_count(const BLI_Stack *stack)
void BLI_stack_pop(BLI_Stack *stack, void *dst)
void BLI_stack_push(BLI_Stack *stack, const void *src)
bool BLI_stack_is_empty(const BLI_Stack *stack)
BLI_Stack * BLI_stack_new_ex(const size_t elem_size, const char *description, const size_t chunk_size)
struct StackChunk * chunk_free
struct StackChunk * chunk_curr