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_
 | 
