]> SALOME platform Git repositories - modules/kernel.git/commitdiff
Salome HOME
Created a new signals/execptions handler
authorsrn <srn@opencascade.com>
Tue, 30 Aug 2005 05:19:22 +0000 (05:19 +0000)
committersrn <srn@opencascade.com>
Tue, 30 Aug 2005 05:19:22 +0000 (05:19 +0000)
src/CASCatch/CASCatch_CatchSignals.cxx [new file with mode: 0644]
src/CASCatch/CASCatch_CatchSignals.hxx [new file with mode: 0644]
src/CASCatch/CASCatch_ErrorHandler.cxx [new file with mode: 0644]
src/CASCatch/CASCatch_ErrorHandler.hxx [new file with mode: 0644]
src/CASCatch/CASCatch_Failure.cxx [new file with mode: 0644]
src/CASCatch/CASCatch_Failure.hxx [new file with mode: 0644]
src/CASCatch/CASCatch_SignalsHandler.cxx [deleted file]
src/CASCatch/CASCatch_SignalsHandler.h [deleted file]
src/CASCatch/Makefile.in

diff --git a/src/CASCatch/CASCatch_CatchSignals.cxx b/src/CASCatch/CASCatch_CatchSignals.cxx
new file mode 100644 (file)
index 0000000..955743f
--- /dev/null
@@ -0,0 +1,314 @@
+#include "CASCatch_CatchSignals.hxx"
+
+#include "CASCatch_Failure.hxx"  
+#include "CASCatch_ErrorHandler.hxx"
+#include <TCollection_AsciiString.hxx>
+
+#define MAX_HANDLER_NUMBER 6
+
+
+//================================================================================
+/*! Public -
+ * \brief creates a CASCatch_CatchSignals
+ */
+//================================================================================ 
+CASCatch_CatchSignals::CASCatch_CatchSignals() 
+     :myIsActivated(Standard_False)
+{
+
+  Standard_Integer i = 0;
+  for(; i<=MAX_HANDLER_NUMBER; i++)
+    mySigStates[i] = NULL;
+}
+
+#ifndef WNT
+
+//================================ UNIX part ==================================================
+
+#include <OSD.hxx>
+#include <OSD_WhoAmI.hxx>
+#include <OSD_SIGHUP.hxx>
+#include <OSD_SIGINT.hxx>
+#include <OSD_SIGQUIT.hxx>
+#include <OSD_SIGILL.hxx>
+#include <OSD_SIGKILL.hxx>
+#include <OSD_SIGBUS.hxx>
+#include <OSD_SIGSEGV.hxx>
+#include <OSD_SIGSYS.hxx>
+#ifndef LIN
+#include <exception.h>
+#endif
+
+//==============================
+typedef void (ACT_SIGIO_HANDLER)(void) ;
+
+ACT_SIGIO_HANDLER *ADR_ACT_SIGIO_HANDLER = NULL ;
+
+typedef void (* SIG_PFV) (int);
+
+#ifdef SUN
+# include <floatingpoint.h>
+#endif
+
+#ifdef SOLARIS
+# include <floatingpoint.h>
+# include <sys/machsig.h>
+# include <stdlib.h>
+# include <stdio.h>
+#endif
+
+#include <signal.h>
+#include <sys/signal.h>
+
+#ifdef LIN
+# include <stdlib.h>
+# include <stdio.h>
+#else
+# ifdef SA_SIGINFO 
+#   ifndef AIX
+# include <sys/siginfo.h>
+#    endif
+# endif
+#endif
+
+
+#ifdef IRIX
+# include <sigfpe.h>
+# include <sys/siginfo.h>
+#endif 
+
+
+//================================================================================
+/*! Private -
+ * \brief universal handler for signals
+ */
+//================================================================================ 
+static void Handler(const OSD_Signals theSig, const OSD_Signals)
+{
+  sigset_t set;
+  sigemptyset(&set);
+  sigaddset(&set, theSig);
+  sigprocmask(SIG_UNBLOCK, &set, NULL) ;
+
+  TCollection_AsciiString aMessage(theSig);  
+  aMessage+=" signal detected";
+  CASCatch_Failure::Raise(aMessage.ToCString());
+}
+
+
+#ifdef SA_SIGINFO
+//================================================================================
+/*! Private -
+ * \brief  handler for SIGSEGV signal
+ */
+//================================================================================ 
+static void SegvHandler(const OSD_Signals, const Standard_Address, const Standard_Address)
+{
+  sigset_t set;
+  sigemptyset(&set);
+  sigaddset(&set, SIGSEGV);
+  sigprocmask (SIG_UNBLOCK, &set, NULL); 
+
+  CASCatch_Failure::Raise("SIGSEGV detected");
+}
+#endif
+
+
+//================================================================================
+/*! Public -
+ * \brief activates a signals handling
+ */
+//================================================================================ 
+void CASCatch_CatchSignals::Activate() 
+{  
+  if(myIsActivated) return;
+
+  struct sigaction act;
+
+  Standard_Integer i = 0;
+  for(; i<=MAX_HANDLER_NUMBER; i++)  
+    mySigStates[i] = new struct sigaction(); //Initialize structures
+
+  int stat;
+  act.sa_handler =  (SIG_PFV) &Handler ;
+  sigemptyset(&act.sa_mask) ;
+
+
+  stat = sigaction(SIGHUP,&act,(struct sigaction*)mySigStates[0]);    // ...... hangup
+  stat = sigaction(SIGFPE,&act,(struct sigaction*) mySigStates[1]);   // ...... floating point exception
+  stat = sigaction(SIGINT,&act,(struct sigaction*)mySigStates[2]);   // ...... interrupt
+  stat = sigaction(SIGQUIT,&act,(struct sigaction*)mySigStates[3]);  // ...... quit
+  stat = sigaction(SIGBUS,&act,(struct sigaction*)mySigStates[4]);   // ...... bus error
+  stat = sigaction(SIGILL,&act,(struct sigaction*)mySigStates[5]);   // ...... illegal instruction
+
+#ifdef SA_RESTART
+  act.sa_flags   = SA_RESTART ;
+#else
+  act.sa_flags   = 0 ;
+#endif
+  act.sa_handler = (SIG_PFV) &SegvHandler ;
+
+#ifdef SA_SIGINFO      // OSF,SOLARIS,IRIX
+  act.sa_flags = act.sa_flags | SA_SIGINFO ;
+# ifdef SOLARIS
+  act.sa_sigaction = (void(*)(int, siginfo_t *, void*)) &SegvHandler ;
+# endif
+#endif
+
+  stat = sigaction( SIGSEGV , &act , (struct sigaction*)mySigStates[6]);    // ...... segmentation violation
+
+  myIsActivated = Standard_True;
+}
+
+
+//================================================================================
+/*! Public -
+ * \brief deactivates a signals handling
+ */
+//================================================================================
+void CASCatch_CatchSignals::Deactivate() 
+{
+  if(!myIsActivated) return;
+
+  struct sigaction oact;
+  int stat;
+
+  stat = sigaction(SIGHUP,(struct sigaction*)mySigStates[0],&oact);   // ...... hangup
+  stat = sigaction(SIGFPE,(struct sigaction*)mySigStates[1],&oact);   // ...... floating point exception
+  stat = sigaction(SIGINT,(struct sigaction*)mySigStates[2],&oact);   // ...... interrupt
+  stat = sigaction(SIGQUIT,(struct sigaction*)mySigStates[3],&oact);  // ...... quit
+  stat = sigaction(SIGBUS,(struct sigaction*)mySigStates[4],&oact);   // ...... bus error
+  stat = sigaction(SIGILL,(struct sigaction*)mySigStates[5],&oact);   // ...... illegal instruction
+  stat = sigaction(SIGSEGV,(struct sigaction*)mySigStates[6],&oact);  // ...... segmentation violation
+
+
+  Standard_Integer i = 0;
+  for(; i<=MAX_HANDLER_NUMBER; i++)
+    delete (struct sigaction*)mySigStates[i];
+
+  myIsActivated = Standard_False;
+}
+
+
+
+#else
+//====================================== WNT part ====================================================
+#include <OSD_WNT_1.hxx>
+
+#include <process.h>
+#include <signal.h>
+#include <float.h>
+
+#define _OSD_FPX ( _EM_DENORMAL | _EM_INEXACT | _EM_UNDERFLOW | _EM_ZERODIVIDE | _EM_OVERFLOW) //Mask these exceptions
+
+//================================================================================
+/*! Private -
+ * \brief handler for unexpected exceptions
+ */
+//================================================================================
+static Standard_Integer WntHandler(const Standard_Address theExceptionInfo) 
+{
+  LPEXCEPTION_POINTERS lpXP = ( LPEXCEPTION_POINTERS )theExceptionInfo;
+  DWORD                dwExceptionCode = lpXP -> ExceptionRecord -> ExceptionCode;
+
+  TCollection_AsciiString aMessage((Standard_Integer)dwExceptionCode);  
+  aMessage+=" Exception code - unexpected exception";
+
+  CASCatch_Failure::Raise(aMessage.ToCString());
+
+  return EXCEPTION_EXECUTE_HANDLER;
+}
+
+void SIGWntHandler(int , int ) ;
+static void (*SIGWNTHANDLER)(int) = ( void (*)(int) ) ( &SIGWntHandler ) ;
+
+
+//================================================================================
+/*! Private -
+ * \brief handler for signals
+ */
+//================================================================================
+static void SIGWntHandler(const int signum , const int theCode)
+{
+
+  void (*OLDSIGWNTHANDLER)(int) ;  
+  switch( signum ) { 
+  case SIGFPE : 
+    _fpreset() ;
+    _clearfp() ; 
+    _controlfp ( _OSD_FPX, _MCW_EM ); 
+    OLDSIGWNTHANDLER = signal( signum , SIGWNTHANDLER ); 
+
+    if(theCode == _FPE_UNDERFLOW || theCode == _FPE_INEXACT) return;
+    CASCatch_Failure::Raise ("Floating point error"); 
+    break;
+  case SIGSEGV : 
+    OLDSIGWNTHANDLER = signal( signum , SIGWNTHANDLER );
+    CASCatch_Failure::Raise("Access violation"); 
+    break; 
+  case SIGILL : 
+    OLDSIGWNTHANDLER = signal( signum , SIGWNTHANDLER );
+    CASCatch_Failure::Raise("Illegal instruction" ); 
+    break; 
+  }
+}
+
+
+//================================================================================
+/*! Public -
+ * \brief activates a signals handling
+ */
+//================================================================================ 
+void CASCatch_CatchSignals::Activate() 
+{
+  if(myIsActivated) return;
+
+  mySigStates[0] = SetUnhandledExceptionFilter (( LPTOP_LEVEL_EXCEPTION_FILTER )&WntHandler);
+
+  myFloatOpWord = _controlfp(0, 0);
+  _controlfp ( _OSD_FPX, _MCW_EM );  //Enable floating point exceptions
+
+  mySigStates[1] = signal( SIGSEGV , SIGWNTHANDLER );
+  mySigStates[2] = signal( SIGFPE , SIGWNTHANDLER );
+  mySigStates[3] = signal( SIGILL , SIGWNTHANDLER );
+
+  myIsActivated = Standard_True;
+}
+
+//================================================================================
+/*! Public -
+ * \brief deactivates a signals handling
+ */
+//================================================================================
+void CASCatch_CatchSignals::Deactivate() 
+{
+  if(!myIsActivated) return;
+
+  SetUnhandledExceptionFilter (( LPTOP_LEVEL_EXCEPTION_FILTER )mySigStates[0]);
+
+  _controlfp ( myFloatOpWord, _MCW_EM );
+
+  signal( SIGSEGV ,  ( void (*)(int) )mySigStates[1]);
+  signal( SIGFPE , ( void (*)(int) )mySigStates[2]);
+  signal( SIGILL , ( void (*)(int) )mySigStates[3]);
+
+  Standard_Integer i = 0;
+  for(; i<=MAX_HANDLER_NUMBER; i++)
+    mySigStates[i] = NULL;
+  
+  myIsActivated = Standard_False;
+}
+
+#endif
+
+//================================================================================
+/*! Private -
+ * \brief deactivates a signals handling
+ */
+//================================================================================
+void CASCatch_CatchSignals::Destroy() 
+{
+  if(myIsActivated) Deactivate();
+}
+
diff --git a/src/CASCatch/CASCatch_CatchSignals.hxx b/src/CASCatch/CASCatch_CatchSignals.hxx
new file mode 100644 (file)
index 0000000..27134aa
--- /dev/null
@@ -0,0 +1,44 @@
+
+#ifndef _CASCatch_CatchSignals_HeaderFile
+#define _CASCatch_CatchSignals_HeaderFile
+
+#include <Standard.hxx>
+
+/*!
+ * \class CASCatch_CatchSignals
+ * \brief This class controls an exception handling
+ *
+ */ 
+class CASCatch_CatchSignals  {
+
+public:
+
+ // Methods PUBLIC
+ // 
+Standard_EXPORT CASCatch_CatchSignals();
+Standard_EXPORT void Destroy() ;
+~CASCatch_CatchSignals() { Destroy(); }
+Standard_EXPORT void Activate() ;
+Standard_EXPORT void Deactivate() ;
+
+private:
+
+/*!\var mySigStates[7], private
+ * \brief stores signals' handler functions
+ */ 
+Standard_Address mySigStates[7];
+
+/*!\var myFloatOpWord
+ * \brief stores a float operation word, private
+ */ 
+Standard_Integer myFloatOpWord;
+
+/*!\var myIsActivated
+ * \brief stores a flag whether a catcher is activated, private]
+ */
+Standard_Boolean myIsActivated;
+
+};
+
+
+#endif
diff --git a/src/CASCatch/CASCatch_ErrorHandler.cxx b/src/CASCatch/CASCatch_ErrorHandler.cxx
new file mode 100644 (file)
index 0000000..a878430
--- /dev/null
@@ -0,0 +1,103 @@
+
+#ifdef NO_CXX_EXCEPTION
+
+#include "CASCatch_ErrorHandler.hxx"
+
+// During setjmp()/longjmp() K_SETJMP_CASCatch is non zero (try)
+// So if there is an abort request and if K_SETJMP_CASCatch is non zero, the abort
+// request will be ignored. If the abort request do a raise during a setjmp
+// or a longjmp, there will be a "terminating SEGV" impossible to handle.
+
+
+Standard_EXPORT int K_SETJMP_CASCatch = 0 ; 
+
+static Handle(CASCatch_Failure) GlbError;  //Last caught Error, Null if there is no error
+
+static CASCatch_ErrorHandler*   Top = 0;   //The top of the Errors Stack
+
+//=======================================================================
+//function : CASCatch_ErrorHandler
+//purpose  : Constructor
+//=======================================================================
+CASCatch_ErrorHandler::CASCatch_ErrorHandler ()
+{
+  Previous = Top;
+  Top      = this;
+  CaughtError.Nullify();
+  GlbError.Nullify();
+}
+
+//=======================================================================
+//function : ~CASCatch_ErrorHandler
+//purpose  : Destructor : Delete the ErrorHandler and Abort if there is a 'Error'.
+//=======================================================================
+CASCatch_ErrorHandler::~CASCatch_ErrorHandler()
+{
+  Top = Top->Previous;
+  if( !GlbError.IsNull() ) Abort();
+}
+
+//=======================================================================
+//function : Abort: make a longjmp to the saved Context.
+//purpose  : Abort if there is a non null 'Error'
+//=======================================================================
+void CASCatch_ErrorHandler::Abort ()
+{
+  //==== Check if can do the "longjmp" =======================================
+  if(Top == NULL || Top->Label == NULL) {
+    cout << "*** Abort *** an exception was raised, but no catch was found." << endl;
+    cout << "\t... The exception is:" << GlbError;
+    exit(1);
+  }
+
+#ifdef DO_ABORT
+  if ( K_SETJMP_CASCatch )
+    cout << "Recursive abort ===> Terminating SEGV ..." << endl ;
+  K_SETJMP_CASCatch = 1 ;
+#endif
+
+  longjmp(Top->Label, Standard_True);
+}
+
+//=======================================================================
+//function : Catches
+//purpose  : If there is a 'Error', and it is in good type 
+//           returns True and clean 'Error', else returns False.
+//=======================================================================
+Standard_Boolean CASCatch_ErrorHandler::Catches 
+  (const Handle(Standard_Type)& AType) 
+{
+#ifdef DO_ABORT
+  K_SETJMP_CASCatch = 0 ;
+#endif
+  if(GlbError.IsNull())
+    return Standard_False;
+
+  if(GlbError->IsKind(AType)){
+    CaughtError = GlbError;
+    GlbError.Nullify();
+    return Standard_True;
+  } else {
+    return Standard_False;
+  }
+}
+
+//=======================================================================
+//function : LastCaughtError
+//purpose  : 
+//=======================================================================
+Handle(CASCatch_Failure) CASCatch_ErrorHandler::LastCaughtError()
+{
+  return Top->CaughtError;
+}
+
+//=======================================================================
+//function : Error
+//purpose  : 
+//=======================================================================
+void CASCatch_ErrorHandler::Error(const Handle(CASCatch_Failure)& aError)
+{
+  GlbError = aError;
+}
+
+#endif
diff --git a/src/CASCatch/CASCatch_ErrorHandler.hxx b/src/CASCatch/CASCatch_ErrorHandler.hxx
new file mode 100644 (file)
index 0000000..e5b4171
--- /dev/null
@@ -0,0 +1,73 @@
+
+#ifndef _CASCatch_ErrorHandler_HeaderFile
+#define _CASCatch_ErrorHandler_HeaderFile
+
+#include "CASCatch_Failure.hxx"
+
+#include <stdlib.h>
+#include <setjmp.h>
+
+
+extern int K_SETJMP_CASCatch ;
+
+/*!
+ * \class CASCatch_ErrorHandler
+ * \brief This class is an exception handler, private
+ *
+ */ 
+class CASCatch_ErrorHandler 
+{
+  friend class  CASCatch_Failure;     // To execute the raise exception.
+
+ public:
+ Standard_EXPORT CASCatch_ErrorHandler();
+ Standard_EXPORT ~CASCatch_ErrorHandler();
+ Standard_EXPORT Standard_Boolean Catches (const Handle(Standard_Type)&);
+
+ private:
+  Standard_EXPORT static  void Abort();
+  Standard_EXPORT static  void Error(const Handle(CASCatch_Failure)&);
+  Standard_EXPORT static  Handle(CASCatch_Failure)  LastCaughtError();
+
+ //==== The fields ===========================================================
+ private:
+           CASCatch_ErrorHandler*   Previous;
+           Handle(CASCatch_Failure) CaughtError;
+
+ public:
+  jmp_buf      Label;
+
+};
+
+#undef CASCatch_TRY
+#define CASCatch_TRY try
+
+#undef CASCatch_CATCH
+#define CASCatch_CATCH catch
+
+
+#ifdef NO_CXX_EXCEPTION
+# undef CASCatch_TRY
+# undef CASCatch_CATCH
+
+# if defined(DO_ABORT)
+  
+#  define DoesNotAbort_CASCatch(aHandler) !(K_SETJMP_CASCatch = setjmp(aHandler.Label))
+
+#  define CASCatch_TRY        CASCatch_ErrorHandler _Function; \
+                                K_SETJMP_CASCatch = 1 ; \
+                                if(DoesNotAbort_CASCatch(_Function))
+
+# else  //If DO_ABORT is not defined
+#  define DoesNotAbort_CASCatch(aHandler) !setjmp(aHandler.Label)
+
+#  define CASCatch_TRY      CASCatch_ErrorHandler _Function; \
+                              if(DoesNotAbort_CASCatch(_Function))
+# endif //DO_ABORT
+
+
+# define CASCatch_CATCH(Error)   else if(_Function.Catches(STANDARD_TYPE(Error)))
+#endif //NO_CXX_EXCEPTION
+
+#endif //_CASCatch_ErrorHandler_HeaderFile
diff --git a/src/CASCatch/CASCatch_Failure.cxx b/src/CASCatch/CASCatch_Failure.cxx
new file mode 100644 (file)
index 0000000..70eb8a7
--- /dev/null
@@ -0,0 +1,107 @@
+#include "CASCatch_Failure.hxx"
+#include "CASCatch_ErrorHandler.hxx"
+#include <Standard_TypeMismatch.hxx>
+#include <Standard_Type.hxx>
+#include <string.h>
+
+IMPLEMENT_STANDARD_HANDLE( CASCatch_Failure, Standard_Transient )
+IMPLEMENT_STANDARD_RTTIEXT( CASCatch_Failure, Standard_Transient ) 
+
+
+#ifndef NO_CXX_EXCEPTION
+static Handle(CASCatch_Failure) RaisedError;
+#endif
+
+//================================================================================
+/*! Public -
+ * \brief creates a CASCatch_Failure
+ */
+//================================================================================ 
+CASCatch_Failure::CASCatch_Failure () { myMessage = "Signal detected";}
+
+
+//================================================================================
+/*! Public -
+ * \brief creates a CASCatch_Failure with a message
+ * \param an exception message
+ */
+//================================================================================ 
+CASCatch_Failure::CASCatch_Failure (const Standard_CString AString) 
+{
+  if(AString) {
+     myMessage = new Standard_Character[strlen(AString) + 1];
+     strcpy(myMessage,AString);
+  }
+}
+
+//================================================================================
+/*! Public -
+ * \brief returns the last caught exception
+ */
+//================================================================================ 
+Handle(CASCatch_Failure) CASCatch_Failure::Caught() 
+{
+#ifdef NO_CXX_EXCEPTION
+  return CASCatch_ErrorHandler::LastCaughtError();
+#else
+  return RaisedError ;
+#endif
+}
+
+//================================================================================
+/*! Public -
+ * \brief raises a CASCatch_Failure exception
+ * \param an exception message
+ */
+//================================================================================ 
+void CASCatch_Failure::Raise (const Standard_CString AString) 
+{ 
+  Handle(CASCatch_Failure) E = new CASCatch_Failure()  ;
+  E->Reraise (AString) ;
+}
+
+
+//================================================================================
+/*! Public -
+ * \brief re-raises a CASCatch_Failure exception
+ * \param an exception message
+ */
+//================================================================================
+void CASCatch_Failure::Reraise (const Standard_CString AString) 
+{
+  if(AString){
+    myMessage = new Standard_Character[strlen(AString) + 1];
+    strcpy(myMessage,AString);
+  }
+
+#ifdef NO_CXX_EXCEPTION
+  CASCatch_ErrorHandler::Error(this) ;
+  CASCatch_ErrorHandler::Abort();
+#else
+  RaisedError = this ;
+  Throw() ;
+#endif
+}
+
+//================================================================================
+/*! Public -
+ * \brief returns an exception message
+ */
+//================================================================================ 
+Standard_CString CASCatch_Failure::GetError() const
+{
+  return myMessage;
+}
+
+//================================================================================
+/*! Public -
+ * \brief Is called when using standard C++ exceptions
+ */
+//================================================================================ 
+void CASCatch_Failure::Throw() const
+{
+#ifndef NO_CXX_EXCEPTION
+  throw CASCatch_Failure() ;
+#endif
+}
+
diff --git a/src/CASCatch/CASCatch_Failure.hxx b/src/CASCatch/CASCatch_Failure.hxx
new file mode 100644 (file)
index 0000000..9da5701
--- /dev/null
@@ -0,0 +1,41 @@
+#ifndef _CASCATCH_FAILURE_HeaderFile
+#define _CASCATCH_FAILURE_HeaderFile
+
+#include <Standard_Transient.hxx>
+#include <Standard_DefineHandle.hxx>
+DEFINE_STANDARD_HANDLE( CASCatch_Failure, Standard_Transient )
+
+#include <Standard.hxx>
+
+/*!
+ * \class CASCatch_Failure
+ * \brief This class presents an exception to be thrown
+ *
+ */    
+class CASCatch_Failure :  public Standard_Transient
+{
+
+public:
+
+Standard_EXPORT CASCatch_Failure();
+Standard_EXPORT CASCatch_Failure(const Standard_CString aString);
+Standard_EXPORT void Reraise(const Standard_CString aMessage) ;
+Standard_EXPORT Standard_CString GetError() const;
+Standard_EXPORT static  Handle_CASCatch_Failure Caught() ;
+Standard_EXPORT static  void Raise(const Standard_CString aMessage = "") ;
+Standard_EXPORT virtual  void Throw() const;public:
+
+public:
+
+DEFINE_STANDARD_RTTI( CASCatch_Failure )  
+
+private: 
+/*!\var myMessage
+ * \brief stores an exception message
+ */   
+Standard_CString myMessage;
+
+};
+
+
+#endif
diff --git a/src/CASCatch/CASCatch_SignalsHandler.cxx b/src/CASCatch/CASCatch_SignalsHandler.cxx
deleted file mode 100644 (file)
index fd8cb5a..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-//  KERNEL Utils : common utils for KERNEL
-//  Copyright (C) 2003  CEA
-//
-//  This library is free software; you can redistribute it and/or
-//  modify it under the terms of the GNU Lesser General Public
-//  License as published by the Free Software Foundation; either
-//  version 2.1 of the License.
-//
-
-//  This library is distributed in the hope that it will be useful,
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-//  Lesser General Public License for more details.
-//
-//  You should have received a copy of the GNU Lesser General Public
-//  License along with this library; if not, write to the Free Software
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
-//
-//  See http://www.salome-platform.org or email : webmaster.salome@opencascade.org
-
-
-#include "CASCatch_SignalsHandler.h"
-#include <OSD.hxx>
-
-
-CASCatch_SignalsHandler::CASCatch_SignalsHandler(bool theFloatingSignal)
-{
-  OSD::SetSignal(theFloatingSignal);
-}
diff --git a/src/CASCatch/CASCatch_SignalsHandler.h b/src/CASCatch/CASCatch_SignalsHandler.h
deleted file mode 100644 (file)
index 4d6c0ab..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-//  KERNEL Utils : common utils for KERNEL
-//  Copyright (C) 2003  CEA
-//
-//  This library is free software; you can redistribute it and/or
-//  modify it under the terms of the GNU Lesser General Public
-//  License as published by the Free Software Foundation; either
-//  version 2.1 of the License.
-//
-
-//  This library is distributed in the hope that it will be useful,
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-//  Lesser General Public License for more details.
-//
-//  You should have received a copy of the GNU Lesser General Public
-//  License along with this library; if not, write to the Free Software
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
-//
-//  See http://www.salome-platform.org or email : webmaster.salome@opencascade.org
-
-#ifndef _CASCATCH_SIGNALSHANDLER_H_
-#define _CASCATCH_SIGNALSHANDLER_H_
-
-
-#include "Utils_SignalsHandler.h"
-#include <Standard_ErrorHandler.hxx>
-
-class Standard_EXPORT CASCatch_SignalsHandler: private Utils_SignalsHandler{
- public:
-  CASCatch_SignalsHandler(bool theFloatingSignal = true);
-};
-
-
-#endif
index 838e3e08640abd6b565cdb4e68a7aed0c02c2491..f6e17c1e8690fc1089e78e05901b02519dbf573b 100644 (file)
@@ -1,45 +1,26 @@
-#  SALOME Utils : general SALOME's definitions and tools
-#
-#  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-#  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-# 
-#  This library is free software; you can redistribute it and/or 
-#  modify it under the terms of the GNU Lesser General Public 
-#  License as published by the Free Software Foundation; either 
-#  version 2.1 of the License. 
-# 
-#  This library is distributed in the hope that it will be useful, 
-#  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-#  Lesser General Public License for more details. 
-# 
-#  You should have received a copy of the GNU Lesser General Public 
-#  License along with this library; if not, write to the Free Software 
-#  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-# 
-#  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-#
-#
-#
 #  File   : Makefile.in
-#  Author : Marc Tajchman (CEA)
+#  Author : Sergey RUIN (OCN)
 #  Module : SALOME
-#  $Header$
 
 top_srcdir=@top_srcdir@
 top_builddir=../..
 srcdir=@srcdir@
-VPATH=.:@srcdir@:@top_srcdir@/idl
+VPATH=.:@srcdir@:@top_srcdir@/idl:$(top_srcdir)/idl
 
 
 @COMMENCE@
 
 # header files  
-EXPORT_HEADERS= CASCatch_SignalsHandler.h
+EXPORT_HEADERS= CASCatch_Failure.hxx \
+               CASCatch_CatchSignals.hxx \
+               CASCatch_ErrorHandler.hxx
 
 # Libraries targets
 LIB = libCASCatch.la 
-LIB_SRC = CASCatch_SignalsHandler.cxx
+
+LIB_SRC = CASCatch_Failure.cxx \
+          CASCatch_ErrorHandler.cxx \
+          CASCatch_CatchSignals.cxx
 
 CPPFLAGS += $(OCC_INCLUDES)
 CXXFLAGS += $(OCC_CXXFLAGS)