mirror of
https://github.com/Z3Prover/z3
synced 2025-06-08 15:13:23 +00:00
api: avoid copying param_refs whenever possible
This commit is contained in:
parent
d0d06c288a
commit
30fd01b526
5 changed files with 15 additions and 13 deletions
|
@ -740,7 +740,7 @@ extern "C" {
|
||||||
RESET_ERROR_CODE();
|
RESET_ERROR_CODE();
|
||||||
ast_manager & m = mk_c(c)->m();
|
ast_manager & m = mk_c(c)->m();
|
||||||
expr * a = to_expr(_a);
|
expr * a = to_expr(_a);
|
||||||
params_ref p = to_param_ref(_p);
|
auto &p = to_param_ref(_p);
|
||||||
unsigned timeout = p.get_uint("timeout", mk_c(c)->get_timeout());
|
unsigned timeout = p.get_uint("timeout", mk_c(c)->get_timeout());
|
||||||
bool use_ctrl_c = p.get_bool("ctrl_c", false);
|
bool use_ctrl_c = p.get_bool("ctrl_c", false);
|
||||||
th_rewriter m_rw(m, p);
|
th_rewriter m_rw(m, p);
|
||||||
|
|
|
@ -230,8 +230,7 @@ extern "C" {
|
||||||
param_descrs descrs;
|
param_descrs descrs;
|
||||||
to_optimize_ptr(o)->collect_param_descrs(descrs);
|
to_optimize_ptr(o)->collect_param_descrs(descrs);
|
||||||
to_params(p)->m_params.validate(descrs);
|
to_params(p)->m_params.validate(descrs);
|
||||||
params_ref pr = to_param_ref(p);
|
to_optimize_ptr(o)->updt_params(to_param_ref(p));
|
||||||
to_optimize_ptr(o)->updt_params(pr);
|
|
||||||
Z3_CATCH;
|
Z3_CATCH;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -367,22 +367,23 @@ extern "C" {
|
||||||
LOG_Z3_solver_set_params(c, s, p);
|
LOG_Z3_solver_set_params(c, s, p);
|
||||||
RESET_ERROR_CODE();
|
RESET_ERROR_CODE();
|
||||||
|
|
||||||
symbol logic = to_param_ref(p).get_sym("smt.logic", symbol::null);
|
auto ¶ms = to_param_ref(p);
|
||||||
|
symbol logic = params.get_sym("smt.logic", symbol::null);
|
||||||
if (logic != symbol::null) {
|
if (logic != symbol::null) {
|
||||||
to_solver(s)->m_logic = logic;
|
to_solver(s)->m_logic = logic;
|
||||||
}
|
}
|
||||||
if (to_solver(s)->m_solver) {
|
if (to_solver(s)->m_solver) {
|
||||||
bool old_model = to_solver(s)->m_params.get_bool("model", true);
|
bool old_model = to_solver(s)->m_params.get_bool("model", true);
|
||||||
bool new_model = to_param_ref(p).get_bool("model", true);
|
bool new_model = params.get_bool("model", true);
|
||||||
if (old_model != new_model)
|
if (old_model != new_model)
|
||||||
to_solver_ref(s)->set_produce_models(new_model);
|
to_solver_ref(s)->set_produce_models(new_model);
|
||||||
param_descrs r;
|
param_descrs r;
|
||||||
to_solver_ref(s)->collect_param_descrs(r);
|
to_solver_ref(s)->collect_param_descrs(r);
|
||||||
context_params::collect_solver_param_descrs(r);
|
context_params::collect_solver_param_descrs(r);
|
||||||
to_param_ref(p).validate(r);
|
params.validate(r);
|
||||||
to_solver_ref(s)->updt_params(to_param_ref(p));
|
to_solver_ref(s)->updt_params(params);
|
||||||
}
|
}
|
||||||
to_solver(s)->m_params.append(to_param_ref(p));
|
to_solver(s)->m_params.append(params);
|
||||||
|
|
||||||
init_solver_log(c, s);
|
init_solver_log(c, s);
|
||||||
|
|
||||||
|
|
|
@ -226,8 +226,9 @@ extern "C" {
|
||||||
RESET_ERROR_CODE();
|
RESET_ERROR_CODE();
|
||||||
param_descrs r;
|
param_descrs r;
|
||||||
to_tactic_ref(t)->collect_param_descrs(r);
|
to_tactic_ref(t)->collect_param_descrs(r);
|
||||||
to_param_ref(p).validate(r);
|
auto ¶ms = to_param_ref(p);
|
||||||
tactic * new_t = using_params(to_tactic_ref(t), to_param_ref(p));
|
params.validate(r);
|
||||||
|
tactic * new_t = using_params(to_tactic_ref(t), params);
|
||||||
RETURN_TACTIC(new_t);
|
RETURN_TACTIC(new_t);
|
||||||
Z3_CATCH_RETURN(nullptr);
|
Z3_CATCH_RETURN(nullptr);
|
||||||
}
|
}
|
||||||
|
@ -456,8 +457,9 @@ extern "C" {
|
||||||
RESET_ERROR_CODE();
|
RESET_ERROR_CODE();
|
||||||
param_descrs pd;
|
param_descrs pd;
|
||||||
to_tactic_ref(t)->collect_param_descrs(pd);
|
to_tactic_ref(t)->collect_param_descrs(pd);
|
||||||
to_param_ref(p).validate(pd);
|
auto ¶ms = to_param_ref(p);
|
||||||
Z3_apply_result r = _tactic_apply(c, t, g, to_param_ref(p));
|
params.validate(pd);
|
||||||
|
Z3_apply_result r = _tactic_apply(c, t, g, params);
|
||||||
RETURN_Z3(r);
|
RETURN_Z3(r);
|
||||||
Z3_CATCH_RETURN(nullptr);
|
Z3_CATCH_RETURN(nullptr);
|
||||||
}
|
}
|
||||||
|
|
|
@ -92,7 +92,7 @@ struct Z3_params_ref : public api::object {
|
||||||
|
|
||||||
inline Z3_params_ref * to_params(Z3_params p) { return reinterpret_cast<Z3_params_ref *>(p); }
|
inline Z3_params_ref * to_params(Z3_params p) { return reinterpret_cast<Z3_params_ref *>(p); }
|
||||||
inline Z3_params of_params(Z3_params_ref * p) { return reinterpret_cast<Z3_params>(p); }
|
inline Z3_params of_params(Z3_params_ref * p) { return reinterpret_cast<Z3_params>(p); }
|
||||||
inline params_ref to_param_ref(Z3_params p) { return p == nullptr ? params_ref() : to_params(p)->m_params; }
|
inline params_ref& to_param_ref(Z3_params p) { return p == nullptr ? const_cast<params_ref&>(params_ref::get_empty()) : to_params(p)->m_params; }
|
||||||
|
|
||||||
struct Z3_param_descrs_ref : public api::object {
|
struct Z3_param_descrs_ref : public api::object {
|
||||||
param_descrs m_descrs;
|
param_descrs m_descrs;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue