3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-09-30 05:09:02 +00:00

remove a few useless dynamic casts

This commit is contained in:
Nuno Lopes 2025-09-13 21:06:55 +01:00
parent f0c788581a
commit c350ddf990
8 changed files with 18 additions and 28 deletions

View file

@ -139,7 +139,7 @@ public:
if (m_mcs.back()) result->m_mcs.push_back(m_mcs.back()->translate(tr)); if (m_mcs.back()) result->m_mcs.push_back(m_mcs.back()->translate(tr));
if (m_sat_mc) { if (m_sat_mc) {
m_sat_mc->flush_smc(m_solver, m_map); m_sat_mc->flush_smc(m_solver, m_map);
result->m_sat_mc = dynamic_cast<sat2goal::mc*>(m_sat_mc->translate(tr)); result->m_sat_mc = static_cast<sat2goal::mc*>(m_sat_mc->translate(tr));
} }
result->m_has_uninterpreted = m_has_uninterpreted; result->m_has_uninterpreted = m_has_uninterpreted;
// copy m_bb_rewriter? // copy m_bb_rewriter?

View file

@ -72,7 +72,7 @@ namespace euf {
model_ref mdl; model_ref mdl;
auto s = get_solver(m.mk_family_id("sls"), nullptr); auto s = get_solver(m.mk_family_id("sls"), nullptr);
if (s) if (s)
mdl = dynamic_cast<sls::solver*>(s)->get_model(); mdl = static_cast<sls::solver*>(s)->get_model();
return mdl; return mdl;
} }

View file

@ -112,7 +112,7 @@ void sat2goal::mc::flush_gmc() {
model_converter* sat2goal::mc::translate(ast_translation& translator) { model_converter* sat2goal::mc::translate(ast_translation& translator) {
mc* result = alloc(mc, translator.to()); mc* result = alloc(mc, translator.to());
result->m_smc.copy(m_smc); result->m_smc.copy(m_smc);
result->m_gmc = m_gmc ? dynamic_cast<generic_model_converter*>(m_gmc->translate(translator)) : nullptr; result->m_gmc = m_gmc ? static_cast<generic_model_converter*>(m_gmc->translate(translator)) : nullptr;
for (expr* e : m_var2expr) { for (expr* e : m_var2expr) {
result->m_var2expr.push_back(translator(e)); result->m_var2expr.push_back(translator(e));
} }
@ -269,7 +269,7 @@ struct sat2goal::imp {
ba->to_formulas(l2e, fmls); ba->to_formulas(l2e, fmls);
} }
else else
dynamic_cast<euf::solver*>(ext)->to_formulas(l2e, fmls); static_cast<euf::solver*>(ext)->to_formulas(l2e, fmls);
for (expr* f : fmls) for (expr* f : fmls)
r.assert_expr(f); r.assert_expr(f);
} }

View file

@ -1568,7 +1568,7 @@ namespace smt {
family_id fid = m.get_family_id("specrels"); family_id fid = m.get_family_id("specrels");
theory* th = get_theory(fid); theory* th = get_theory(fid);
if (th) if (th)
dynamic_cast<theory_special_relations*>(th)->get_specrels(rels); static_cast<theory_special_relations*>(th)->get_specrels(rels);
} }
@ -3602,7 +3602,7 @@ namespace smt {
auto p = m_theories.get_plugin(tid); auto p = m_theories.get_plugin(tid);
if (!p) if (!p)
return false; return false;
m_model = dynamic_cast<theory_sls*>(p)->get_model(); m_model = static_cast<theory_sls*>(p)->get_model();
return m_model.get() != nullptr; return m_model.get() != nullptr;
} }

View file

@ -272,7 +272,7 @@ public:
for (dependent_expr const& f : m_fmls) for (dependent_expr const& f : m_fmls)
result->m_fmls.push_back(dependent_expr(tr, f)); result->m_fmls.push_back(dependent_expr(tr, f));
if (m_mc) if (m_mc)
result->m_mc = dynamic_cast<generic_model_converter*>(m_mc->translate(tr)); result->m_mc = m_mc->translate(tr);
// copy m_preprocess_state? // copy m_preprocess_state?
return result; return result;

View file

@ -399,7 +399,7 @@ solver* solver_pool::mk_solver() {
} }
else { else {
solver* s = m_solvers[(m_current_pool++) % m_num_pools]; solver* s = m_solvers[(m_current_pool++) % m_num_pools];
base_solver = dynamic_cast<pool_solver*>(s)->base_solver(); base_solver = static_cast<pool_solver*>(s)->base_solver();
} }
std::stringstream name; std::stringstream name;
name << "vsolver#" << m_solvers.size(); name << "vsolver#" << m_solvers.size();
@ -412,7 +412,7 @@ solver* solver_pool::mk_solver() {
void solver_pool::reset_solver(solver* s) { void solver_pool::reset_solver(solver* s) {
pool_solver* ps = dynamic_cast<pool_solver*>(s); pool_solver* ps = dynamic_cast<pool_solver*>(s);
SASSERT(ps); SASSERT(ps);
if (ps) ps->reset(); ps->reset();
} }
void solver_pool::refresh(solver* base_solver) { void solver_pool::refresh(solver* base_solver) {

View file

@ -406,8 +406,7 @@ public:
} }
void insert(const data & e) { void insert(const data & e) {
data tmp(e); insert(data(e));
insert(std::move(tmp));
} }
#define INSERT_LOOP_CORE_BODY() { \ #define INSERT_LOOP_CORE_BODY() { \
@ -463,8 +462,7 @@ public:
} }
bool insert_if_not_there_core(const data & e, entry * & et) { bool insert_if_not_there_core(const data & e, entry * & et) {
data temp(e); return insert_if_not_there_core(data(e), et);
return insert_if_not_there_core(std::move(temp), et);
} }
/** /**

View file

@ -57,19 +57,7 @@ class obj_map {
public: public:
struct key_data { struct key_data {
Key * m_key = nullptr; Key * m_key = nullptr;
Value m_value{}; Value m_value;
key_data() = default;
key_data(Key * k):
m_key(k) {
}
key_data(Key * k, Value const & v):
m_key(k),
m_value(v) {
}
key_data(Key * k, Value && v) :
m_key(k),
m_value(std::move(v)) {
}
Value const & get_value() const { return m_value; } Value const & get_value() const { return m_value; }
Key & get_key () const { return *m_key; } Key & get_key () const { return *m_key; }
unsigned hash() const { return m_key->hash(); } unsigned hash() const { return m_key->hash(); }
@ -97,8 +85,8 @@ public:
table m_table; table m_table;
public: public:
obj_map(): obj_map(unsigned initial_capacity = DEFAULT_HASHTABLE_INITIAL_CAPACITY):
m_table(DEFAULT_HASHTABLE_INITIAL_CAPACITY) {} m_table(initial_capacity) {}
typedef typename table::iterator iterator; typedef typename table::iterator iterator;
typedef typename table::data data; typedef typename table::data data;
@ -146,6 +134,10 @@ public:
return m_table.insert_if_not_there2(key_data(k, v))->get_data().m_value; return m_table.insert_if_not_there2(key_data(k, v))->get_data().m_value;
} }
bool insert_if_not_there_core(Key * k, Value const & v, obj_map_entry * & et) {
return m_table.insert_if_not_there_core({k, v}, et);
}
obj_map_entry * insert_if_not_there3(Key * k, Value const & v) { obj_map_entry * insert_if_not_there3(Key * k, Value const & v) {
return m_table.insert_if_not_there2(key_data(k, v)); return m_table.insert_if_not_there2(key_data(k, v));
} }