## modules/up/src/gnug++/NormalTermPtr.DLList.h

/* [<][>][^][v][top][bottom][index][help] */

## FUNCTIONS

This source file includes following functions.

1. NormalTermPtrDLListNode
2. NormalTermPtrDLListNode
3. NormalTermPtrDLListNode
4. NormalTermPtrDLList
5. NormalTermPtrDLListTrav
6. NormalTermPtrDLList
7. empty
8. next
9. prev
10. first
11. last
12. front
13. rear

       1 // This may look like C code, but it is really -*- C++ -*-
       2 // WARNING: This file is obsolete.  Use ../DLList.h, if you can.
       3 /*
       4 Copyright (C) 1988 Free Software Foundation
       5     written by Doug Lea (dl@rocky.oswego.edu)
       6
       7 This file is part of the GNU C++ Library.  This library is free
       8 software; you can redistribute it and/or modify it under the terms of
       9 the GNU Library General Public License as published by the Free
      10 Software Foundation; either version 2 of the License, or (at your
      11 option) any later version.  This library is distributed in the hope
      12 that it will be useful, but WITHOUT ANY WARRANTY; without even the
      13 implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
      14 PURPOSE.  See the GNU Library General Public License for more details.
      15 You should have received a copy of the GNU Library General Public
      16 License along with this library; if not, write to the Free Software
      17 Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
      18 */
      19
      20
      21 #ifndef _NormalTermPtrDLList_h
      22 #ifdef __GNUG__
      23 #pragma interface
      24 #endif
      25 #define _NormalTermPtrDLList_h 1
      26
      27 #include "config.h"
      28 #include "Pix.h"
      29 #include "NormalTermPtr.defs.h"
      30
      31 #ifndef _NormalTermPtrDLListNode_h
      32 #define _NormalTermPtrDLListNode_h 1
      33
      34 struct NormalTermPtrDLListNode
      35 {
      36   NormalTermPtrDLListNode*         bk;
      37   NormalTermPtrDLListNode*         fd;
      38   NormalTermPtr                    hd;
      39                          NormalTermPtrDLListNode();
      40                          NormalTermPtrDLListNode(const NormalTermPtr  h,
      41                                        NormalTermPtrDLListNode* p = 0,
      42                                        NormalTermPtrDLListNode* n = 0);
      43                          ~NormalTermPtrDLListNode();
      44 };
      45
      46 inline NormalTermPtrDLListNode::NormalTermPtrDLListNode() {}
         /* [<][>][^][v][top][bottom][index][help] */
      47
      48 inline NormalTermPtrDLListNode::NormalTermPtrDLListNode(const NormalTermPtr  h, NormalTermPtrDLListNode* p,
         /* [<][>][^][v][top][bottom][index][help] */
      49                                     NormalTermPtrDLListNode* n)
      50   :bk(p), fd(n), hd(h) {}
      51
      52 inline NormalTermPtrDLListNode::~NormalTermPtrDLListNode() {}
         /* [<][>][^][v][top][bottom][index][help] */
      53
      54 typedef NormalTermPtrDLListNode* NormalTermPtrDLListNodePtr;
      55
      56 #endif
      57
      58 class NormalTermPtrDLList
         /* [<][>][^][v][top][bottom][index][help] */
      59 {
      60   friend class          NormalTermPtrDLListTrav;
         /* [<][>][^][v][top][bottom][index][help] */
      61
      62   NormalTermPtrDLListNode*        h;
      63
      64 public:
      65                         NormalTermPtrDLList();
      66                         NormalTermPtrDLList(const NormalTermPtrDLList& a);
      67                         ~NormalTermPtrDLList();
      68
      69   NormalTermPtrDLList&            operator = (const NormalTermPtrDLList& a);
      70
      71   int                   empty();
      72   int                   length();
      73
      74   void                  clear();
      75
      76   Pix                   prepend(NormalTermPtr  item);
      77   Pix                   append(NormalTermPtr  item);
      78   void                  join(NormalTermPtrDLList&);
      79
      80   NormalTermPtr&                  front();
      81   NormalTermPtr                   remove_front();
      82   void                  del_front();
      83
      84   NormalTermPtr&                  rear();
      85   NormalTermPtr                   remove_rear();
      86   void                  del_rear();
      87
      88   NormalTermPtr&                  operator () (Pix p);
      89   Pix                   first();
      90   Pix                   last();
      91   void                  next(Pix& p);
      92   void                  prev(Pix& p);
      93   int                   owns(Pix p);
      94   Pix                   ins_after(Pix p, NormalTermPtr  item);
      95   Pix                   ins_before(Pix p, NormalTermPtr  item);
      96   void                  del(Pix& p, int dir = 1);
      97   void                  del_after(Pix& p);
      98
      99   void                  error(const char* msg);
     100   int                   OK();
     101 };
     102
     103
     104 inline NormalTermPtrDLList::~NormalTermPtrDLList()
     105 {
     106   clear();
     107 }
     108
     109 inline NormalTermPtrDLList::NormalTermPtrDLList()
         /* [<][>][^][v][top][bottom][index][help] */
     110 {
     111   h = 0;
     112 }
     113
     114 inline int NormalTermPtrDLList::empty()
         /* [<][>][^][v][top][bottom][index][help] */
     115 {
     116   return h == 0;
     117 }
     118
     119
     120 inline void NormalTermPtrDLList::next(Pix& p)
         /* [<][>][^][v][top][bottom][index][help] */
     121 {
     122   p = (p == 0 || p == h->bk)? 0 : Pix(((NormalTermPtrDLListNode*)p)->fd);
     123 }
     124
     125 inline void NormalTermPtrDLList::prev(Pix& p)
         /* [<][>][^][v][top][bottom][index][help] */
     126 {
     127   p = (p == 0 || p == h)? 0 : Pix(((NormalTermPtrDLListNode*)p)->bk);
     128 }
     129
     130 inline Pix NormalTermPtrDLList::first()
         /* [<][>][^][v][top][bottom][index][help] */
     131 {
     132   return Pix(h);
     133 }
     134
     135 inline Pix NormalTermPtrDLList::last()
         /* [<][>][^][v][top][bottom][index][help] */
     136 {
     137   return (h == 0)? 0 : Pix(h->bk);
     138 }
     139
     140 inline NormalTermPtr& NormalTermPtrDLList::operator () (Pix p)
     141 {
     142   if (p == 0) error("null Pix");
     143   return ((NormalTermPtrDLListNode*)p)->hd;
     144 }
     145
     146 inline NormalTermPtr& NormalTermPtrDLList::front()
         /* [<][>][^][v][top][bottom][index][help] */
     147 {
     148   if (h == 0) error("front: empty list");
     149   return h->hd;
     150 }
     151
     152 inline NormalTermPtr& NormalTermPtrDLList::rear()
         /* [<][>][^][v][top][bottom][index][help] */
     153 {
     154   if (h == 0) error("rear: empty list");
     155   return h->bk->hd;
     156 }
     157
     158 #endif

/* [<][>][^][v][top][bottom][index][help] */