Introduce a ScopedFatalErrorHandler class to make it easy to register
authorDan Gohman <gohman@apple.com>
Wed, 18 Aug 2010 20:16:39 +0000 (20:16 +0000)
committerDan Gohman <gohman@apple.com>
Wed, 18 Aug 2010 20:16:39 +0000 (20:16 +0000)
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

include/llvm/Support/ErrorHandling.h

index ffcb482f75c57719008f0a3e2d873830573744b6..9854657c756f5e6443e620a71b1296c788d8cb02 100644 (file)
@@ -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.)