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

📄 data.h

📁 用于词法分析的词法分析器
💻 H
字号:
/*  $Id: Data.h,v 1.5 1996/07/26 10:13:06 matt Exp $  General-purpose data element classes for containers.  */#ifndef _GENDATA_H#define _GENDATA_Htemplate <class T> struct DContainerData{  DContainerData (T &d) : data (d) {}  DContainerData (const DContainerData<T> &d) : data (d.data) {}     static int isOwner () {return 0;}  void copy (T &d) {data = d;}  T &ref () {return data;}  T data;};// null << operators for general data typestemplate <class T>inline ostream &operator << (ostream &os, const DContainerData<T> &){  return os;}#ifdef __BCC__template <class T>inline ostream &operator << (ostream_withassign &os,			     const DContainerData<T> &){  return os;}#endiftemplate <class T, int owner> struct IContainerData{  IContainerData (T &d) : data (&d) {}  IContainerData (const IContainerData<T, owner> &d) :    data (d.data) {}  ~IContainerData () {if (owner) delete data;}  static int isOwner () {return owner;}  void copy (T &d)  {    if (owner)      data = new T (d);    else      data = &d;  }  T &ref () const {return *data;}  T *data;};template <class T> struct DLinkedItem : public DContainerData<T>{  DLinkedItem (T &_data, DLinkedItem<T> *_next = 0) :    DContainerData<T> (_data), next (_next) {}  DLinkedItem (const DLinkedItem<T> &d) :    DContainerData<T> (d), next (0) {}  DLinkedItem<T> *next;};template <class T, int owner>struct ILinkedItem : public IContainerData<T, owner>{  ILinkedItem (T &_data, ILinkedItem<T, owner> *_next = 0) :    IContainerData<T, owner> (_data), next (_next) {}  ILinkedItem (const ILinkedItem<T, owner> &d) :    IContainerData<T, owner> (d), next (0) {}     ILinkedItem<T, owner> *next;};template <class T> struct DDoubleLinkItem : public DContainerData<T>{  DDoubleLinkItem (T &d) : DContainerData<T> (d) {}  DDoubleLinkItem<T> *next, *prev;};template <class T, int owner>struct IDoubleLinkItem : public IContainerData<T, owner>{  IDoubleLinkItem (T &_data) : IContainerData<T, owner> (_data) {}     IDoubleLinkItem<T, owner> *next, *prev;};template <class T> struct DCell{  T &ref () {return data;}  static isOwner () {return 0;}  void set (T &i) {data = i;}  void destroy () {}  T data;};template <class T, int owner> struct ICell{  T &ref () {return *data;}  static isOwner () {return owner;}  void set (T &i) {data = &i;}  void destroy () {if (owner) delete data; data = 0;}  T *data;};template <class T> struct DBinaryTreeItem : public DContainerData<T>{  DBinaryTreeItem (T &d, DBinaryTreeItem<T> *l = 0,		   DBinaryTreeItem<T> *r = 0) :    DContainerData<T> (d), left (l), right (r) {}     DBinaryTreeItem<T> *left, *right;};template <class T>inline ostream &operator << (ostream &os, const DBinaryTreeItem<T> &){  return os;}template <class T, int owner>struct IBinaryTreeItem : IContainerData<T, owner>{  IBinaryTreeItem (T &d, IBinaryTreeItem<T, owner> *l = 0,		   IBinaryTreeItem<T, owner> *r = 0) :    IContainerData<T, owner> (d), left (l), right (r) {}  IBinaryTreeItem<T, owner> *left, *right;};#endif

⌨️ 快捷键说明

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