home *** CD-ROM | disk | FTP | other *** search
- /*****************************/
- /* STACK TEMPLATE DEFINITION */
- /* Template usage : Method 2 */
- /*****************************/
- #ifndef _STACK_TPL_H
- #define _STACK_TPL_H
-
- #if __DLL__
- #define IMPORT
- #else
- #define IMPORT _Import
- #endif
-
-
- template<class T>
- class stack
- {
- private:
- T* v;
- T* p;
- int sz;
- public:
- static int IMPORT numberOfStack;
- stack( int );
- ~stack();
- void push( T );
- T pop();
- };
-
- /***************************************/
- /* Stack template implementation */
- /***************************************/
-
- #if __DLL__
- template<class T> int stack<T>::numberOfStack = 0 ;
- #endif
-
-
- template<class T>stack<T>::stack(int s)
- {
- ++stack<T>::numberOfStack ;
- v = p = new T[sz=s];
- }
-
- template<class T>stack<T>::~stack()
- {
- delete [] v;
- }
-
-
- template<class T> void stack<T>::push(T a)
- {
- *p++ = a ;
- }
-
- template<class T> T stack<T>::pop ()
- {
- return *(--p) ;
- }
-
- #endif
-
-