WIP: some minor refactoring.

This commit is contained in:
Matthias Koefferlein 2018-12-30 13:37:52 +01:00
parent a787204e77
commit c841b84867
6 changed files with 89 additions and 102 deletions

View File

@ -559,9 +559,7 @@ Circuit &Circuit::operator= (const Circuit &other)
m_subcircuit_by_name.invalidate ();
m_net_by_name.invalidate ();
for (const_pin_iterator i = other.begin_pins (); i != other.end_pins (); ++i) {
add_pin (*i);
}
m_pins = other.m_pins;
std::map<const Device *, Device *> device_table;
for (const_device_iterator i = other.begin_devices (); i != other.end_devices (); ++i) {
@ -711,9 +709,9 @@ Circuit::const_child_circuit_iterator Circuit::end_parents () const
return reinterpret_cast<const tl::vector<const Circuit *> &> (mp_netlist->parent_circuits (const_cast <Circuit *> (this))).end ();
}
const Pin &Circuit::add_pin (const Pin &pin)
const Pin &Circuit::add_pin (const std::string &name)
{
m_pins.push_back (pin);
m_pins.push_back (Pin (name));
m_pins.back ().set_id (m_pins.size () - 1);
return m_pins.back ();
}
@ -1503,8 +1501,7 @@ void Netlist::make_top_level_pins ()
// create pins for the named nets and connect them
for (Circuit::net_iterator n = circuit->begin_nets (); n != circuit->end_nets (); ++n) {
if (! n->name ().empty () && n->terminal_count () + n->pin_count () > 0) {
Pin pin (n->name ());
pin = circuit->add_pin (pin);
Pin pin = circuit->add_pin (n->name ());
circuit->connect_pin (pin.id (), n.operator-> ());
}
}

View File

