[llvm-commits] CVS: llvm/include/llvm/ModuleProvider.h

Misha Brukman brukman at cs.uiuc.edu
Thu Sep 18 11:17:02 PDT 2003


Changes in directory llvm/include/llvm:

ModuleProvider.h added (r1.1)

---
Log message:

Abstract interface for module providers, e.g. streaming bytecode reader.


---
Diffs of the changes:

Index: llvm/include/llvm/ModuleProvider.h
diff -c /dev/null llvm/include/llvm/ModuleProvider.h:1.1
*** /dev/null	Thu Sep 18 11:16:43 2003
--- llvm/include/llvm/ModuleProvider.h	Thu Sep 18 11:16:32 2003
***************
*** 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





More information about the llvm-commits mailing list