WIP: some refactoring

This commit is contained in:
Matthias Koefferlein 2019-05-17 21:49:40 +02:00
parent 65ea72c569
commit d006d0c91e
2 changed files with 110 additions and 93 deletions

View File

@ -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 <db::Netlist *> (a));
mp_netlist_b.reset (const_cast <db::Netlist *> (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<const db::Circuit *, const db::Circuit *> (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<DevicePairData, by_expanded_name_value_compare<db::Device> > ());
std::sort (mp_per_circuit_data->pins.begin (), mp_per_circuit_data->pins.end (), pair_data_compare<PinPairData, by_expanded_name_value_compare<db::Pin> > ());
@ -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)

View File

@ -135,24 +135,103 @@ public:
std::vector<std::pair<const db::NetSubcircuitPinRef *, const db::NetSubcircuitPinRef *> > 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 ();