39 std::string _formalName;
51 typedef std::vector<IOPin*>::const_iterator LowIter;
56 : ptr(lowIter), circ(circ)
62 virtual void operator++();
72 return ptr == oth.ptr && circ == oth.circ;
125 void addInput(
const IOPin& pin);
135 void addOutput(
const IOPin& pin);
140 void addOutput(
const std::string& formal,
WireId* actual);
145 std::vector<CircuitTree*>& getChildren();
149 const std::vector<CircuitTree*>& getChildren()
const;
152 const std::vector<CircuitTree*>& getChildrenCst()
const;
156 std::vector<IOPin*>& getInputs();
158 const std::vector<IOPin*>& getInputs()
const;
162 std::vector<IOPin*>& getOutputs();
164 const std::vector<IOPin*>& getOutputs()
const;
185 const std::string&
name()
const {
return name_; }
188 size_t inputCount()
const;
189 size_t outputCount()
const;
190 WireId* nth_input(
size_t circId)
const;
191 WireId* nth_output(
size_t circId)
const;
193 virtual void unplug();
195 void toDot(std::basic_ostream<char>& out,
int indent=0);
200 virtual sign_t innerSignature()
const;
202 void computeIoSigs();
206 class NoSuchChild:
public std::exception {};
218 std::vector<CircuitTree*> grpChildren;
219 std::vector<IOPin*> grpInputs, grpOutputs;
222 std::unordered_map<WireId*, sign_t> ioSigs_;
WireManager * wireManager()
Definition: circuitGroup.h:173
InnerIoIter(const InnerIoIter &it)
Definition: circuitGroup.h:60
const std::string & name() const
Get the group's name.
Definition: circuitGroup.h:185
Definition: circuitTree.h:13
CircType circType() const
Definition: circuitGroup.h:113
IoIter out_end() const
Definition: circuitGroup.h:90
Definition: circuitGroup.h:50
CircuitGroup * group() const
Definition: circuitGroup.h:33
IoIter out_begin() const
Definition: circuitGroup.h:85
std::ostream & indent(std::ostream &stream, int indent)
Definition: dotPrint.cpp:21
void connect(WireId *formal)
Definition: circuitGroup.cpp:23
WireId * formal() const
Definition: circuitGroup.h:30
Definition: wireManager.h:17
Definition: circuitGroup.h:16
Definition: circuitGroup.h:47
virtual bool equal(const CircuitTree::InnerIoIter &oth_) const
Definition: circuitGroup.h:68
IOPin(WireId *formal, WireId *actual, CircuitGroup *group)
Definition: circuitGroup.cpp:13
Definition: circuitGroup.h:14
IoIter inp_begin() const
Definition: circuitGroup.h:80
WireId * actual() const
Definition: circuitGroup.h:32
size_t memo_ts_t
Definition: circuitTree.h:194
Definition: circuitTree.h:49
virtual InnerIoIter * clone() const
Definition: circuitGroup.h:64
Definition: circuitTree.h:10
InnerIoIter(const CircuitGroup *circ, LowIter lowIter)
Definition: circuitGroup.h:55
std::string formalName() const
Definition: circuitGroup.h:31
uint64_t sign_t
Type of a circuit signature.
Definition: isomatch.h:26
virtual WireId * operator*()
Definition: circuitGroup.h:63
CircType
Definition: circuitTree.h:40