mirror of
https://github.com/Z3Prover/z3
synced 2025-06-05 21:53:23 +00:00
Replace rule API
This commit is contained in:
parent
0035d9b8cb
commit
3a01fd791b
2 changed files with 46 additions and 26 deletions
|
@ -358,6 +358,23 @@ namespace datalog {
|
|||
DEL_VECTOR(m_rules);
|
||||
}
|
||||
|
||||
void rule_set::replace_rule(rule * r, rule * other) {
|
||||
TRACE("dl", r->display(m_context, tout << "replace:"););
|
||||
func_decl* d = r->get_decl();
|
||||
rule_vector* rules = m_head2rules.find(d);
|
||||
#define REPLACE_VECTOR(_v) \
|
||||
for (unsigned i = (_v).size(); i > 0; ) { \
|
||||
--i; \
|
||||
if ((_v)[i] == r) { \
|
||||
(_v)[i] = other; \
|
||||
break; \
|
||||
} \
|
||||
} \
|
||||
|
||||
REPLACE_VECTOR(*rules);
|
||||
REPLACE_VECTOR(m_rules);
|
||||
}
|
||||
|
||||
void rule_set::ensure_closed() {
|
||||
if (!is_closed()) {
|
||||
VERIFY(close());
|
||||
|
|
|
@ -203,6 +203,10 @@ namespace datalog {
|
|||
\brief Remove rule \c r from the rule set.
|
||||
*/
|
||||
void del_rule(rule * r);
|
||||
/**
|
||||
\brief Replace a rule \c r with the rule \c other
|
||||
*/
|
||||
void replace_rule(rule * r, rule * other);
|
||||
|
||||
/**
|
||||
\brief Add all rules from a different rule_set.
|
||||
|
@ -280,4 +284,3 @@ namespace datalog {
|
|||
};
|
||||
|
||||
#endif /* DL_RULE_SET_H_ */
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue