Salome HOME
Merge from V6_main 01/04/2013
[modules/smesh.git] / src / SMESH_I / SMESH_Hypothesis_i.cxx
index f0fed296401201f4d8d9bc894612017bc409616c..c1b5c956a72edb85ca224c2fe54e358c5fced769 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2012  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2013  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
 //  Author : Paul RASCLE, EDF
 //  Module : SMESH
 //
-#include <iostream>
-#include <sstream>
 #include "SMESH_Hypothesis_i.hxx"
 #include "SMESH_Gen_i.hxx"
-#include "utilities.h"
+
+#include <utilities.h>
+#include <SALOMEDS_wrap.hxx>
+
+#include <iostream>
+#include <sstream>
 
 using namespace std;
 
@@ -42,7 +45,7 @@ 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;
@@ -127,12 +130,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 +153,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 +189,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 +218,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 +227,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