28 if ((*bs_p) ==
nullptr) {
30 uint chunk_count = chunk_size;
32 uint size = chunk_count * stride;
35 chunk_count = size / stride;
45 BLI_assert(stride > 0 && stride <= bs_stride->stride_table_len);
63 size_t *r_size_expanded,
64 size_t *r_size_compacted)
66 size_t size_compacted = 0;
67 size_t size_expanded = 0;
76 *r_size_expanded = size_expanded;
77 *r_size_compacted = size_compacted;
Efficient in-memory storage of multiple similar arrays.
size_t BLI_array_store_calc_size_expanded_get(const BArrayStore *bs)
void BLI_array_store_destroy(BArrayStore *bs)
size_t BLI_array_store_calc_size_compacted_get(const BArrayStore *bs)
BArrayStore * BLI_array_store_create(unsigned int stride, unsigned int chunk_count)
MINLINE unsigned int power_of_2_max_u(unsigned int x)
Read Guarded memory(de)allocation.
#define MEM_recallocN(vmemh, len)
#define MEM_SIZE_OPTIMAL(size)
void BLI_array_store_at_size_calc_memory_usage(const BArrayStore_AtSize *bs_stride, size_t *r_size_expanded, size_t *r_size_compacted)
BArrayStore * BLI_array_store_at_size_get(BArrayStore_AtSize *bs_stride, const int stride)
BArrayStore * BLI_array_store_at_size_ensure(BArrayStore_AtSize *bs_stride, const int stride, const int chunk_size)
void BLI_array_store_at_size_clear(BArrayStore_AtSize *bs_stride)
BArrayStore_AtSize bs_stride
struct BArrayStore ** stride_table