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
This commit is contained in:
Dan Gohman 2010-08-18 20:16:39 +00:00
parent cf16bea74e
commit e16068240e

View File

@ -52,6 +52,18 @@ namespace llvm {
/// llvm_stop_multithreaded(). /// llvm_stop_multithreaded().
void remove_fatal_error_handler(); 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 /// Reports a serious error, calling any installed error handler. These
/// functions are intended to be used for error conditions which are outside /// functions are intended to be used for error conditions which are outside
/// the control of the compiler (I/O errors, invalid user input, etc.) /// the control of the compiler (I/O errors, invalid user input, etc.)