mirror of
https://github.com/Z3Prover/z3
synced 2025-04-08 02:15:19 +00:00
breaking change. Enforce append semantics everywhere for parameter updates #5744
Replace semantics doesn't work with assumptions made elsewhere in code. The remedy is to apply append (override) semantics for parameter changes.
This commit is contained in:
parent
e8833f4dac
commit
fc77345bec
|
@ -585,7 +585,7 @@ extern "C" {
|
|||
to_fixedpoint_ref(d)->collect_param_descrs(descrs);
|
||||
to_params(p)->m_params.validate(descrs);
|
||||
to_fixedpoint_ref(d)->updt_params(to_param_ref(p));
|
||||
to_fixedpoint(d)->m_params = to_param_ref(p);
|
||||
to_fixedpoint(d)->m_params.append(to_param_ref(p));
|
||||
Z3_CATCH;
|
||||
}
|
||||
|
||||
|
|
|
@ -859,8 +859,8 @@ ast_manager & th_rewriter::m() const {
|
|||
}
|
||||
|
||||
void th_rewriter::updt_params(params_ref const & p) {
|
||||
m_params = p;
|
||||
m_imp->cfg().updt_params(p);
|
||||
m_params.append(p);
|
||||
m_imp->cfg().updt_params(m_params);
|
||||
}
|
||||
|
||||
void th_rewriter::get_param_descrs(param_descrs & r) {
|
||||
|
|
|
@ -199,12 +199,12 @@ void tst_params(cmd_context & ctx) {
|
|||
params_ref p1;
|
||||
params_ref p2;
|
||||
p1.set_uint("val", 100);
|
||||
p2 = p1;
|
||||
p2.append(p1);
|
||||
SASSERT(p2.get_uint("val", 0) == 100);
|
||||
p2.set_uint("val", 200);
|
||||
SASSERT(p2.get_uint("val", 0) == 200);
|
||||
SASSERT(p1.get_uint("val", 0) == 100);
|
||||
p2 = p1;
|
||||
p2.append(p1);
|
||||
SASSERT(p2.get_uint("val", 0) == 100);
|
||||
SASSERT(p1.get_uint("val", 0) == 100);
|
||||
ctx.regular_stream() << "worked" << std::endl;
|
||||
|
|
|
@ -227,8 +227,8 @@ public:
|
|||
}
|
||||
|
||||
void updt_params(params_ref const & p) override {
|
||||
m_params = p;
|
||||
m_imp->updt_params(p);
|
||||
m_params.append(p);
|
||||
m_imp->updt_params(m_params);
|
||||
}
|
||||
|
||||
void collect_param_descrs(param_descrs & r) override {
|
||||
|
|
|
@ -395,8 +395,8 @@ public:
|
|||
char const* name() const override { return "horn"; }
|
||||
|
||||
void updt_params(params_ref const & p) override {
|
||||
m_params = p;
|
||||
m_imp->updt_params(p);
|
||||
m_params.append(p);
|
||||
m_imp->updt_params(m_params);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -55,8 +55,8 @@ class nlsat_tactic : public tactic {
|
|||
}
|
||||
|
||||
void updt_params(params_ref const & p) {
|
||||
m_params = p;
|
||||
m_solver.updt_params(p);
|
||||
m_params.append(p);
|
||||
m_solver.updt_params(m_params);
|
||||
}
|
||||
|
||||
bool contains_unsupported(expr_ref_vector & b2a, expr_ref_vector & x2t) {
|
||||
|
@ -226,7 +226,7 @@ public:
|
|||
char const* name() const override { return "nlsat"; }
|
||||
|
||||
void updt_params(params_ref const & p) override {
|
||||
m_params = p;
|
||||
m_params.append(p);
|
||||
}
|
||||
|
||||
void collect_param_descrs(param_descrs & r) override {
|
||||
|
|
|
@ -190,7 +190,8 @@ void context_params::get_solver_params(params_ref & p, bool & proofs_enabled, bo
|
|||
proofs_enabled &= p.get_bool("proof", m_proof);
|
||||
models_enabled &= p.get_bool("model", m_model);
|
||||
unsat_core_enabled = m_unsat_core || p.get_bool("unsat_core", false);
|
||||
p = merge_default_params(p);
|
||||
if (!m_auto_config && !p.contains("auto_config"))
|
||||
p.set_bool("auto_config", false);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -2466,7 +2466,7 @@ public:
|
|||
}
|
||||
|
||||
void updt_params(params_ref const & p) override {
|
||||
m_params = p;
|
||||
m_params.append(p);
|
||||
// m_imp->updt_params(p);
|
||||
}
|
||||
|
||||
|
|
|
@ -103,8 +103,8 @@ public:
|
|||
char const* name() const override { return "qe"; }
|
||||
|
||||
void updt_params(params_ref const & p) override {
|
||||
m_params = p;
|
||||
m_imp->updt_params(p);
|
||||
m_params.append(p);
|
||||
m_imp->updt_params(m_params);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -201,8 +201,8 @@ public:
|
|||
char const* name() const override { return "sat"; }
|
||||
|
||||
void updt_params(params_ref const & p) override {
|
||||
m_params = p;
|
||||
if (m_imp) m_imp->updt_params(p);
|
||||
m_params.append(p);
|
||||
if (m_imp) m_imp->updt_params(m_params);
|
||||
}
|
||||
|
||||
void collect_param_descrs(param_descrs & r) override {
|
||||
|
|
|
@ -124,7 +124,7 @@ namespace {
|
|||
smt_params m_smt_params_save;
|
||||
|
||||
void push_params() override {
|
||||
m_params_save = params_ref();
|
||||
m_params_save.reset();
|
||||
m_params_save.copy(solver::get_params());
|
||||
m_smt_params_save = m_smt_params;
|
||||
}
|
||||
|
|
|
@ -127,7 +127,8 @@ public:
|
|||
|
||||
scoped_init_ctx(smt_tactic & o, ast_manager & m):m_owner(o) {
|
||||
m_params = o.fparams();
|
||||
m_params_ref = o.params();
|
||||
m_params_ref.reset();
|
||||
m_params_ref.append(o.params());
|
||||
smt::kernel * new_ctx = alloc(smt::kernel, m, m_params, m_params_ref);
|
||||
TRACE("smt_tactic", tout << "logic: " << o.m_logic << "\n";);
|
||||
new_ctx->set_logic(o.m_logic);
|
||||
|
|
|
@ -50,7 +50,7 @@ struct unit_subsumption_tactic : public tactic {
|
|||
}
|
||||
|
||||
void updt_params(params_ref const& p) override {
|
||||
m_params = p;
|
||||
m_params.append(p);
|
||||
// m_context.updt_params(p); does not exist.
|
||||
}
|
||||
|
||||
|
|
|
@ -226,7 +226,7 @@ void solver::collect_param_descrs(param_descrs & r) {
|
|||
}
|
||||
|
||||
void solver::reset_params(params_ref const & p) {
|
||||
m_params = p;
|
||||
m_params.append(p);
|
||||
solver_params sp(m_params);
|
||||
m_cancel_backup_file = sp.cancel_backup_file();
|
||||
}
|
||||
|
|
|
@ -149,8 +149,8 @@ public:
|
|||
char const* name() const override { return "add_bounds"; }
|
||||
|
||||
void updt_params(params_ref const & p) override {
|
||||
m_params = p;
|
||||
m_imp->updt_params(p);
|
||||
m_params.append(p);
|
||||
m_imp->updt_params(m_params);
|
||||
}
|
||||
|
||||
void collect_param_descrs(param_descrs & r) override {
|
||||
|
|
|
@ -45,7 +45,7 @@ public:
|
|||
char const* name() const override { return "card2bv"; }
|
||||
|
||||
void updt_params(params_ref const & p) override {
|
||||
m_params = p;
|
||||
m_params.append(p);
|
||||
}
|
||||
|
||||
void collect_param_descrs(param_descrs & r) override {
|
||||
|
|
|
@ -360,8 +360,8 @@ public:
|
|||
char const* name() const override { return "diff_neq"; }
|
||||
|
||||
void updt_params(params_ref const & p) override {
|
||||
m_params = p;
|
||||
m_imp->updt_params(p);
|
||||
m_params.append(p);
|
||||
m_imp->updt_params(m_params);
|
||||
}
|
||||
|
||||
void collect_param_descrs(param_descrs & r) override {
|
||||
|
|
|
@ -297,8 +297,8 @@ public:
|
|||
char const* name() const override { return "factor"; }
|
||||
|
||||
void updt_params(params_ref const & p) override {
|
||||
m_params = p;
|
||||
m_imp->m_rw.cfg().updt_params(p);
|
||||
m_params.append(p);
|
||||
m_imp->m_rw.cfg().updt_params(m_params);
|
||||
}
|
||||
|
||||
void collect_param_descrs(param_descrs & r) override {
|
||||
|
|
|
@ -303,8 +303,8 @@ public:
|
|||
char const* name() const override { return "fix_dl_var"; }
|
||||
|
||||
void updt_params(params_ref const & p) override {
|
||||
m_params = p;
|
||||
m_imp->updt_params(p);
|
||||
m_params.append(p);
|
||||
m_imp->updt_params(m_params);
|
||||
}
|
||||
|
||||
void collect_param_descrs(param_descrs & r) override {
|
||||
|
|
|
@ -1645,8 +1645,8 @@ public:
|
|||
char const* name() const override { return "fm"; }
|
||||
|
||||
void updt_params(params_ref const & p) override {
|
||||
m_params = p;
|
||||
m_imp->updt_params(p);
|
||||
m_params.append(p);
|
||||
m_imp->updt_params(m_params);
|
||||
}
|
||||
|
||||
void collect_param_descrs(param_descrs & r) override {
|
||||
|
|
|
@ -135,8 +135,8 @@ public:
|
|||
char const* name() const override { return "lia2card"; }
|
||||
|
||||
void updt_params(params_ref const & p) override {
|
||||
m_params = p;
|
||||
m_compile_equality = p.get_bool("compile_equality", true);
|
||||
m_params.append(p);
|
||||
m_compile_equality = m_params.get_bool("compile_equality", true);
|
||||
}
|
||||
|
||||
expr_ref mk_bounded(expr_ref_vector& axioms, app* x, unsigned lo, unsigned hi) {
|
||||
|
|
|
@ -308,8 +308,8 @@ public:
|
|||
char const* name() const override { return "lia2pb"; }
|
||||
|
||||
void updt_params(params_ref const & p) override {
|
||||
m_params = p;
|
||||
m_imp->updt_params(p);
|
||||
m_params.append(p);
|
||||
m_imp->updt_params(m_params);
|
||||
}
|
||||
|
||||
void collect_param_descrs(param_descrs & r) override {
|
||||
|
|
|
@ -1010,8 +1010,8 @@ public:
|
|||
char const* name() const override { return "pb2bv"; }
|
||||
|
||||
void updt_params(params_ref const & p) override {
|
||||
m_params = p;
|
||||
m_imp->updt_params(p);
|
||||
m_params.append(p);
|
||||
m_imp->updt_params(m_params);
|
||||
}
|
||||
|
||||
void collect_param_descrs(param_descrs & r) override {
|
||||
|
|
|
@ -543,8 +543,8 @@ propagate_ineqs_tactic::~propagate_ineqs_tactic() {
|
|||
}
|
||||
|
||||
void propagate_ineqs_tactic::updt_params(params_ref const & p) {
|
||||
m_params = p;
|
||||
m_imp->updt_params(p);
|
||||
m_params.append(p);
|
||||
m_imp->updt_params(m_params);
|
||||
}
|
||||
|
||||
void propagate_ineqs_tactic::operator()(goal_ref const & g,
|
||||
|
|
|
@ -906,7 +906,7 @@ public:
|
|||
char const* name() const override { return "purify_arith"; }
|
||||
|
||||
void updt_params(params_ref const & p) override {
|
||||
m_params = p;
|
||||
m_params.append(p);
|
||||
}
|
||||
|
||||
void collect_param_descrs(param_descrs & r) override {
|
||||
|
|
|
@ -401,8 +401,8 @@ public:
|
|||
char const* name() const override { return "recover_01"; }
|
||||
|
||||
void updt_params(params_ref const & p) override {
|
||||
m_params = p;
|
||||
m_imp->updt_params(p);
|
||||
m_params.append(p);
|
||||
m_imp->updt_params(m_params);
|
||||
}
|
||||
|
||||
void collect_param_descrs(param_descrs & r) override {
|
||||
|
|
|
@ -122,8 +122,8 @@ public:
|
|||
char const* name() const override { return "bit_blaster"; }
|
||||
|
||||
void updt_params(params_ref const & p) override {
|
||||
m_params = p;
|
||||
m_imp->updt_params(p);
|
||||
m_params.append(p);
|
||||
m_imp->updt_params(m_params);
|
||||
}
|
||||
|
||||
void collect_param_descrs(param_descrs & r) override {
|
||||
|
|
|
@ -434,8 +434,8 @@ public:
|
|||
char const* name() const override { return "bv1_blaster"; }
|
||||
|
||||
void updt_params(params_ref const & p) override {
|
||||
m_params = p;
|
||||
m_imp->m_rw.cfg().updt_params(p);
|
||||
m_params.append(p);
|
||||
m_imp->m_rw.cfg().updt_params(m_params);
|
||||
}
|
||||
|
||||
void collect_param_descrs(param_descrs & r) override {
|
||||
|
|
|
@ -206,8 +206,8 @@ tactic * bv_bound_chk_tactic::translate(ast_manager & m) {
|
|||
|
||||
|
||||
void bv_bound_chk_tactic::updt_params(params_ref const & p) {
|
||||
m_params = p;
|
||||
m_imp->updt_params(p);
|
||||
m_params.append(p);
|
||||
m_imp->updt_params(m_params);
|
||||
}
|
||||
|
||||
void bv_bound_chk_tactic::cleanup() {
|
||||
|
|
|
@ -116,8 +116,8 @@ public:
|
|||
char const* name() const override { return "bvarray2uf"; }
|
||||
|
||||
void updt_params(params_ref const & p) override {
|
||||
m_params = p;
|
||||
m_imp->updt_params(p);
|
||||
m_params.append(p);
|
||||
m_imp->updt_params(m_params);
|
||||
}
|
||||
|
||||
void collect_param_descrs(param_descrs & r) override {
|
||||
|
|
|
@ -207,7 +207,7 @@ class elim_small_bv_tactic : public tactic {
|
|||
}
|
||||
|
||||
void updt_params(params_ref const & p) {
|
||||
m_params = p;
|
||||
m_params.append(p);
|
||||
m_max_memory = megabytes_to_bytes(p.get_uint("max_memory", UINT_MAX));
|
||||
m_max_steps = p.get_uint("max_steps", UINT_MAX);
|
||||
m_max_bits = p.get_uint("max_bits", 4);
|
||||
|
@ -241,8 +241,8 @@ public:
|
|||
}
|
||||
|
||||
void updt_params(params_ref const & p) override {
|
||||
m_params = p;
|
||||
m_rw.cfg().updt_params(p);
|
||||
m_params.append(p);
|
||||
m_rw.cfg().updt_params(m_params);
|
||||
}
|
||||
|
||||
void collect_param_descrs(param_descrs & r) override {
|
||||
|
|
|
@ -280,8 +280,8 @@ public:
|
|||
char const* name() const override { return "max_bv_sharing"; }
|
||||
|
||||
void updt_params(params_ref const & p) override {
|
||||
m_params = p;
|
||||
m_imp->m_rw.cfg().updt_params(p);
|
||||
m_params.append(p);
|
||||
m_imp->m_rw.cfg().updt_params(m_params);
|
||||
}
|
||||
|
||||
void collect_param_descrs(param_descrs & r) override {
|
||||
|
|
|
@ -174,8 +174,8 @@ public:
|
|||
char const* name() const override { return "blast_term_ite"; }
|
||||
|
||||
void updt_params(params_ref const & p) override {
|
||||
m_params = p;
|
||||
m_imp->m_rw.m_cfg.updt_params(p);
|
||||
m_params.append(p);
|
||||
m_imp->m_rw.m_cfg.updt_params(m_params);
|
||||
}
|
||||
|
||||
void collect_param_descrs(param_descrs & r) override {
|
||||
|
|
|
@ -52,7 +52,7 @@ public:
|
|||
|
||||
~cofactor_term_ite_tactic() override {}
|
||||
char const* name() const override { return "cofactor"; }
|
||||
void updt_params(params_ref const & p) override { m_params = p; m_elim_ite.updt_params(p); }
|
||||
void updt_params(params_ref const & p) override { m_params.append(p); m_elim_ite.updt_params(m_params); }
|
||||
void collect_param_descrs(param_descrs & r) override { m_elim_ite.collect_param_descrs(r); }
|
||||
|
||||
void operator()(goal_ref const & g, goal_ref_buffer& result) override {
|
||||
|
|
|
@ -60,7 +60,7 @@ public:
|
|||
}
|
||||
|
||||
void updt_params(params_ref const & p) override {
|
||||
m_params = p;
|
||||
m_params.append(p);
|
||||
}
|
||||
|
||||
void collect_param_descrs(param_descrs & r) override {}
|
||||
|
|
|
@ -605,8 +605,8 @@ ctx_simplify_tactic::~ctx_simplify_tactic() {
|
|||
}
|
||||
|
||||
void ctx_simplify_tactic::updt_params(params_ref const & p) {
|
||||
m_params = p;
|
||||
m_imp->updt_params(p);
|
||||
m_params.append(p);
|
||||
m_imp->updt_params(m_params);
|
||||
}
|
||||
|
||||
void ctx_simplify_tactic::get_param_descrs(param_descrs & r) {
|
||||
|
|
|
@ -143,8 +143,8 @@ public:
|
|||
}
|
||||
|
||||
void updt_params(params_ref const & p) override {
|
||||
m_params = p;
|
||||
m_imp->m_rw.cfg().updt_params(p);
|
||||
m_params.append(p);
|
||||
m_imp->m_rw.cfg().updt_params(m_params);
|
||||
}
|
||||
|
||||
void collect_param_descrs(param_descrs & r) override {
|
||||
|
|
|
@ -862,9 +862,9 @@ public:
|
|||
}
|
||||
|
||||
void updt_params(params_ref const & p) override {
|
||||
m_params = p;
|
||||
m_max_memory = megabytes_to_bytes(p.get_uint("max_memory", UINT_MAX));
|
||||
m_max_steps = p.get_uint("max_steps", UINT_MAX);
|
||||
m_params.append(p);
|
||||
m_max_memory = megabytes_to_bytes(m_params.get_uint("max_memory", UINT_MAX));
|
||||
m_max_steps = m_params.get_uint("max_steps", UINT_MAX);
|
||||
}
|
||||
|
||||
void collect_param_descrs(param_descrs & r) override {
|
||||
|
|
|
@ -258,8 +258,8 @@ public:
|
|||
char const* name() const override { return "injectivity"; }
|
||||
|
||||
void updt_params(params_ref const & p) override {
|
||||
m_params = p;
|
||||
m_finder->updt_params(p);
|
||||
m_params.append(p);
|
||||
m_finder->updt_params(m_params);
|
||||
}
|
||||
|
||||
void collect_param_descrs(param_descrs & r) override {
|
||||
|
|
|
@ -51,7 +51,7 @@ public:
|
|||
|
||||
char const* name() const override { return "nnf"; }
|
||||
|
||||
void updt_params(params_ref const & p) override { m_params = p; }
|
||||
void updt_params(params_ref const & p) override { m_params.append(p); }
|
||||
|
||||
void collect_param_descrs(param_descrs & r) override { nnf::get_param_descrs(r); }
|
||||
|
||||
|
|
|
@ -219,9 +219,9 @@ public:
|
|||
char const* name() const override { return "propagate_values"; }
|
||||
|
||||
void updt_params(params_ref const & p) override {
|
||||
m_params = p;
|
||||
m_params.append(p);
|
||||
m_r.updt_params(p);
|
||||
updt_params_core(p);
|
||||
updt_params_core(m_params);
|
||||
}
|
||||
|
||||
void collect_param_descrs(param_descrs & r) override {
|
||||
|
|
|
@ -80,8 +80,8 @@ simplify_tactic::~simplify_tactic() {
|
|||
}
|
||||
|
||||
void simplify_tactic::updt_params(params_ref const & p) {
|
||||
m_params = p;
|
||||
m_imp->m_r.updt_params(p);
|
||||
m_params.append(p);
|
||||
m_imp->m_r.updt_params(m_params);
|
||||
}
|
||||
|
||||
void simplify_tactic::get_param_descrs(param_descrs & r) {
|
||||
|
|
|
@ -1092,8 +1092,8 @@ public:
|
|||
char const* name() const override { return "solve_eqs"; }
|
||||
|
||||
void updt_params(params_ref const & p) override {
|
||||
m_params = p;
|
||||
m_imp->updt_params(p);
|
||||
m_params.append(p);
|
||||
m_imp->updt_params(m_params);
|
||||
}
|
||||
|
||||
void collect_param_descrs(param_descrs & r) override {
|
||||
|
|
|
@ -49,7 +49,7 @@ public:
|
|||
|
||||
~special_relations_tactic() override {}
|
||||
|
||||
void updt_params(params_ref const & p) override { m_params = p; }
|
||||
void updt_params(params_ref const & p) override { m_params.append(p); }
|
||||
|
||||
void collect_param_descrs(param_descrs & r) override { }
|
||||
|
||||
|
|
|
@ -894,8 +894,8 @@ public:
|
|||
char const* name() const override { return "tseitin_cnf"; }
|
||||
|
||||
void updt_params(params_ref const & p) override {
|
||||
m_params = p;
|
||||
m_imp->updt_params(p);
|
||||
m_params.append(p);
|
||||
m_imp->updt_params(m_params);
|
||||
}
|
||||
|
||||
void collect_param_descrs(param_descrs & r) override {
|
||||
|
|
|
@ -123,8 +123,8 @@ public:
|
|||
char const* name() const override { return "fp2bv"; }
|
||||
|
||||
void updt_params(params_ref const & p) override {
|
||||
m_params = p;
|
||||
m_imp->updt_params(p);
|
||||
m_params.append(p);
|
||||
m_imp->updt_params(m_params);
|
||||
}
|
||||
|
||||
void collect_param_descrs(param_descrs & r) override {
|
||||
|
|
|
@ -136,8 +136,8 @@ public:
|
|||
char const* name() const override { return "solver_subsumption"; }
|
||||
|
||||
void updt_params(params_ref const& p) override {
|
||||
m_params = p;
|
||||
unsigned max_conflicts = p.get_uint("max_conflicts", 2);
|
||||
m_params.append(p);
|
||||
unsigned max_conflicts = m_params.get_uint("max_conflicts", 2);
|
||||
m_params.set_uint("sat.max_conflicts", max_conflicts);
|
||||
m_params.set_uint("smt.max_conflicts", max_conflicts);
|
||||
}
|
||||
|
|
|
@ -53,8 +53,8 @@ public:
|
|||
char const* name() const override { return "sls"; }
|
||||
|
||||
void updt_params(params_ref const & p) override {
|
||||
m_params = p;
|
||||
m_engine->updt_params(p);
|
||||
m_params.append(p);
|
||||
m_engine->updt_params(m_params);
|
||||
}
|
||||
|
||||
void collect_param_descrs(param_descrs & r) override {
|
||||
|
|
|
@ -108,8 +108,8 @@ public:
|
|||
char const* name() const override { return "macro_finder"; }
|
||||
|
||||
void updt_params(params_ref const & p) override {
|
||||
m_params = p;
|
||||
m_imp->updt_params(p);
|
||||
m_params.append(p);
|
||||
m_imp->updt_params(m_params);
|
||||
}
|
||||
|
||||
void collect_param_descrs(param_descrs & r) override {
|
||||
|
|
|
@ -103,8 +103,8 @@ public:
|
|||
char const* name() const override { return "quasi_macros"; }
|
||||
|
||||
void updt_params(params_ref const & p) override {
|
||||
m_params = p;
|
||||
m_imp->updt_params(p);
|
||||
m_params.append(p);
|
||||
m_imp->updt_params(m_params);
|
||||
}
|
||||
|
||||
void collect_param_descrs(param_descrs & r) override {
|
||||
|
|
|
@ -35,7 +35,7 @@ public:
|
|||
}
|
||||
|
||||
void updt_params(params_ref const & p) override {
|
||||
m_params = p;
|
||||
m_params.append(p);
|
||||
}
|
||||
|
||||
void collect_param_descrs(param_descrs & r) override {
|
||||
|
|
|
@ -520,7 +520,7 @@ params_ref::~params_ref() {
|
|||
|
||||
params_ref::params_ref(params_ref const & p):
|
||||
m_params(nullptr) {
|
||||
operator=(p);
|
||||
set(p);
|
||||
}
|
||||
|
||||
void params_ref::display(std::ostream & out) const {
|
||||
|
@ -553,18 +553,18 @@ void params_ref::validate(param_descrs const & p) {
|
|||
m_params->validate(p);
|
||||
}
|
||||
|
||||
params_ref & params_ref::operator=(params_ref const & p) {
|
||||
|
||||
void params_ref::set(params_ref const & p) {
|
||||
if (p.m_params)
|
||||
p.m_params->inc_ref();
|
||||
if (m_params)
|
||||
m_params->dec_ref();
|
||||
m_params = p.m_params;
|
||||
return *this;
|
||||
}
|
||||
|
||||
void params_ref::copy(params_ref const & src) {
|
||||
if (m_params == nullptr)
|
||||
operator=(src);
|
||||
if (m_params == nullptr || m_params->empty())
|
||||
set(src);
|
||||
else {
|
||||
init();
|
||||
copy_core(src.m_params);
|
||||
|
|
|
@ -35,6 +35,8 @@ class params_ref {
|
|||
params * m_params;
|
||||
void init();
|
||||
void copy_core(params const * p);
|
||||
params_ref& operator=(params_ref const& p) = delete;
|
||||
void set(params_ref const& p);
|
||||
public:
|
||||
params_ref():m_params(nullptr) {}
|
||||
params_ref(params_ref const & p);
|
||||
|
@ -42,8 +44,7 @@ public:
|
|||
|
||||
static params_ref const & get_empty() { return g_empty_params_ref; }
|
||||
|
||||
params_ref & operator=(params_ref const & p);
|
||||
|
||||
|
||||
// copy params from src
|
||||
void copy(params_ref const & src);
|
||||
void append(params_ref const & src) { copy(src); }
|
||||
|
|
Loading…
Reference in a new issue