Bernard Escaillas
/
MidiTee
stack.h@0:71d791204057, 2011-06-07 (annotated)
- Committer:
- Midimetric
- Date:
- Tue Jun 07 13:32:20 2011 +0000
- Revision:
- 0:71d791204057
Version 1.0
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Midimetric | 0:71d791204057 | 1 | #ifndef STACK_H |
Midimetric | 0:71d791204057 | 2 | #define STACK_H |
Midimetric | 0:71d791204057 | 3 | |
Midimetric | 0:71d791204057 | 4 | template<class T> |
Midimetric | 0:71d791204057 | 5 | class Stack |
Midimetric | 0:71d791204057 | 6 | { |
Midimetric | 0:71d791204057 | 7 | public: |
Midimetric | 0:71d791204057 | 8 | T Data[50]; |
Midimetric | 0:71d791204057 | 9 | short Position; |
Midimetric | 0:71d791204057 | 10 | |
Midimetric | 0:71d791204057 | 11 | Stack() : Position(0) {} |
Midimetric | 0:71d791204057 | 12 | |
Midimetric | 0:71d791204057 | 13 | inline void Push( T v ) { if( Position < 50 ) Data[Position++] = v; } |
Midimetric | 0:71d791204057 | 14 | inline T Pull() { if( Position ) return Data[--Position]; else return (T)NAKN; } |
Midimetric | 0:71d791204057 | 15 | |
Midimetric | 0:71d791204057 | 16 | void Pull( T &a ) |
Midimetric | 0:71d791204057 | 17 | { |
Midimetric | 0:71d791204057 | 18 | if( Position ) a = Data[--Position]; |
Midimetric | 0:71d791204057 | 19 | else a = (T)NAKN; |
Midimetric | 0:71d791204057 | 20 | } |
Midimetric | 0:71d791204057 | 21 | void Pull( T &b, T &a ) |
Midimetric | 0:71d791204057 | 22 | { |
Midimetric | 0:71d791204057 | 23 | if( Position ) b = Data[--Position]; |
Midimetric | 0:71d791204057 | 24 | else b = (T)NAKN; |
Midimetric | 0:71d791204057 | 25 | if( Position ) a = Data[--Position]; |
Midimetric | 0:71d791204057 | 26 | else a = (T)NAKN; |
Midimetric | 0:71d791204057 | 27 | } |
Midimetric | 0:71d791204057 | 28 | void Pull( T &c, T &b, T &a ) |
Midimetric | 0:71d791204057 | 29 | { |
Midimetric | 0:71d791204057 | 30 | if( Position ) c = Data[--Position]; |
Midimetric | 0:71d791204057 | 31 | else c = (T)NAKN; |
Midimetric | 0:71d791204057 | 32 | if( Position ) b = Data[--Position]; |
Midimetric | 0:71d791204057 | 33 | else b = (T)NAKN; |
Midimetric | 0:71d791204057 | 34 | if( Position ) a = Data[--Position]; |
Midimetric | 0:71d791204057 | 35 | else a = (T)NAKN; |
Midimetric | 0:71d791204057 | 36 | } |
Midimetric | 0:71d791204057 | 37 | void Pull( T &d, T &c, T &b, T &a ) |
Midimetric | 0:71d791204057 | 38 | { |
Midimetric | 0:71d791204057 | 39 | if( Position ) d = Data[--Position]; |
Midimetric | 0:71d791204057 | 40 | else d = (T)NAKN; |
Midimetric | 0:71d791204057 | 41 | if( Position ) c = Data[--Position]; |
Midimetric | 0:71d791204057 | 42 | else c = (T)NAKN; |
Midimetric | 0:71d791204057 | 43 | if( Position ) b = Data[--Position]; |
Midimetric | 0:71d791204057 | 44 | else b = (T)NAKN; |
Midimetric | 0:71d791204057 | 45 | if( Position ) a = Data[--Position]; |
Midimetric | 0:71d791204057 | 46 | else a = (T)NAKN; |
Midimetric | 0:71d791204057 | 47 | } |
Midimetric | 0:71d791204057 | 48 | }; |
Midimetric | 0:71d791204057 | 49 | #endif |