diff options
Diffstat (limited to 'core/pool_allocator.h')
-rw-r--r-- | core/pool_allocator.h | 53 |
1 files changed, 28 insertions, 25 deletions
diff --git a/core/pool_allocator.h b/core/pool_allocator.h index a5911688f7..1dc6167ceb 100644 --- a/core/pool_allocator.h +++ b/core/pool_allocator.h @@ -42,21 +42,21 @@ enum { - POOL_ALLOCATOR_INVALID_ID=-1 ///< default invalid value. use INVALID_ID( id ) to test + POOL_ALLOCATOR_INVALID_ID = -1 ///< default invalid value. use INVALID_ID( id ) to test }; class PoolAllocator { public: typedef int ID; + private: enum { - CHECK_BITS=8, - CHECK_LEN=(1<<CHECK_BITS), - CHECK_MASK=CHECK_LEN-1 + CHECK_BITS = 8, + CHECK_LEN = (1 << CHECK_BITS), + CHECK_MASK = CHECK_LEN - 1 }; - struct Entry { unsigned int pos; @@ -64,11 +64,15 @@ private: unsigned int lock; unsigned int check; - inline void clear() { pos=0; len=0; lock=0; check=0; } + inline void clear() { + pos = 0; + len = 0; + lock = 0; + check = 0; + } Entry() { clear(); } }; - typedef int EntryArrayPos; typedef int EntryIndicesPos; @@ -89,40 +93,40 @@ private: bool needs_locking; - inline int entry_end(const Entry& p_entry) const { - return p_entry.pos+aligned(p_entry.len); + inline int entry_end(const Entry &p_entry) const { + return p_entry.pos + aligned(p_entry.len); } inline int aligned(int p_size) const { - int rem=p_size%align; + int rem = p_size % align; if (rem) - p_size+=align-rem; + p_size += align - rem; return p_size; } - void compact(int p_up_to=-1); - void compact_up(int p_from=0); - bool get_free_entry(EntryArrayPos* p_pos); + void compact(int p_up_to = -1); + void compact_up(int p_from = 0); + bool get_free_entry(EntryArrayPos *p_pos); bool find_hole(EntryArrayPos *p_pos, int p_for_size); - bool find_entry_index(EntryIndicesPos *p_map_pos,Entry *p_entry); - Entry* get_entry(ID p_mem); - const Entry* get_entry(ID p_mem) const; + bool find_entry_index(EntryIndicesPos *p_map_pos, Entry *p_entry); + Entry *get_entry(ID p_mem); + const Entry *get_entry(ID p_mem) const; + + void create_pool(void *p_mem, int p_size, int p_max_entries); - void create_pool(void * p_mem,int p_size,int p_max_entries); protected: virtual void mt_lock() const; ///< Reimplement for custom mt locking virtual void mt_unlock() const; ///< Reimplement for custom mt locking public: - enum { - DEFAULT_MAX_ALLOCS=4096, + DEFAULT_MAX_ALLOCS = 4096, }; ID alloc(int p_size); ///< Alloc memory, get an ID on success, POOL_ALOCATOR_INVALID_ID on failure void free(ID p_mem); ///< Free allocated memory - Error resize(ID p_mem,int p_new_size); ///< resize a memory chunk + Error resize(ID p_mem, int p_new_size); ///< resize a memory chunk int get_size(ID p_mem) const; int get_free_mem(); ///< get free memory @@ -135,12 +139,11 @@ public: void unlock(ID p_mem); bool is_locked(ID p_mem) const; - PoolAllocator(int p_size,bool p_needs_locking=false,int p_max_entries=DEFAULT_MAX_ALLOCS); - PoolAllocator(void * p_mem,int p_size, int p_align = 1, bool p_needs_locking=false,int p_max_entries=DEFAULT_MAX_ALLOCS); - PoolAllocator(int p_align,int p_size,bool p_needs_locking=false,int p_max_entries=DEFAULT_MAX_ALLOCS); + PoolAllocator(int p_size, bool p_needs_locking = false, int p_max_entries = DEFAULT_MAX_ALLOCS); + PoolAllocator(void *p_mem, int p_size, int p_align = 1, bool p_needs_locking = false, int p_max_entries = DEFAULT_MAX_ALLOCS); + PoolAllocator(int p_align, int p_size, bool p_needs_locking = false, int p_max_entries = DEFAULT_MAX_ALLOCS); virtual ~PoolAllocator(); - }; #endif |