NAMD
UniqueSet.h
Go to the documentation of this file.
1 
7 /*
8  UniqueSet template - (hashtable)
9 */
10 
11 #ifndef UNIQUESET_H
12 #define UNIQUESET_H
13 
14 #include "UniqueSetRaw.h"
15 
16 // Need this juju to use templated friend below
17 template <class Type> class UniqueSetIter;
18 
19 template <class Elem> class UniqueSet {
20 
21  friend class UniqueSetIter<Elem>;
22 
23  private:
24 
25  UniqueSetRaw<Elem> *rep;
26 
27  public:
28 
29  // Various Constructors
30  UniqueSet(void) { rep = new UniqueSetRaw<Elem>(); rep->refCount = 1; }
31 
32  UniqueSet(int size) { rep=new UniqueSetRaw<Elem>(size); rep->refCount=1; }
33 
35  if (!--rep->refCount) delete rep; rep = us.rep; rep->refCount++;
36  }
37 
38  UniqueSet(const UniqueSet<Elem>* us) {
39  if (!--rep->refCount) delete rep; rep = new UniqueSetRaw<Elem>(*us->rep);
40  rep->refCount = 1;
41  }
42 
43  ~UniqueSet(void) { if (!--rep->refCount) delete rep; }
44 
46  if (!--rep->refCount) delete rep; rep = us.rep; rep->refCount++;
47  return (*this);
48  }
49 
50  void rehash(void) { rep->rehash(); }
51 
52  int add(const Elem &elem) { return rep->add(elem); }
53 
54  int load(const Elem &elem) { return rep->load(elem); }
55 
56  int del(const Elem &elem) { return rep->del(elem); }
57 
58  int size(void) const { return rep->size(); }
59 
60  Elem *find(const Elem &elem) { return rep->find(elem); }
61 
62  void clear(void) { rep->clear(); }
63 
64 #ifdef DEBUG
65  void status(void) { rep->status(); }
66 #endif
67 };
68 
69 #endif
Elem * find(const Elem &elem)
Definition: UniqueSet.h:60
UniqueSet(const UniqueSet< Elem > &us)
Definition: UniqueSet.h:34
void clear(void)
Definition: UniqueSet.h:62
UniqueSet(const UniqueSet< Elem > *us)
Definition: UniqueSet.h:38
UniqueSet(void)
Definition: UniqueSet.h:30
int load(const Elem &elem)
Definition: UniqueSet.h:54
UniqueSet< Elem > & operator=(const UniqueSet< Elem > &us)
Definition: UniqueSet.h:45
int add(const Elem &elem)
Definition: UniqueSet.h:52
int size(void) const
Definition: UniqueSet.h:58
void status(void)
Definition: UniqueSetIter.h:98
void rehash(void)
Definition: UniqueSet.h:50
UniqueSet(int size)
Definition: UniqueSet.h:32
int del(const Elem &elem)
Definition: UniqueSet.h:56
~UniqueSet(void)
Definition: UniqueSet.h:43