Dependencies:   mbed

Committer:
Midimetric
Date:
Tue Jun 07 13:32:20 2011 +0000
Revision:
0:71d791204057
Version 1.0

Who changed what in which revision?

UserRevisionLine numberNew 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