46 set<VuoCompilerNode *>
getNodes(
void);
53 map<VuoCompilerTriggerPort *, vector<VuoCompilerChain *> >
getChains(
void);
91 set<VuoCompilerCable *> cableBundle;
95 string toString(
void)
const;
107 Edge(
const Vertex &fromVertex,
const Vertex &toVertex);
109 string toString(
void)
const;
112 friend bool operator==(
const Vertex &lhs,
const Vertex &rhs);
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 Edge &lhs,
const Edge &rhs);
119 map<VuoCompilerTriggerPort *, vector<Vertex> > vertices;
123 map<VuoCompilerTriggerPort *, set<Edge> > edges;
126 map<VuoCompilerTriggerPort *, map<Vertex, set<Vertex> > > downstreamVertices;
129 map<VuoCompilerTriggerPort *, set<Vertex> > repeatedVertices;
132 vector<VuoCompilerTriggerPort *> triggers;
135 map<VuoCompilerTriggerPort *, VuoCompilerNode *> nodeForTrigger;
144 set<VuoCompilerNode *> nodes;
154 bool ownsPublishedNodeClasses;
158 set<VuoCable *> publishedCables;
161 map<VuoCompilerTriggerPort *, map<Vertex, size_t> > vertexDistanceFromTrigger;
164 map<VuoCompilerTriggerPort *, map<Vertex, bool> > triggerMustTransmitToVertex;
169 map<VuoCompilerNode *, vector<VuoCompilerNode *> > downstreamNodesViaDataOnlyTransmission;
172 map<VuoCompilerTriggerPort *, vector<VuoCompilerChain *> > chains;
175 map<VuoCompilerTriggerPort *, map<VuoCompilerNode *, map<VuoCompilerNode *, bool> > > vertexMayTransmit;
178 map<VuoCompilerTriggerPort *, map<VuoCompilerNode *, size_t> > numVerticesWithToNode;
181 map<VuoCompilerTriggerPort *, vector<VuoCompilerNode *> > downstreamNodesForTrigger;
184 map<VuoCompilerTriggerPort *, map<VuoCompilerNode *, vector<VuoCompilerNode *> > > downstreamNodesForNode;
187 map<Vertex, set<Vertex> > downstreamVerticesNonBlocking;
190 map<Vertex, set<Vertex> > downstreamVerticesNonBlockingOrDoor;
193 map<VuoCompilerTriggerPort *, set<string> > publishedOutputNames;
196 void makeTriggers(set<VuoNode *> nodes);
197 void makeVerticesAndEdges(
const set<VuoCable *> &cables);
198 void makeDownstreamVerticesWithInclusionRule(
VuoCompilerTriggerPort *trigger, std::function<
bool(Edge)> includeEdge, map<Vertex, set<Vertex> > &_downstreamVertices, set<Vertex> &_repeatedVertices);
199 void makeDownstreamVertices(
void);
200 void sortVertices(
void);
201 void makeVertexDistances(
void);
202 static bool compareTriggers(
const pair<VuoCompilerTriggerPort *, size_t> &lhs,
const pair<VuoCompilerTriggerPort *, size_t> &rhs);
203 void makeDownstreamNodesViaDataOnlyTransmission(set<VuoNode *> nodes, set<VuoCable *> cables);
204 static bool mustTransmit(
const set<VuoCompilerCable *> &fromCables,
const set<VuoCompilerCable *> &toCables);
205 static bool mayTransmit(
const set<VuoCompilerCable *> &fromCables,
const set<VuoCompilerCable *> &toCables);
210 VuoPort * getOutputPortOnPublishedInputNode(
size_t publishedInputPortIndex);
211 VuoPort * getGatherPortOnPublishedOutputNode(
void);
214 bool areNodesPartiallyOverlappedByAnotherTrigger(
const vector<VuoCompilerNode *> &nodes,
VuoCompilerTriggerPort *trigger);
216 friend class TestVuoCompilerBitcodeGenerator;