From 6e106a2cc52e3857cbd55d67d54b4589f3425c51 Mon Sep 17 00:00:00 2001 From: Mike Buland Date: Sat, 20 Oct 2007 20:51:59 +0000 Subject: Made the logger use a uint32_t for it's mask, no more negative confusion. Also brought back the formula class with some cool twists, and added a basic stack class, very cute, fast, and little. --- src/stack.h | 71 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 src/stack.h (limited to 'src/stack.h') diff --git a/src/stack.h b/src/stack.h new file mode 100644 index 0000000..955332d --- /dev/null +++ b/src/stack.h @@ -0,0 +1,71 @@ +#ifndef BU_STACK_H +#define BU_STACK_H + +#include + +namespace Bu +{ + template > + class Stack + { + private: + typedef struct Chunk + { + value *pValue; + Chunk *pPrev; + } Chunk; + public: + Stack() : + pTop( NULL ) + { + } + + virtual ~Stack() + { + } + + void push( const value &v ) + { + Chunk *pChnk = new Chunk; + pChnk->pValue = va.allocate( 1 ); + va.construct( pChnk->pValue, v ); + pChnk->pPrev = pTop; + pTop = pChnk; + } + + value &peek() + { + return *pTop->pValue; + } + + value &top() + { + return *pTop->pValue; + } + + value pop() + { + value ret( *pTop->pValue ); + + Chunk *pChnk = pTop; + pTop = pTop->pPrev; + + va.destroy( pChnk->pValue ); + va.deallocate( pChnk->pValue, 1 ); + delete pChnk; + + return ret; + } + + bool isEmpty() + { + return pTop == NULL; + } + + private: + Chunk *pTop; + valuealloc va; + }; +} + +#endif -- cgit v1.2.3