diff options
Diffstat (limited to 'thirdparty/bullet/Bullet3Common/b3StackAlloc.h')
-rw-r--r-- | thirdparty/bullet/Bullet3Common/b3StackAlloc.h | 96 |
1 files changed, 49 insertions, 47 deletions
diff --git a/thirdparty/bullet/Bullet3Common/b3StackAlloc.h b/thirdparty/bullet/Bullet3Common/b3StackAlloc.h index de7de056b5..4972236ac7 100644 --- a/thirdparty/bullet/Bullet3Common/b3StackAlloc.h +++ b/thirdparty/bullet/Bullet3Common/b3StackAlloc.h @@ -20,97 +20,99 @@ Nov.2006 #ifndef B3_STACK_ALLOC #define B3_STACK_ALLOC -#include "b3Scalar.h" //for b3Assert +#include "b3Scalar.h" //for b3Assert #include "b3AlignedAllocator.h" ///The b3Block class is an internal structure for the b3StackAlloc memory allocator. struct b3Block { - b3Block* previous; - unsigned char* address; + b3Block* previous; + unsigned char* address; }; ///The StackAlloc class provides some fast stack-based memory allocator (LIFO last-in first-out) class b3StackAlloc { public: + b3StackAlloc(unsigned int size) + { + ctor(); + create(size); + } + ~b3StackAlloc() { destroy(); } - b3StackAlloc(unsigned int size) { ctor();create(size); } - ~b3StackAlloc() { destroy(); } - - inline void create(unsigned int size) + inline void create(unsigned int size) { destroy(); - data = (unsigned char*) b3AlignedAlloc(size,16); - totalsize = size; + data = (unsigned char*)b3AlignedAlloc(size, 16); + totalsize = size; } - inline void destroy() + inline void destroy() { - b3Assert(usedsize==0); + b3Assert(usedsize == 0); //Raise(L"StackAlloc is still in use"); - if(usedsize==0) + if (usedsize == 0) { - if(!ischild && data) + if (!ischild && data) b3AlignedFree(data); - data = 0; - usedsize = 0; + data = 0; + usedsize = 0; } - } - int getAvailableMemory() const + int getAvailableMemory() const { return static_cast<int>(totalsize - usedsize); } - unsigned char* allocate(unsigned int size) + unsigned char* allocate(unsigned int size) { - const unsigned int nus(usedsize+size); - if(nus<totalsize) + const unsigned int nus(usedsize + size); + if (nus < totalsize) { - usedsize=nus; - return(data+(usedsize-size)); + usedsize = nus; + return (data + (usedsize - size)); } b3Assert(0); //&& (L"Not enough memory")); - - return(0); + + return (0); } - B3_FORCE_INLINE b3Block* beginBlock() + B3_FORCE_INLINE b3Block* beginBlock() { - b3Block* pb = (b3Block*)allocate(sizeof(b3Block)); - pb->previous = current; - pb->address = data+usedsize; - current = pb; - return(pb); + b3Block* pb = (b3Block*)allocate(sizeof(b3Block)); + pb->previous = current; + pb->address = data + usedsize; + current = pb; + return (pb); } - B3_FORCE_INLINE void endBlock(b3Block* block) + B3_FORCE_INLINE void endBlock(b3Block* block) { - b3Assert(block==current); + b3Assert(block == current); //Raise(L"Unmatched blocks"); - if(block==current) + if (block == current) { - current = block->previous; - usedsize = (unsigned int)((block->address-data)-sizeof(b3Block)); + current = block->previous; + usedsize = (unsigned int)((block->address - data) - sizeof(b3Block)); } } private: - void ctor() + void ctor() { - data = 0; - totalsize = 0; - usedsize = 0; - current = 0; - ischild = false; + data = 0; + totalsize = 0; + usedsize = 0; + current = 0; + ischild = false; } - unsigned char* data; - unsigned int totalsize; - unsigned int usedsize; - b3Block* current; - bool ischild; + unsigned char* data; + unsigned int totalsize; + unsigned int usedsize; + b3Block* current; + bool ischild; }; -#endif //B3_STACK_ALLOC +#endif //B3_STACK_ALLOC |