//========= Copyright Valve Corporation, All rights reserved. ============// // // Purpose: // // $Workfile: $ // $Date: $ // //----------------------------------------------------------------------------- // $Log: $ // // $NoKeywords: $ //=============================================================================// #ifndef ARRAYSTACK_H #define ARRAYSTACK_H #pragma once #include #include "List.h" template class ArrayStack { protected: T *data; int m_stackDepth; int m_maxNumElements; public: ArrayStack( int maxNumElements ) { data = new T[maxNumElements]; m_maxNumElements = maxNumElements; m_stackDepth = 0; assert( data ); } void Push( T elem ) { data[m_stackDepth++] = elem; if( m_stackDepth > m_maxNumElements ) { printf( "ArrayStack overflow\n" ); assert( 0 ); } } T Pop( void ) { if( m_stackDepth == 0 ) { printf( "ArrayStack underflow\n" ); assert( 0 ); } return data[--m_stackDepth]; } bool IsEmpty() { return ( m_stackDepth == 0 ); } int GetDepth() { return m_stackDepth; } }; #endif // ARRAYSTACK_H