Salome HOME
Compatibility with gcc 4.1 (centos 5)
[modules/smesh.git] / src / SMESH_I / SMESH_DumpPython.cxx
index cebc6e37ef3c1d7e3b96172c15c7d4fc226334f8..5840f0ab2f6db3d92673331077a52a25a324243f 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
@@ -71,26 +71,31 @@ namespace SMESH
       std::string aString = myStream.str();
       TCollection_AsciiString aCollection(Standard_CString(aString.c_str()));
       SALOMEDS::Study_var aStudy = aSMESHGen->GetCurrentStudy();
-      if(!aStudy->_is_nil() && !aCollection.IsEmpty()){
+      if(!aStudy->_is_nil() && !aCollection.IsEmpty())
+      {
+        const std::string & objEntry = SMESH_Gen_i::GetSMESHGen()->GetLastObjEntry();
+        if ( !objEntry.empty() )
+          aCollection += (TVar::ObjPrefix() + objEntry ).c_str();
         aSMESHGen->AddToPythonScript(aStudy->StudyId(),aCollection);
         if(MYDEBUG) MESSAGE(aString);
-        aSMESHGen->UpdateParameters(""); // prevent misuse of already treated variables
+        // prevent misuse of already treated variables
+        aSMESHGen->UpdateParameters(CORBA::Object_var().in(),"");
       }
     }
   }
 
