Vuo  2.3.2
VuoCompilerPublishedNodeClass.hh
Go to the documentation of this file.
1 
10 #pragma once
11 
13 #include "VuoHeap.h"
14 
15 class VuoPublishedPort;
16 
21 {
22 protected:
23  VuoCompilerPublishedNodeClass(string nodeClassName, Module *module);
26  static VuoNodeClass * newNodeClass(const string &nodeClassName, VuoCompiler *compiler, dispatch_queue_t llvmQueue, VuoCompilerPublishedNodeClass *singleton);
27  static VuoNodeClass * newNodeClass(const vector<VuoPublishedPort *> &publishedPorts, dispatch_queue_t llvmQueue, VuoCompilerPublishedNodeClass *singleton);
28 
30  virtual VuoNodeClass * newNodeClassWithImplementation(const string &nodeClassName, const vector<string> &portNames, const vector<VuoType *> &types) = 0;
31 
33  virtual VuoNodeClass * newNodeClassWithoutImplementation(const string &nodeClassName, const vector<string> &portNames, const vector<VuoType *> &types) = 0;
34 
36  virtual string getNodeClassNamePrefix(void) = 0;
37 
39  virtual set<string> getReservedPortNames(void) = 0;
40 
41  bool parseNodeClassName(string nodeClassName, vector<string> &portNames, vector<string> &typeNames) VuoWarnUnusedResult;
42  string buildNodeClassName(const vector<string> &portNames, const vector<VuoType *> &types);
43  string buildNodeClassNameFromPorts(const vector<VuoPublishedPort *> &publishedPorts);
44  vector<string> formUniquePortNames(const vector<VuoPublishedPort *> &publishedPorts);
45 
46  VuoCompilerNode * createReplacementBackingNode(VuoNode *nodeToBack, string backingNodeClassName, VuoCompiler *compiler);
51  string createUnspecializedNodeClassName(set<VuoPortClass *> portClassesToUnspecialize);
52  string createSpecializedNodeClassNameWithReplacement(string genericTypeName, string specializedTypeName);
53 
54 private:
55  static VuoNodeClass * newNodeClass(const vector<string> &portNames, const vector<VuoType *> &types, dispatch_queue_t llvmQueue, VuoCompilerPublishedNodeClass *singleton);
56 };