aboutsummaryrefslogtreecommitdiff
path: root/include/llvm/ModuleProvider.h
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2006-07-06 21:35:01 +0000
committerChris Lattner <sabre@nondot.org>2006-07-06 21:35:01 +0000
commit0300f3e71294a1fa92ebe8ff2f6bbe013612444b (patch)
tree047a77bc94841e58557f20821179abfcfea094d1 /include/llvm/ModuleProvider.h
parentfe030d786991293f5956ab4d730b735755272843 (diff)
Change the ModuleProvider interface to not throw exceptions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29024 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/llvm/ModuleProvider.h')
-rw-r--r--include/llvm/ModuleProvider.h26
1 files changed, 16 insertions, 10 deletions
diff --git a/include/llvm/ModuleProvider.h b/include/llvm/ModuleProvider.h
index 2f185e01d3..b42a5036e5 100644
--- a/include/llvm/ModuleProvider.h
+++ b/include/llvm/ModuleProvider.h
@@ -18,6 +18,8 @@
#ifndef MODULEPROVIDER_H
#define MODULEPROVIDER_H
+#include <string>
+
namespace llvm {
class Function;
@@ -35,22 +37,24 @@ public:
///
Module* getModule() { return TheModule; }
- /// materializeFunction - make sure the given function is fully read. Note
- /// that this can throw an exception if the module is corrupt!
+ /// materializeFunction - make sure the given function is fully read. If the
+ /// module is corrupt, this returns true and fills in the optional string
+ /// with information about the problem. If successful, this returns false.
///
- virtual void materializeFunction(Function *F) = 0;
+ virtual bool materializeFunction(Function *F, std::string *ErrInfo = 0) = 0;
/// materializeModule - make sure the entire Module has been completely read.
- /// Note that this can throw an exception if the module is corrupt!
+ /// On error, return null and fill in the error string if specified.
///
- virtual Module* materializeModule() = 0;
+ virtual Module* materializeModule(std::string *ErrInfo = 0) = 0;
/// releaseModule - no longer delete the Module* when provider is destroyed.
- /// Note that this can throw an exception if the module is corrupt!
+ /// On error, return null and fill in the error string if specified.
///
- virtual Module* releaseModule() {
+ virtual Module* releaseModule(std::string *ErrInfo = 0) {
// Since we're losing control of this Module, we must hand it back complete
- materializeModule();
+ if (materializeModule(ErrInfo))
+ return 0;
Module *tempM = TheModule;
TheModule = 0;
return tempM;
@@ -66,8 +70,10 @@ struct ExistingModuleProvider : public ModuleProvider {
ExistingModuleProvider(Module *M) {
TheModule = M;
}
- void materializeFunction(Function *F) {}
- Module* materializeModule() { return TheModule; }
+ bool materializeFunction(Function *F, std::string *ErrInfo = 0) {
+ return false;
+ }
+ Module* materializeModule(std::string *ErrInfo = 0) { return TheModule; }
};
} // End llvm namespace