5#include "Component.hpp"
15using PinCompound = std::vector<Pin *>;
17class Pin :
public Object
20 Pin(
Component *,
const std::string &name);
22 Object *clone(
CloneEnv&)
const override;
26 bool hasNet()
const {
return !!mNet; }
27 Net *net()
const {
return mNet; }
28 bool sameNetAs(
const Pin &T)
const {
return mNet == T.net(); }
29 void setNet(
Net *net);
40 const PinCompound *
compound()
const {
return mCompound; }
41 bool inCompound(
const Pin&)
const;
42 void setCompound(
Pin *);
44 uint numConnections()
const {
return mConnections.size(); }
45 void addConnection(Connection *X) { mConnections.insert(X); }
46 bool removeConnection(Connection *X,
bool retainNet);
47 const std::set<Connection *>& connections()
const {
return mConnections; }
49 Color colorLine()
const;
50 Color colorFill()
const;
52 std::string str()
const override;
53 PyObject *getPy(uint depth)
const override;
57 std::set<Connection *> mConnections;
58 PinCompound *mCompound{0};
61inline bool Pin::inCompound(
const Pin &P)
const
63 return mCompound && mCompound == P.mCompound;
66inline Color Pin::colorLine()
const
68 return Palette::PinLine[hasNet() ? 1 : 0][minLayer() ? 1 : 0];
70inline Color Pin::colorFill()
const
72 return Palette::PinFill[hasNet() ? 1 : 0][minLayer() ? 1 : 0];
77 return dynamic_cast<Component *
>(mParent);
Definition Component.hpp:18
Definition Connection.hpp:17
uint getStartLayerFor(const Connection &) const
const PinCompound * compound() const
Definition Pin.hpp:40