- #ifndef UNITTEST_SIGNALTRANSLATOR_H 
- #define UNITTEST_SIGNALTRANSLATOR_H 
-   
- #include <setjmp.h> 
- #include <signal.h> 
-   
- namespace UnitTest { 
-   
-    class SignalTranslator 
-    { 
-    public: 
-       SignalTranslator(); 
-       ~SignalTranslator(); 
-   
-       static sigjmp_buf* s_jumpTarget; 
-   
-    private: 
-       sigjmp_buf m_currentJumpTarget; 
-       sigjmp_buf* m_oldJumpTarget; 
-   
-       struct sigaction m_old_SIGFPE_action; 
-       struct sigaction m_old_SIGTRAP_action; 
-       struct sigaction m_old_SIGSEGV_action; 
-       struct sigaction m_old_SIGBUS_action; 
-       struct sigaction m_old_SIGILL_action; 
-    }; 
-   
- #if !defined (__GNUC__) 
-    #define UNITTEST_EXTENSION 
- #else 
-    #define UNITTEST_EXTENSION __extension__ 
- #endif 
-   
-    #define UNITTEST_THROW_SIGNALS_POSIX_ONLY                                               \ 
-       UnitTest::SignalTranslator sig;                                                      \ 
-       if (UNITTEST_EXTENSION sigsetjmp(*UnitTest::SignalTranslator::s_jumpTarget, 1) != 0) \ 
-          throw ("Unhandled system exception"); 
-   
- } 
-   
- #endif 
-