Mercurial > LightClone
view LightClone/Source/FixedStack.h @ 71:bc8afcf7e1ec
Refactor world into game screen
author | koryspansel <koryspansel@bendbroadband.com> |
---|---|
date | Tue, 11 Oct 2011 13:20:43 -0700 |
parents | ffaeccdc105e |
children |
line wrap: on
line source
/* * FixedStack */ #ifndef __FIXEDSTACK_H__ #define __FIXEDSTACK_H__ #include "Types.h" #include "Debug.h" /* * FixedStack */ template<typename Type, uint32 Capacity> class FixedStack { /* * Bottom */ static const int32 Bottom = (int32)Capacity - 1; /* * kStack */ Type kStack[Capacity]; /* * nTop */ int32 nTop; public: /* * FixedStack */ FixedStack() : nTop(-1) { } /* * Push */ ErrorCode Push(Type kValue) { return (nTop < Bottom) ? kStack[++nTop] = kValue, Error_Success : Error_Fail; } /* * Pop */ Type Pop() { ASSERT(nTop > -1); return kStack[nTop--]; } /* * Peek */ const Type& Peek() { ASSERT(nTop > -1); return kStack[nTop]; } /* * Clear */ void Clear() { nTop = -1; } /* * Size */ uint32 Size() const { return nTop + 1; } /* * operator [] */ Type& operator[](uint32 nIndex) { ASSERT(nIndex < (uint32)(nTop + 1)); return kStack[nIndex]; } /* * operator [] */ const Type& operator[](uint32 nIndex) const { ASSERT(nIndex < (uint32)(nTop + 1)); return kStack[nIndex]; } }; #endif //__FIXEDSTACK_H__