#include <process.h>
#else
#include <dlfcn.h>
+ #include <libgen.h> // for basename function
#endif
#ifdef WIN32
#define UnLoadLib( handle ) FreeLibrary( handle );
#else
#define LibHandle void*
- #define LoadLib( name ) dlopen( name, RTLD_LAZY )
+ #define LoadLib( name ) dlopen( name, RTLD_LAZY | RTLD_GLOBAL )
#define GetProc dlsym
#define UnLoadLib( handle ) dlclose( handle );
#endif
!strcmp( theLibName+libNameLen-3, ".so" ))
{
//the old format
-#ifdef WIN32
+#if defined(WIN32)
aPlatformLibName = std::string( theLibName+3, libNameLen-6 ) + ".dll";
+#elif defined(__APPLE__)
+ aPlatformLibName = std::string( theLibName, libNameLen-3 ) + ".dylib";
#else
aPlatformLibName = theLibName;
#endif
else
{
//try to use new format
-#ifdef WIN32
+#if defined(WIN32)
aPlatformLibName = theLibName;
aPlatformLibName += ".dll";
+#elif defined(__APPLE__)
+ aPlatformLibName = std::string( "lib" ) + std::string( theLibName ) + ".dylib";
#else
- aPlatformLibName = "lib" + std::string( theLibName ) + ".so";
+ aPlatformLibName = std::string( "lib" ) + std::string( theLibName ) + ".so";
#endif
}
}
{
if ( !foundMesh->_is_nil() ) // not a sole mesh
{
- GEOM::GEOM_Object_var s1 = mesh_i ->GetShapeToMesh();
- GEOM::GEOM_Object_var s2 = foundMesh->GetShapeToMesh();
- if ( ! ( isSole = s1->IsSame( s2 )))
- break;
+ if ( !foundMesh->HasShapeToMesh() ||
+ !mesh_i ->HasShapeToMesh() )
+ {
+ isSole = ( foundMesh->HasShapeToMesh() == mesh_i->HasShapeToMesh() );
+ }
+ else
+ {
+ GEOM::GEOM_Object_var s1 = mesh_i ->GetShapeToMesh();
+ GEOM::GEOM_Object_var s2 = foundMesh->GetShapeToMesh();
+ isSole = s1->IsSame( s2 );
+ }
}
foundMesh = SMESH::SMESH_Mesh::_narrow( obj );
}
{
vector<int> color;
string str = value;
- // color must be presented as a string of next form:
+ // color must be presented as a string of following form:
if ( str.at(0) == '#' && str.length() == 7 ) { // hexadecimal color ("#ffaa00", for example)
str = str.substr(1);
for ( size_t i = 0; i < str.length()/2; i++ )
if ( str.at(i*2) >= '0' && str.at(i*2) <= 'f' && str.at(i*2+1) >= '0' && str.at(i*2+1) <= 'f' )
color.push_back( strtol( str.substr( i*2, 2 ).c_str(), NULL, 16 ) );
}
- else { // rgb color ("255,170,0", for example)
- char* tempValue = strdup( value );
- char* colorValue = strtok( tempValue, "," );
+ else if ( value ) { // rgb color ("255,170,0", for example)
+ string tempValue( value );
+ char* colorValue = strtok( &tempValue[0], "," );
while ( colorValue != NULL ) {
int c_value = atoi( colorValue );
if ( c_value >= 0 && c_value <= 255 )
_splitpath( theFileNameForPython, NULL, NULL, bname, NULL );
string aFileName = bname;
#else
- string aFileName = basename( theFileNameForPython );
+ string aFileName = basename( const_cast<char *>(theFileNameForPython) );
#endif
// Retrieve mesh names from the file
DriverMED_R_SMESHDS_Mesh myReader;
_splitpath( theFileName, NULL, NULL, bname, NULL );
string aFileName = bname;
#else
- string aFileName = basename( theFileName );
+ string aFileName = basename( const_cast<char *>(theFileName) );
#endif
// publish mesh in the study
if ( CanPublishInStudy( aMesh ) ) {
_splitpath( theFileName, NULL, NULL, bname, NULL );
string aFileName = bname;
#else
- string aFileName = basename( theFileName );
+ string aFileName = basename( const_cast<char *>(theFileName) );
#endif
// publish mesh in the study
if ( CanPublishInStudy( aMesh ) ) {
myLocShape = SMESH_Mesh::PseudoShape();
// call implementation compute
::SMESH_Mesh& myLocMesh = meshServant->GetImpl();
- myGen.PrepareCompute( myLocMesh, myLocShape);
- bool ok = myGen.Compute( myLocMesh, myLocShape);
+ myGen.PrepareCompute( myLocMesh, myLocShape );
+ int how = ::SMESH_Gen::COMPACT_MESH;
+ if ( myLocShape != myLocMesh.GetShapeToMesh() ) // compute a sub-mesh
+ how |= ::SMESH_Gen::SHAPE_ONLY;
+ bool ok = myGen.Compute( myLocMesh, myLocShape, how );
meshServant->CreateGroupServants(); // algos can create groups (issue 0020918)
myLocMesh.GetMeshDS()->Modified();
return ok;
::SMESH_Mesh& myLocMesh = meshServant->GetImpl();
TSetOfInt shapeIds;
::MeshDimension aDim = (MeshDimension)theDimension;
- if ( myGen.Compute( myLocMesh, myLocShape, false, false, aDim, &shapeIds ) )
+ if ( myGen.Compute( myLocMesh, myLocShape, ::SMESH_Gen::COMPACT_MESH, aDim, &shapeIds ) )
{
int nbShapeId = shapeIds.size();
theShapesId.length( nbShapeId );
// make a group name
const char* typeNames[] = { "All","Nodes","Edges","Faces","Volumes","0DElems","Balls" };
- { // check of typeNames, compilation failure mains that NB_ELEMENT_TYPES changed:
+ { // check of typeNames: compilation failure mains that NB_ELEMENT_TYPES changed:
const int nbNames = sizeof(typeNames) / sizeof(const char*);
- int _assert[( nbNames == SMESH::NB_ELEMENT_TYPES ) ? 1 : -1 ]; _assert[0]=0;
+ int _assert[( nbNames == SMESH::NB_ELEMENT_TYPES ) ? 2 : -1 ]; _assert[0]=_assert[1];
}
string groupName = "Gr";
SALOMEDS::SObject_wrap aMeshSObj = ObjectToSObject( myCurrentStudy, theMeshesArray[i] );