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 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_a.reset (const_cast <db::Netlist *> (a));
mp_netlist_b.reset (const_cast <db::Netlist *> (b)); mp_netlist_b.reset (const_cast <db::Netlist *> (b));
@ -226,7 +226,7 @@ struct SortNetSubCircuitPins
} }
void 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 ()); m_circuits.reserve (m_per_circuit_data.size ());
for (per_circuit_data_iterator i = begin_per_circuit_data (); i != end_per_circuit_data (); ++i) { 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 ()); std::sort (m_circuits.begin (), m_circuits.end (), CircuitsCompareByName ());
} }
void
NetlistCrossReference::device_class_mismatch (const db::DeviceClass *, const db::DeviceClass *)
{
// .. nothing yet ..
}
void void
NetlistCrossReference::establish_pair (const db::Circuit *a, const db::Circuit *b) 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 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); m_current_circuits = std::pair<const db::Circuit *, const db::Circuit *> (a, b);
establish_pair (a, b); establish_pair (a, b);
} }
void 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->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> > ()); 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 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); establish_pair (a, b, status);
mp_per_circuit_data->status = Skipped;
} }
void 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); establish_pair (a, b, status);
mp_per_circuit_data->status = Mismatch;
} }
void 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 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); establish_pair (a, b, status);
}
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);
} }
static void init_data_from_single (const db::Net *net, NetlistCrossReference::PerNetData &data, bool first) 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; std::vector<std::pair<const db::NetSubcircuitPinRef *, const db::NetSubcircuitPinRef *> > subcircuit_pins;
}; };
virtual void begin_netlist (const db::Netlist *a, const db::Netlist *b); // Generic events - thew NetlistCompareLogger events are mapped to these
virtual void end_netlist (const db::Netlist *a, const db::Netlist *b); void gen_begin_netlist (const db::Netlist *a, const db::Netlist *b);
virtual void device_class_mismatch (const db::DeviceClass *a, const db::DeviceClass *b); void gen_end_netlist (const db::Netlist *a, const db::Netlist *b);
virtual void begin_circuit (const db::Circuit *a, const db::Circuit *b); void gen_begin_circuit (const db::Circuit *a, const db::Circuit *b);
virtual void end_circuit (const db::Circuit *a, const db::Circuit *b, bool matching); void gen_end_circuit (const db::Circuit *a, const db::Circuit *b, Status status);
virtual void circuit_skipped (const db::Circuit *a, const db::Circuit *b); void gen_nets (const db::Net *a, const db::Net *b, Status status);
virtual void circuit_mismatch (const db::Circuit *a, const db::Circuit *b); void gen_devices (const db::Device *a, const db::Device *b, Status status);
virtual void match_nets (const db::Net *a, const db::Net *b); void gen_pins (const db::Pin *a, const db::Pin *b, Status status);
virtual void match_ambiguous_nets (const db::Net *a, const db::Net *b); void gen_subcircuits (const db::SubCircuit *a, const db::SubCircuit *b, Status status);
virtual void net_mismatch (const db::Net *a, const db::Net *b);
virtual void match_devices (const db::Device *a, const db::Device *b); // db::NetlistCompareLogger interface
virtual void match_devices_with_different_parameters (const db::Device *a, const db::Device *b); virtual void begin_netlist (const db::Netlist *a, const db::Netlist *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); gen_begin_netlist (a, 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 end_netlist (const db::Netlist *a, const db::Netlist *b)
virtual void subcircuit_mismatch (const db::SubCircuit *a, const db::SubCircuit *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 (); void clear ();