Vuo  2.0.2
VuoCompilerModule.hh
Go to the documentation of this file.
1 
10 #pragma once
11 
12 #include "VuoCompilerTargetSet.hh"
13 
15 class VuoModule;
16 
23 {
24 private:
25  VuoModule *base;
26  VuoCompilerTargetSet compatibleTargets;
27  bool builtIn;
28  string modulePath;
29 
30  static bool isModule(Module *module, string moduleKey);
31 
32 protected:
34  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);
53  virtual ~VuoCompilerModule(void);
54 
57  static Function * declareFunctionInModule(Module *module, Function *function);
58  virtual set<string> getDependencies(void);
59  virtual string getDependencyName(void);
61  Module * getModule(void);
62  VuoModule * getPseudoBase(void);
63  bool isBuiltIn(void);
64  void setBuiltIn(bool builtIn);
65  string getModulePath(void);
66 
67 private:
68 #pragma clang diagnostic push
69 #pragma clang diagnostic ignored "-Wunused-private-field"
70  void *p;
71 #pragma clang diagnostic pop
72 #if VUO_PRO
73 #include "pro/VuoCompilerModule_Pro.hh"
74 #endif
75 };