#include TStack::TStack(int size) : _data(size), _sp(0) {} void TStack::push(const TObject& o) { _data.add(o, _sp++); } void TStack::push(TObject* o) { _data.add(o, _sp++); } TObject& TStack::pop() { CHECK(_sp > 0, "Stack underflow!"); return _data[--_sp]; } TObject& TStack::peek(int depth) const { CHECKD(depth >= 0 && depth < _sp, "Stack depth error: ", depth); return _data[_sp-depth-1]; } bool TStack::destroy_base() { return _data.destroy(0, TRUE); }