Vuo  2.3.2
VuoCompilerModule.hh
Go to the documentation of this file.
1 
10 #pragma once
11 
13 
15 class VuoModule;
16 
23 {
24 private:
25  VuoModule *base;
26  bool builtIn;
27  string modulePath;
28 
29  static bool isModule(Module *module, string moduleKey);
30 
31 protected:
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 
51 public:
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);
61  VuoModule * getPseudoBase(void);
62  bool isBuiltIn(void);
63  void setBuiltIn(bool builtIn);
64  string getModulePath(void);
65 
66 private:
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 "pro/VuoCompilerModule_Pro.hh"
73 #endif
74 };