Salome HOME
Fix Python dump of ExportPartToMED()
[modules/smesh.git] / src / SMESH_I / SMESH_Gen_i.hxx
index b67e4f1dda6a4028d0a553594805a2382ce78be8..21f55355e872ef23cfced32efb58fe5750dc2458 100644 (file)
@@ -49,6 +49,7 @@
 #include <TCollection_AsciiString.hxx>
 #include <Resource_DataMapOfAsciiStringAsciiString.hxx>
 #include <TColStd_HSequenceOfAsciiString.hxx>
+#include <NCollection_DataMap.hxx>
 
 #include <map>
 #include <sstream>
@@ -57,76 +58,36 @@ class SMESH_Mesh_i;
 class SALOME_LifeCycleCORBA;
 
 // ===========================================================
-// Study context - stores study-connected objects references
+// Study context - store study-connected objects references
 // ==========================================================
 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;
-    return nextId;
-  }
+  int         addObject( const std::string& theIOR );
   // find the object id in the internal map by the IOR
-  int findId( std::string theIOR )
-  {
-    std::map<int, std::string>::iterator imap;
-    for ( imap = mapIdToIOR.begin(); imap != mapIdToIOR.end(); ++imap ) {
-      if ( imap->second == theIOR )
-        return imap->first;
-    }
-    return 0;
-  }
+  int         findId( const std::string& theIOR );
   // get object's IOR by id
-  std::string getIORbyId( const int theId )
-  {
-    if ( mapIdToIOR.find( theId ) != mapIdToIOR.end() )
-      return mapIdToIOR[ theId ];
-    return std::string( "" );
-  }
+  std::string getIORbyId( const int theId );
   // 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( "" );
-  }
+  std::string getIORbyOldId( const int theOldId );
   // maps old object id to the new one (used when restoring data)
-  void mapOldToNew( const int oldId, const int newId ) {
-    mapIdToId[ oldId ] = newId;
-  }
+  void        mapOldToNew( const int oldId, const int newId );
   // get old id by a new one
-  int getOldId( const int newId ) {
-    std::map<int, int>::iterator imap;
-    for ( imap = mapIdToId.begin(); imap != mapIdToId.end(); ++imap ) {
-      if ( imap->second == newId )
-        return imap->first;
-    }
-    return 0;
-  }
+  int         getOldId( const int newId );
+  // clear data
+  void        Clear();
 
 private:
   // get next free object identifier
-  int getNextId()
-  {
-    int id = 1;
-    while( mapIdToIOR.find( id ) != mapIdToIOR.end() )
-      id++;
-    return id;
-  }
+  int         getNextId() { return mapIdToIOR.Extent() + 1; }
 
-  std::map<int, std::string> mapIdToIOR; // persistent-to-transient map
-  std::map<int, int>         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
 };
 
 // ===========================================================
@@ -156,10 +117,10 @@ public:
   // Get the SALOMEDS::SObject corresponding to a CORBA object
   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
+  static SALOMEDS::Study_var getStudyServant();
+  // 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 +289,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 );
@@ -389,9 +350,12 @@ public:
   // Get MED version of the file by its name
   char* GetMEDVersion(const char* theFileName);
 
-  // Check compatibility of file with MED format being used.
+  // Check compatibility of file with MED format being used, read only.
   CORBA::Boolean CheckCompatibility(const char* theFileName);
 
+  // Check compatibility of file with MED format being used, for append on write.
+  CORBA::Boolean CheckWriteCompatibility(const char* theFileName);
+
   // Get names of meshes defined in file with the specified name
   SMESH::string_array* GetMeshNames(const char* theFileName);
 
@@ -539,6 +503,7 @@ public:
                                       SMESH::SMESH_GroupBase_ptr theGroup,
                                       GEOM::GEOM_Object_ptr  theShapeObject,
                                       const char*            theName = 0);
+  void UpdateIcons(SMESH::SMESH_Mesh_ptr theMesh);
   bool AddHypothesisToShape(SMESH::SMESH_Mesh_ptr       theMesh,
                             GEOM::GEOM_Object_ptr       theShapeObject,
                             SMESH::SMESH_Hypothesis_ptr theHyp);
@@ -565,7 +530,7 @@ public:
 
   // Return an object that previously had an oldID
   template<class TInterface>
-  typename TInterface::_var_type GetObjectByOldId( const int oldID )
+    typename TInterface::_var_type GetObjectByOldId( const int oldID )
   {
     if ( myStudyContext ) {
       std::string ior = myStudyContext->getIORbyOldId( oldID );