X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2FSMESH_I%2FSMESH_Gen_i.hxx;h=a0667465611147aab0f9b9af9bea00c3f6201736;hb=refs%2Ftags%2FV9_0_0;hp=53921ba6461aeb569e55cf72ae794b9fad957de6;hpb=bd7477efc255f965c479d88d1be1ee3dbf4aa760;p=modules%2Fsmesh.git diff --git a/src/SMESH_I/SMESH_Gen_i.hxx b/src/SMESH_I/SMESH_Gen_i.hxx index 53921ba64..a06674656 100644 --- a/src/SMESH_I/SMESH_Gen_i.hxx +++ b/src/SMESH_I/SMESH_Gen_i.hxx @@ -49,6 +49,7 @@ #include #include #include +#include #include #include @@ -61,56 +62,53 @@ class SALOME_LifeCycleCORBA; // ========================================================== class SMESH_I_EXPORT StudyContext { + typedef NCollection_DataMap< int, std::string > TInt2StringMap; + typedef NCollection_DataMap< int, int > TInt2IntMap; public: // constructor StudyContext() {} - // destructor - ~StudyContext() - { - mapIdToIOR.clear(); - mapIdToId.clear(); - } + // register object in the internal map and return its id int addObject( std::string theIOR ) { int nextId = getNextId(); - mapIdToIOR[ nextId ] = theIOR; + mapIdToIOR.Bind( nextId, theIOR ); return nextId; } // find the object id in the internal map by the IOR int findId( std::string theIOR ) { - std::map::iterator imap; + TInt2StringMap::iterator imap; for ( imap = mapIdToIOR.begin(); imap != mapIdToIOR.end(); ++imap ) { - if ( imap->second == theIOR ) - return imap->first; + if ( *imap == theIOR ) + return imap.Iterator().Key(); } return 0; } // get object's IOR by id std::string getIORbyId( const int theId ) { - if ( mapIdToIOR.find( theId ) != mapIdToIOR.end() ) - return mapIdToIOR[ theId ]; - return std::string( "" ); + if ( mapIdToIOR.IsBound( theId ) ) + return mapIdToIOR( theId ); + return std::string(); } // get object's IOR by old id std::string getIORbyOldId( const int theOldId ) { - if ( mapIdToId.find( theOldId ) != mapIdToId.end() ) - return getIORbyId( mapIdToId[ theOldId ] ); - return std::string( "" ); + if ( mapIdToId.IsBound( theOldId ) ) + return getIORbyId( mapIdToId( theOldId )); + return std::string(); } // maps old object id to the new one (used when restoring data) void mapOldToNew( const int oldId, const int newId ) { - mapIdToId[ oldId ] = newId; + mapIdToId.Bind( oldId, newId ); } // get old id by a new one int getOldId( const int newId ) { - std::map::iterator imap; + TInt2IntMap::iterator imap; for ( imap = mapIdToId.begin(); imap != mapIdToId.end(); ++imap ) { - if ( imap->second == newId ) - return imap->first; + if ( *imap == newId ) + return imap.Iterator().Key(); } return 0; } @@ -120,13 +118,13 @@ private: int getNextId() { int id = 1; - while( mapIdToIOR.find( id ) != mapIdToIOR.end() ) + while( mapIdToIOR.IsBound( id ) ) id++; return id; } - std::map mapIdToIOR; // persistent-to-transient map - std::map mapIdToId; // to translate object from persistent to transient form + TInt2StringMap mapIdToIOR; // persistent-to-transient map + TInt2IntMap mapIdToId; // to translate object from persistent to transient form }; // =========================================================== @@ -157,9 +155,9 @@ public: static SALOMEDS::SObject_ptr ObjectToSObject(CORBA::Object_ptr theObject); // Get the SALOMEDS::Study from naming service static SALOMEDS::Study_ptr getStudyServant(); - // Get GEOM Object correspoding to TopoDS_Shape + // Get GEOM Object corresponding to TopoDS_Shape GEOM::GEOM_Object_ptr ShapeToGeomObject (const TopoDS_Shape& theShape ); - // Get TopoDS_Shape correspoding to GEOM_Object + // Get TopoDS_Shape corresponding to GEOM_Object TopoDS_Shape GeomObjectToShape(GEOM::GEOM_Object_ptr theGeomObject); // Default constructor @@ -328,7 +326,7 @@ public: SMESH::long_array& theShapesId ) throw ( SALOME::SALOME_Exception ); - // Returns errors of hypotheses definintion + // Returns errors of hypotheses definition SMESH::algo_error_array* GetAlgoState( SMESH::SMESH_Mesh_ptr theMesh, GEOM::GEOM_Object_ptr theSubObject ) throw ( SALOME::SALOME_Exception ); @@ -383,9 +381,14 @@ public: CORBA::Double mergeTolerance) throw ( SALOME::SALOME_Exception ); + // Get version of MED format being used. + char* GetMEDFileVersion(); + // Get MED version of the file by its name - CORBA::Boolean GetMEDVersion(const char* theFileName, - SMESH::MED_VERSION& theVersion); + char* GetMEDVersion(const char* theFileName); + + // Check compatibility of file with MED format being used. + CORBA::Boolean CheckCompatibility(const char* theFileName); // Get names of meshes defined in file with the specified name SMESH::string_array* GetMeshNames(const char* theFileName); @@ -560,7 +563,7 @@ public: // Return an object that previously had an oldID template - typename TInterface::_var_type GetObjectByOldId( const int oldID ) + typename TInterface::_var_type GetObjectByOldId( const int oldID ) { if ( myStudyContext ) { std::string ior = myStudyContext->getIORbyOldId( oldID );