Bernard Escaillas
/
MidiTee
Diff: stack.h
- Revision:
- 0:71d791204057
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/stack.h Tue Jun 07 13:32:20 2011 +0000 @@ -0,0 +1,49 @@ +#ifndef STACK_H +#define STACK_H + +template<class T> +class Stack +{ +public: + T Data[50]; + short Position; + + Stack() : Position(0) {} + + inline void Push( T v ) { if( Position < 50 ) Data[Position++] = v; } + inline T Pull() { if( Position ) return Data[--Position]; else return (T)NAKN; } + + void Pull( T &a ) + { + if( Position ) a = Data[--Position]; + else a = (T)NAKN; + } + void Pull( T &b, T &a ) + { + if( Position ) b = Data[--Position]; + else b = (T)NAKN; + if( Position ) a = Data[--Position]; + else a = (T)NAKN; + } + void Pull( T &c, T &b, T &a ) + { + if( Position ) c = Data[--Position]; + else c = (T)NAKN; + if( Position ) b = Data[--Position]; + else b = (T)NAKN; + if( Position ) a = Data[--Position]; + else a = (T)NAKN; + } + void Pull( T &d, T &c, T &b, T &a ) + { + if( Position ) d = Data[--Position]; + else d = (T)NAKN; + if( Position ) c = Data[--Position]; + else c = (T)NAKN; + if( Position ) b = Data[--Position]; + else b = (T)NAKN; + if( Position ) a = Data[--Position]; + else a = (T)NAKN; + } +}; +#endif \ No newline at end of file