47 finalsize -= num_elements;
115 if (module > 0) element_count++;
132 unsigned char *pointer_pos = (
unsigned char *)pointer;
133 unsigned char *pool_pos = (
unsigned char *)
m_pool;
135 if (pointer_pos < pool_pos)
return false;
136 size_t offset = size_t(pointer_pos - pool_pos);
151 for (i = 0; i < m_pool_count; i++)
153 m_pools[i]->end_pool();
165 m_pools[m_pool_count] = newptr;
167 m_pools[m_pool_count]->
init_pool(m_pool_element_size, m_pool_element_count);
179 pool = push_new_pool();
205 while (i < m_pool_count && ptr == NULL)
207 ptr = m_pools[i]->allocate(size_bytes);
213 return failback_alloc(size_bytes);
221 while (i < m_pool_count && result ==
false)
223 result = m_pools[i]->freeMemory(pointer);
227 if (result)
return true;
229 return failback_free(pointer);
234 #define BT_DEFAULT_POOL_SIZE 32768 235 #define BT_DEFAULT_POOL_ELEMENT_SIZE 8 251 return g_main_allocator.
allocate(size);
257 size_t copysize = oldsize < newsize ? oldsize : newsize;
258 memcpy(newptr, ptr, copysize);
void btPoolFree(void *ptr)
static DBVT_INLINE btScalar size(const btDbvtVolume &a)
void * btPoolRealloc(void *ptr, size_t oldsize, size_t newsize)
#define BT_DEFAULT_POOL_ELEMENT_SIZE
void * allocate(size_t size_bytes)
Allocates memory in pool.
void init_pool(size_t element_size, size_t element_count)
void * allocate(size_t size_bytes)
Allocates memory in pool.
Generic Allocator with pools.
#define BT_DEFAULT_POOL_SIZE
************** STANDARD ALLOCATOR ***************************///
size_t allocate_from_free_nodes(size_t num_elements)
*************** btGenericMemoryPool ******************///////////
virtual ~btGenericPoolAllocator()
*******************! btGenericPoolAllocator *******************!///
size_t m_max_element_count
#define BT_DEFAULT_MAX_POOLS
size_t allocate_from_pool(size_t num_elements)
size_t * m_allocated_sizes
btGenericMemoryPool * push_new_pool()
#define btAlignedFree(ptr)
GIM_STANDARD_ALLOCATOR g_main_allocator
bool failback_free(void *pointer)
bool freeMemory(void *pointer)
void * failback_alloc(size_t size_bytes)
size_t get_pool_capacity()
bool freeMemory(void *pointer)
#define btAlignedAlloc(size, alignment)
void * get_element_data(size_t element_index)
size_t m_free_nodes_count
void * btPoolAlloc(size_t size)