12 #include <unordered_set> 26 pin(pin), other(other) {}
32 typedef std::vector<CircuitTree*>::iterator CircIter;
33 typedef std::vector<PinConnection>::iterator PinIter;
38 pinIter(iter), isCircIter(false), parent(parent) {}
44 isCircIter = oth.isCircIter;
56 return parent == oth.parent &&
57 isCircIter == oth.isCircIter &&
58 ((isCircIter && circIter == oth.
circIter)
59 || (!isCircIter && pinIter == oth.
pinIter));
154 const std::string&
name() {
return inner()->name; }
157 const std::string&
name()
const {
return inner()->name; }
163 void walkConnected(std::unordered_set<CircuitTree*>& curConnected,
164 std::unordered_set<WireId>& seenWires,
175 void merge(
WireId* other);
176 void rename(
const std::string& nName) { inner()->name = nName; }
179 inline Inner* inner() {
return ufRoot()->
end; };
180 const Inner* inner()
const;
187 unsigned short ufDepth;
200 return wire.inner()->id;
208 return wire->inner()->id;
bool operator==(const CircIterator &oth) const
Definition: wireId.h:55
std::size_t result_type
Definition: wireId.h:206
CircIterator adjacent_begin()
Definition: wireId.cpp:119
CircIterator(const CircIterator &oth)
Definition: wireId.h:40
bool operator()(const WireId *lhs, const WireId *rhs) const
Definition: wireId.h:213
bool operator!=(const CircIterator &oth) const
Definition: wireId.h:61
void disconnect(CircuitTree *circ)
Disconnect the given CircuitTree
Definition: wireId.cpp:94
CircIter circIter
Definition: wireId.h:68
const std::string & name() const
Definition: wireId.h:157
result_type operator()(const argument_type &wire) const
Definition: wireId.h:207
bool operator!=(const WireId &oth) const
Id-based equality.
Definition: wireId.cpp:66
const std::vector< CircuitTree * > & connectedCirc()
Definition: wireId.cpp:111
result_type operator()(const argument_type &wire) const
Definition: wireId.h:199
WireId argument_type
Definition: wireId.h:197
void operator=(const CircIterator &oth)
Definition: wireId.h:43
WireId * other
Definition: wireId.h:28
WireId * chain
Definition: wireId.h:184
std::vector< CircuitTree * > connected()
Definition: wireId.cpp:127
const std::string & name()
Definition: wireId.h:154
Definition: wireManager.h:17
void connect(CircuitTree *circ)
Definition: wireId.cpp:82
Definition: circuitGroup.h:47
std::size_t result_type
Definition: wireId.h:198
friend struct HashWirePtr
Definition: wireId.h:192
PinConnection(IOPin *pin, WireId *other)
Definition: wireId.h:25
IOPin * pin
Definition: wireId.h:27
size_t connectedCount()
Definition: wireId.h:130
WireId * argument_type
Definition: wireId.h:205
Definition: circuitGroup.h:14
Inner * end
Definition: wireId.h:183
bool operator<(const WireId &oth) const
Definition: wireId.cpp:76
const std::vector< PinConnection > & connectedPins()
Definition: wireId.cpp:115
CircIterator(const PinIter &iter, WireId *parent)
Definition: wireId.h:37
std::string uniqueName()
Definition: wireId.cpp:138
CircIterator adjacent_end()
Definition: wireId.cpp:123
bool operator==(const WireId &oth) const
Definition: wireId.cpp:58
WireId(size_t id, const std::string &name, WireManager *manager)
Definition: wireId.cpp:40
PinIter pinIter
Definition: wireId.h:69
Definition: circuitTree.h:10
~WireId()
Definition: wireId.cpp:48