40 lines
899 B
C++
Executable File
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_
|