⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dbllinklist.h

📁 用于词法分析的词法分析器
💻 H
字号:
/*  $Id: DblLinkList.h,v 1.2 1997/02/02 01:31:03 matt Exp $    Double-linked list class.    (c) Mar 95 Matt Phillips.*/#ifndef _DLLIST_H#define _DLLIST_H#include "Container.h"#include "Data.h"template <class T, class E>class DblLinkListImp : public Container<T>{public:  typedef DblLinkListImpIter<T, E> Iterator;  DblLinkListImp () {head = 0;}  ~DblLinkListImp () {clear ();}  virtual const char *name () const {return "DblLinkList";}     virtual void add (T &i);     virtual void clear ();     virtual Iterator *makeIter () const {return new Iterator (*this);}   protected:  friend Iterator;  E *head;};template <class T, class E>class DblLinkListImpIter : public RContainerIter<T>{public:     DblLinkListImpIter (const DblLinkListImp<T, E> &l) : list (l) {reset ();}     virtual void resetStart () {i = list.head;}  virtual void resetEnd () {REPORT ("cannot resetEnd on DblLinkList");}     virtual operator int () const {return int (i);}     virtual void operator ++ (int) {ITER_BOUND (i); i = i->next;}  virtual void operator -- (int) {ITER_BOUND (i); i = i->prev;}     virtual T value () const {ITER_BOUND (i); return i->ref ();}  virtual T &ref () {ITER_BOUND (i); return i->ref ();}   protected:     E *i;  const DblLinkListImp<T, E> &list;};template <class T, class E>void DblLinkListImp<T, E>::clear (){  E *i, *next;     for (i = head; i; i = next)  {    next = i->next;    i->destroy ();    delete i;  }  head = 0;  _nItems = 0;}template <class T, class E>void DblLinkListImp<T, E>::add (T &d){  E *i = new E (d);     if (head)    head->prev = i;    i->next = head;  i->prev = 0;  head = i;     _nItems++;}#define TypeDDblLinkList(T) DblLinkListImp<T, DDoubleLinkItem<T> >#define TypeIODblLinkList(T) DblLinkListImp<T, IDoubleLinkItem<T, 1> >#define TypeIDblLinkList(T) DblLinkListImp<T, IDoubleLinkItem<T, 0> >#endif

⌨️ 快捷键说明

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