Join modifications from branch BR_For_OCT_611: migration to OCCT6.1.1 with new exception handling and improved threads support.

This commit is contained in:
jfa 2006-09-04 11:39:20 +00:00
parent 0ef2b313da
commit 31282d8886
6 changed files with 191 additions and 68 deletions

View File

@ -1265,6 +1265,9 @@ bool SMESH_subMesh::ComputeStateEngine(int event)
RemoveSubMeshElementsAndNodes();
{
try {
#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
OCC_CATCH_SIGNALS;
#endif
if (!algo->NeedDescretBoundary() && !algo->OnlyUnaryInput())
ret = ApplyToCollection( algo, GetCollection( gen, algo ) );
else

View File

@ -37,7 +37,6 @@
#include "SMESH_Gen_i.hxx"
#include "SMESH_Filter_i.hxx"
#include "SMESH_PythonDump.hxx"
#include "CASCatch.hxx"
#include "utilities.h"
@ -45,6 +44,18 @@
#include <gp_Ax2.hxx>
#include <gp_Vec.hxx>
#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
#define NO_CAS_CATCH
#endif
#include <Standard_Failure.hxx>
#ifdef NO_CAS_CATCH
#include <Standard_ErrorHandler.hxx>
#else
#include "CASCatch.hxx"
#endif
#include <sstream>
typedef map<const SMDS_MeshElement*,
@ -1052,7 +1063,12 @@ void SMESH_MeshEditor_i::ExtrusionSweep(const SMESH::long_array & theIDsOfElemen
myLastCreatedElems = new SMESH::long_array();
myLastCreatedNodes = new SMESH::long_array();
#ifdef NO_CAS_CATCH
try {
OCC_CATCH_SIGNALS;
#else
CASCatch_TRY {
#endif
SMESHDS_Mesh* aMesh = GetMeshDS();
map<int,const SMDS_MeshElement*> elements;
@ -1072,8 +1088,11 @@ void SMESH_MeshEditor_i::ExtrusionSweep(const SMESH::long_array & theIDsOfElemen
TPythonDump() << this << ".ExtrusionSweep( "
<< theIDsOfElements << ", stepVector, " << theNbOfSteps << " )";
}
CASCatch_CATCH(Standard_Failure) {
#ifdef NO_CAS_CATCH
} catch(Standard_Failure) {
#else
} CASCatch_CATCH(Standard_Failure) {
#endif
Handle(Standard_Failure) aFail = Standard_Failure::Caught();
INFOS( "SMESH_MeshEditor_i::ExtrusionSweep fails - "<< aFail->GetMessageString() );
}

View File

@ -27,11 +27,22 @@
// $Header$
#include "StdMeshers_Distribution.hxx"
#include "CASCatch.hxx"
#include <math_GaussSingleIntegration.hxx>
#include <utilities.h>
#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
#define NO_CAS_CATCH
#endif
#include <Standard_Failure.hxx>
#ifdef NO_CAS_CATCH
#include <Standard_ErrorHandler.hxx>
#else
#include "CASCatch.hxx"
#endif
Function::Function( const int conv )
: myConv( conv )
{
@ -44,14 +55,19 @@ Function::~Function()
bool Function::value( const double, double& f ) const
{
bool ok = true;
if( myConv==0 )
{
CASCatch_TRY
{
if (myConv == 0) {
#ifdef NO_CAS_CATCH
try {
OCC_CATCH_SIGNALS;
#else
CASCatch_TRY {
#endif
f = pow( 10, f );
}
CASCatch_CATCH(Standard_Failure)
{
#ifdef NO_CAS_CATCH
} catch(Standard_Failure) {
#else
} CASCatch_CATCH(Standard_Failure) {
#endif
Handle(Standard_Failure) aFail = Standard_Failure::Caught();
f = 0.0;
ok = false;
@ -170,13 +186,19 @@ FunctionExpr::FunctionExpr( const char* str, const int conv )
myValues( 1, 1 )
{
bool ok = true;
CASCatch_TRY
{
#ifdef NO_CAS_CATCH
try {
OCC_CATCH_SIGNALS;
#else
CASCatch_TRY {
#endif
myExpr = ExprIntrp_GenExp::Create();
myExpr->Process( ( Standard_CString )str );
}
CASCatch_CATCH(Standard_Failure)
{
#ifdef NO_CAS_CATCH
} catch(Standard_Failure) {
#else
} CASCatch_CATCH(Standard_Failure) {
#endif
Handle(Standard_Failure) aFail = Standard_Failure::Caught();
ok = false;
}
@ -206,10 +228,18 @@ bool FunctionExpr::value( const double t, double& f ) const
( ( TColStd_Array1OfReal& )myValues ).ChangeValue( 1 ) = t;
bool ok = true;
#ifdef NO_CAS_CATCH
try {
OCC_CATCH_SIGNALS;
#else
CASCatch_TRY {
#endif
f = myExpr->Expression()->Evaluate( myVars, myValues );
}
CASCatch_CATCH(Standard_Failure) {
#ifdef NO_CAS_CATCH
} catch(Standard_Failure) {
#else
} CASCatch_CATCH(Standard_Failure) {
#endif
Handle(Standard_Failure) aFail = Standard_Failure::Caught();
f = 0.0;
ok = false;
@ -222,15 +252,21 @@ bool FunctionExpr::value( const double t, double& f ) const
double FunctionExpr::integral( const double a, const double b ) const
{
double res = 0.0;
#ifdef NO_CAS_CATCH
try {
OCC_CATCH_SIGNALS;
#else
CASCatch_TRY {
// skl for IPAL13079 (bug on Mandriva) - other cast
//math_GaussSingleIntegration _int( ( math_Function& )*this, a, b, 20 );
math_GaussSingleIntegration _int( *static_cast<math_Function*>( const_cast<FunctionExpr*> (this) ), a, b, 20 );
#endif
math_GaussSingleIntegration _int
( *static_cast<math_Function*>( const_cast<FunctionExpr*> (this) ), a, b, 20 );
if( _int.IsDone() )
res = _int.Value();
}
CASCatch_CATCH(Standard_Failure)
{
#ifdef NO_CAS_CATCH
} catch(Standard_Failure) {
#else
} CASCatch_CATCH(Standard_Failure) {
#endif
res = 0.0;
MESSAGE( "Exception in integral calculating" );
}

View File

@ -33,8 +33,6 @@
#include "SMESHDS_SubMesh.hxx"
#include "SMESH_Mesh.hxx"
#include "CASCatch.hxx"
#include <ExprIntrp_GenExp.hxx>
#include <Expr_Array1OfNamedUnknown.hxx>
#include <Expr_NamedUnknown.hxx>
@ -43,6 +41,18 @@
#include <TopExp.hxx>
#include <TopTools_IndexedMapOfShape.hxx>
#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
#define NO_CAS_CATCH
#endif
#include <Standard_Failure.hxx>
#ifdef NO_CAS_CATCH
#include <Standard_ErrorHandler.hxx>
#else
#include "CASCatch.hxx"
#endif
using namespace std;
const double PRECISION = 1e-7;
@ -218,12 +228,18 @@ void StdMeshers_NumberOfSegments::SetTableFunction(const std::vector<double>& ta
double val = table[i*2+1];
if( _convMode==0 )
{
CASCatch_TRY
{
#ifdef NO_CAS_CATCH
try {
OCC_CATCH_SIGNALS;
#else
CASCatch_TRY {
#endif
val = pow( 10.0, val );
}
CASCatch_CATCH(Standard_Failure)
{
#ifdef NO_CAS_CATCH
} catch(Standard_Failure) {
#else
} CASCatch_CATCH(Standard_Failure) {
#endif
Handle(Standard_Failure) aFail = Standard_Failure::Caught();
throw SALOME_Exception( LOCALIZED( "invalid value"));
return;
@ -312,13 +328,19 @@ bool process( const TCollection_AsciiString& str, int convMode,
{
bool parsed_ok = true;
Handle( ExprIntrp_GenExp ) myExpr;
CASCatch_TRY
{
#ifdef NO_CAS_CATCH
try {
OCC_CATCH_SIGNALS;
#else
CASCatch_TRY {
#endif
myExpr = ExprIntrp_GenExp::Create();
myExpr->Process( str.ToCString() );
}
CASCatch_CATCH(Standard_Failure)
{
#ifdef NO_CAS_CATCH
} catch(Standard_Failure) {
#else
} CASCatch_CATCH(Standard_Failure) {
#endif
Handle(Standard_Failure) aFail = Standard_Failure::Caught();
parsed_ok = false;
}

View File

@ -31,10 +31,6 @@ using namespace std;
#include "StdMeshers_Regular_1D.hxx"
#include "StdMeshers_Distribution.hxx"
#include "SMESH_Gen.hxx"
#include "SMESH_Mesh.hxx"
#include "SMESH_HypoFilter.hxx"
#include "SMESH_subMesh.hxx"
#include "StdMeshers_LocalLength.hxx"
#include "StdMeshers_NumberOfSegments.hxx"
@ -43,6 +39,11 @@ using namespace std;
#include "StdMeshers_Deflection1D.hxx"
#include "StdMeshers_AutomaticLength.hxx"
#include "SMESH_Gen.hxx"
#include "SMESH_Mesh.hxx"
#include "SMESH_HypoFilter.hxx"
#include "SMESH_subMesh.hxx"
#include "SMDS_MeshElement.hxx"
#include "SMDS_MeshNode.hxx"
#include "SMDS_EdgePosition.hxx"
@ -58,15 +59,17 @@ using namespace std;
#include <GCPnts_AbscissaPoint.hxx>
#include <GCPnts_UniformAbscissa.hxx>
#include <GCPnts_UniformDeflection.hxx>
#include <Standard_ErrorHandler.hxx>
#include <Precision.hxx>
#include <Expr_GeneralExpression.hxx>
#include <Expr_NamedUnknown.hxx>
#include <Expr_Array1OfNamedUnknown.hxx>
#include <TColStd_Array1OfReal.hxx>
#include <ExprIntrp_GenExp.hxx>
#include <TColStd_Array1OfReal.hxx>
#include <OSD.hxx>
#include <Standard_ErrorHandler.hxx>
#include <Standard_Failure.hxx>
#include <string>
#include <math.h>
@ -572,6 +575,9 @@ bool StdMeshers_Regular_1D::Compute(SMESH_Mesh & aMesh, const TopoDS_Shape & aSh
if ( !_mainEdge.IsNull() )
reversed = aMesh.IsReversedInChain( EE, _mainEdge );
try {
#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
OCC_CATCH_SIGNALS;
#endif
if ( ! computeInternalParameters( E, params, reversed )) {
//cout << "computeInternalParameters() failed" <<endl;
return false;

View File

@ -19,11 +19,22 @@
//
#include "StdMeshersGUI_DistrPreview.h"
#include "CASCatch.hxx"
#include <Expr_NamedUnknown.hxx>
#include <Expr_GeneralExpression.hxx>
#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
#define NO_CAS_CATCH
#endif
#include <Standard_Failure.hxx>
#ifdef NO_CAS_CATCH
#include <Standard_ErrorHandler.hxx>
#else
#include "CASCatch.hxx"
#endif
StdMeshersGUI_DistrPreview::StdMeshersGUI_DistrPreview( QWidget* p, StdMeshers::StdMeshers_NumberOfSegments_ptr h )
: QwtPlot( p ),
myPoints( 50 ),
@ -240,12 +251,18 @@ void StdMeshersGUI_DistrPreview::update()
delete[] y;
x = y = 0;
CASCatch_TRY
{
#ifdef NO_CAS_CATCH
try {
OCC_CATCH_SIGNALS;
#else
CASCatch_TRY {
#endif
replot();
}
CASCatch_CATCH(Standard_Failure)
{
#ifdef NO_CAS_CATCH
} catch(Standard_Failure) {
#else
} CASCatch_CATCH(Standard_Failure) {
#endif
Handle(Standard_Failure) aFail = Standard_Failure::Caught();
}
}
@ -285,13 +302,19 @@ bool isCorrectArg( const Handle( Expr_GeneralExpression )& expr )
bool StdMeshersGUI_DistrPreview::init( const QString& str )
{
bool parsed_ok = true;
CASCatch_TRY
{
#ifdef NO_CAS_CATCH
try {
OCC_CATCH_SIGNALS;
#else
CASCatch_TRY {
#endif
myExpr = ExprIntrp_GenExp::Create();
myExpr->Process( ( Standard_CString ) str.latin1() );
}
CASCatch_CATCH(Standard_Failure)
{
#ifdef NO_CAS_CATCH
} catch(Standard_Failure) {
#else
} CASCatch_CATCH(Standard_Failure) {
#endif
Handle(Standard_Failure) aFail = Standard_Failure::Caught();
parsed_ok = false;
}
@ -327,10 +350,18 @@ double StdMeshersGUI_DistrPreview::calc( bool& ok )
double res = 0.0;
ok = true;
#ifdef NO_CAS_CATCH
try {
OCC_CATCH_SIGNALS;
#else
CASCatch_TRY {
#endif
res = myExpr->Expression()->Evaluate( myVars, myValues );
}
CASCatch_CATCH(Standard_Failure) {
#ifdef NO_CAS_CATCH
} catch(Standard_Failure) {
#else
} CASCatch_CATCH(Standard_Failure) {
#endif
Handle(Standard_Failure) aFail = Standard_Failure::Caught();
ok = false;
res = 0.0;
@ -351,16 +382,22 @@ bool StdMeshersGUI_DistrPreview::convert( double& v ) const
{
case EXPONENT:
{
CASCatch_TRY
{
#ifdef NO_CAS_CATCH
try {
OCC_CATCH_SIGNALS;
#else
CASCatch_TRY {
#endif
// in StdMeshers_NumberOfSegments.cc
// const double PRECISION = 1e-7;
//
if(v < -7) v = -7.0;
v = pow( 10.0, v );
}
CASCatch_CATCH(Standard_Failure)
{
#ifdef NO_CAS_CATCH
} catch(Standard_Failure) {
#else
} CASCatch_CATCH(Standard_Failure) {
#endif
Handle(Standard_Failure) aFail = Standard_Failure::Caught();
v = 0.0;
ok = false;