aboutsummaryrefslogtreecommitdiffstats
path: root/include/llvm/ModuleProvider.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/llvm/ModuleProvider.h')
-rw-r--r--include/llvm/ModuleProvider.h40
1 files changed, 40 insertions, 0 deletions
diff --git a/include/llvm/ModuleProvider.h b/include/llvm/ModuleProvider.h
new file mode 100644
index 0000000..19b0005
--- /dev/null
+++ b/include/llvm/ModuleProvider.h
@@ -0,0 +1,40 @@
+//===-- llvm/ModuleProvider.h - Interface for module providers --*- C++ -*-===//
+//
+// Abstract interface for providing a module.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef MODULEPROVIDER_H
+#define MODULEPROVIDER_H
+
+class Function;
+class Module;
+
+class AbstractModuleProvider {
+ Module *M;
+
+protected:
+ AbstractModuleProvider();
+
+public:
+ virtual ~AbstractModuleProvider();
+
+ /// getModule - returns the module this provider is encapsulating
+ ///
+ Module* getModule() { return M; }
+
+ /// materializeFunction - make sure the given function is fully read.
+ ///
+ virtual void materializeFunction(Function *F) = 0;
+
+ /// materializeModule - make sure the entire Module has been completely read.
+ ///
+ void materializeModule();
+
+ /// releaseModule - no longer delete the Module* when provider is destroyed.
+ ///
+ Module* releaseModule() { Module *tempM = M; M = 0; return tempM; }
+
+};
+
+#endif