mirror of
https://github.com/alliedmodders/hl2sdk.git
synced 2024-12-22 17:47:38 +08:00
70 lines
1.2 KiB
C
70 lines
1.2 KiB
C
|
//========= Copyright Valve Corporation, All rights reserved. ============//
|
||
|
//
|
||
|
// Purpose:
|
||
|
//
|
||
|
// $Workfile: $
|
||
|
// $Date: $
|
||
|
//
|
||
|
//-----------------------------------------------------------------------------
|
||
|
// $Log: $
|
||
|
//
|
||
|
// $NoKeywords: $
|
||
|
//=============================================================================//
|
||
|
|
||
|
#ifndef ARRAYSTACK_H
|
||
|
#define ARRAYSTACK_H
|
||
|
#pragma once
|
||
|
|
||
|
#include <assert.h>
|
||
|
#include "List.h"
|
||
|
|
||
|
template <class T> 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
|