34 this->compiler = compiler;
36 this->compositionString = driverAsCompositionString;
51 for (vector<VuoPublishedPort *>::iterator i = driverBridgeInputs.begin(); i != driverBridgeInputs.end(); ++i)
54 string driverBridgeInputName = driverBridgeInput->
getClass()->
getName();
67 for (vector<VuoPublishedPort *>::iterator i = driverBridgeOutputs.begin(); i != driverBridgeOutputs.end(); ++i)
70 string driverBridgeOutputName = driverBridgeOutput->
getClass()->
getName();
96 vector<VuoNode *> nodes = parserCopy->
getNodes();
97 for (vector<VuoNode *>::iterator node = nodes.begin(); node != nodes.end(); ++node)
101 if ((*node)->hasCompiler())
103 string nodeIdentifierPrefix = (*node)->getCompiler()->getGraphvizIdentifierPrefix() +
"_Driver";
111 vector<VuoCable *> cables = parserCopy->
getCables();
112 for (vector<VuoCable *>::iterator cable = cables.begin(); cable != cables.end(); ++cable)
113 if (! (*cable)->isPublished())
118 for (vector<VuoPublishedPort *>::iterator i = driverBridgeInputs.begin(); i != driverBridgeInputs.end(); ++i)
121 string driverBridgeInputName = driverBridgeInput->
getClass()->
getName();
125 if (compositionPublishedInput)
128 if (compositionPublishedInputType == driverBridgeInputType)
130 vector<VuoCable *> publishedInputOutgoingCables = compositionPublishedInput->
getConnectedCables();
131 set<pair<VuoPort *, VuoNode *> > compositionConnectedPorts;
132 map<pair<VuoPort *, VuoNode *>,
bool> eventOnlyConnection;
136 for (vector<VuoCable *>::iterator i = publishedInputOutgoingCables.begin(); i != publishedInputOutgoingCables.end(); ++i)
141 compositionConnectedPorts.insert(make_pair(toPort, toNode));
153 vector<VuoCable *> driverBridgeInputIncomingCables = driverBridgeInput->
getConnectedCables();
154 for (vector<VuoCable *>::iterator i = driverBridgeInputIncomingCables.begin(); i != driverBridgeInputIncomingCables.end(); ++i)
163 for (set<pair<VuoPort *, VuoNode *> >::iterator i = compositionConnectedPorts.begin(); i != compositionConnectedPorts.end(); ++i)
183 for (vector<VuoPublishedPort *>::iterator i = driverBridgeOutputs.begin(); i != driverBridgeOutputs.end(); ++i)
186 string driverBridgeOutputName = driverBridgeOutput->
getClass()->
getName();
190 if (compositionPublishedOutput)
193 if (compositionPublishedOutputType == driverBridgeOutputType)
195 vector<VuoCable *> publishedOutputIncomingCables = compositionPublishedOutput->
getConnectedCables();
196 set<pair<VuoPort *, VuoNode *> > compositionConnectedPorts;
197 map<pair<VuoPort *, VuoNode *>,
bool> eventOnlyConnection;
201 for (vector<VuoCable *>::iterator i = publishedOutputIncomingCables.begin(); i != publishedOutputIncomingCables.end(); ++i)
206 compositionConnectedPorts.insert(make_pair(fromPort, fromNode));
218 vector<VuoCable *> driverBridgeOutputOutgoingCables = driverBridgeOutput->
getConnectedCables();
219 for (vector<VuoCable *>::iterator i = driverBridgeOutputOutgoingCables.begin(); i != driverBridgeOutputOutgoingCables.end(); ++i)
228 for (set<pair<VuoPort *, VuoNode *> >::iterator i = compositionConnectedPorts.begin(); i != compositionConnectedPorts.end(); ++i)
250 auto driverBridgeInput = std::find_if(driverBridgeInputs.begin(), driverBridgeInputs.end(),
252 if (driverBridgeInput != driverBridgeInputs.end())
254 vector<VuoCable *> driverBridgeInputIncomingCables = (*driverBridgeInput)->getConnectedCables();
257 for (
VuoPublishedPort *compositionPublishedInput : compositionPublishedInputs)
259 string name = compositionPublishedInput->getClass()->getName();
260 auto matchingDriverBridgeInput = std::find_if(driverBridgeInputs.begin(), driverBridgeInputs.end(),
261 [&name] (
VuoPublishedPort *p) { return p->getClass()->getName() == name; });
262 if (matchingDriverBridgeInput != driverBridgeInputs.end())
269 vector<VuoCable *> publishedInputOutgoingCables = compositionPublishedInput->getConnectedCables();
275 for (
VuoCable *driverCable : driverBridgeInputIncomingCables)
277 for (
VuoCable *compositionCable : publishedInputOutgoingCables)
280 VuoCompilerNode *fromCompilerNode = driverCable->getFromNode()->getCompiler();
282 VuoCompilerNode *toCompilerNode = compositionCable->getToNode()->getCompiler();
293 string allowNodeClassName = (canPublishedInputsBeEdited ?
"vuo.event.allowChanges2" :
"vuo.event.allowFirstValue");
310 for (
VuoCable *driverCable : driverBridgeInputIncomingCables)
313 VuoCompilerNode *fromCompilerNode = driverCable->getFromNode()->getCompiler();
320 for (
VuoCable *compositionCable : publishedInputOutgoingCables)
323 VuoCompilerNode *toCompilerNode = compositionCable->getToNode()->getCompiler();