Open
Graph Drawing
Framework

 v. 2023.09 (Elderberry)
 

Loading...
Searching...
No Matches
nonduplpool.h
Go to the documentation of this file.
1
30#pragma once
31
39#include <ogdf/lib/abacus/sub.h>
41
42#pragma GCC visibility push(default)
43namespace abacus {
44
46
58template<class BaseType, class CoType>
59class NonDuplPool : public StandardPool<BaseType, CoType> {
60public:
61
63
70 NonDuplPool(Master *master, int size, bool autoRealloc = false)
71 : StandardPool<BaseType, CoType>(master, size, autoRealloc), hash_(size), nDuplications_(0)
72 { }
73
75 virtual ~NonDuplPool() {
76#ifdef OGDF_DEBUG
77 Logger::ifout() << "Number of duplicated constraints: " <<
78 nDuplications_ << std::endl;
79#endif
80 }
81
83
94 virtual PoolSlot<BaseType, CoType> *insert(BaseType *cv);
95
97
105 virtual PoolSlot<BaseType, CoType> *present(BaseType *cv);
106
108
116 virtual const PoolSlot<BaseType, CoType> *present(const BaseType *cv) const;
117
119
126 virtual void increase(int size) {
128 hash_.resize(size);
129 }
130
132
145 void statistics(int &nDuplications, int &nCollisions) const {
146 nDuplications = nDuplications_;
147 nCollisions = hash_.nCollisions();
148}
149
150private:
151
162
170
173
177
178
181};
182
183}
184
186#pragma GCC visibility pop
Hash tables.
Definition hash.h:125
The master of the optimization.
Definition master.h:70
Standard pools without constraint duplication.
Definition nonduplpool.h:59
int nDuplications_
The number of insertions of constraints/variables that were rejected since the constraint/variable is...
virtual void increase(int size)
Enlarges the pool to store up to size items.
AbaHash< unsigned, PoolSlot< BaseType, CoType > * > hash_
A hash table for a fast access to the pool slot storing a constraint/variable.
virtual int softDeleteConVar(PoolSlot< BaseType, CoType > *slot)
Has to be redefined because the slot has to be removed from the hash table if the constraint/variable...
virtual PoolSlot< BaseType, CoType > * present(BaseType *cv)
Checks if constraint/variables cv is already contained in the pool.
void statistics(int &nDuplications, int &nCollisions) const
Returns some statistic information in nDuplicates and nCollisions.
NonDuplPool(Master *master, int size, bool autoRealloc=false)
Creates an empty pool.
Definition nonduplpool.h:70
virtual const PoolSlot< BaseType, CoType > * present(const BaseType *cv) const
Checks if constraint/variables cv is already contained in the pool.
NonDuplPool(const NonDuplPool &rhs)
virtual PoolSlot< BaseType, CoType > * insert(BaseType *cv)
Insert constraint/variable cv in the pool.
virtual ~NonDuplPool()
The destructor.
Definition nonduplpool.h:75
const NonDuplPool & operator=(const NonDuplPool &rhs)
virtual void hardDeleteConVar(PoolSlot< BaseType, CoType > *slot)
Has to be redefined because the pool slot has to be removed from the hash table.
Stores constraints and variables.
Definition poolslot.h:78
Standard pools.
int size() const
Return the maximal number of constraints/variables that can be inserted in the pool.
virtual void increase(int size)
Enlarges the pool to store up to size items.
PoolSlot< BaseType, CoType > * slot(int i)
Returns a pointer to the i-th slot in the pool.
static std::ostream & ifout()
stream for forced output (global; used by internal libraries, e.g. Abacus)
Definition Logger.h:218
constraint.
cutbuffer.
hash table.
the master of the optimization.
poolslot.
standard pool.
variable.