Salome HOME
PAL16760 - MED file information
authoreap <eap@opencascade.com>
Fri, 30 May 2008 09:26:48 +0000 (09:26 +0000)
committereap <eap@opencascade.com>
Fri, 30 May 2008 09:26:48 +0000 (09:26 +0000)
    store MedFileInfo instead of file name in order not to open med
    file every time GetMedFileInfo() is called, which happens at every
    invoking pop-up of mesh.

src/SMESH_I/SMESH_Mesh_i.cxx
src/SMESH_I/SMESH_Mesh_i.hxx

index e844e24aeee6baca5fc006e891fd400331dd2626..a58c5ad0ecca3e6f7e28eb59132232908157f596 100644 (file)
@@ -258,9 +258,18 @@ SMESH_Mesh_i::ImportMEDFile( const char* theFileName, const char* theMeshName )
     THROW_SALOME_CORBA_EXCEPTION("ImportMEDFile(): unknown exception", SALOME::BAD_PARAM);
   }
 
-  myFile = theFileName;
   CreateGroupServants();
 
+  int major, minor, release;
+  if( !MED::getMEDVersion( theFileName, major, minor, release ) )
+    major = minor = release = -1;
+  myFileInfo           = new SALOME_MED::MedFileInfo();
+  myFileInfo->fileName = theFileName;
+  myFileInfo->fileSize = 0;
+  myFileInfo->major    = major;
+  myFileInfo->minor    = minor;
+  myFileInfo->release  = release;
+
   return ConvertDriverMEDReadStatus(status);
 }
 
@@ -2504,22 +2513,14 @@ SMESH::ListOfGroups* SMESH_Mesh_i::GetGroups(const list<int>& groupIDs) const
  * \brief Return information about imported file
  */
 //=============================================================================
+
 SALOME_MED::MedFileInfo* SMESH_Mesh_i::GetMEDFileInfo()
 {
-  SALOME_MED::MedFileInfo_var res = new SALOME_MED::MedFileInfo();
-
-  const char* name = myFile.c_str();
-  res->fileName = name;
-  res->fileSize = 0;//myFileInfo.size();
-  int major, minor, release;
-  if( !MED::getMEDVersion( name, major, minor, release ) )
-  {
-    major = -1;
-    minor = -1;
-    release = -1;
+  SALOME_MED::MedFileInfo_var res( myFileInfo );
+  if ( !res.operator->() ) {
+    res = new SALOME_MED::MedFileInfo;
+    res->fileName = "";
+    res->fileSize = res->major = res->minor = res->release = -1;
   }
-  res->major = major;
-  res->minor = minor;
-  res->release = release;
   return res._retn();
 }
index f149e0093ed774f377910f7f0d4920ddc9161a8f..242548369526f30d317b76ba3eb6603e078c1557 100644 (file)
@@ -459,7 +459,7 @@ private:
   map<int, SMESH::SMESH_subMesh_ptr>    _mapSubMeshIor;
   map<int, SMESH::SMESH_GroupBase_ptr>  _mapGroups;
   map<int, SMESH::SMESH_Hypothesis_ptr> _mapHypo;
-  string myFile;
+  SALOME_MED::MedFileInfo_var myFileInfo;
 };
 
 #endif