mirror of
https://github.com/Z3Prover/z3
synced 2025-04-29 11:55:51 +00:00
working on lookahead solver
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
parent
54f145b364
commit
db9e8d96d4
2 changed files with 378 additions and 137 deletions
|
@ -333,6 +333,45 @@ public:
|
|||
}
|
||||
};
|
||||
|
||||
class indexed_uint_set {
|
||||
unsigned m_size;
|
||||
unsigned_vector m_elems;
|
||||
unsigned_vector m_index;
|
||||
public:
|
||||
indexed_uint_set():
|
||||
m_size(0)
|
||||
{}
|
||||
|
||||
void insert(unsigned x) {
|
||||
SASSERT(!contains(x));
|
||||
m_index.resize(x + 1, UINT_MAX);
|
||||
m_elems.resize(m_size + 1);
|
||||
m_index[x] = m_size;
|
||||
m_elems[m_size] = x;
|
||||
m_size++;
|
||||
}
|
||||
|
||||
void remove(unsigned x) {
|
||||
SASSERT(contains(x));
|
||||
unsigned y = m_elems[--m_size];
|
||||
if (x != y) {
|
||||
unsigned idx = m_index[x];
|
||||
m_index[y] = idx;
|
||||
m_elems[idx] = y;
|
||||
m_index[x] = m_size;
|
||||
m_elems[m_size] = x;
|
||||
}
|
||||
}
|
||||
|
||||
bool contains(unsigned x) const { return x < m_index.size() && m_index[x] < m_size && m_elems[m_index[x]] == x; }
|
||||
void reset() { m_size = 0; }
|
||||
bool empty() const { return m_size == 0; }
|
||||
unsigned size() const { return m_size; }
|
||||
typedef unsigned_vector::const_iterator iterator;
|
||||
iterator begin() const { return m_elems.begin(); }
|
||||
iterator end() const { return m_elems.begin() + m_size; }
|
||||
|
||||
};
|
||||
|
||||
#endif /* UINT_SET_H_ */
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue