isomatch
circuitDelay.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include "circuitTree.h"
4 
5 class CircuitDelay : public CircuitTree {
6  protected:
7  // ========= I/O ITERATOR =============================================
9  WireId* ptr;
10  const CircuitDelay* circ;
11  public:
12  InnerIoIter(const CircuitDelay* circ, WireId* wire)
13  : ptr(wire), circ(circ) {}
15  : ptr(it.ptr), circ(it.circ) {}
16  virtual void operator++();
17  virtual WireId* operator*() { return ptr; }
18  virtual InnerIoIter* clone() const {
19  return new InnerIoIter(*this);
20  }
21  protected:
22  virtual bool equal(const CircuitTree::InnerIoIter& oth_) const
23  {
24  const InnerIoIter& oth =
25  static_cast<const InnerIoIter&>(oth_);
26  return ptr == oth.ptr && circ == oth.circ;
27  }
28  };
29 
30  public:
31  IoIter inp_begin() const {
32  return IoIter(
33  new InnerIoIter(this, wireInput)
34  );
35  }
36  IoIter out_begin() const {
37  return IoIter(
38  new InnerIoIter(this, wireOutput)
39  );
40  }
41  IoIter out_end() const {
42  return IoIter(
43  new InnerIoIter(this, NULL)
44  );
45  }
46  // ========= END I/O ITERATOR =========================================
47 
48  CircuitDelay(WireId* from, WireId* to);
49 
50  CircType circType() const { return CIRC_DELAY; }
51 
53  const WireId* input() const { return wireInput; }
54 
56  const WireId* output() const { return wireOutput; }
57 
58  // Documentation in CircuitTree*
59  size_t inputCount() const;
60  size_t outputCount() const;
61  WireId* nth_input(size_t circId) const;
62  WireId* nth_output(size_t circId) const;
63 
64  void toDot(std::basic_ostream<char>& out, int indent=0);
65 
66  protected:
67  virtual sign_t innerSignature() const;
68  virtual bool innerEqual(CircuitTree* othTree);
69 
70  private:
71  WireId *wireInput, *wireOutput;
72 };
73 
const WireId * input() const
Definition: circuitDelay.h:53
Definition: circuitDelay.h:8
virtual bool equal(const CircuitTree::InnerIoIter &oth_) const
Definition: circuitDelay.h:22
Definition: circuitTree.h:13
CircuitDelay(WireId *from, WireId *to)
Definition: circuitDelay.cpp:17
IoIter out_begin() const
Definition: circuitDelay.h:36
CircType circType() const
Definition: circuitDelay.h:50
InnerIoIter(const CircuitDelay *circ, WireId *wire)
Definition: circuitDelay.h:12
Definition: wireId.h:21
IoIter out_end() const
Definition: circuitDelay.h:41
void toDot(std::basic_ostream< char > &out, int indent=0)
Definition: circuitDelay.cpp:54
virtual sign_t innerSignature() const
Definition: circuitDelay.cpp:25
std::ostream & indent(std::ostream &stream, int indent)
Definition: dotPrint.cpp:21
InnerIoIter(const InnerIoIter &it)
Definition: circuitDelay.h:14
Definition: circuitDelay.h:5
virtual InnerIoIter * clone() const
Definition: circuitDelay.h:18
WireId * nth_output(size_t circId) const
Get the nth input.
Definition: circuitDelay.cpp:48
virtual WireId * operator*()
Definition: circuitDelay.h:17
virtual void operator++()
Definition: circuitDelay.cpp:10
const WireId * output() const
Definition: circuitDelay.h:56
WireId * nth_input(size_t circId) const
Get the nth input.
Definition: circuitDelay.cpp:42
Definition: circuitTree.h:49
Definition: circuitTree.h:43
size_t outputCount() const
Get the number of outputs.
Definition: circuitDelay.cpp:38
Definition: circuitTree.h:10
IoIter inp_begin() const
Definition: circuitDelay.h:31
size_t inputCount() const
Get the number of inputs.
Definition: circuitDelay.cpp:34
uint64_t sign_t
Type of a circuit signature.
Definition: isomatch.h:26
virtual bool innerEqual(CircuitTree *othTree)
Definition: circuitDelay.cpp:30
CircType
Definition: circuitTree.h:40