]> SALOME platform Git repositories - modules/smesh.git/commitdiff
Salome HOME
1) avoid infinit recursion in operator<<(SMESH::SMESH_IDSource_ptr theArg)
authoreap <eap@opencascade.com>
Tue, 26 Apr 2011 14:37:17 +0000 (14:37 +0000)
committereap <eap@opencascade.com>
Tue, 26 Apr 2011 14:37:17 +0000 (14:37 +0000)
2) 0021231: EDF 1838 SMESH: Pattern mapping on a quadratic element
     fix python dump of functions defining pattern in a single-file mode

src/SMESH_I/SMESH_DumpPython.cxx

index 3875dc79650e62fa48504d38c3ce7a62555bb90a..02438ddcfd63e3beee2e8294dac98b0d314ab7fa 100644 (file)
@@ -229,11 +229,15 @@ namespace SMESH
     SALOMEDS::SObject_var aSObject = SMESH_Gen_i::ObjectToSObject(aStudy,theArg);
     if(!aSObject->_is_nil() || CORBA::is_nil( theArg ))
       return *this << aSObject;
-    SMESH::long_array_var anElementsId = theArg->GetIDs();
     SMESH::SMESH_Mesh_var mesh = theArg->GetMesh();
-    SMESH::array_of_ElementType_var types =  theArg->GetTypes();
-    SMESH::ElementType type = types->length() ? types[0] : SMESH::ALL;
-    return *this << mesh << ".GetIDSource(" << anElementsId << ", " << type << ")";
+    if ( !theArg->_is_equivalent( mesh) )
+    {
+      SMESH::long_array_var anElementsId = theArg->GetIDs();
+      SMESH::array_of_ElementType_var types =  theArg->GetTypes();
+      SMESH::ElementType type = types->length() ? types[0] : SMESH::ALL;
+      return *this << mesh << ".GetIDSource(" << anElementsId << ", " << type << ")";
+    }
+    return *this;
   }
 
   TPythonDump&
@@ -550,9 +554,6 @@ Engines::TMPFile* SMESH_Gen_i::DumpPython (CORBA::Object_ptr theStudy,
   aScript += DumpPython_impl(aStudy, aMap, aMapNames,
                              isPublished, isMultiFile, isValidScript, aSavedTrace);
 
-  if( !isMultiFile ) // remove unnecessary tabulation
-    RemoveTabulation( aScript );
-
   int aLen = aScript.Length();
   unsigned char* aBuffer = new unsigned char[aLen+1];
   strcpy((char*)aBuffer, aScript.ToCString());
@@ -935,6 +936,9 @@ TCollection_AsciiString SMESH_Gen_i::DumpPython_impl
     anUpdatedScript += "\n\tpass";
   anUpdatedScript += "\n";
 
+  if( !isMultiFile ) // remove unnecessary tabulation
+    RemoveTabulation( anUpdatedScript );
+
   // -----------------------------------------------------------------
   // put string literals describing patterns into separate functions
   // -----------------------------------------------------------------
@@ -973,7 +977,18 @@ TCollection_AsciiString SMESH_Gen_i::DumpPython_impl
       do functionName = aFunctionType + "_" + ( nb++ ) + "()";
       while ( !functionNameSet.insert( functionName.ToCString() ).second );
 
-      anUpdatedScript += helper + "\n\ndef " + functionName + aLongString; // define function
+      // define function
+      TCollection_AsciiString funDef = helper + "def " + functionName + aLongString;
+      if ( isMultiFile )
+      {
+        anUpdatedScript += helper + "\n\n" + funDef;
+      }
+      else
+      {
+        funDef += "\n\n";
+        anUpdatedScript.Insert( 1, funDef);
+        where += funDef.Length();
+      }
     }
     anUpdatedScript.InsertBefore( where, functionName ); // call function
   }