Open CASCADE Technology
7.1.0.beta
|
Set of Operating Sytem Dependent Tools (O)perating (S)ystem (D)ependent. More...
#include <OSD.hxx>
Static Public Member Functions | |
static void | SetSignal (const Standard_Boolean theFloatingSignal=Standard_True) |
Sets signal and exception handlers. More... | |
static void | SecSleep (const Standard_Integer aDelay) |
Commands the process to sleep for a number of seconds. More... | |
static void | MilliSecSleep (const Standard_Integer aDelay) |
Commands the process to sleep for a number of milliseconds. More... | |
static Standard_Boolean | RealToCString (const Standard_Real aReal, Standard_PCharacter &aString) |
Converts aReal into aCstring in exponential format with a period as decimal point, no thousand separator and no grouping of digits. The conversion is independant from the current locale. More... | |
static Standard_Boolean | CStringToReal (const Standard_CString aString, Standard_Real &aReal) |
Converts aCstring representing a real with a period as decimal point, no thousand separator and no grouping of digits into aReal . The conversion is independant from the current locale. More... | |
static void | ControlBreak () |
since Windows NT does not support 'SIGINT' signal like UNIX, then this method checks whether Ctrl-Break keystroke was or not. If yes then raises Exception_CTRL_BREAK. More... | |
Set of Operating Sytem Dependent Tools (O)perating (S)ystem (D)ependent.
|
static |
since Windows NT does not support 'SIGINT' signal like UNIX, then this method checks whether Ctrl-Break keystroke was or not. If yes then raises Exception_CTRL_BREAK.
|
static |
Converts aCstring representing a real with a period as decimal point, no thousand separator and no grouping of digits into aReal . The conversion is independant from the current locale.
|
static |
Commands the process to sleep for a number of milliseconds.
|
static |
Converts aReal into aCstring in exponential format with a period as decimal point, no thousand separator and no grouping of digits. The conversion is independant from the current locale.
|
static |
Commands the process to sleep for a number of seconds.
|
static |
Sets signal and exception handlers.
Compiled with MS VC++ sets 3 main handlers:
This approach ensures that regardless of the option the user chooses to compile his code with (/EHs or /EHa), signals (or SE exceptions) will be translated into Open CASCADE C++ exceptions.
If theFloatingSignal is TRUE then floating point exceptions will be generated in accordance with the mask _EM_INVALID | _EM_DENORMAL | _EM_ZERODIVIDE | _EM_OVERFLOW
that is used to call ::_controlfp() system function. If theFloatingSignal is FALSE corresponding operations (e.g. division by zero) will gracefully complete without an exception.
OSD::SetSignal() sets handlers (via ::sigaction()) for multiple signals (SIGFPE, SIGSEGV, etc). Currently the number of handled signals is much greater than for Windows, in the future this may change to provide better consistency with Windows.
theFloatingSignal is recognized on Sun Solaris, Linux, and SGI Irix to generate floating-point exception according to the mask FE_INVALID | FE_DIVBYZERO | FE_OVERFLOW
(in Linux conventions).
When compiled with OBJS macro defined, already set signal handlers (e.g. by Data Base Managers) are not redefined.
If OSD::SetSignal() method is used in at least one thread, it must also be called in any other thread where Open CASCADE will be used, to ensure consistency of behavior. Its aFloatingSignal argument must be consistent across threads.
Keep in mind that whether the C++ exception will really be thrown (i.e. ::throw() will be called) is regulated by the NO_CXX_EXCEPTIONS and OCC_CONVERT_SIGNALS macros used during compilation of Open CASCADE and user's code. Refer to Foundation Classes User's Guide for further details.