mirror of
https://github.com/Z3Prover/z3
synced 2025-04-23 09:05:31 +00:00
remove template Context dependency in every trail object
This commit is contained in:
parent
df0a449f70
commit
a152bb1e80
65 changed files with 413 additions and 413 deletions
|
@ -148,36 +148,37 @@ namespace datalog {
|
|||
//
|
||||
// -----------------------------------
|
||||
|
||||
class context::restore_rules : public trail<context> {
|
||||
class context::restore_rules : public trail {
|
||||
context& ctx;
|
||||
rule_set* m_old_rules;
|
||||
void reset() {
|
||||
dealloc(m_old_rules);
|
||||
m_old_rules = nullptr;
|
||||
}
|
||||
public:
|
||||
restore_rules(rule_set& r): m_old_rules(alloc(rule_set, r)) {}
|
||||
restore_rules(context& ctx, rule_set& r): ctx(ctx), m_old_rules(alloc(rule_set, r)) {}
|
||||
|
||||
~restore_rules() override {}
|
||||
|
||||
void undo(context& ctx) override {
|
||||
void undo() override {
|
||||
ctx.replace_rules(*m_old_rules);
|
||||
reset();
|
||||
}
|
||||
};
|
||||
|
||||
template<typename Ctx, typename Vec>
|
||||
class restore_vec_size_trail : public trail<Ctx> {
|
||||
class restore_vec_size_trail : public trail {
|
||||
Vec& m_vector;
|
||||
unsigned m_old_size;
|
||||
public:
|
||||
restore_vec_size_trail(Vec& v): m_vector(v), m_old_size(v.size()) {}
|
||||
~restore_vec_size_trail() override {}
|
||||
void undo(Ctx& ctx) override { m_vector.shrink(m_old_size); }
|
||||
void undo() override { m_vector.shrink(m_old_size); }
|
||||
};
|
||||
|
||||
void context::push() {
|
||||
m_trail.push_scope();
|
||||
m_trail.push(restore_rules(m_rule_set));
|
||||
m_trail.push(restore_rules(*this, m_rule_set));
|
||||
m_trail.push(restore_vec_size_trail<context,expr_ref_vector>(m_rule_fmls));
|
||||
m_trail.push(restore_vec_size_trail<context,expr_ref_vector>(m_background));
|
||||
}
|
||||
|
|
|
@ -99,7 +99,7 @@ struct dl_context {
|
|||
void register_predicate(func_decl* pred, unsigned num_kinds, symbol const* kinds) {
|
||||
if (m_collected_cmds) {
|
||||
m_collected_cmds->m_rels.push_back(pred);
|
||||
m_trail.push(push_back_vector<dl_context, func_decl_ref_vector>(m_collected_cmds->m_rels));
|
||||
m_trail.push(push_back_vector<func_decl_ref_vector>(m_collected_cmds->m_rels));
|
||||
}
|
||||
dlctx().register_predicate(pred, false);
|
||||
dlctx().set_predicate_representation(pred, num_kinds, kinds);
|
||||
|
@ -111,8 +111,8 @@ struct dl_context {
|
|||
expr_ref rl = m_context->bind_vars(rule, true);
|
||||
m_collected_cmds->m_rules.push_back(rl);
|
||||
m_collected_cmds->m_names.push_back(name);
|
||||
m_trail.push(push_back_vector<dl_context, expr_ref_vector>(m_collected_cmds->m_rules));
|
||||
m_trail.push(push_back_vector<dl_context, svector<symbol> >(m_collected_cmds->m_names));
|
||||
m_trail.push(push_back_vector<expr_ref_vector>(m_collected_cmds->m_rules));
|
||||
m_trail.push(push_back_vector<svector<symbol> >(m_collected_cmds->m_names));
|
||||
}
|
||||
else {
|
||||
m_context->add_rule(rule, name, bound);
|
||||
|
@ -130,7 +130,7 @@ struct dl_context {
|
|||
qr = m.mk_app(q, args.size(), args.c_ptr());
|
||||
qr = m_context->bind_vars(qr, false);
|
||||
m_collected_cmds->m_queries.push_back(qr);
|
||||
m_trail.push(push_back_vector<dl_context, expr_ref_vector>(m_collected_cmds->m_queries));
|
||||
m_trail.push(push_back_vector<expr_ref_vector>(m_collected_cmds->m_queries));
|
||||
return true;
|
||||
}
|
||||
else {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue