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=cbce54f50f6a6c2f627f8404f5dbaeaef5d05c71;hp=f0fed296401201f4d8d9bc894612017bc409616c;hb=5504d02a2237b17b8459bcd3b1fb2a89468598cd;hpb=f5016d85b7b4b88623723027a1585c6414c4dc66 diff --git a/src/SMESH_I/SMESH_Hypothesis_i.cxx b/src/SMESH_I/SMESH_Hypothesis_i.cxx index f0fed2964..cbce54f50 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 @@ -25,11 +25,14 @@ // Author : Paul RASCLE, EDF // Module : SMESH // -#include -#include #include "SMESH_Hypothesis_i.hxx" #include "SMESH_Gen_i.hxx" -#include "utilities.h" + +#include +#include + +#include +#include using namespace std; @@ -42,12 +45,9 @@ using namespace std; //============================================================================= SMESH_Hypothesis_i::SMESH_Hypothesis_i( PortableServer::POA_ptr thePOA ) - : SALOME::GenericObj_i( thePOA ) + : SALOME::GenericObj_i( thePOA ) { - MESSAGE( "SMESH_Hypothesis_i::SMESH_Hypothesis_i / Début" ); myBaseImpl = 0; - - MESSAGE( "SMESH_Hypothesis_i::SMESH_Hypothesis_i / Fin" ); }; //============================================================================= @@ -75,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() ); }; @@ -89,7 +88,6 @@ char* SMESH_Hypothesis_i::GetName() char* SMESH_Hypothesis_i::GetLibName() { - MESSAGE( "SMESH_Hypothesis_i::GetLibName" ); return CORBA::string_dup( myBaseImpl->GetLibName() ); }; @@ -103,7 +101,6 @@ char* SMESH_Hypothesis_i::GetLibName() void SMESH_Hypothesis_i::SetLibName(const char* theLibName) { - MESSAGE( "SMESH_Hypothesis_i::SetLibName" ); myBaseImpl->SetLibName( theLibName ); }; @@ -117,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(); } @@ -127,12 +123,13 @@ CORBA::Long SMESH_Hypothesis_i::GetId() * */ //============================================================================= -bool SMESH_Hypothesis_i::IsPublished(){ +bool SMESH_Hypothesis_i::IsPublished() +{ bool res = false; - SMESH_Gen_i *gen = SMESH_Gen_i::GetSMESHGen(); - if(gen){ - SALOMEDS::SObject_var SO = - SMESH_Gen_i::ObjectToSObject(gen->GetCurrentStudy() , SMESH::SMESH_Hypothesis::_narrow(_this())); + if ( SMESH_Gen_i *gen = SMESH_Gen_i::GetSMESHGen()) + { + SALOMEDS::Study_var study = gen->GetCurrentStudy(); + SALOMEDS::SObject_wrap SO = SMESH_Gen_i::ObjectToSObject( study, _this()); res = !SO->_is_nil(); } return res; @@ -149,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() ) @@ -182,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 @@ -197,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(); @@ -206,109 +220,10 @@ 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 } } -//============================================================================= -/*! - * SMESH_Hypothesis_i::SetParameters() - * - */ -//============================================================================= -// void SMESH_Hypothesis_i::SetParameters(const char* theParameters) -// { -// SMESH_Gen_i *gen = SMESH_Gen_i::GetSMESHGen(); -// //char * aParameters = CORBA::string_dup(theParameters); -// if(gen){ -// gen->UpdateParameters(theParameters); -// // if(IsPublished()) { -// // SMESH_Gen_i::GetSMESHGen()->UpdateParameters(SMESH::SMESH_Hypothesis::_narrow(_this()),aParameters); -// // } -// // else { -// // myBaseImpl->SetParameters(gen->ParseParameters(aParameters)); -// // } -// } -// } - -// //============================================================================= -// /*! -// * SMESH_Hypothesis_i::GetParameters() -// * -// */ -// //============================================================================= -// char* SMESH_Hypothesis_i::GetParameters() -// { -// SMESH_Gen_i *gen = SMESH_Gen_i::GetSMESHGen(); -// char* aResult; -// if(IsPublished()) { -// MESSAGE("SMESH_Hypothesis_i::GetParameters() : Get Parameters from SObject"); -// aResult = gen->GetParameters(SMESH::SMESH_Hypothesis::_narrow(_this())); -// } -// else { -// MESSAGE("SMESH_Hypothesis_i::GetParameters() : Get local parameters"); -// aResult = myBaseImpl->GetParameters(); -// } -// return CORBA::string_dup(aResult); -// } - -// //============================================================================= -// /*! -// * SMESH_Hypothesis_i::GetLastParameters() -// * -// */ -// //============================================================================= -// SMESH::ListOfParameters* SMESH_Hypothesis_i::GetLastParameters() -// { -// SMESH::ListOfParameters_var aResult = new SMESH::ListOfParameters(); -// SMESH_Gen_i *gen = SMESH_Gen_i::GetSMESHGen(); -// if(gen) { -// char *aParameters; -// if(IsPublished()) -// aParameters = GetParameters(); -// else -// aParameters = myBaseImpl->GetLastParameters(); - -// SALOMEDS::Study_ptr aStudy = gen->GetCurrentStudy(); -// if(!aStudy->_is_nil()) { -// SALOMEDS::ListOfListOfStrings_var aSections = aStudy->ParseVariables(aParameters); -// if(aSections->length() > 0) { -// SALOMEDS::ListOfStrings aVars = aSections[aSections->length()-1]; -// aResult->length(aVars.length()); -// for(int i = 0;i < aVars.length();i++) -// aResult[i] = CORBA::string_dup( aVars[i]); -// } -// } -// } -// return aResult._retn(); -// } - -// //============================================================================= -// /*! -// * SMESH_Hypothesis_i::SetLastParameters() -// * -// */ -// //============================================================================= -// void SMESH_Hypothesis_i::SetLastParameters(const char* theParameters) -// { -// if(!IsPublished()) { -// myBaseImpl->SetLastParameters(theParameters); -// } -// } -// //============================================================================= -// /*! -// * SMESH_Hypothesis_i::ClearParameters() -// * -// */ -// //============================================================================= -// void SMESH_Hypothesis_i::ClearParameters() -// { -// myMethod2VarParams.clear(); -// // if(!IsPublished()) { -// // myBaseImpl->ClearParameters(); -// // } -// } - //============================================================================= /*! * SMESH_Hypothesis_i::GetImpl @@ -322,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