3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-06-08 07:03:23 +00:00

api: avoid copying param_refs whenever possible

This commit is contained in:
Nuno Lopes 2020-11-06 10:51:51 +00:00
parent d0d06c288a
commit 30fd01b526
5 changed files with 15 additions and 13 deletions

View file

@ -367,22 +367,23 @@ extern "C" {
LOG_Z3_solver_set_params(c, s, p);
RESET_ERROR_CODE();
symbol logic = to_param_ref(p).get_sym("smt.logic", symbol::null);
auto &params = to_param_ref(p);
symbol logic = params.get_sym("smt.logic", symbol::null);
if (logic != symbol::null) {
to_solver(s)->m_logic = logic;
}
if (to_solver(s)->m_solver) {
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)
to_solver_ref(s)->set_produce_models(new_model);
param_descrs r;
to_solver_ref(s)->collect_param_descrs(r);
context_params::collect_solver_param_descrs(r);
to_param_ref(p).validate(r);
to_solver_ref(s)->updt_params(to_param_ref(p));
params.validate(r);
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);