X-Git-Url: http://git.salome-platform.org/gitweb/?p=modules%2Fsmesh.git;a=blobdiff_plain;f=src%2FSMESH_I%2FSMESH_Hypothesis_i.cxx;h=b3e4e48325a354797167f1a2e8973ca85d028712;hp=c6d837f4932f7e2d3c1c237a2061281ed699912b;hb=1a3a88cfc996394b2c79f2cf374c8f3c4140f036;hpb=9a54694a0ab1e5cbc558a35c4606ceea4f7af2ef diff --git a/src/SMESH_I/SMESH_Hypothesis_i.cxx b/src/SMESH_I/SMESH_Hypothesis_i.cxx index c6d837f49..b3e4e4832 100644 --- a/src/SMESH_I/SMESH_Hypothesis_i.cxx +++ b/src/SMESH_I/SMESH_Hypothesis_i.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2012 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 @@ -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 @@ -47,10 +47,7 @@ using namespace std; SMESH_Hypothesis_i::SMESH_Hypothesis_i( PortableServer::POA_ptr thePOA ) : SALOME::GenericObj_i( thePOA ) { - MESSAGE( "SMESH_Hypothesis_i::SMESH_Hypothesis_i / Début" ); myBaseImpl = 0; - - MESSAGE( "SMESH_Hypothesis_i::SMESH_Hypothesis_i / Fin" ); }; //============================================================================= @@ -63,7 +60,7 @@ SMESH_Hypothesis_i::SMESH_Hypothesis_i( PortableServer::POA_ptr thePOA ) SMESH_Hypothesis_i::~SMESH_Hypothesis_i() { - MESSAGE( "SMESH_Hypothesis_i::~SMESH_Hypothesis_i" ); + //MESSAGE( "SMESH_Hypothesis_i::~SMESH_Hypothesis_i" ); if ( myBaseImpl ) delete myBaseImpl; }; @@ -78,7 +75,6 @@ SMESH_Hypothesis_i::~SMESH_Hypothesis_i() char* SMESH_Hypothesis_i::GetName() { - //MESSAGE( "SMESH_Hypothesis_i::GetName" ); return CORBA::string_dup( myBaseImpl->GetName() ); }; @@ -92,7 +88,6 @@ char* SMESH_Hypothesis_i::GetName() char* SMESH_Hypothesis_i::GetLibName() { - MESSAGE( "SMESH_Hypothesis_i::GetLibName" ); return CORBA::string_dup( myBaseImpl->GetLibName() ); }; @@ -106,7 +101,6 @@ char* SMESH_Hypothesis_i::GetLibName() void SMESH_Hypothesis_i::SetLibName(const char* theLibName) { - MESSAGE( "SMESH_Hypothesis_i::SetLibName" ); myBaseImpl->SetLibName( theLibName ); }; @@ -120,7 +114,6 @@ void SMESH_Hypothesis_i::SetLibName(const char* theLibName) CORBA::Long SMESH_Hypothesis_i::GetId() { - MESSAGE( "SMESH_Hypothesis_i::GetId" ); return myBaseImpl->GetID(); } @@ -153,7 +146,10 @@ void SMESH_Hypothesis_i::SetVarParameter (const char* theParameter, { if ( SMESH_Gen_i *gen = SMESH_Gen_i::GetSMESHGen() ) { - gen->UpdateParameters(theParameter); + SMESH::SMESH_Hypothesis_var varHolder; + if ( myHolder->_is_nil() ) varHolder = _this(); + else varHolder = myHolder; + gen->UpdateParameters( varHolder, theParameter ); const std::vector< std::string >& pars = gen->GetLastParameters(); if ( !pars.empty() ) @@ -186,6 +182,20 @@ char* SMESH_Hypothesis_i::GetVarParameter (const char* theMethod) return CORBA::string_dup(""); } +//================================================================================ +/*! + * \brief Store a hypothesis wrapping this not published one. + * + * This hyp, which has no own parameters but is published, is used to store variables + * defining parameters of this hypothesis. + */ +//================================================================================ + +void SMESH_Hypothesis_i::SetHolderHypothesis(const SMESH::SMESH_Hypothesis_ptr hyp) +{ + myHolder = SMESH::SMESH_Hypothesis::_duplicate( hyp ); +} + //================================================================================ /*! * \brief Restore myMethod2VarParams by parameters stored in an old study @@ -201,7 +211,7 @@ void SMESH_Hypothesis_i::setOldParameters (const char* theParameters) if ( pos >= 0 ) aOldParameters = aOldParameters.Split(pos); pos = aOldParameters.SearchFromEnd(";*="); if ( pos >= 0 ) aOldParameters.Split(pos-1); - gen->UpdateParameters( aOldParameters.ToCString() ); + gen->UpdateParameters( CORBA::Object_var( _this() ).in(), aOldParameters.ToCString() ); myMethod2VarParams.clear(); const std::vector< std::string >& pars = gen->GetLastParameters(); @@ -210,7 +220,7 @@ void SMESH_Hypothesis_i::setOldParameters (const char* theParameters) std::string meth = getMethodOfParameter( i, pars.size() ); myMethod2VarParams[ meth ] = pars[i]; } - gen->UpdateParameters(""); // clear params + gen->UpdateParameters( CORBA::Object_var( _this() ).in(), "" ); // clear params } } @@ -227,6 +237,19 @@ void SMESH_Hypothesis_i::setOldParameters (const char* theParameters) return myBaseImpl; } +//================================================================================ +/*! + * \brief Return true if a hypothesis has parameters + */ +//================================================================================ + +CORBA::Boolean SMESH_Hypothesis_i::HasParameters() +{ + std::ostringstream os; + myBaseImpl->SaveTo( os ); + return ( !os.str().empty() ); +} + //============================================================================= /*! * SMESH_Hypothesis_i::SaveTo