Salome HOME
Merge branch 'V9_9_BR'
[modules/smesh.git] / src / SMESH_I / SMESH_Gen_i_1.cxx
index 672477ccc89d3c2d1db25e68e06a326f50632859..0896c5dc2354e23721b61161fbbc773c18314818 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2020  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2022  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
@@ -282,10 +282,10 @@ GEOM::GEOM_Object_ptr SMESH_Gen_i::GetGeomObjectByEntry( const std::string& entr
 //=======================================================================
 
 SALOMEDS::SObject_ptr SMESH_Gen_i::publish(CORBA::Object_ptr     theIOR,
-                                     SALOMEDS::SObject_ptr theFatherObject,
-                                     const int             theTag,
-                                     const char*           thePixMap,
-                                     const bool            theSelectable)
+                                           SALOMEDS::SObject_ptr theFatherObject,
+                                           const int             theTag,
+                                           const char*           thePixMap,
+                                           const bool            theSelectable)
 {
   SALOMEDS::Study_var theStudy = getStudyServant();
   SALOMEDS::SObject_wrap SO = ObjectToSObject( theIOR );
@@ -535,7 +535,7 @@ SALOMEDS::SObject_ptr SMESH_Gen_i::PublishInStudy(SALOMEDS::SObject_ptr /*theSOb
 
 //=======================================================================
 //function : PublishComponent
-//purpose  : 
+//purpose  :
 //=======================================================================
 
 SALOMEDS::SComponent_ptr SMESH_Gen_i::PublishComponent()
@@ -547,9 +547,12 @@ SALOMEDS::SComponent_ptr SMESH_Gen_i::PublishComponent()
   SALOMEDS::StudyBuilder_var    aStudyBuilder  = getStudyServant()->NewBuilder();
   SALOMEDS::UseCaseBuilder_wrap useCaseBuilder = getStudyServant()->GetUseCaseBuilder();
 
-  std::string compDataType = ComponentDataType(); // SMESH module's data type
-  std::string ior = SMESH_Gen_i::GetORB()->object_to_string( SMESH_Gen::_this() ); // IOR of this SMESH engine
-
+  CORBA::String_var compDataType = ComponentDataType(); // SMESH module's data type
+  std::string ior;
+  {
+    CORBA::String_var iorString = GetORB()->object_to_string( SMESH_Gen::_this() );
+    ior = std::string( iorString.in() ); // IOR of this SMESH engine
+  }
   // Find study component which corresponds to this SMESH engine
 
   SALOMEDS::SComponent_wrap father;
@@ -558,12 +561,14 @@ SALOMEDS::SComponent_ptr SMESH_Gen_i::PublishComponent()
     SALOMEDS::SComponent_wrap f_i = citer->Value();
     CORBA::String_var ior_i;
     bool ok = f_i->ComponentIOR(ior_i.out());
-    if ( ok && compDataType == f_i->ComponentDataType() && ior == ior_i.in()) {
+    CORBA::String_var cdt(f_i->ComponentDataType());
+    if ( ok && strcmp( compDataType.in(), cdt.in() ) == 0 && ior == ior_i.in())
+    {
       father = f_i;
       break;
     }
   }
-  
+
   if ( !CORBA::is_nil( father ) ) {
     // check that the component is added to the use case browser
     if ( !useCaseBuilder->IsUseCaseNode( father ) ) {
@@ -579,14 +584,14 @@ SALOMEDS::SComponent_ptr SMESH_Gen_i::PublishComponent()
   if ( CORBA::is_nil( aCat ) )
     return father._retn();
 
-  SALOME_ModuleCatalog::Acomponent_var aComp = aCat->GetComponent( compDataType.c_str() );
+  SALOME_ModuleCatalog::Acomponent_var aComp = aCat->GetComponent( compDataType.in() );
   if ( CORBA::is_nil( aComp ) )
     return father._retn();
 
   SALOMEDS::GenericAttribute_wrap anAttr;
   SALOMEDS::AttributePixMap_wrap  aPixmap;
 
-  father  = aStudyBuilder->NewComponent( compDataType.c_str() );
+  father  = aStudyBuilder->NewComponent( compDataType.in() );
   aStudyBuilder->DefineComponentInstance( father, SMESH_Gen::_this() );
   anAttr  = aStudyBuilder->FindOrCreateAttribute( father, "AttributePixMap" );
   aPixmap = anAttr;
@@ -988,7 +993,7 @@ void SMESH_Gen_i::UpdateIcons( SMESH::SMESH_Mesh_ptr theMesh )
       {
         if ( isGroupOnFilter ) // GetTypes() can be very long on GroupOnFilter!
         {
-          SMESH::long_array_var nbByType = mesh_i->GetNbElementsByType();
+          SMESH::smIdType_array_var nbByType = mesh_i->GetNbElementsByType();
           isEmpty = ( nbByType[ grp->GetType() ] == 0 );
         }
         else