-  TPythonDump& //!< to store a variable value
+  TPythonDump& //!< store a variable value. Write either a value or '$varID$'
   TPythonDump::
   operator<<(const TVar& theVarValue)
   {
-    const std::vector< std::string >& varNames = SMESH_Gen_i::GetSMESHGen()->GetLastParameters();
+    const std::vector< int >& varIDs = SMESH_Gen_i::GetSMESHGen()->GetLastParamIndices();
     if ( theVarValue.myVals.size() != 1 )
     {
       myStream << "[ ";
       for ( size_t i = 1; i <= theVarValue.myVals.size(); ++i )
       {
-        if ( myVarsCounter < varNames.size() && !varNames[ myVarsCounter ].empty() )
-          myStream << TVar::Quote() << varNames[ myVarsCounter ] << TVar::Quote();
+        if ( myVarsCounter < varIDs.size() && varIDs[ myVarsCounter ] >= 0 )
+          myStream << TVar::Quote() << varIDs[ myVarsCounter ] << TVar::Quote();
         else
           myStream << theVarValue.myVals[i-1];
         if ( i < theVarValue.myVals.size() )
@@ -101,8 +106,8 @@ namespace SMESH
     }
     else
     {
-      if ( myVarsCounter < varNames.size() && !varNames[ myVarsCounter ].empty() )
-        myStream << TVar::Quote() << varNames[ myVarsCounter ] << TVar::Quote();
+      if ( myVarsCounter < varIDs.size() && varIDs[ myVarsCounter ] >= 0 )
+        myStream << TVar::Quote() << varIDs[ myVarsCounter ] << TVar::Quote();
       else
         myStream << theVarValue.myVals[0];
       ++myVarsCounter;
@@ -203,6 +208,7 @@ namespace SMESH
     case Entity_Quad_Edge:         myStream<<"Entity_Quad_Edge";         break;
     case Entity_Triangle:          myStream<<"Entity_Triangle";          break;
     case Entity_Quad_Triangle:     myStream<<"Entity_Quad_Triangle";     break;
+    case Entity_BiQuad_Triangle:   myStream<<"Entity_BiQuad_Triangle";   break;
     case Entity_Quadrangle:        myStream<<"Entity_Quadrangle";        break;
     case Entity_Quad_Quadrangle:   myStream<<"Entity_Quad_Quadrangle";   break;
     case Entity_BiQuad_Quadrangle: myStream<<"Entity_BiQuad_Quadrangle"; break;
@@ -310,7 +316,7 @@ namespace SMESH
     if(aSObject->_is_nil() && !CORBA::is_nil(theArg))
       myStream << "hyp_" << theArg->GetId();
     else
-      *this << CORBA::Object_ptr( theArg );
+      *this << aSObject;
     return *this;
   }
 
@@ -372,9 +378,9 @@ namespace SMESH
   {
     if ( theArg ) {
       FunctorType aFunctorType = theArg->GetFunctorType();
-      switch(aFunctorType){
-      case FT_AspectRatio:           myStream<< "anAspectRatio";          break;
-      case FT_AspectRatio3D:         myStream<< "anAspectRatio3D";        break;
+      switch(aFunctorType) {
+      case FT_AspectRatio:           myStream<< "aAspectRatio";           break;
+      case FT_AspectRatio3D:         myStream<< "aAspectRatio3D";         break;
       case FT_Warping:               myStream<< "aWarping";               break;
       case FT_MinimumAngle:          myStream<< "aMinimumAngle";          break;
       case FT_Taper:                 myStream<< "aTaper";                 break;
@@ -387,6 +393,10 @@ namespace SMESH
       case FT_FreeEdges:             myStream<< "aFreeEdges";             break;
       case FT_FreeNodes:             myStream<< "aFreeNodes";             break;
       case FT_FreeFaces:             myStream<< "aFreeFaces";             break;
+      case FT_EqualNodes:            myStream<< "aEqualNodes";            break;
+      case FT_EqualEdges:            myStream<< "aEqualEdges";            break;
+      case FT_EqualFaces:            myStream<< "aEqualFaces";            break;
+      case FT_EqualVolumes:          myStream<< "aEqualVolumes";          break;
       case FT_MultiConnection:       myStream<< "aMultiConnection";       break;
       case FT_MultiConnection2D:     myStream<< "aMultiConnection2D";     break;
       case FT_Length:                myStream<< "aLength";                break;
@@ -396,7 +406,6 @@ namespace SMESH
       case FT_BelongToCylinder:      myStream<< "aBelongToCylinder";      break;
       case FT_BelongToGenSurface:    myStream<< "aBelongToGenSurface";    break;
       case FT_LyingOnGeom:           myStream<< "aLyingOnGeom";           break;
-      case FT_CoplanarFaces:         myStream<< "aCoplanarFaces";         break;
       case FT_RangeOfIds:            myStream<< "aRangeOfIds";            break;
       case FT_BadOrientedVolume:     myStream<< "aBadOrientedVolume";     break;
       case FT_BareBorderVolume:      myStream<< "aBareBorderVolume";      break;
@@ -405,10 +414,14 @@ namespace SMESH
       case FT_OverConstrainedFace:   myStream<< "aOverConstrainedFace";   break;
       case FT_LinearOrQuadratic:     myStream<< "aLinearOrQuadratic";     break;
       case FT_GroupColor:            myStream<< "aGroupColor";            break;
-      case FT_ElemGeomType:          myStream<< "anElemGeomType";         break;
+      case FT_ElemGeomType:          myStream<< "aElemGeomType";          break;
+      case FT_EntityType:            myStream<< "aEntityType";            break;
+      case FT_CoplanarFaces:         myStream<< "aCoplanarFaces";         break;
+      case FT_BallDiameter:          myStream<< "aBallDiameter";          break;
+      case FT_ConnectedElements:     myStream<< "aConnectedElements";     break;
       case FT_LessThan:              myStream<< "aLessThan";              break;
       case FT_MoreThan:              myStream<< "aMoreThan";              break;
-      case FT_EqualTo:               myStream<< "anEqualTo";              break;
+      case FT_EqualTo:               myStream<< "aEqualTo";               break;
       case FT_LogicalNOT:            myStream<< "aLogicalNOT";            break;
       case FT_LogicalAND:            myStream<< "aLogicalAND";            break;
       case FT_LogicalOR:             myStream<< "aLogicalOR";             break;
@@ -657,7 +670,6 @@ Engines::TMPFile* SMESH_Gen_i::DumpPython (CORBA::Object_ptr theStudy,
   }
 
   // Get trace of restored study
-  //SALOMEDS::SObject_wrap aSO = SMESH_Gen_i::ObjectToSObject(theStudy, _this());
   SALOMEDS::StudyBuilder_var aStudyBuilder = aStudy->NewBuilder();
   SALOMEDS::GenericAttribute_wrap anAttr =
     aStudyBuilder->FindOrCreateAttribute(aSO, "AttributePythonObject");
@@ -862,12 +874,12 @@ TCollection_AsciiString SMESH_Gen_i::DumpPython_impl
   if( isMultiFile )
     aScript += "def RebuildData(theStudy):";
   aScript += "\n\t";
-  aScript += helper + "aFilterManager = " + aSMESHGen + ".CreateFilterManager()\n\t";
-  aScript += helper + "aMeasurements = " + aSMESHGen + ".CreateMeasurements()\n\t";
   if ( isPublished )
-    aScript += aSMESHGen + ".SetCurrentStudy(theStudy)";
+    aScript += aSMESHGen + " = smeshBuilder.New(theStudy)\n\t";
   else
-    aScript += aSMESHGen + ".SetCurrentStudy(None)";
+    aScript += aSMESHGen + " = smeshBuilder.New(None)\n\t";
+  aScript += helper + "aFilterManager = " + aSMESHGen + ".CreateFilterManager()\n\t";
+  aScript += helper + "aMeasurements = " + aSMESHGen + ".CreateMeasurements()\n\t";
 
   // import python files corresponding to plugins
   set<string> moduleNameSet;
@@ -876,14 +888,14 @@ TCollection_AsciiString SMESH_Gen_i::DumpPython_impl
     string moduleName = hyp_creator->second->GetModuleName();
     bool newModule = moduleNameSet.insert( moduleName ).second;
     if ( newModule )
-      aScript += helper + "\n\t" + "import " + (char*) moduleName.c_str();
+      aScript += helper + "\n\t" + "from salome." + (char*) moduleName.c_str() + " import " + (char*) moduleName.c_str() +"Builder";
   }
 
   // Dump trace of restored study
   if (theSavedTrace.Length() > 0) {
-    // For the convertion of IDL API calls -> smesh.py API, "smesh" standing for SMESH_Gen
+    // For the convertion of IDL API calls -> smeshBuilder.py API, "smesh" standing for SMESH_Gen
     // was replaces with "smeshgen" (==TPythonDump::SMESHGenName()).
-    // Change "smesh" -> "smeshgen" in the trace saved before passage to smesh.py API
+    // Change "smesh" -> "smeshgen" in the trace saved before passage to smeshBuilder.py API
     bool isNewVersion =
       theSavedTrace.Location( anOldGen + ".", 1, theSavedTrace.Length() );
     if ( !isNewVersion ) {
@@ -911,7 +923,7 @@ TCollection_AsciiString SMESH_Gen_i::DumpPython_impl
     aScript += helper + "\n" + aNewLines;
   }
 
-  // Convert IDL API calls into smesh.py API.
+  // Convert IDL API calls into smeshBuilder.py API.
   // Some objects are wrapped with python classes and
   // Resource_DataMapOfAsciiStringAsciiString holds methods returning wrapped objects
   Resource_DataMapOfAsciiStringAsciiString anEntry2AccessorMethod;
@@ -999,7 +1011,8 @@ TCollection_AsciiString SMESH_Gen_i::DumpPython_impl
   TCollection_AsciiString initPart = "import ";
   if ( isMultiFile )
     initPart += helper + "salome, ";
-  initPart += aSmeshpy + ", SMESH, SALOMEDS\n";
+  initPart += " SMESH, SALOMEDS\n";
+  initPart += "from salome.smesh import smeshBuilder\n";
   if ( importGeom && isMultiFile )
   {
     initPart += ("\n## import GEOM dump file ## \n"
@@ -1022,7 +1035,7 @@ TCollection_AsciiString SMESH_Gen_i::DumpPython_impl
     if ( aRemovedObjIDs.count( seqRemoved.Value(ir) )) continue;
     anUpdatedScript += "\n\tSO = theStudy.FindObjectIOR(theStudy.ConvertObjectToIOR(";
     anUpdatedScript += seqRemoved.Value(ir);
-    // for object wrapped by class of smesh.py
+    // for object wrapped by class of smeshBuilder.py
     anEntry = theObjectNames( seqRemoved.Value(ir) );
     if ( anEntry2AccessorMethod.IsBound( anEntry ) )
       anUpdatedScript += helper + "." + anEntry2AccessorMethod( anEntry );