This repository has been archived on 2024-06-13. You can view files and clone it, but cannot push or open issues or pull requests.
2020-08-04 13:13:01 -04:00

58 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