mirror of
https://git.dev.opencascade.org/repos/occt.git
synced 2025-04-26 10:19:45 +03:00
The copying permission statements at the beginning of source files updated to refer to LGPL. Copyright dates extended till 2014 in advance.
61 lines
2.2 KiB
Plaintext
61 lines
2.2 KiB
Plaintext
// Copyright (c) 1998-1999 Matra Datavision
|
|
// Copyright (c) 1999-2014 OPEN CASCADE SAS
|
|
//
|
|
// This file is part of Open CASCADE Technology software library.
|
|
//
|
|
// This library is free software; you can redistribute it and / or modify it
|
|
// under the terms of the GNU Lesser General Public version 2.1 as published
|
|
// by the Free Software Foundation, with special exception defined in the file
|
|
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
|
|
// distribution for complete text of the license and disclaimer of any warranty.
|
|
//
|
|
// Alternatively, this file may be used under the terms of Open CASCADE
|
|
// commercial license or contractual agreement.
|
|
|
|
#include <Standard_JmpBuf.hxx>
|
|
|
|
inline Standard_JmpBuf& Standard_ErrorHandler::Label()
|
|
{
|
|
return myLabel;
|
|
}
|
|
|
|
/*Common part for jumps*/
|
|
// In the current version setjmp is used. The alternative solution is to
|
|
// use sigsetjmp that stores the signal mask (to be checked)
|
|
// In the original implementation sigsetjmp is tried to use for SUN and IRIX
|
|
// in the following way:
|
|
// #ifdef SOLARIS
|
|
// #define DoesNotAbort(aHandler) !sigsetjmp(aHandler.Label(),1)
|
|
// #endif
|
|
//
|
|
|
|
#if defined(NO_CXX_EXCEPTION) || defined(OCC_CONVERT_SIGNALS)
|
|
#ifdef SOLARIS
|
|
#define DoesNotAbort(aHandler) !setjmp(aHandler.Label())
|
|
#elif IRIX
|
|
#define DoesNotAbort(aHandler) !setjmp(aHandler.Label())
|
|
#else
|
|
#define DoesNotAbort(aHandler) !setjmp(aHandler.Label())
|
|
#endif
|
|
#endif
|
|
|
|
|
|
#ifdef NO_CXX_EXCEPTION
|
|
/* No CXX Exceeptions, only jumps in all the cases.*/
|
|
#define try Standard_ErrorHandler _Function; \
|
|
if(DoesNotAbort(_Function))
|
|
#define catch(Error) else if(_Function.Catches(STANDARD_TYPE(Error)))
|
|
#define OCC_CATCH_SIGNALS
|
|
#elif defined(OCC_CONVERT_SIGNALS)
|
|
/* Exceptions are raied as usual, signal are converted into jumps and
|
|
raused in the proper point.*/
|
|
#define OCC_CATCH_SIGNALS Standard_ErrorHandler _aHandler; \
|
|
if(!DoesNotAbort(_aHandler)) { \
|
|
_aHandler.Catches(STANDARD_TYPE(Standard_Failure)); \
|
|
_aHandler.Error()->Reraise(); \
|
|
}
|
|
#else
|
|
/*Normal Exceptions (for example WNT)*/
|
|
#define OCC_CATCH_SIGNALS
|
|
#endif
|