Vuo  2.3.2
VuoCompilerTriggerPort.hh
Go to the documentation of this file.
1 
10 #pragma once
11 
12 #include "VuoCompilerPort.hh"
13 
15 
22 {
23 public:
24  VuoCompilerTriggerPort(VuoPort * basePort);
25  Value * generateCreatePortContext(Module *module, BasicBlock *block);
26  static void generateScheduleWorker(Module *module, Function *function, BasicBlock *block, Value *compositionStateValue, Value *eventIdValue, Value *portContextValue, VuoType *dataType, int minThreadsNeeded, int maxThreadsNeeded, int chainCount, Function *workerFunction);
27  Function * generateSynchronousSubmissionToDispatchQueue(Module *module, BasicBlock *block, Value *nodeContextValue, string workerFunctionName, Value *workerFunctionArg=NULL);
28  Function * getWorkerFunction(Module *module, string functionName, bool isExternal=false);
29  static Value * generateNonBlockingWaitForSemaphore(Module *module, BasicBlock *block, Value *portContextValue);
30  void generateSignalForSemaphore(Module *module, BasicBlock *block, Value *nodeContextValue);
31  Value * generateLoadFunction(Module *module, BasicBlock *block, Value *nodeContextValue);
32  void generateStoreFunction(Module *module, BasicBlock *block, Value *nodeContextValue, Value *functionValue);
33  Value * generateRetrievePreviousData(Module *module, BasicBlock *block, Value *nodeContextValue);
34  void generateFreeContext(Module *module, BasicBlock *block, Function *workerFunction);
35  Value * generateCompositionStateValue(Module *module, BasicBlock *block, Function *workerFunction);
36  Value * generateDataValue(Module *module, BasicBlock *block, Function *workerFunction);
37  Value * generateEventIdValue(Module *module, BasicBlock *block, Function *workerFunction);
38  Value * generateDataValueUpdate(Module *module, BasicBlock *block, Function *workerFunction, Value *nodeContextValue);
39  static void generateDataValueDiscardFromScheduler(Module *module, Function *function, BasicBlock *block, VuoType *dataType);
40  void generateDataValueDiscardFromWorker(Module *module, BasicBlock *block, Function *workerFunction);
42 };