From d006d0c91e8a4fd4184cfae3ced7c7eb03caa063 Mon Sep 17 00:00:00 2001 From: Matthias Koefferlein Date: Fri, 17 May 2019 21:49:40 +0200 Subject: [PATCH] WIP: some refactoring --- src/db/db/dbNetlistCrossReference.cc | 88 +++----------------- src/db/db/dbNetlistCrossReference.h | 115 ++++++++++++++++++++++----- 2 files changed, 110 insertions(+), 93 deletions(-) diff --git a/src/db/db/dbNetlistCrossReference.cc b/src/db/db/dbNetlistCrossReference.cc index 9657665c3..882a47660 100644 --- a/src/db/db/dbNetlistCrossReference.cc +++ b/src/db/db/dbNetlistCrossReference.cc @@ -89,7 +89,7 @@ NetlistCrossReference::clear () } void -NetlistCrossReference::begin_netlist (const db::Netlist *a, const db::Netlist *b) +NetlistCrossReference::gen_begin_netlist (const db::Netlist *a, const db::Netlist *b) { mp_netlist_a.reset (const_cast (a)); mp_netlist_b.reset (const_cast (b)); @@ -226,7 +226,7 @@ struct SortNetSubCircuitPins } void -NetlistCrossReference::end_netlist (const db::Netlist *, const db::Netlist *) +NetlistCrossReference::gen_end_netlist (const db::Netlist *, const db::Netlist *) { m_circuits.reserve (m_per_circuit_data.size ()); for (per_circuit_data_iterator i = begin_per_circuit_data (); i != end_per_circuit_data (); ++i) { @@ -236,12 +236,6 @@ NetlistCrossReference::end_netlist (const db::Netlist *, const db::Netlist *) std::sort (m_circuits.begin (), m_circuits.end (), CircuitsCompareByName ()); } -void -NetlistCrossReference::device_class_mismatch (const db::DeviceClass *, const db::DeviceClass *) -{ - // .. nothing yet .. -} - void NetlistCrossReference::establish_pair (const db::Circuit *a, const db::Circuit *b) { @@ -304,16 +298,16 @@ NetlistCrossReference::establish_pair (const db::SubCircuit *a, const db::SubCir } void -NetlistCrossReference::begin_circuit (const db::Circuit *a, const db::Circuit *b) +NetlistCrossReference::gen_begin_circuit (const db::Circuit *a, const db::Circuit *b) { m_current_circuits = std::pair (a, b); establish_pair (a, b); } void -NetlistCrossReference::end_circuit (const db::Circuit *, const db::Circuit *, bool matching) +NetlistCrossReference::gen_end_circuit (const db::Circuit *, const db::Circuit *, Status status) { - mp_per_circuit_data->status = matching ? Match : NoMatch; + mp_per_circuit_data->status = status; std::sort (mp_per_circuit_data->devices.begin (), mp_per_circuit_data->devices.end (), pair_data_compare > ()); std::sort (mp_per_circuit_data->pins.begin (), mp_per_circuit_data->pins.end (), pair_data_compare > ()); @@ -325,83 +319,27 @@ NetlistCrossReference::end_circuit (const db::Circuit *, const db::Circuit *, bo } void -NetlistCrossReference::circuit_skipped (const db::Circuit *a, const db::Circuit *b) +NetlistCrossReference::gen_nets (const db::Net *a, const db::Net *b, Status status) { - establish_pair (a, b); - mp_per_circuit_data->status = Skipped; + establish_pair (a, b, status); } void -NetlistCrossReference::circuit_mismatch (const db::Circuit *a, const db::Circuit *b) +NetlistCrossReference::gen_devices (const db::Device *a, const db::Device *b, Status status) { - establish_pair (a, b); - mp_per_circuit_data->status = Mismatch; + establish_pair (a, b, status); } void -NetlistCrossReference::match_nets (const db::Net *a, const db::Net *b) +NetlistCrossReference::gen_pins (const db::Pin *a, const db::Pin *b, Status status) { - establish_pair (a, b, Match); + establish_pair (a, b, status); } void -NetlistCrossReference::match_ambiguous_nets (const db::Net *a, const db::Net *b) +NetlistCrossReference::gen_subcircuits (const db::SubCircuit *a, const db::SubCircuit *b, Status status) { - establish_pair (a, b, MatchWithWarning); -} - -void -NetlistCrossReference::net_mismatch (const db::Net *a, const db::Net *b) -{ - establish_pair (a, b, Mismatch); -} - -void -NetlistCrossReference::match_devices (const db::Device *a, const db::Device *b) -{ - establish_pair (a, b, Match); -} - -void -NetlistCrossReference::match_devices_with_different_parameters (const db::Device *a, const db::Device *b) -{ - establish_pair (a, b, MatchWithWarning); -} - -void -NetlistCrossReference::match_devices_with_different_device_classes (const db::Device *a, const db::Device *b) -{ - establish_pair (a, b, MatchWithWarning); -} - -void -NetlistCrossReference::device_mismatch (const db::Device *a, const db::Device *b) -{ - establish_pair (a, b, Mismatch); -} - -void -NetlistCrossReference::match_pins (const db::Pin *a, const db::Pin *b) -{ - establish_pair (a, b, Match); -} - -void -NetlistCrossReference::pin_mismatch (const db::Pin *a, const db::Pin *b) -{ - establish_pair (a, b, Mismatch); -} - -void -NetlistCrossReference::match_subcircuits (const db::SubCircuit *a, const db::SubCircuit *b) -{ - establish_pair (a, b, Match); -} - -void -NetlistCrossReference::subcircuit_mismatch (const db::SubCircuit *a, const db::SubCircuit *b) -{ - establish_pair (a, b, Mismatch); + establish_pair (a, b, status); } static void init_data_from_single (const db::Net *net, NetlistCrossReference::PerNetData &data, bool first) diff --git a/src/db/db/dbNetlistCrossReference.h b/src/db/db/dbNetlistCrossReference.h index 9e379efad..964e012a1 100644 --- a/src/db/db/dbNetlistCrossReference.h +++ b/src/db/db/dbNetlistCrossReference.h @@ -135,24 +135,103 @@ public: std::vector > subcircuit_pins; }; - virtual void begin_netlist (const db::Netlist *a, const db::Netlist *b); - virtual void end_netlist (const db::Netlist *a, const db::Netlist *b); - virtual void device_class_mismatch (const db::DeviceClass *a, const db::DeviceClass *b); - virtual void begin_circuit (const db::Circuit *a, const db::Circuit *b); - virtual void end_circuit (const db::Circuit *a, const db::Circuit *b, bool matching); - virtual void circuit_skipped (const db::Circuit *a, const db::Circuit *b); - virtual void circuit_mismatch (const db::Circuit *a, const db::Circuit *b); - virtual void match_nets (const db::Net *a, const db::Net *b); - virtual void match_ambiguous_nets (const db::Net *a, const db::Net *b); - virtual void net_mismatch (const db::Net *a, const db::Net *b); - virtual void match_devices (const db::Device *a, const db::Device *b); - virtual void match_devices_with_different_parameters (const db::Device *a, const db::Device *b); - virtual void match_devices_with_different_device_classes (const db::Device *a, const db::Device *b); - virtual void device_mismatch (const db::Device *a, const db::Device *b); - virtual void match_pins (const db::Pin *a, const db::Pin *b); - virtual void pin_mismatch (const db::Pin *a, const db::Pin *b); - virtual void match_subcircuits (const db::SubCircuit *a, const db::SubCircuit *b); - virtual void subcircuit_mismatch (const db::SubCircuit *a, const db::SubCircuit *b); + // Generic events - thew NetlistCompareLogger events are mapped to these + void gen_begin_netlist (const db::Netlist *a, const db::Netlist *b); + void gen_end_netlist (const db::Netlist *a, const db::Netlist *b); + void gen_begin_circuit (const db::Circuit *a, const db::Circuit *b); + void gen_end_circuit (const db::Circuit *a, const db::Circuit *b, Status status); + void gen_nets (const db::Net *a, const db::Net *b, Status status); + void gen_devices (const db::Device *a, const db::Device *b, Status status); + void gen_pins (const db::Pin *a, const db::Pin *b, Status status); + void gen_subcircuits (const db::SubCircuit *a, const db::SubCircuit *b, Status status); + + // db::NetlistCompareLogger interface + virtual void begin_netlist (const db::Netlist *a, const db::Netlist *b) + { + gen_begin_netlist (a, b); + } + + virtual void end_netlist (const db::Netlist *a, const db::Netlist *b) + { + gen_end_netlist (a, b); + } + + virtual void begin_circuit (const db::Circuit *a, const db::Circuit *b) + { + gen_begin_circuit (a, b); + } + + virtual void end_circuit (const db::Circuit *a, const db::Circuit *b, bool matching) + { + gen_end_circuit (a, b, matching ? Match : NoMatch); + } + + virtual void circuit_skipped (const db::Circuit *a, const db::Circuit *b) + { + gen_begin_circuit (a, b); + gen_end_circuit (a, b, Skipped); + } + + virtual void circuit_mismatch (const db::Circuit *a, const db::Circuit *b) + { + gen_begin_circuit (a, b); + gen_end_circuit (a, b, Mismatch); + } + + virtual void match_nets (const db::Net *a, const db::Net *b) + { + gen_nets (a, b, Match); + } + + virtual void match_ambiguous_nets (const db::Net *a, const db::Net *b) + { + gen_nets (a, b, MatchWithWarning); + } + + virtual void net_mismatch (const db::Net *a, const db::Net *b) + { + gen_nets (a, b, Mismatch); + } + + virtual void match_devices (const db::Device *a, const db::Device *b) + { + gen_devices (a, b, Match); + } + + virtual void match_devices_with_different_parameters (const db::Device *a, const db::Device *b) + { + gen_devices (a, b, MatchWithWarning); + } + + virtual void match_devices_with_different_device_classes (const db::Device *a, const db::Device *b) + { + gen_devices (a, b, MatchWithWarning); + } + + virtual void device_mismatch (const db::Device *a, const db::Device *b) + { + gen_devices (a, b, Mismatch); + } + + virtual void match_pins (const db::Pin *a, const db::Pin *b) + { + gen_pins (a, b, Match); + } + + virtual void pin_mismatch (const db::Pin *a, const db::Pin *b) + { + gen_pins (a, b, Mismatch); + } + + virtual void match_subcircuits (const db::SubCircuit *a, const db::SubCircuit *b) + { + gen_subcircuits (a, b, Match); + } + + virtual void subcircuit_mismatch (const db::SubCircuit *a, const db::SubCircuit *b) + { + gen_subcircuits (a, b, Mismatch); + } void clear ();