X-Git-Url: http://git.salome-platform.org/gitweb/?p=modules%2Fsmesh.git;a=blobdiff_plain;f=src%2FStdMeshers%2FStdMeshers_Distribution.cxx;h=13203ad58b123d90c2b9b3e6c545fcca77a7014e;hp=574466cc7ef1ba00de342a8b69f53ff2d9c32f5b;hb=d9f4b53e489dd5857db264ede6acded7b076c9f1;hpb=5482b99d07dd144fd5be299e722f39a81de3b5be diff --git a/src/StdMeshers/StdMeshers_Distribution.cxx b/src/StdMeshers/StdMeshers_Distribution.cxx index 574466cc7..13203ad58 100644 --- a/src/StdMeshers/StdMeshers_Distribution.cxx +++ b/src/StdMeshers/StdMeshers_Distribution.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2015 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2022 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -20,7 +20,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH StdMeshers : implementaion of point distribution algorithm +// SMESH StdMeshers : implementation of point distribution algorithm // File : StdMeshers_Distribution.cxx // Author : Alexandre SOLOVYOV // Module : SMESH @@ -31,15 +31,9 @@ #include #include -#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100 -#define NO_CAS_CATCH -#endif - #include - -#ifdef NO_CAS_CATCH +#include #include -#endif using namespace std; @@ -59,12 +53,9 @@ bool Function::value( const double, double& f ) const bool ok = true; if (myConv == 0) { try { -#ifdef NO_CAS_CATCH OCC_CATCH_SIGNALS; -#endif f = pow( 10., f ); - } catch(Standard_Failure) { - Handle(Standard_Failure) aFail = Standard_Failure::Caught(); + } catch(Standard_Failure&) { f = 0.0; ok = false; } @@ -165,7 +156,7 @@ double FunctionTable::integral( const double a, const double b ) const bool FunctionTable::findBounds( const double x, int& x_ind_1, int& x_ind_2 ) const { - int n = myData.size() / 2; + int n = (int) myData.size() / 2; if( n==0 || xProcess( ( Standard_CString )str ); - } catch(Standard_Failure) { - Handle(Standard_Failure) aFail = Standard_Failure::Caught(); + } catch(Standard_Failure&) { ok = false; } @@ -227,12 +215,9 @@ bool FunctionExpr::value( const double t, double& f ) const ( ( TColStd_Array1OfReal& )myValues ).ChangeValue( 1 ) = t; bool ok = true; try { -#ifdef NO_CAS_CATCH OCC_CATCH_SIGNALS; -#endif f = myExpr->Expression()->Evaluate( myVars, myValues ); - } catch(Standard_Failure) { - Handle(Standard_Failure) aFail = Standard_Failure::Caught(); + } catch(Standard_Failure&) { f = 0.0; ok = false; } @@ -245,14 +230,12 @@ double FunctionExpr::integral( const double a, const double b ) const { double res = 0.0; try { -#ifdef NO_CAS_CATCH OCC_CATCH_SIGNALS; -#endif math_GaussSingleIntegration _int ( *static_cast( const_cast (this) ), a, b, 20 ); if( _int.IsDone() ) res = _int.Value(); - } catch(Standard_Failure) { + } catch(Standard_Failure&) { res = 0.0; MESSAGE( "Exception in integral calculating" ); } @@ -306,35 +289,35 @@ double dihotomySolve( Function& f, const double val, const double _start, const } bool buildDistribution( const TCollection_AsciiString& f, const int conv, const double start, const double end, - const int nbSeg, vector& data, const double eps ) + const smIdType nbSeg, vector& data, const double eps ) { FunctionExpr F( f.ToCString(), conv ); return buildDistribution( F, start, end, nbSeg, data, eps ); } bool buildDistribution( const std::vector& f, const int conv, const double start, const double end, - const int nbSeg, vector& data, const double eps ) + const smIdType nbSeg, vector& data, const double eps ) { FunctionTable F( f, conv ); return buildDistribution( F, start, end, nbSeg, data, eps ); } -bool buildDistribution( const Function& func, const double start, const double end, const int nbSeg, - vector& data, const double eps ) +bool buildDistribution( const Function& func, const double start, const double end, + const smIdType nbSeg, vector& data, const double eps ) { if( nbSeg<=0 ) return false; data.resize( nbSeg+1 ); data[0] = start; - double J = func.integral( start, end ) / nbSeg; + double J = func.integral( start, end ) / double( nbSeg ); if( J<1E-10 ) return false; bool ok; //MESSAGE( "distribution:" ); //char buf[1024]; - for( int i=1; i