X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FStdMeshers%2FStdMeshers_Distribution.cxx;h=cbe591e16e41c27c9e6c897d3342fc4fdadaab86;hb=b24a2d1b7692bdb21cf037b026e0273ba547cef4;hp=bd94993539ece756f0903a017597835786539205;hpb=bd8f1aee7c78f7d2eb82bd4fec5e08c9e3d280ce;p=modules%2Fsmesh.git diff --git a/src/StdMeshers/StdMeshers_Distribution.cxx b/src/StdMeshers/StdMeshers_Distribution.cxx index bd9499353..cbe591e16 100644 --- a/src/StdMeshers/StdMeshers_Distribution.cxx +++ b/src/StdMeshers/StdMeshers_Distribution.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2013 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2021 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 @@ -6,7 +6,7 @@ // 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. +// version 2.1 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -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,18 +31,14 @@ #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; +namespace StdMeshers { + Function::Function( const int conv ) : myConv( conv ) { @@ -57,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; } @@ -130,8 +123,8 @@ bool FunctionTable::value( const double t, double& f ) const double FunctionTable::integral( const int i ) const { - if( i>=0 && i= 0 && i < (int)myData.size()-1 ) + return integral( i, myData[2*(i+1)] - myData[2*i] ); else return 0; } @@ -189,13 +182,10 @@ FunctionExpr::FunctionExpr( const char* str, const int conv ) { bool ok = true; try { -#ifdef NO_CAS_CATCH OCC_CATCH_SIGNALS; -#endif myExpr = ExprIntrp_GenExp::Create(); myExpr->Process( ( Standard_CString )str ); - } catch(Standard_Failure) { - Handle(Standard_Failure) aFail = Standard_Failure::Caught(); + } catch(Standard_Failure&) { ok = false; } @@ -225,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; } @@ -243,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" ); } @@ -345,3 +330,4 @@ bool buildDistribution( const Function& func, const double start, const double e data[nbSeg] = end; return true; } +}