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=96131044beb93cb8c40a7c0687703a91cca6e87a;hb=09607afb276900e0f0a7b95a01751fe628020a39;hpb=bd4e115a78b52e3fbc016e5e30bb0e19b2a9e7d6 diff --git a/src/SMESH_I/SMESH_Hypothesis_i.cxx b/src/SMESH_I/SMESH_Hypothesis_i.cxx index 96131044b..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 @@ -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" ); }; //============================================================================= @@ -60,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; }; @@ -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,120 +220,34 @@ 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_Hypothesis_i::GetImpl * + * Get implementation */ //============================================================================= -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() +::SMESH_Hypothesis* SMESH_Hypothesis_i::GetImpl() { - myMethod2VarParams.clear(); - // if(!IsPublished()) { - // myBaseImpl->ClearParameters(); - // } + return myBaseImpl; } -//============================================================================= +//================================================================================ /*! - * SMESH_Hypothesis_i::GetImpl - * - * Get implementation + * \brief Return true if a hypothesis has parameters */ -//============================================================================= +//================================================================================ -::SMESH_Hypothesis* SMESH_Hypothesis_i::GetImpl() +CORBA::Boolean SMESH_Hypothesis_i::HasParameters() { - return myBaseImpl; + std::ostringstream os; + myBaseImpl->SaveTo( os ); + return ( !os.str().empty() ); } //=============================================================================