vectorstack.h

来自「用于词法分析的词法分析器」· C头文件 代码 · 共 66 行

H
66
字号
/*  $Id: VectorStack.h,v 1.2 1997/02/02 01:31:05 matt Exp $  Stack as vector.  (c) Matt Phillips Mar 1995.  */#ifndef _VSTACK_H#define _VSTACK_H#include "Stack.h"#include "Vector.h"template <class T, class E>class VectorStackImp : public Stack<T>, protected VectorImp<T, E>{public:  typedef class VectorStackImpIter<T, E> Iterator;   VectorStackImp (int _max) : VectorImp<T, E> (_max) {}  const char *name () const {return Stack<T>::name ();}  int nItems () const {return VectorImp<T, E>::nItems ();}  int isFull () const {return VectorImp<T, E>::isFull ();}  int isEmpty () const {return VectorImp<T, E>::isEmpty ();}  void clear () {VectorImp<T, E>::clear ();}  virtual void push (T &i)  {    STACK_OVERFLOW (!isFull ());    data [_nItems++].set (i);  }  virtual void pop ()  {    STACK_UNDERFLOW (!isEmpty ());    data [--_nItems].destroy ();  }  virtual T &top () const  {    STACK_UNDERFLOW (!isEmpty ());    return data [_nItems].ref ();  }  Iterator *makeIter () const {return new Iterator (*this);}  friend class Iterator;};template <class T, class E>class VectorStackImpIter : public VectorImpIter<T, E>{public:  VectorStackImpIter (const VectorStackImp<T, E> &s) :    VectorImpIter<T, E> (s) {}};#define TypeDVectorStack(T)  VectorStackImp<T, DCell<T> >#define TypeIVectorStack(T)  VectorStackImp<T, ICell<T, 0> >#define TypeIOVectorStack(T) VectorStackImp<T, ICell<T, 1> >#endif

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?