modules/up/src/gnug++/SymbolConjunctPtr.SplayBag.h

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

FUNCTIONS

This source file includes following functions.
  1. SymbolConjunctPtrSplayBag
  2. SymbolConjunctPtrSplayBag
  3. SymbolConjunctPtrSplayBag
  4. SymbolConjunctPtrSplayBag
  5. first
  6. last
  7. next
  8. prev
  9. clear
  10. contains
  11. del
  12. del_this

   1 // This may look like C code, but it is really -*- C++ -*-
   2 /* 
   3 Copyright (C) 1988 Free Software Foundation
   4     written by Doug Lea (dl@rocky.oswego.edu)
   5 
   6 This file is part of the GNU C++ Library.  This library is free
   7 software; you can redistribute it and/or modify it under the terms of
   8 the GNU Library General Public License as published by the Free
   9 Software Foundation; either version 2 of the License, or (at your
  10 option) any later version.  This library is distributed in the hope
  11 that it will be useful, but WITHOUT ANY WARRANTY; without even the
  12 implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
  13 PURPOSE.  See the GNU Library General Public License for more details.
  14 You should have received a copy of the GNU Library General Public
  15 License along with this library; if not, write to the Free Software
  16 Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
  17 */
  18 // This may look like C code, but it is really -*- C++ -*-
  19 /* 
  20 Copyright (C) 1988, 1982 Free Software Foundation
  21     written by Doug Lea (dl@rocky.oswego.edu)
  22 
  23 This file is part of the GNU C++ Library.  This library is free
  24 software; you can redistribute it and/or modify it under the terms of
  25 the GNU Library General Public License as published by the Free
  26 Software Foundation; either version 2 of the License, or (at your
  27 option) any later version.  This library is distributed in the hope
  28 that it will be useful, but WITHOUT ANY WARRANTY; without even the
  29 implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
  30 PURPOSE.  See the GNU Library General Public License for more details.
  31 You should have received a copy of the GNU Library General Public
  32 License along with this library; if not, write to the Free Software
  33 Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
  34 */
  35 
  36 
  37 #ifndef _SymbolConjunctPtrSplayBag_h
  38 #ifdef __GNUG__
  39 #pragma interface
  40 #endif
  41 #define _SymbolConjunctPtrSplayBag_h 1
  42 
  43 #include "config.h"
  44 #include "SymbolConjunctPtr.Bag.h"
  45 #include "SymbolConjunctPtr.SplayNode.h"
  46 
  47 class SymbolConjunctPtrSplayBag : public SymbolConjunctPtrBag
     /* [<][>][^][v][top][bottom][index][help] */
  48 {
  49 protected:
  50   SymbolConjunctPtrSplayNode*   root;
  51 
  52   SymbolConjunctPtrSplayNode*   leftmost();
  53   SymbolConjunctPtrSplayNode*   rightmost();
  54   SymbolConjunctPtrSplayNode*   pred(SymbolConjunctPtrSplayNode* t);
  55   SymbolConjunctPtrSplayNode*   succ(SymbolConjunctPtrSplayNode* t);
  56   void            _kill(SymbolConjunctPtrSplayNode* t);
  57   SymbolConjunctPtrSplayNode*   _copy(SymbolConjunctPtrSplayNode* t);
  58   void            _del(SymbolConjunctPtrSplayNode* t);
  59 
  60 public:
  61                   SymbolConjunctPtrSplayBag();
  62                   SymbolConjunctPtrSplayBag(SymbolConjunctPtrSplayBag& a);
  63                   ~SymbolConjunctPtrSplayBag();
  64 
  65   Pix           add(SymbolConjunctPtr  item);
  66   void          del(SymbolConjunctPtr  item);
  67    void         del_this(Pix i); // added by cengiz alaettinoglu
  68   void          remove(SymbolConjunctPtr item);
  69   int           nof(SymbolConjunctPtr  item);
  70   int           contains(SymbolConjunctPtr  item);
  71 
  72   void          clear();
  73 
  74   Pix           first();
  75   void          next(Pix& i);
  76   SymbolConjunctPtr&          operator () (Pix i);
  77   Pix           seek(SymbolConjunctPtr  item, Pix from = 0);
  78 
  79   Pix           last();
  80   void          prev(Pix& i);
  81 
  82   int           OK();
  83 };
  84 
  85 
  86 inline SymbolConjunctPtrSplayBag::~SymbolConjunctPtrSplayBag()
     /* [<][>][^][v][top][bottom][index][help] */
  87 {
  88   _kill(root);
  89 }
  90 
  91 inline SymbolConjunctPtrSplayBag::SymbolConjunctPtrSplayBag()
     /* [<][>][^][v][top][bottom][index][help] */
  92 {
  93   root = 0;
  94   count = 0;
  95 }
  96 
  97 inline SymbolConjunctPtrSplayBag::SymbolConjunctPtrSplayBag(SymbolConjunctPtrSplayBag& b)
     /* [<][>][^][v][top][bottom][index][help] */
  98 {
  99   count = b.count;
 100   root = _copy(b.root);
 101 }
 102 
 103 inline Pix SymbolConjunctPtrSplayBag::first()
     /* [<][>][^][v][top][bottom][index][help] */
 104 {
 105   return Pix(leftmost());
 106 }
 107 
 108 inline Pix SymbolConjunctPtrSplayBag::last()
     /* [<][>][^][v][top][bottom][index][help] */
 109 {
 110   return Pix(rightmost());
 111 }
 112 
 113 inline void SymbolConjunctPtrSplayBag::next(Pix& i)
     /* [<][>][^][v][top][bottom][index][help] */
 114 {
 115   if (i != 0) i = Pix(succ((SymbolConjunctPtrSplayNode*)i));
 116 }
 117 
 118 inline void SymbolConjunctPtrSplayBag::prev(Pix& i)
     /* [<][>][^][v][top][bottom][index][help] */
 119 {
 120   if (i != 0) i = Pix(pred((SymbolConjunctPtrSplayNode*)i));
 121 }
 122 
 123 inline SymbolConjunctPtr& SymbolConjunctPtrSplayBag::operator () (Pix i)
 124 {
 125   if (i == 0) error("null Pix");
 126   return ((SymbolConjunctPtrSplayNode*)i)->item;
 127 }
 128 
 129 inline void SymbolConjunctPtrSplayBag::clear()
     /* [<][>][^][v][top][bottom][index][help] */
 130 {
 131   _kill(root);
 132   count = 0;
 133   root = 0;
 134 }
 135 
 136 inline int SymbolConjunctPtrSplayBag::contains(SymbolConjunctPtr  key)
     /* [<][>][^][v][top][bottom][index][help] */
 137 {
 138   return seek(key) != 0;
 139 }
 140 
 141 inline void SymbolConjunctPtrSplayBag::del(SymbolConjunctPtr  key)
     /* [<][>][^][v][top][bottom][index][help] */
 142 {
 143   _del((SymbolConjunctPtrSplayNode*)(seek(key)));
 144 }
 145 
 146 // added by Cengiz Alaettinoglu
 147 inline void SymbolConjunctPtrSplayBag::del_this(Pix i)
     /* [<][>][^][v][top][bottom][index][help] */
 148 {
 149   _del((SymbolConjunctPtrSplayNode*)i);
 150 }
 151 
 152 #endif

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