//=======================================================================
//function : PublishComponent
-//purpose :
+//purpose :
//=======================================================================
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;
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 ) ) {
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;
{
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