Changes in directory llvm/include/llvm:
ModuleProvider.h updated: 1.11 -> 1.12 --- Log message: Change the ModuleProvider interface to not throw exceptions. --- Diffs of the changes: (+16 -10) ModuleProvider.h | 26 ++++++++++++++++---------- 1 files changed, 16 insertions(+), 10 deletions(-) Index: llvm/include/llvm/ModuleProvider.h diff -u llvm/include/llvm/ModuleProvider.h:1.11 llvm/include/llvm/ModuleProvider.h:1.12 --- llvm/include/llvm/ModuleProvider.h:1.11 Thu Apr 21 15:11:51 2005 +++ llvm/include/llvm/ModuleProvider.h Thu Jul 6 16:35:01 2006 @@ -18,6 +18,8 @@ #ifndef MODULEPROVIDER_H #define MODULEPROVIDER_H +#include <string> + namespace llvm { class Function; @@ -35,22 +37,24 @@ /// 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 @@ 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 _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits