Vuo  2.3.2
VuoModuleCompiler.hh
Go to the documentation of this file.
1 
10 #pragma once
11 
12 #include "VuoFileUtilities.hh"
13 class VuoCompilerIssues;
14 class VuoCompilerType;
15 
20 {
21 public:
22  static VuoModuleCompiler *newModuleCompiler(string type, const string &moduleKey, VuoFileUtilities::File *sourceFile);
23  virtual ~VuoModuleCompiler(void);
24 
30  virtual Module *compile(std::function<VuoCompilerType *(const string &)> getVuoType, dispatch_queue_t llvmQueue, VuoCompilerIssues *issues) = 0;
31 
37  virtual void overrideSourceCode(const string &sourceCode, VuoFileUtilities::File *sourceFile) = 0;
38 
39 protected:
43  typedef VuoModuleCompiler *(*Factory)(const string &moduleKey, VuoFileUtilities::File *sourceFile);
44 
45  static void registerModuleCompiler(string type, Factory factory);
46 
47 private:
48  static void __attribute__((constructor)) init();
49 
50  static map<string, Factory> *factories;
51 };