@ -640,7 +640,6 @@ public:
private:
friend class Circuit;
tl::weak_ptr<Circuit> m_circuit;
std::string m_name;
size_t m_id;
@ -1187,7 +1186,7 @@ public:
* @brief Adds a pin to this circuit
* The circuit takes over ownership of the object.
*/
const Pin &add_pin(const Pin &pin);
const Pin &add_pin(const std::string &name);
/**
* @brief Begin iterator for the pins of the circuit (non-const version)

View File

@ -171,9 +171,7 @@ void NetlistExtractor::make_and_connect_subcircuits (db::Circuit *circuit,
size_t NetlistExtractor::make_pin (db::Circuit *circuit, db::Net *net)
{
db::Pin pin (net->name ());
size_t pin_id = circuit->add_pin (pin).id ();
size_t pin_id = circuit->add_pin (net->name ()).id ();
net->add_pin (db::NetPinRef (pin_id));
circuit->connect_pin (pin_id, net);

View File

@ -597,11 +597,6 @@ Class<GenericDeviceClass> decl_GenericDeviceClass (decl_dbDeviceClass, "db", "Ge
"This class has been added in version 0.26."
);
static const db::Pin &create_pin (db::Circuit *c, const std::string &name)
{
return c->add_pin (db::Pin (name));
}
static db::Net *create_net (db::Circuit *c, const std::string &name)
{
db::Net *n = new db::Net ();
@ -649,7 +644,7 @@ static void circuit_disconnect_pin1 (db::Circuit *c, const db::Pin *pin)
}
Class<db::Circuit> decl_dbCircuit ("db", "Circuit",
gsi::method_ext ("create_pin", &gsi::create_pin, gsi::arg ("name"),
gsi::method ("create_pin", &db::Circuit::add_pin, gsi::arg ("name"),
"@brief Creates a new \\Pin object inside the circuit\n"
"This object will describe a pin of the circuit. A circuit connects "
"to the outside through such a pin. The pin is added after all existing "

View File

@ -43,8 +43,8 @@ TEST(1_SerialResistors)
db::Circuit *circuit = new db::Circuit ();
nl.add_circuit (circuit);
db::Pin pin_a = circuit->add_pin (db::Pin ("A"));
db::Pin pin_b = circuit->add_pin (db::Pin ("B"));
db::Pin pin_a = circuit->add_pin ("A");
db::Pin pin_b = circuit->add_pin ("B");
circuit->add_device (r1);
circuit->add_device (r2);
@ -94,8 +94,8 @@ TEST(2_SerialResistors1Swapped)
db::Circuit *circuit = new db::Circuit ();
nl.add_circuit (circuit);
db::Pin pin_a = circuit->add_pin (db::Pin ("A"));
db::Pin pin_b = circuit->add_pin (db::Pin ("B"));
db::Pin pin_a = circuit->add_pin ("A");
db::Pin pin_b = circuit->add_pin ("B");
circuit->add_device (r1);
circuit->add_device (r2);
@ -145,8 +145,8 @@ TEST(3_SerialResistors1OtherSwapped)
db::Circuit *circuit = new db::Circuit ();
nl.add_circuit (circuit);
db::Pin pin_a = circuit->add_pin (db::Pin ("A"));
db::Pin pin_b = circuit->add_pin (db::Pin ("B"));
db::Pin pin_a = circuit->add_pin ("A");
db::Pin pin_b = circuit->add_pin ("B");
circuit->add_device (r1);
circuit->add_device (r2);
@ -196,8 +196,8 @@ TEST(4_SerialResistors2Swapped)
db::Circuit *circuit = new db::Circuit ();
nl.add_circuit (circuit);
db::Pin pin_a = circuit->add_pin (db::Pin ("A"));
db::Pin pin_b = circuit->add_pin (db::Pin ("B"));
db::Pin pin_a = circuit->add_pin ("A");
db::Pin pin_b = circuit->add_pin ("B");
circuit->add_device (r1);
circuit->add_device (r2);
@ -247,9 +247,9 @@ TEST(5_SerialResistorsNoCombination)
db::Circuit *circuit = new db::Circuit ();
nl.add_circuit (circuit);
db::Pin pin_a = circuit->add_pin (db::Pin ("A"));
db::Pin pin_b = circuit->add_pin (db::Pin ("B"));
db::Pin pin_c = circuit->add_pin (db::Pin ("C"));
db::Pin pin_a = circuit->add_pin ("A");
db::Pin pin_b = circuit->add_pin ("B");
db::Pin pin_c = circuit->add_pin ("C");
circuit->add_device (r1);
circuit->add_device (r2);
@ -301,8 +301,8 @@ TEST(6_ParallelResistors)
db::Circuit *circuit = new db::Circuit ();
nl.add_circuit (circuit);
db::Pin pin_a = circuit->add_pin (db::Pin ("A"));
db::Pin pin_b = circuit->add_pin (db::Pin ("B"));
db::Pin pin_a = circuit->add_pin ("A");
db::Pin pin_b = circuit->add_pin ("B");
circuit->add_device (r1);
circuit->add_device (r2);
@ -349,8 +349,8 @@ TEST(7_ParallelResistors1Swapped)
db::Circuit *circuit = new db::Circuit ();
nl.add_circuit (circuit);
db::Pin pin_a = circuit->add_pin (db::Pin ("A"));
db::Pin pin_b = circuit->add_pin (db::Pin ("B"));
db::Pin pin_a = circuit->add_pin ("A");
db::Pin pin_b = circuit->add_pin ("B");
circuit->add_device (r1);
circuit->add_device (r2);
@ -397,8 +397,8 @@ TEST(8_ParallelResistors1OtherSwapped)
db::Circuit *circuit = new db::Circuit ();
nl.add_circuit (circuit);
db::Pin pin_a = circuit->add_pin (db::Pin ("A"));
db::Pin pin_b = circuit->add_pin (db::Pin ("B"));
db::Pin pin_a = circuit->add_pin ("A");
db::Pin pin_b = circuit->add_pin ("B");
circuit->add_device (r1);
circuit->add_device (r2);
@ -445,8 +445,8 @@ TEST(9_ParallelResistors2Swapped)
db::Circuit *circuit = new db::Circuit ();
nl.add_circuit (circuit);
db::Pin pin_a = circuit->add_pin (db::Pin ("A"));
db::Pin pin_b = circuit->add_pin (db::Pin ("B"));
db::Pin pin_a = circuit->add_pin ("A");
db::Pin pin_b = circuit->add_pin ("B");
circuit->add_device (r1);
circuit->add_device (r2);
@ -506,8 +506,8 @@ TEST(10_ComplexRegistorCombination)
db::Circuit *circuit = new db::Circuit ();
nl.add_circuit (circuit);
db::Pin pin_a = circuit->add_pin (db::Pin ("A"));
db::Pin pin_b = circuit->add_pin (db::Pin ("B"));
db::Pin pin_a = circuit->add_pin ("A");
db::Pin pin_b = circuit->add_pin ("B");
circuit->add_device (r1);
circuit->add_device (r2);
@ -568,8 +568,8 @@ TEST(11_SerialInductors)
db::Circuit *circuit = new db::Circuit ();
nl.add_circuit (circuit);
db::Pin pin_a = circuit->add_pin (db::Pin ("A"));
db::Pin pin_b = circuit->add_pin (db::Pin ("B"));
db::Pin pin_a = circuit->add_pin ("A");
db::Pin pin_b = circuit->add_pin ("B");
circuit->add_device (l1);
circuit->add_device (l2);
@ -619,8 +619,8 @@ TEST(12_ParallelInductors)
db::Circuit *circuit = new db::Circuit ();
nl.add_circuit (circuit);
db::Pin pin_a = circuit->add_pin (db::Pin ("A"));
db::Pin pin_b = circuit->add_pin (db::Pin ("B"));
db::Pin pin_a = circuit->add_pin ("A");
db::Pin pin_b = circuit->add_pin ("B");
circuit->add_device (l1);
circuit->add_device (l2);
@ -667,8 +667,8 @@ TEST(13_SerialCapacitors)
db::Circuit *circuit = new db::Circuit ();
nl.add_circuit (circuit);
db::Pin pin_a = circuit->add_pin (db::Pin ("A"));
db::Pin pin_b = circuit->add_pin (db::Pin ("B"));
db::Pin pin_a = circuit->add_pin ("A");
db::Pin pin_b = circuit->add_pin ("B");
circuit->add_device (c1);
circuit->add_device (c2);
@ -718,8 +718,8 @@ TEST(14_ParallelCapacitors)
db::Circuit *circuit = new db::Circuit ();
nl.add_circuit (circuit);
db::Pin pin_a = circuit->add_pin (db::Pin ("A"));
db::Pin pin_b = circuit->add_pin (db::Pin ("B"));
db::Pin pin_a = circuit->add_pin ("A");
db::Pin pin_b = circuit->add_pin ("B");
circuit->add_device (c1);
circuit->add_device (c2);
@ -766,8 +766,8 @@ TEST(15_SerialDiodes)
db::Circuit *circuit = new db::Circuit ();
nl.add_circuit (circuit);
db::Pin pin_a = circuit->add_pin (db::Pin ("A"));
db::Pin pin_b = circuit->add_pin (db::Pin ("B"));
db::Pin pin_a = circuit->add_pin ("A");
db::Pin pin_b = circuit->add_pin ("B");
circuit->add_device (d1);
circuit->add_device (d2);
@ -820,8 +820,8 @@ TEST(16_ParallelDiodes)
db::Circuit *circuit = new db::Circuit ();
nl.add_circuit (circuit);
db::Pin pin_a = circuit->add_pin (db::Pin ("A"));
db::Pin pin_b = circuit->add_pin (db::Pin ("B"));
db::Pin pin_a = circuit->add_pin ("A");
db::Pin pin_b = circuit->add_pin ("B");
circuit->add_device (d1);
circuit->add_device (d2);
@ -868,8 +868,8 @@ TEST(17_AntiParallelDiodes)
db::Circuit *circuit = new db::Circuit ();
nl.add_circuit (circuit);
db::Pin pin_a = circuit->add_pin (db::Pin ("A"));
db::Pin pin_b = circuit->add_pin (db::Pin ("B"));
db::Pin pin_a = circuit->add_pin ("A");
db::Pin pin_b = circuit->add_pin ("B");
circuit->add_device (d1);
circuit->add_device (d2);
@ -925,9 +925,9 @@ TEST(20_ParallelMOS3Transistors)
db::Circuit *circuit = new db::Circuit ();
nl.add_circuit (circuit);
db::Pin pin_a = circuit->add_pin (db::Pin ("A"));
db::Pin pin_b = circuit->add_pin (db::Pin ("B"));
db::Pin pin_c = circuit->add_pin (db::Pin ("C"));
db::Pin pin_a = circuit->add_pin ("A");
db::Pin pin_b = circuit->add_pin ("B");
db::Pin pin_c = circuit->add_pin ("C");
circuit->add_device (d1);
circuit->add_device (d2);
@ -986,9 +986,9 @@ TEST(21_AntiParallelMOS3Transistors)
db::Circuit *circuit = new db::Circuit ();
nl.add_circuit (circuit);
db::Pin pin_a = circuit->add_pin (db::Pin ("A"));
db::Pin pin_b = circuit->add_pin (db::Pin ("B"));
db::Pin pin_c = circuit->add_pin (db::Pin ("C"));
db::Pin pin_a = circuit->add_pin ("A");
db::Pin pin_b = circuit->add_pin ("B");
db::Pin pin_c = circuit->add_pin ("C");
circuit->add_device (d1);
circuit->add_device (d2);
@ -1047,10 +1047,10 @@ TEST(22_ParallelMOS3TransistorsDisconnectedGates)
db::Circuit *circuit = new db::Circuit ();
nl.add_circuit (circuit);
db::Pin pin_a = circuit->add_pin (db::Pin ("A"));
db::Pin pin_b = circuit->add_pin (db::Pin ("B"));
db::Pin pin_c1 = circuit->add_pin (db::Pin ("C1"));
db::Pin pin_c2 = circuit->add_pin (db::Pin ("C2"));
db::Pin pin_a = circuit->add_pin ("A");
db::Pin pin_b = circuit->add_pin ("B");
db::Pin pin_c1 = circuit->add_pin ("C1");
db::Pin pin_c2 = circuit->add_pin ("C2");
circuit->add_device (d1);
circuit->add_device (d2);
@ -1116,9 +1116,9 @@ TEST(23_ParallelMOS3TransistorsDifferentLength)
db::Circuit *circuit = new db::Circuit ();
nl.add_circuit (circuit);
db::Pin pin_a = circuit->add_pin (db::Pin ("A"));
db::Pin pin_b = circuit->add_pin (db::Pin ("B"));
db::Pin pin_c = circuit->add_pin (db::Pin ("C"));
db::Pin pin_a = circuit->add_pin ("A");
db::Pin pin_b = circuit->add_pin ("B");
db::Pin pin_c = circuit->add_pin ("C");
circuit->add_device (d1);
circuit->add_device (d2);
@ -1180,10 +1180,10 @@ TEST(30_ParallelMOS4Transistors)
db::Circuit *circuit = new db::Circuit ();
nl.add_circuit (circuit);
db::Pin pin_a = circuit->add_pin (db::Pin ("A"));
db::Pin pin_b = circuit->add_pin (db::Pin ("B"));
db::Pin pin_c = circuit->add_pin (db::Pin ("C"));
db::Pin pin_d = circuit->add_pin (db::Pin ("D"));
db::Pin pin_a = circuit->add_pin ("A");
db::Pin pin_b = circuit->add_pin ("B");
db::Pin pin_c = circuit->add_pin ("C");
db::Pin pin_d = circuit->add_pin ("D");
circuit->add_device (d1);
circuit->add_device (d2);
@ -1248,10 +1248,10 @@ TEST(31_AntiParallelMOS4Transistors)
db::Circuit *circuit = new db::Circuit ();
nl.add_circuit (circuit);
db::Pin pin_a = circuit->add_pin (db::Pin ("A"));
db::Pin pin_b = circuit->add_pin (db::Pin ("B"));
db::Pin pin_c = circuit->add_pin (db::Pin ("C"));
db::Pin pin_d = circuit->add_pin (db::Pin ("D"));
db::Pin pin_a = circuit->add_pin ("A");
db::Pin pin_b = circuit->add_pin ("B");
db::Pin pin_c = circuit->add_pin ("C");
db::Pin pin_d = circuit->add_pin ("D");
circuit->add_device (d1);
circuit->add_device (d2);
@ -1316,11 +1316,11 @@ TEST(32_ParallelMOS4TransistorsDisconnectedGates)
db::Circuit *circuit = new db::Circuit ();
nl.add_circuit (circuit);
db::Pin pin_a = circuit->add_pin (db::Pin ("A"));
db::Pin pin_b = circuit->add_pin (db::Pin ("B"));
db::Pin pin_c1 = circuit->add_pin (db::Pin ("C1"));
db::Pin pin_c2 = circuit->add_pin (db::Pin ("C2"));
db::Pin pin_d = circuit->add_pin (db::Pin ("D"));
db::Pin pin_a = circuit->add_pin ("A");
db::Pin pin_b = circuit->add_pin ("B");
db::Pin pin_c1 = circuit->add_pin ("C1");
db::Pin pin_c2 = circuit->add_pin ("C2");
db::Pin pin_d = circuit->add_pin ("D");
circuit->add_device (d1);
circuit->add_device (d2);
@ -1392,11 +1392,11 @@ TEST(33_ParallelMOS4TransistorsDisconnectedBulk)
db::Circuit *circuit = new db::Circuit ();
nl.add_circuit (circuit);
db::Pin pin_a = circuit->add_pin (db::Pin ("A"));
db::Pin pin_b = circuit->add_pin (db::Pin ("B"));
db::Pin pin_c = circuit->add_pin (db::Pin ("C"));
db::Pin pin_d1 = circuit->add_pin (db::Pin ("D1"));
db::Pin pin_d2 = circuit->add_pin (db::Pin ("D2"));
db::Pin pin_a = circuit->add_pin ("A");
db::Pin pin_b = circuit->add_pin ("B");
db::Pin pin_c = circuit->add_pin ("C");
db::Pin pin_d1 = circuit->add_pin ("D1");
db::Pin pin_d2 = circuit->add_pin ("D2");
circuit->add_device (d1);
circuit->add_device (d2);
@ -1468,10 +1468,10 @@ TEST(34_ParallelMOS4TransistorsDifferentLength)
db::Circuit *circuit = new db::Circuit ();
nl.add_circuit (circuit);
db::Pin pin_a = circuit->add_pin (db::Pin ("A"));
db::Pin pin_b = circuit->add_pin (db::Pin ("B"));
db::Pin pin_c = circuit->add_pin (db::Pin ("C"));
db::Pin pin_d = circuit->add_pin (db::Pin ("D"));
db::Pin pin_a = circuit->add_pin ("A");
db::Pin pin_b = circuit->add_pin ("B");
db::Pin pin_c = circuit->add_pin ("C");
db::Pin pin_d = circuit->add_pin ("D");
circuit->add_device (d1);
circuit->add_device (d2);

View File

@ -130,10 +130,8 @@ TEST(3_CircuitBasic)
c.set_name ("name");
EXPECT_EQ (c.name (), "name");
db::Pin p1 ("p1");
db::Pin p2 ("p2");
c.add_pin (p1);
c.add_pin (p2);
db::Pin p1 = c.add_pin ("p1");
db::Pin p2 = c.add_pin ("p2");
EXPECT_EQ (pins2string (c), "p1#0,p2#1");
EXPECT_EQ (c.pin_by_id (0)->name (), "p1");
@ -449,8 +447,8 @@ TEST(4_NetlistSubcircuits)
c1->set_cell_index (17);
EXPECT_EQ (c1->netlist (), 0);
c1->set_name ("c1");
c1->add_pin (db::Pin ("c1p1"));
c1->add_pin (db::Pin ("c1p2"));
c1->add_pin ("c1p1");
c1->add_pin ("c1p2");
nl->add_circuit (c1);
EXPECT_EQ (c1->netlist (), nl.get ());
EXPECT_EQ (nl->circuit_by_name ("c1") == c1, true);
@ -460,8 +458,8 @@ TEST(4_NetlistSubcircuits)
db::Circuit *c2 = new db::Circuit ();
c2->set_name ("c2x");
c2->add_pin (db::Pin ("c2p1"));
c2->add_pin (db::Pin ("c2p2"));
c2->add_pin ("c2p1");
c2->add_pin ("c2p2");
c2->set_cell_index (41);
nl->add_circuit (c2);
EXPECT_EQ (nl->circuit_by_name ("c2x") == c2, true);
@ -726,18 +724,18 @@ TEST(8_NetSubCircuitsEditing)
{
db::Circuit c;
c.set_name ("c");
c.add_pin (db::Pin ("X"));
c.add_pin (db::Pin ("Y"));
c.add_pin ("X");
c.add_pin ("Y");
db::Circuit cc1;
cc1.set_name ("sc1");
cc1.add_pin (db::Pin ("A"));
cc1.add_pin (db::Pin ("B"));
cc1.add_pin ("A");
cc1.add_pin ("B");
db::Circuit cc2;
cc2.set_name ("sc2");
cc2.add_pin (db::Pin ("A"));
cc2.add_pin (db::Pin ("B"));
cc2.add_pin ("A");
cc2.add_pin ("B");
db::SubCircuit *sc1 = new db::SubCircuit (&cc1, "sc1");
c.add_subcircuit (sc1);