Vuo 2.4.4
Loading...
Searching...
No Matches
VuoCompilerPublishedNodeClass.hh
Go to the documentation of this file.
1
10#pragma once
11
13#include "VuoHeap.h"
14
16
21{
22public:
23 static bool isPublishedNodeClassName(const string &nodeClassName);
24 string getFileName(void);
25 static string getFileNameForModuleKey(const string &moduleKey);
26 static bool isModuleKeyMangledInFileName(const string &fileName);
27
28protected:
29 VuoCompilerPublishedNodeClass(string nodeClassName, Module *module);
32 static VuoNodeClass * newNodeClass(const string &nodeClassName, VuoCompiler *compiler, dispatch_queue_t llvmQueue, VuoCompilerPublishedNodeClass *singleton);
33 static VuoNodeClass * newNodeClass(const vector<VuoPublishedPort *> &publishedPorts, dispatch_queue_t llvmQueue, VuoCompilerPublishedNodeClass *singleton);
34
36 virtual VuoNodeClass * newNodeClassWithImplementation(const string &nodeClassName, const vector<string> &portNames, const vector<VuoType *> &types) = 0;
37
39 virtual VuoNodeClass * newNodeClassWithoutImplementation(const string &nodeClassName, const vector<string> &portNames, const vector<VuoType *> &types) = 0;
40
42 virtual string getNodeClassNamePrefix(void) = 0;
43
45 virtual set<string> getReservedPortNames(void) = 0;
46
47 bool parseNodeClassName(string nodeClassName, vector<string> &portNames, vector<string> &typeNames) VuoWarnUnusedResult;
48 string buildNodeClassName(const vector<string> &portNames, const vector<VuoType *> &types);
49 string buildNodeClassName(const vector<string> &portNames, const vector<string> &typeNames);
50 string buildNodeClassNameFromPorts(const vector<VuoPublishedPort *> &publishedPorts);
51 vector<string> formUniquePortNames(const vector<VuoPublishedPort *> &publishedPorts);
52 json_object * buildSpecializedModuleDetails(const vector<VuoType *> &types);
53
54 VuoCompilerNode * createReplacementBackingNode(VuoNode *nodeToBack, string backingNodeClassName, VuoCompiler *compiler);
59 string createUnspecializedNodeClassName(set<VuoPortClass *> portClassesToUnspecialize);
60 string createSpecializedNodeClassNameWithReplacement(string genericTypeName, string specializedTypeName);
61
62private:
63 static VuoNodeClass * newNodeClass(const vector<string> &portNames, const vector<VuoType *> &types, dispatch_queue_t llvmQueue, VuoCompilerPublishedNodeClass *singleton);
64};