+//=============================================================================
+/*!
+ * 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()));
+ res = !SO->_is_nil();
+ }
+ return res;
+}
+
+//================================================================================
+/*!
+ * \brief Set the pramIndex-th parameter
+ */
+//================================================================================
+
+void SMESH_Hypothesis_i::SetVarParameter (const char* theParameter,
+ const char* theMethod)
+{
+ if ( SMESH_Gen_i *gen = SMESH_Gen_i::GetSMESHGen() )
+ {
+ gen->UpdateParameters(theParameter);
+
+ const std::vector< std::string >& pars = gen->GetLastParameters();
+ if ( !pars.empty() )
+ myMethod2VarParams[ theMethod ] = pars[0];
+ }
+}
+
+//================================================================================
+/*!
+ * \brief Return the pramIndex-th variable parameter used for Hypothesis creation
+ */
+//================================================================================
+
+char* SMESH_Hypothesis_i::GetVarParameter (const char* theMethod)
+{
+ if ( myMethod2VarParams.count("needs update by old study"))
+ {
+ // restore myMethod2VarParams by old study
+ myMethod2VarParams.clear();
+ if ( SMESH_Gen_i* gen = SMESH_Gen_i::GetSMESHGen() )
+ {
+ CORBA::String_var oldparVar = gen->GetParameters( _this() );
+ setOldParameters( oldparVar.in() );
+ }
+ }
+ std::map< std::string, std::string >::iterator meth_param = myMethod2VarParams.find( theMethod );
+ if ( meth_param != myMethod2VarParams.end() )
+ return CORBA::string_dup( meth_param->second.c_str() );
+
+ return CORBA::string_dup("");
+}
+
+//================================================================================
+/*!
+ * \brief Restore myMethod2VarParams by parameters stored in an old study
+ */
+//================================================================================
+
+void SMESH_Hypothesis_i::setOldParameters (const char* theParameters)
+{
+ if ( SMESH_Gen_i* gen = SMESH_Gen_i::GetSMESHGen() )
+ {
+ TCollection_AsciiString aOldParameters(theParameters);
+ int pos = aOldParameters.SearchFromEnd("|");
+ if ( pos >= 0 ) aOldParameters = aOldParameters.Split(pos);
+ pos = aOldParameters.SearchFromEnd(";*=");
+ if ( pos >= 0 ) aOldParameters.Split(pos-1);
+ gen->UpdateParameters( aOldParameters.ToCString() );
+
+ myMethod2VarParams.clear();
+ const std::vector< std::string >& pars = gen->GetLastParameters();
+ for ( size_t i = 0; i < pars.size(); ++i )
+ {
+ std::string meth = getMethodOfParameter( i, pars.size() );
+ myMethod2VarParams[ meth ] = pars[i];
+ }
+ gen->UpdateParameters(""); // 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();
+// // }
+// }
+