X-Git-Url: http://git.salome-platform.org/gitweb/?p=modules%2Fsmesh.git;a=blobdiff_plain;f=src%2FStdMeshers%2FStdMeshers_NumberOfSegments.cxx;h=5ba6e47d9d31a3cf1c3baa452f834274455ff0ee;hp=db970335234d5cb027d1db423a5113839ded2774;hb=24412178e1a7c741a73d5b23822c43e08c353b97;hpb=251f8c052dd12dd29922210dc901b295fe999a0e diff --git a/src/StdMeshers/StdMeshers_NumberOfSegments.cxx b/src/StdMeshers/StdMeshers_NumberOfSegments.cxx index db9703352..5ba6e47d9 100644 --- a/src/StdMeshers/StdMeshers_NumberOfSegments.cxx +++ b/src/StdMeshers/StdMeshers_NumberOfSegments.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2015 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2016 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 SMESH : implementaion of SMESH idl descriptions +// SMESH SMESH : implementation of SMESH idl descriptions // File : StdMeshers_NumberOfSegments.cxx // Moved here from SMESH_NumberOfSegments.cxx // Author : Paul RASCLE, EDF @@ -28,10 +28,11 @@ // #include "StdMeshers_NumberOfSegments.hxx" -#include "StdMeshers_Distribution.hxx" +#include "SMESHDS_Mesh.hxx" #include "SMESHDS_SubMesh.hxx" -#include "SMESH_Mesh.hxx" #include "SMESH_Comment.hxx" +#include "SMESH_Mesh.hxx" +#include "StdMeshers_Distribution.hxx" #include #include @@ -41,15 +42,8 @@ #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 -#endif #include @@ -65,9 +59,8 @@ const double PRECISION = 1e-7; //============================================================================= StdMeshers_NumberOfSegments::StdMeshers_NumberOfSegments(int hypId, - int studyId, SMESH_Gen * gen) - : SMESH_Hypothesis(hypId, studyId, gen), + : SMESH_Hypothesis(hypId, gen), _numberOfSegments(15),//issue 19923 _distrType(DT_Regular), _scaleFactor(1.), @@ -180,15 +173,17 @@ StdMeshers_NumberOfSegments::DistrType StdMeshers_NumberOfSegments::GetDistrType void StdMeshers_NumberOfSegments::SetScaleFactor(double scaleFactor) throw(SALOME_Exception) { - if (_distrType != DT_Scale) - _distrType = DT_Scale; - //throw SALOME_Exception(LOCALIZED("not a scale distribution")); if (scaleFactor < PRECISION) throw SALOME_Exception(LOCALIZED("scale factor must be positive")); - //if (fabs(scaleFactor - 1.0) < PRECISION) - // throw SALOME_Exception(LOCALIZED("scale factor must not be equal to 1")); - if (fabs(_scaleFactor - scaleFactor) > PRECISION) + if (_distrType != DT_Scale) + _distrType = DT_Scale; + +// commented by mpa for IPAL 52986 +// if ( fabs(scaleFactor - 1.0) < PRECISION ) +// _distrType = DT_Regular; + + if ( fabs(_scaleFactor - scaleFactor) > PRECISION ) { _scaleFactor = scaleFactor; NotifySubMeshesHypothesisModification(); @@ -197,7 +192,7 @@ void StdMeshers_NumberOfSegments::SetScaleFactor(double scaleFactor) //================================================================================ /*! - * + * */ //================================================================================ @@ -211,7 +206,7 @@ double StdMeshers_NumberOfSegments::GetScaleFactor() const //================================================================================ /*! - * + * */ //================================================================================ @@ -224,23 +219,21 @@ void StdMeshers_NumberOfSegments::SetTableFunction(const vector& table) if ( (table.size() % 2) != 0 ) throw SALOME_Exception(LOCALIZED("odd size of vector of table function")); - int i; double prev = -PRECISION; bool isSame = table.size() == _table.size(); bool pos = false; - for (i=0; i < table.size()/2; i++) { + for ( size_t i = 0; i < table.size() / 2; i++ ) + { double par = table[i*2]; double val = table[i*2+1]; if( _convMode==0 ) { try { -#ifdef NO_CAS_CATCH OCC_CATCH_SIGNALS; -#endif val = pow( 10.0, val ); - } catch(Standard_Failure) { - Handle(Standard_Failure) aFail = Standard_Failure::Caught(); + } + catch(Standard_Failure) { throw SALOME_Exception( LOCALIZED( "invalid value")); return; } @@ -248,19 +241,19 @@ void StdMeshers_NumberOfSegments::SetTableFunction(const vector& table) else if( _convMode==1 && val<0.0 ) val = 0.0; - if ( par<0 || par > 1) + if ( par < 0 || par > 1) throw SALOME_Exception(LOCALIZED("parameter of table function is out of range [0,1]")); - if ( fabs(par-prev)PRECISION ) + if( val > PRECISION ) pos = true; if (isSame) { double oldpar = _table[i*2]; double oldval = _table[i*2+1]; - if (fabs(par - oldpar) > PRECISION || fabs(val - oldval) > PRECISION) + if ( fabs(par - oldpar) > PRECISION || fabs(val - oldval) > PRECISION ) isSame = false; } prev = par; @@ -269,7 +262,7 @@ void StdMeshers_NumberOfSegments::SetTableFunction(const vector& table) if( !pos ) throw SALOME_Exception(LOCALIZED("value of table function is not positive")); - if( pos && !isSame ) + if ( pos && !isSame ) { _table = table; NotifySubMeshesHypothesisModification(); @@ -278,7 +271,7 @@ void StdMeshers_NumberOfSegments::SetTableFunction(const vector& table) //================================================================================ /*! - * + * */ //================================================================================ @@ -331,13 +324,10 @@ bool process( const TCollection_AsciiString& str, int convMode, bool parsed_ok = true; Handle( ExprIntrp_GenExp ) myExpr; try { -#ifdef NO_CAS_CATCH OCC_CATCH_SIGNALS; -#endif myExpr = ExprIntrp_GenExp::Create(); myExpr->Process( str.ToCString() ); } catch(Standard_Failure) { - Handle(Standard_Failure) aFail = Standard_Failure::Caught(); parsed_ok = false; } @@ -394,7 +384,6 @@ void StdMeshers_NumberOfSegments::SetExpressionFunction(const char* expr) { if (_distrType != DT_ExprFunc) _distrType = DT_ExprFunc; - //throw SALOME_Exception(LOCALIZED("not an expression function distribution")); string func = CheckExpressionFunction( expr, _convMode ); if( _func != func ) @@ -509,9 +498,8 @@ ostream & StdMeshers_NumberOfSegments::SaveTo(ostream & save) save << " " << _scaleFactor; break; case DT_TabFunc: - int i; save << " " << _table.size(); - for (i=0; i < _table.size(); i++) + for ( size_t i = 0; i < _table.size(); i++ ) save << " " << _table[i]; break; case DT_ExprFunc: @@ -547,7 +535,7 @@ istream & StdMeshers_NumberOfSegments::LoadFrom(istream & load) int a; // read number of segments - isOK = (load >> a); + isOK = static_cast(load >> a); if (isOK) _numberOfSegments = a; else @@ -560,10 +548,10 @@ istream & StdMeshers_NumberOfSegments::LoadFrom(istream & load) // (nb.segments, distr.type, some other params.), // we wait here the ditribution type, which is integer double scale_factor; - isOK = (load >> scale_factor); + isOK = static_cast(load >> scale_factor); a = (int)scale_factor; - // try to interprete ditribution type, + // try to interpret ditribution type, // supposing that this hypothesis was written in the new format if (isOK) { @@ -581,7 +569,7 @@ istream & StdMeshers_NumberOfSegments::LoadFrom(istream & load) { case DT_Scale: { - isOK = (load >> b); + isOK = static_cast(load >> b); if (isOK) _scaleFactor = b; else @@ -595,14 +583,13 @@ istream & StdMeshers_NumberOfSegments::LoadFrom(istream & load) break; case DT_TabFunc: { - isOK = (load >> a); + isOK = static_cast(load >> a); if (isOK) { _table.resize(a, 0.); - int i; - for (i=0; i < _table.size(); i++) + for ( size_t i=0; i < _table.size(); i++ ) { - isOK = (load >> b); + isOK = static_cast(load >> b); if (isOK) _table[i] = b; else @@ -621,7 +608,7 @@ istream & StdMeshers_NumberOfSegments::LoadFrom(istream & load) case DT_ExprFunc: { string str; - isOK = (load >> str); + isOK = static_cast(load >> str); if (isOK) _func = str; else @@ -640,7 +627,7 @@ istream & StdMeshers_NumberOfSegments::LoadFrom(istream & load) if (_distrType == DT_TabFunc || _distrType == DT_ExprFunc) { - isOK = (load >> a); + isOK = static_cast(load >> a); if (isOK) _convMode = a; else @@ -649,14 +636,14 @@ istream & StdMeshers_NumberOfSegments::LoadFrom(istream & load) // load reversed edges IDs int intVal; - isOK = (load >> intVal); + isOK = static_cast(load >> intVal); if ( isOK && _distrType != DT_Regular && intVal > 0 ) { _edgeIDs.reserve( intVal ); - for (int i = 0; i < _edgeIDs.capacity() && isOK; i++) { - isOK = (load >> intVal); + for ( size_t i = 0; i < _edgeIDs.capacity() && isOK; i++) { + isOK = static_cast(load >> intVal); if ( isOK ) _edgeIDs.push_back( intVal ); } - isOK = (load >> _objEntry); + isOK = static_cast(load >> _objEntry); } return load; @@ -664,7 +651,7 @@ istream & StdMeshers_NumberOfSegments::LoadFrom(istream & load) //============================================================================= /*! - * + * */ //=============================================================================