2017-04-17 06:17:10 -06:00

40 lines
899 B
C++
Executable File

#ifndef _STACK3_H_
#define _STACK3_H_
#include "matrix3.h"
#define STACK_DEPTH 32 // default stack depth
class Matrix3Stack {
public:
DllExport Matrix3Stack();
DllExport Matrix3Stack(int depth);
DllExport ~Matrix3Stack();
BOOL replace(const Matrix3 &m)
{ stk[index] = m; return TRUE; }
BOOL push(const Matrix3 &m)
{ stk[index++] = m; return index < maxDepth; }
BOOL dup(void)
{ stk[index+1] = stk[index]; return ++index < maxDepth; }
BOOL concat(const Matrix3 &m)
{ stk[index] = m * stk[index]; return TRUE; }
Matrix3 & get(void)
{ return stk[index]; }
Matrix3 & pop(void)
{ return stk[index--]; }
BOOL remove(void)
{ return --index >= 0; }
BOOL reset(void)
{ index = 0; stk[0].IdentityMatrix(); return TRUE; }
private:
int maxDepth;
int index;
Matrix3 * stk;
};
#endif // _STACK3_H_