stack3.h

Go to the documentation of this file.
00001 #pragma once
00002 
00003 #include "GeomExport.h"
00004 #include "maxheap.h"
00005 #include "matrix3.h"
00006 
00007 #define STACK_DEPTH     32      // default stack depth
00008 
00013 class Matrix3Stack: public MaxHeapOperators {
00014 public:
00016     GEOMEXPORT Matrix3Stack();
00019     GEOMEXPORT Matrix3Stack(int depth);
00021     GEOMEXPORT ~Matrix3Stack();
00022 
00029     BOOL        replace(const Matrix3 &m)
00030                     { stk[index] = m; return TRUE; }
00036     BOOL        push(const Matrix3 &m)
00037                     { stk[index++] = m; return index < maxDepth; }
00041     BOOL        dup(void)
00042                     { stk[index+1] = stk[index]; return ++index < maxDepth; }
00049     BOOL        concat(const Matrix3 &m)
00050                     { stk[index] = m * stk[index]; return TRUE; }
00052     Matrix3 &   get(void)
00053                     { return stk[index]; }
00056     Matrix3 &   pop(void)
00057                     { return stk[index--]; }
00061     BOOL        remove(void)
00062                     { return --index >= 0; }
00065     BOOL        reset(void)
00066                     { index = 0; stk[0].IdentityMatrix(); return TRUE; }
00067 
00068 private:
00069     int         maxDepth;
00070     int         index;
00071     Matrix3 *   stk;
00072 };
00073 
00074