Introduce a ScopedFatalErrorHandler class to make it easy to register
[oota-llvm.git] / 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.)