Path: blob/devel/ElmerGUI/netgen/libsrc/general/stack.hpp
3206 views
#ifndef FILE_STACK1#define FILE_STACK23/*****************************************************************************/4/* File: stack.hh */5/* Author: Wolfram Muehlhuber */6/* Date: September 98 */7/*****************************************************************************/89/*1011Stack class, based on a resizable array1213*/141516#include "array.hpp"171819///20template <class T> class STACK21{22public:23///24inline STACK (INDEX asize = 0, INDEX ainc = 0);25///26inline ~STACK ();2728///29inline void Push (const T & el);30///31inline T & Pop ();32///33const inline T & Top () const;34///35inline int IsEmpty () const;36///37inline void MakeEmpty ();3839private:40///41ARRAY<T> elems;42///43INDEX size;44};4546474849/*5051Stack class, based on a resizable array5253*/5455template <class T>56inline STACK<T> :: STACK (INDEX asize, INDEX ainc)57: elems(asize, ainc)58{59size = 0;60}616263template <class T>64inline STACK<T> :: ~STACK ()65{66;67}686970template <class T>71inline void STACK<T> :: Push (const T & el)72{73if (size < elems.Size())74elems.Elem(++size) = el;75else76{77elems.Append(el);78size++;79}80}818283template <class T>84inline T & STACK<T> :: Pop ()85{86return elems.Elem(size--);87}888990template <class T>91const inline T & STACK<T> :: Top () const92{93return elems.Get(size);94}9596template <class T>97inline int STACK<T> :: IsEmpty () const98{99return (size == 0);100}101102103template <class T>104inline void STACK<T> :: MakeEmpty ()105{106size = 0;107}108109110111#endif112113114