modules/up/src/gnug++/SymbolConjunctPtr.Bag.h
/* [<][>][^][v][top][bottom][index][help] */
FUNCTIONS
This source file includes following functions.
- SymbolConjunctPtrBag
- SymbolConjunctPtrBag
- length
- empty
- contains
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
19
20 #ifndef _SymbolConjunctPtrBag_h
21 #ifdef __GNUG__
22 #pragma interface
23 #endif
24 #define _SymbolConjunctPtrBag_h 1
25
26 #include "config.h"
27 #include "Pix.h"
28 #include "SymbolConjunctPtr.defs.h"
29
30 class SymbolConjunctPtrBag
/* [<][>][^][v][top][bottom][index][help] */
31 {
32 protected:
33 int count;
34
35 public:
36 virtual ~SymbolConjunctPtrBag();
37
38 int length(); // current number of items
39 int empty();
40
41 virtual Pix add(SymbolConjunctPtr item) = 0; // add item; return Pix
42
43 virtual void del(SymbolConjunctPtr item) = 0; // delete 1 occurrence of item
44 #undef remove
45 virtual void remove(SymbolConjunctPtr item); // delete all occurrences
46 virtual void clear(); // delete all items
47
48 virtual int contains(SymbolConjunctPtr item); // is item in Bag?
49 virtual int nof(SymbolConjunctPtr item); // how many in Bag?
50
51 virtual Pix first() = 0; // Pix of first item or 0
52 virtual void next(Pix& i) = 0; // advance to next or 0
53
54 virtual SymbolConjunctPtr& operator () (Pix i) = 0; // access item at i
55
56 virtual Pix seek(SymbolConjunctPtr item, Pix from=0); // Pix of next occurrence
57 virtual int owns(Pix i); // is i a valid Pix ?
58
59 void error(const char* msg);
60 virtual int OK() = 0; // rep invariant
61 };
62
63 inline SymbolConjunctPtrBag::~SymbolConjunctPtrBag() {}
/* [<][>][^][v][top][bottom][index][help] */
64
65 inline int SymbolConjunctPtrBag::length()
/* [<][>][^][v][top][bottom][index][help] */
66 {
67 return count;
68 }
69
70 inline int SymbolConjunctPtrBag::empty()
/* [<][>][^][v][top][bottom][index][help] */
71 {
72 return count == 0;
73 }
74
75 inline int SymbolConjunctPtrBag::contains(SymbolConjunctPtr item)
/* [<][>][^][v][top][bottom][index][help] */
76 {
77 return seek(item) != 0;
78 }
79
80 #endif