46 set<VuoCompilerNode *>
getNodes(
void);
54 map<VuoCompilerTriggerPort *, vector<VuoCompilerChain *> >
getChains(
void);
92 set<VuoCompilerCable *> cableBundle;
96 string toString(
void)
const;
108 Edge(
const Vertex &fromVertex,
const Vertex &toVertex);
110 string toString(
void)
const;
113 friend bool operator==(
const Vertex &lhs,
const Vertex &rhs);
114 friend bool operator!=(
const Vertex &lhs,
const Vertex &rhs);
115 friend bool operator<(
const Vertex &lhs,
const Vertex &rhs);
116 friend bool operator<(
const Edge &lhs,
const Edge &rhs);
120 map<VuoCompilerTriggerPort *, vector<Vertex> > vertices;
124 map<VuoCompilerTriggerPort *, set<Edge> > edges;
127 map<VuoCompilerTriggerPort *, map<Vertex, set<Vertex> > > downstreamVertices;
130 map<VuoCompilerTriggerPort *, set<Vertex> > repeatedVertices;
133 vector<VuoCompilerTriggerPort *> triggers;
136 map<VuoCompilerTriggerPort *, VuoCompilerNode *> nodeForTrigger;
145 set<VuoCompilerNode *> nodes;
155 bool ownsPublishedNodeClasses;
159 set<VuoCable *> publishedCables;
162 map<VuoCompilerTriggerPort *, map<Vertex, size_t> > vertexDistanceFromTrigger;
165 map<VuoCompilerTriggerPort *, map<Vertex, bool> > triggerMustTransmitToVertex;
170 map<VuoCompilerNode *, vector<VuoCompilerNode *> > downstreamNodesViaDataOnlyTransmission;
173 map<VuoCompilerTriggerPort *, vector<VuoCompilerChain *> > chains;
176 map<VuoCompilerTriggerPort *, map<VuoCompilerNode *, map<VuoCompilerNode *, bool> > > vertexMayTransmit;
179 map<VuoCompilerTriggerPort *, map<VuoCompilerNode *, size_t> > numVerticesWithToNode;
182 map<VuoCompilerTriggerPort *, vector<VuoCompilerNode *> > downstreamNodesForTrigger;
185 map<VuoCompilerTriggerPort *, map<VuoCompilerNode *, vector<VuoCompilerNode *> > > downstreamNodesForNode;
188 map<Vertex, set<Vertex> > downstreamVerticesNonBlocking;
191 map<Vertex, set<Vertex> > downstreamVerticesNonBlockingOrDoor;
194 map<VuoCompilerTriggerPort *, set<string> > publishedOutputNames;
197 void makeTriggers(set<VuoNode *> nodes);
198 void makeVerticesAndEdges(
const set<VuoCable *> &cables);
199 void makeDownstreamVerticesWithInclusionRule(
VuoCompilerTriggerPort *trigger, std::function<
bool(Edge)> includeEdge, map<Vertex, set<Vertex> > &_downstreamVertices, set<Vertex> &_repeatedVertices);
200 void makeDownstreamVertices(
void);
201 void sortVertices(
void);
202 void makeVertexDistances(
void);
203 static bool compareTriggers(
const pair<VuoCompilerTriggerPort *, size_t> &lhs,
const pair<VuoCompilerTriggerPort *, size_t> &rhs);
204 void makeDownstreamNodesViaDataOnlyTransmission(set<VuoNode *> nodes, set<VuoCable *> cables);
205 static bool mustTransmit(
const set<VuoCompilerCable *> &fromCables,
const set<VuoCompilerCable *> &toCables);
206 static bool mayTransmit(
const set<VuoCompilerCable *> &fromCables,
const set<VuoCompilerCable *> &toCables);
211 VuoPort * getOutputPortOnPublishedInputNode(
size_t publishedInputPortIndex);
214 bool areNodesPartiallyOverlappedByAnotherTrigger(
const vector<VuoCompilerNode *> &nodes,
VuoCompilerTriggerPort *trigger);
216 friend class TestVuoCompilerBitcodeGenerator;