]> SALOME platform Git repositories - tools/medcoupling.git/commitdiff
Salome HOME
*** empty log message *** MCPortF41108
authorageay <ageay>
Wed, 10 Aug 2011 10:58:06 +0000 (10:58 +0000)
committerageay <ageay>
Wed, 10 Aug 2011 10:58:06 +0000 (10:58 +0000)
src/MEDLoader/MEDFileMesh.cxx
src/MEDLoader/MEDFileMesh.hxx
src/MEDLoader/Swig/MEDLoader.i
src/MEDLoader/Swig/MEDLoaderTest3.py

index 8f11c7819e3c2198c1c3d2c7f8e98321948983c2..daddc8bdce88ee471d3a7db917342d36ac7e1236 100644 (file)
@@ -2216,6 +2216,26 @@ MEDFileMesh *MEDFileMeshes::getMeshAtPos(int i) const throw(INTERP_KERNEL::Excep
   return _meshes[i]->getOneTimeStep();
 }
 
+std::vector<std::string> MEDFileMeshes::getMeshesNames() const throw(INTERP_KERNEL::Exception)
+{
+  std::vector<std::string> ret(_meshes.size());
+  int i=0;
+  for(std::vector< MEDCouplingAutoRefCountObjectPtr<MEDFileMeshMultiTS> >::const_iterator it=_meshes.begin();it!=_meshes.end();it++,i++)
+    {
+      const MEDFileMeshMultiTS *f=(*it);
+      if(f)
+        {
+          ret[i]=f->getName();
+        }
+      else
+        {
+          std::ostringstream oss; oss << "MEDFileMeshes::getMeshesNames : At rank #" << i << " mesh is not defined !";
+          throw INTERP_KERNEL::Exception(oss.str().c_str());
+        }
+    }
+  return ret;
+}
+
 void MEDFileMeshes::resize(int newSize) throw(INTERP_KERNEL::Exception)
 {
   _meshes.resize(newSize);
index 8fc0566290e1c554e7087423fd6e7cf9ccc83b29..aed9e9c685914fc97e5f882f09777bb6a25e14c7 100644 (file)
@@ -262,6 +262,7 @@ namespace ParaMEDMEM
     void write(const char *fileName, int mode) const throw(INTERP_KERNEL::Exception);
     int getNumberOfMeshes() const throw(INTERP_KERNEL::Exception);
     MEDFileMesh *getMeshAtPos(int i) const throw(INTERP_KERNEL::Exception);
+    std::vector<std::string> getMeshesNames() const throw(INTERP_KERNEL::Exception);
     //
     void resize(int newSize) throw(INTERP_KERNEL::Exception);
     void pushMesh(MEDFileMesh *mesh) throw(INTERP_KERNEL::Exception);
index 74cb1ce5828cd82c8800ec1330a9b33d91d21a35..c79f641842c491b9b6fd8bc3099084e50e4ad088 100644 (file)
@@ -91,6 +91,8 @@ using namespace ParaMEDMEM;
 %newobject ParaMEDMEM::MEDFileField1TS::getFieldAtLevelOld;
 
 %newobject ParaMEDMEM::MEDFileData::New;
+%newobject ParaMEDMEM::MEDFileData::getMeshes;
+%newobject ParaMEDMEM::MEDFileData::getFields;
 
 %feature("unref") MEDFileMesh "$this->decrRef();"
 %feature("unref") MEDFileUMesh "$this->decrRef();"
@@ -100,6 +102,7 @@ using namespace ParaMEDMEM;
 %feature("unref") MEDFileField1TS "$this->decrRef();"
 %feature("unref") MEDFileFieldMultiTS "$this->decrRef();"
 %feature("unref") MEDFileFields "$this->decrRef();"
+%feature("unref") MEDFileData "$this->decrRef();"
 
 class MEDLoader
 {
@@ -503,6 +506,7 @@ namespace ParaMEDMEM
     static MEDFileMeshes *New(const char *fileName) throw(INTERP_KERNEL::Exception);
     void write(const char *fileName, int mode) const throw(INTERP_KERNEL::Exception);
     int getNumberOfMeshes() const throw(INTERP_KERNEL::Exception);
+    std::vector<std::string> getMeshesNames() const throw(INTERP_KERNEL::Exception);
     //
     void resize(int newSize) throw(INTERP_KERNEL::Exception);
     void pushMesh(MEDFileMesh *mesh) throw(INTERP_KERNEL::Exception);
@@ -673,13 +677,29 @@ namespace ParaMEDMEM
   public:
     static MEDFileData *New(const char *fileName) throw(INTERP_KERNEL::Exception);
     static MEDFileData *New();
-    MEDFileFields *getFields() const;
-    MEDFileMeshes *getMeshes() const;
     void setFields(MEDFileFields *fields) throw(INTERP_KERNEL::Exception);
     void setMeshes(MEDFileMeshes *meshes) throw(INTERP_KERNEL::Exception);
     int getNumberOfFields() const throw(INTERP_KERNEL::Exception);
     int getNumberOfMeshes() const throw(INTERP_KERNEL::Exception);
     //
     void write(const char *fileName, int mode) const throw(INTERP_KERNEL::Exception);
+    %extend
+       {
+         MEDFileMeshes *getMeshes() const
+         {
+           MEDFileMeshes *ret=self->getMeshes();
+           if(ret)
+             ret->incrRef();
+           return ret;
+         }
+
+         MEDFileFields *getFields() const
+         {
+           MEDFileFields *ret=self->getFields();
+           if(ret)
+             ret->incrRef();
+           return ret;
+         }
+       }
   };
 }
index 59dededdafef69e53a60fee1ddd9886589a5a3aa..1cb70ef9cea01e5400504c25530e30c4a9062641 100644 (file)
@@ -504,6 +504,7 @@ class MEDLoaderTest(unittest.TestCase):
         mmm2=MEDFileMeshMultiTS.New() ; mmm2.setOneTimeStep(mm2)
         ms=MEDFileMeshes.New(); ms.setMeshAtPos(0,mm1) ; ms.setMeshAtPos(1,mm2)
         d.setMeshes(ms)
+        self.assertEqual(('1DMesh_1', '2DCurveMesh_1'),d.getMeshes().getMeshesNames())
         #
         ff1=MEDFileFieldMultiTS.New()
         ff21=MEDFileFieldMultiTS.New()