mirror of
https://github.com/Z3Prover/z3
synced 2025-05-12 18:24:43 +00:00
Reorganizing source code. Created util dir
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
This commit is contained in:
parent
630ba0c675
commit
2c464d413d
153 changed files with 0 additions and 0 deletions
|
@ -1,53 +0,0 @@
|
|||
/*++
|
||||
Copyright (c) 2006 Microsoft Corporation
|
||||
|
||||
Module Name:
|
||||
|
||||
obj_mark.h
|
||||
|
||||
Abstract:
|
||||
|
||||
A mapping from object to boolean (for objects that can be mapped to unsigned integers).
|
||||
|
||||
Author:
|
||||
|
||||
Leonardo de Moura (leonardo) 2008-01-02.
|
||||
|
||||
Revision History:
|
||||
|
||||
--*/
|
||||
#ifndef _OBJ_MARK_H_
|
||||
#define _OBJ_MARK_H_
|
||||
|
||||
#include"bit_vector.h"
|
||||
|
||||
template<typename T>
|
||||
struct default_t2uint {
|
||||
unsigned operator()(T const & obj) const { return obj.get_id(); }
|
||||
};
|
||||
|
||||
template<typename T, typename BV = bit_vector, typename T2UInt = default_t2uint<T> >
|
||||
class obj_mark {
|
||||
T2UInt m_proc;
|
||||
BV m_marks;
|
||||
public:
|
||||
obj_mark(T2UInt const & p = T2UInt()):m_proc(p) {}
|
||||
bool is_marked(T const & obj) const {
|
||||
unsigned id = m_proc(obj);
|
||||
return id < m_marks.size() && m_marks.get(id);
|
||||
}
|
||||
bool is_marked(T * obj) const { return is_marked(*obj); }
|
||||
void mark(T const & obj, bool flag) {
|
||||
unsigned id = m_proc(obj);
|
||||
if (id >= m_marks.size()) {
|
||||
m_marks.resize(id+1, 0);
|
||||
}
|
||||
m_marks.set(id, flag);
|
||||
}
|
||||
void mark(T const * obj, bool flag) { mark(*obj, flag); }
|
||||
void mark(T const & obj) { mark(obj, true); }
|
||||
void mark(T const * obj) { mark(obj, true); }
|
||||
void reset() { m_marks.reset(); }
|
||||
};
|
||||
|
||||
#endif /* _OBJ_MARK_H_ */
|
Loading…
Add table
Add a link
Reference in a new issue