22#define CHUNK_SIZE_DEFAULT (1 << 16)
24#define CHUNK_ELEM_MIN 32
44 return ((
char *)(queue)->chunk_first->data) + ((queue)->elem_size * (queue)->chunk_first_index);
49 return ((
char *)(queue)->chunk_last->data) + ((queue)->elem_size * (queue)->chunk_last_index);
60 BLI_assert((elem_size != 0) && (chunk_size != 0));
62 while (
UNLIKELY(chunk_size <= elem_size_min)) {
69 return chunk_size / elem_size;
116 chunk->
next =
nullptr;
Read Guarded memory(de)allocation.
#define MEM_SIZE_OVERHEAD
BMesh const char void * data
void BLI_gsqueue_free(GSQueue *queue)
static void * queue_get_first_elem(GSQueue *queue)
void BLI_gsqueue_push(GSQueue *queue, const void *item)
static void queue_free_chunk(QueueChunk *data)
void BLI_gsqueue_pop(GSQueue *queue, void *r_item)
GSQueue * BLI_gsqueue_new(const size_t elem_size)
static void * queue_get_last_elem(GSQueue *queue)
bool BLI_gsqueue_is_empty(const GSQueue *queue)
static size_t queue_chunk_elem_max_calc(const size_t elem_size, size_t chunk_size)
#define CHUNK_SIZE_DEFAULT
size_t BLI_gsqueue_len(const GSQueue *queue)
void * MEM_mallocN(size_t len, const char *str)
void * MEM_callocN(size_t len, const char *str)
void MEM_freeN(void *vmemh)