Vuo 2.4.2
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 map<string, vector<string> > compatibleSpecializedForGenericTypeName;
44 set<VuoCompilerInputEventPortClass *> portsWithExplicitEventBlockingNone;
45 string sourcePath;
46 string sourceCode;
47 set< pair<string, string> > containedNodes;
48
49 static bool isNodeClass(Module *module, string moduleKey);
50 void parse(void);
51 set<string> globalsToRename(void);
52 void parseMetadata(void);
53 void parseEventFunction(void);
54 void parseInitFunction(void);
55 void parseFiniFunction(void);
56 void parseCallbackStartFunction(void);
57 void parseCallbackUpdateFunction(void);
58 void parseCallbackStopFunction(void);
59 void parseParameters(Function *function, unsigned long acceptanceFlags);
60 void instantiateCompilerNode(VuoNode *node);
61
62 VuoCompilerInputDataClass * parseInputDataParameter(string annotation, Argument *a);
63 VuoCompilerOutputDataClass * parseOutputDataParameter(string annotation, Argument *a);
64 VuoCompilerInputEventPortClass * parseInputEventParameter(string annotation, Argument *a);
65 VuoCompilerOutputEventPortClass * parseOutputEventParameter(string annotation, Argument *a);
66 VuoCompilerTriggerPortClass * parseTriggerParameter(string annotation, Argument *a);
67 VuoCompilerInstanceDataClass * parseInstanceDataParameter(string annotation, Argument *a);
68 VuoType * parseTypeParameter(string annotation);
69 struct json_object * parseDetailsParameter(string annotation);
70 VuoPortClass * getExistingPortClass(VuoCompilerNodeArgumentClass *argumentClass, bool isInput);
71
72 bool _isSubcomposition;
73 void updateSubcompositionStatus();
74
75 friend class TestVuoCompilerType;
76 friend class TestVuoCompilerNodeClass;
77
78protected:
79 VuoCompilerNodeClass(string className, Module * module);
81 VuoCompilerNodeClass(VuoNodeClass *baseNodeClass);
82 VuoPortClass * getInputPortClassWithName(string portName);
84
86
87 static void parseGenericTypes(json_object *moduleDetails, map<string, string> &defaultSpecializedForGenericTypeName, map<std::string, vector<std::string> > &compatibleSpecializedForGenericTypeName);
88
89public:
90 VuoNode * newNode(string title = "", double x = 0, double y = 0);
91 VuoNode * newNode(VuoNode *nodeToCopyMetadataFrom);
92 static VuoNodeClass * newNodeClass(string nodeClassName, Module * module);
94 virtual ~VuoCompilerNodeClass(void);
95
96 virtual string getClassIdentifier(void);
97 virtual Function * getEventFunction(void);
98 virtual Function * getInitFunction(void);
99 virtual Function * getFiniFunction(void);
100 virtual Function * getCallbackStartFunction(void);
101 virtual Function * getCallbackUpdateFunction(void);
102 virtual Function * getCallbackStopFunction(void);
103 virtual Function * getCompositionAddNodeMetadataFunction(void);
106 virtual Function * getTriggerWorkerFunction(string portIdentifier);
107 virtual vector<VuoCompilerTriggerDescription *> getTriggerDescriptions(void);
109 virtual string getDoxygenDocumentation(void);
110 virtual string getDefaultSpecializedTypeName(string genericTypeName);
111 virtual vector<string> getAutomaticKeywords(void);
112 bool isLikelyImageFilter(void);
113 bool isLikelyImageGenerator(void);
114 bool isLikelyImageTransition(void);
115 int getImagePortCount(bool isInput);
116 virtual bool isStateful(void);
117 bool isSubcomposition(void);
118 bool isIsf(void);
119 void setSourcePath(const string &sourcePath);
120 string getSourcePath(void);
121 void setSourceCode(const string &sourceCode);
122 string getSourceCode(void);
123 set< pair<string, string> > getContainedNodes(void);
124};