diff options
author | Dan Gohman <gohman@apple.com> | 2010-08-18 20:16:39 +0000 |
---|---|---|
committer | Dan Gohman <gohman@apple.com> | 2010-08-18 20:16:39 +0000 |
commit | e16068240e21650becf9b47a4dc2284531397696 (patch) | |
tree | f17b1f932dd56fe4004a0fed9fd90a8d3e578ce9 /include | |
parent | cf16bea74e3a6f84af914520562e9f9c5dfa0fad (diff) | |
download | external_llvm-e16068240e21650becf9b47a4dc2284531397696.zip external_llvm-e16068240e21650becf9b47a4dc2284531397696.tar.gz external_llvm-e16068240e21650becf9b47a4dc2284531397696.tar.bz2 |
Introduce a ScopedFatalErrorHandler class to make it easy to register
fatal error handlers which automatically get unregistered at the end
of a scope.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111398 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include')
-rw-r--r-- | include/llvm/Support/ErrorHandling.h | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/include/llvm/Support/ErrorHandling.h b/include/llvm/Support/ErrorHandling.h index ffcb482..9854657 100644 --- a/include/llvm/Support/ErrorHandling.h +++ b/include/llvm/Support/ErrorHandling.h @@ -52,6 +52,18 @@ namespace llvm { /// llvm_stop_multithreaded(). void remove_fatal_error_handler(); + /// ScopedFatalErrorHandler - This is a simple helper class which just + /// calls install_fatal_error_handler in its constructor and + /// remove_fatal_error_handler in its destructor. + struct ScopedFatalErrorHandler { + explicit ScopedFatalErrorHandler(fatal_error_handler_t handler, + void *user_data = 0) { + install_fatal_error_handler(handler, user_data); + } + + ~ScopedFatalErrorHandler() { remove_fatal_error_handler(); } + }; + /// Reports a serious error, calling any installed error handler. These /// functions are intended to be used for error conditions which are outside /// the control of the compiler (I/O errors, invalid user input, etc.) |