Vuo 2.4.2
Loading...
Searching...
No Matches
VuoCompilerModule.hh
Go to the documentation of this file.
1
10#pragma once
11
13
15class VuoModule;
16
23{
24private:
25 VuoModule *base;
26 bool builtIn;
27 string modulePath;
28
29 static bool isModule(Module *module, string moduleKey);
30
31protected:
33 set<string> dependencies;
35 Module *module;
37
38 VuoCompilerModule(VuoModule *base, Module *module);
39
40 virtual void parse(void);
41 virtual void parseMetadata(void);
42 virtual set<string> globalsToRename(void);
43 string nameForGlobal(string genericGlobalVarOrFuncName);
44 static string nameForGlobal(string nameBeforeCompilation, string moduleKey);
45 static bool hasOriginalOrMangledGlobal(string nameBeforeCompilation, Module *module, string moduleKey);
46 void renameGlobalVarsAndFuncs(void);
47
48 friend class TestVuoCompilerModule;
49 friend class TestModules;
50
51public:
52 static VuoCompilerModule * newModule(const string &moduleKey, Module *module, const string &modulePath, const VuoCompilerCompatibility &moduleCompatibility);
53 virtual ~VuoCompilerModule(void);
54
56 static Function * declareFunctionInModule(Module *module, Function *function);
57 virtual set<string> getDependencies(void);
58 virtual string getDependencyName(void);
60 Module * getModule(void);
62 bool isBuiltIn(void);
63 void setBuiltIn(bool builtIn);
64 string getModulePath(void);
65
66private:
67#pragma clang diagnostic push
68#pragma clang diagnostic ignored "-Wunused-private-field"
69 void *p;
70#pragma clang diagnostic pop
71#if VUO_PRO
72#include "../compiler/pro/VuoCompilerModule_Pro.hh"
73#endif
74};