45 #include <type_traits>
68 pre_alloc_local<T, byte_alignment>(num_ele, pre_size,
size_data);
74 pre_alloc_local<T, object_alignment>(num_ele, 0,
size_obj);
79 assert(
store == NULL);
83 throw "malloc failed";
91 return post_alloc_local<T, byte_alignment>
98 return post_alloc_local<T, object_alignment>
103 template<
typename T,
int N>
106 assert(
store == NULL);
107 num_ele = calc_aligned_size<T, N>(num_ele);
108 size_t total = (num_ele + pre_size) *
sizeof(T);
114 template<
typename T,
int N>
116 size_t& avail_sz,
void*& avail_p)
118 assert(
store != NULL);
119 num_ele = calc_aligned_size<T, N>(num_ele);
120 size_t total = (num_ele + pre_size) *
sizeof(T);
123 T* p = align_ptr<T, N>((T*)avail_p + pre_size);
124 avail_p = (
ui8*)avail_p + total;
126 assert((avail_sz & 0x8000000000000000llu) == 0);
Definition: ojph_mem.h:178
const ui32 chunk_size
Definition: ojph_mem.h:215
void get_buffer(ui32 needed_bytes, coded_lists *&p)
Definition: ojph_mem.cpp:95
stores_list * store
Definition: ojph_mem.h:213
~mem_elastic_allocator()
Definition: ojph_mem.h:188
mem_elastic_allocator(ui32 chunk_size)
Definition: ojph_mem.h:184
stores_list * cur_store
Definition: ojph_mem.h:213
size_t total_allocated
Definition: ojph_mem.h:214
Definition: ojph_mem.h:53
void pre_alloc_data(size_t num_ele, ui32 pre_size)
Definition: ojph_mem.h:66
void alloc()
Definition: ojph_mem.h:77
void pre_alloc_obj(size_t num_ele)
Definition: ojph_mem.h:72
void * avail_obj
Definition: ojph_mem.h:130
void * store
Definition: ojph_mem.h:130
void pre_alloc_local(size_t num_ele, ui32 pre_size, size_t &sz)
Definition: ojph_mem.h:104
size_t size_data
Definition: ojph_mem.h:131
T * post_alloc_obj(size_t num_ele)
Definition: ojph_mem.h:96
T * post_alloc_local(size_t num_ele, ui32 pre_size, size_t &avail_sz, void *&avail_p)
Definition: ojph_mem.h:115
T * post_alloc_data(size_t num_ele, ui32 pre_size)
Definition: ojph_mem.h:89
void * avail_data
Definition: ojph_mem.h:130
size_t avail_size_data
Definition: ojph_mem.h:131
size_t avail_size_obj
Definition: ojph_mem.h:131
~mem_fixed_allocator()
Definition: ojph_mem.h:60
mem_fixed_allocator()
Definition: ojph_mem.h:55
size_t size_obj
Definition: ojph_mem.h:131
Definition: ojph_block_decoder.cpp:49
int32_t si32
Definition: ojph_defs.h:55
uint32_t ui32
Definition: ojph_defs.h:54
uint8_t ui8
Definition: ojph_defs.h:50
Definition: ojph_mem.h:162
ui32 buf_size
Definition: ojph_mem.h:171
coded_lists(ui32 size)
Definition: ojph_mem.h:163
ui8 * buf
Definition: ojph_mem.h:173
coded_lists * next_list
Definition: ojph_mem.h:170
ui32 avail_size
Definition: ojph_mem.h:172
Definition: ojph_mem.h:136
size_t size
Definition: ojph_mem.h:152
float * f32
Definition: ojph_mem.h:156
ui32 pre_size
Definition: ojph_mem.h:153
void wrap(T *buffer, size_t num_ele, ui32 pre_size)
void pre_alloc(mem_fixed_allocator *p, size_t num_ele, ui32 pre_size)
Definition: ojph_mem.h:138
void finalize_alloc(mem_fixed_allocator *p)
si32 * i32
Definition: ojph_mem.h:155
Definition: ojph_mem.h:201
ui32 available
Definition: ojph_mem.h:209
char * data
Definition: ojph_mem.h:210
stores_list * next_store
Definition: ojph_mem.h:208
stores_list(ui32 chunk_size)
Definition: ojph_mem.h:202
Definition: ojph_base.h:48