Vuo 2.4.4
Loading...
Searching...
No Matches
VuoCompilerNodeClass.hh
Go to the documentation of this file.
1
10#pragma once
11
12#include "VuoBaseDetail.hh"
13#include "VuoCompilerModule.hh"
14
15class VuoCompiler;
24class VuoNode;
25class VuoNodeClass;
26class VuoPortClass;
27class VuoType;
28
32class VuoCompilerNodeClass : public VuoBaseDetail<VuoNodeClass>, public VuoCompilerModule // Order matters: VuoCompilerModule after VuoBaseDetail - https://stackoverflow.com/a/2254306/238387
33{
34private:
35 Function *eventFunction;
36 Function *initFunction;
37 Function *finiFunction;
38 Function *callbackStartFunction;
39 Function *callbackUpdateFunction;
40 Function *callbackStopFunction;
41 VuoCompilerInstanceDataClass *instanceDataClass;
42 vector<VuoCompilerTriggerDescription *> triggerDescriptions;
43 set<VuoCompilerInputEventPortClass *> portsWithExplicitEventBlockingNone;
44 set< pair<string, string> > containedNodes;
45
46 static bool isNodeClass(Module *module, string moduleKey);
47 void parse(void);
48 set<string> globalsToRename(void);
49 void parseMetadata(void);
50 void parseEventFunction(void);
51 void parseInitFunction(void);
52 void parseFiniFunction(void);
53 void parseCallbackStartFunction(void);
54 void parseCallbackUpdateFunction(void);
55 void parseCallbackStopFunction(void);
56 void parseParameters(Function *function, unsigned long acceptanceFlags);
57 void instantiateCompilerNode(VuoNode *node);
58
59 VuoCompilerInputDataClass * parseInputDataParameter(string annotation, Argument *a);
60 VuoCompilerOutputDataClass * parseOutputDataParameter(string annotation, Argument *a);
61 VuoCompilerInputEventPortClass * parseInputEventParameter(string annotation, Argument *a);
62 VuoCompilerOutputEventPortClass * parseOutputEventParameter(string annotation, Argument *a);
63 VuoCompilerTriggerPortClass * parseTriggerParameter(string annotation, Argument *a);
64 VuoCompilerInstanceDataClass * parseInstanceDataParameter(string annotation, Argument *a);
65 VuoType * parseTypeParameter(string annotation);
66 struct json_object * parseDetailsParameter(string annotation);
67 VuoPortClass * getExistingPortClass(VuoCompilerNodeArgumentClass *argumentClass, bool isInput);
68
69 bool _isSubcomposition;
70 void updateSubcompositionStatus();
71
72 friend class TestVuoCompilerType;
73 friend class TestVuoCompilerNodeClass;
74
75protected:
76 VuoCompilerNodeClass(string className, Module * module);
78 VuoCompilerNodeClass(VuoNodeClass *baseNodeClass);
79 VuoPortClass * getInputPortClassWithName(string portName);
81
82public:
83 VuoNode * newNode(string title = "", double x = 0, double y = 0);
84 VuoNode * newNode(VuoNode *nodeToCopyMetadataFrom);
85 static VuoNodeClass * newNodeClass(string nodeClassName, Module * module);
87 virtual ~VuoCompilerNodeClass(void);
88
89 virtual string getFileName(void);
90 static string getFileNameForModuleKey(const string &moduleKey);
91 static bool isModuleKeyMangledInFileName(const string &fileName);
92 virtual string getClassIdentifier(void);
93 virtual Function * getEventFunction(void);
94 virtual Function * getInitFunction(void);
95 virtual Function * getFiniFunction(void);
96 virtual Function * getCallbackStartFunction(void);
97 virtual Function * getCallbackUpdateFunction(void);
98 virtual Function * getCallbackStopFunction(void);
99 virtual Function * getCompositionAddNodeMetadataFunction(void);
102 virtual Function * getTriggerWorkerFunction(string portIdentifier);
103 virtual vector<VuoCompilerTriggerDescription *> getTriggerDescriptions(void);
105 virtual string getDoxygenDocumentation(void);
106 virtual string getDefaultSpecializedTypeName(string genericTypeName);
107 virtual vector<string> getAutomaticKeywords(void);
108 bool isLikelyImageFilter(void);
109 bool isLikelyImageGenerator(void);
110 bool isLikelyImageTransition(void);
111 int getImagePortCount(bool isInput);
112 virtual bool isStateful(void);
113 bool isSubcomposition(void);
114 bool isIsf(void);
115 set< pair<string, string> > getContainedNodes(void);
116};