]> SALOME platform Git repositories - tools/medcoupling.git/commitdiff
Salome HOME
MED4.1 is ready agy/fast_multi_ts_2
authorAnthony Geay <anthony.geay@edf.fr>
Thu, 12 Mar 2020 10:27:59 +0000 (11:27 +0100)
committerAnthony Geay <anthony.geay@edf.fr>
Thu, 12 Mar 2020 10:27:59 +0000 (11:27 +0100)
src/MEDCoupling_Swig/MEDCouplingMemArray.i
src/MEDLoader/MEDFileEntities.cxx
src/MEDLoader/MEDFileEntities.hxx
src/MEDLoader/MEDFileFieldMultiTS.cxx

index 4c988d334bcfea69ae7b5e4e0fbdb6c6604824f1..6d7020b4bcfd15101f93955350ac92b992b34594 100644 (file)
@@ -674,7 +674,8 @@ typedef DataArrayInt64 DataArrayIdType;
         GetIndicesOfSliceExplicitely(slic,&strt,&stp,&step,"DataArray::GetSlice (wrap) : the input slice is invalid !");
         mcIdType a,b;
         DataArray::GetSlice(ToIdType(strt),ToIdType(stp),ToIdType(step),sliceId,nbOfSlices,a,b);
-        return PySlice_New(PyInt_FromLong(a),PyInt_FromLong(b),PyInt_FromLong(step));
+        AutoPyPtr ap(PyInt_FromLong(a)),bp(PyInt_FromLong(b)),stepp(PyInt_FromLong(step));
+        return PySlice_New(ap,bp,stepp);
       }
 
       PyObject *getSlice(PyObject *slic, mcIdType sliceId, mcIdType nbOfSlices) const
@@ -685,7 +686,8 @@ typedef DataArrayInt64 DataArrayIdType;
         GetIndicesOfSlice(slic,self->getNumberOfTuples(),&strt,&stp,&step,"DataArray::getSlice (wrap) : the input slice is invalid !");
         mcIdType a,b;
         DataArray::GetSlice(ToIdType(strt),ToIdType(stp),ToIdType(step),sliceId,nbOfSlices,a,b);
-        return PySlice_New(PyInt_FromLong(a),PyInt_FromLong(b),PyInt_FromLong(step));
+        AutoPyPtr ap(PyInt_FromLong(a)),bp(PyInt_FromLong(b)),stepp(PyInt_FromLong(step));
+        return PySlice_New(ap,bp,stepp);
       }
 
       static mcIdType GetNumberOfItemGivenBES(PyObject *slic)
index b6e96938c158806279a324f5c22cd7d6fb975314..dd8398d343a2503da6dbcc6de371304eaf26e376 100644 (file)
@@ -54,6 +54,11 @@ bool MEDFileStaticEntities::areAllStaticTypesPresent() const
   return false;
 }
 
+bool MEDFileStaticEntities::areAllStaticPresentAndNoDyn() const
+{
+  return false;
+}
+
 //////////////
 
 
@@ -67,6 +72,11 @@ bool MEDFileAllStaticEntites::areAllStaticTypesPresent() const
   return true;
 }
 
+bool MEDFileAllStaticEntites::areAllStaticPresentAndNoDyn() const
+{
+  return true;
+}
+
 //////////////
 
 MEDFileAllStaticEntitiesPlusDyn::MEDFileAllStaticEntitiesPlusDyn(const MEDFileStructureElements *se):_se(se)
@@ -85,6 +95,11 @@ bool MEDFileAllStaticEntitiesPlusDyn::areAllStaticTypesPresent() const
   return true;
 }
 
+bool MEDFileAllStaticEntitiesPlusDyn::areAllStaticPresentAndNoDyn() const
+{
+  return false;
+}
+
 const MEDFileStructureElement *MEDFileAllStaticEntitiesPlusDyn::getWithGT(int idGT) const
 {
   return _se->getWithGT(idGT);
index 7b7bcbcfcb382a16cd1b628e018a18ff76e2e449..6192660dab5dac77eaf7a7c7220b5efc56b17e1d 100644 (file)
@@ -37,6 +37,7 @@ namespace MEDCoupling
     static MEDFileEntities *BuildFrom(const MEDFileStructureElements& se);
     virtual std::vector<int> getDynGTAvail() const = 0;
     virtual bool areAllStaticTypesPresent() const = 0;
+    virtual bool areAllStaticPresentAndNoDyn() const = 0;
     virtual ~MEDFileEntities();
   };
 
@@ -47,6 +48,7 @@ namespace MEDCoupling
     const std::vector< std::pair<TypeOfField,INTERP_KERNEL::NormalizedCellType> >& getEntries() const { return _entities; }
     std::vector<int> getDynGTAvail() const;
     bool areAllStaticTypesPresent() const;
+    bool areAllStaticPresentAndNoDyn() const override;
   private:
     std::vector< std::pair<TypeOfField,INTERP_KERNEL::NormalizedCellType> > _entities;
   };
@@ -57,6 +59,7 @@ namespace MEDCoupling
     MEDFileAllStaticEntites() { }
     std::vector<int> getDynGTAvail() const;
     bool areAllStaticTypesPresent() const;
+    bool areAllStaticPresentAndNoDyn() const override;
   };
 
   class MEDLOADER_EXPORT MEDFileAllStaticEntitiesPlusDyn : public MEDFileEntities
@@ -65,6 +68,7 @@ namespace MEDCoupling
     MEDFileAllStaticEntitiesPlusDyn(const MEDFileStructureElements *se);
     std::vector<int> getDynGTAvail() const;
     bool areAllStaticTypesPresent() const;
+    bool areAllStaticPresentAndNoDyn() const override;
     const MEDFileStructureElement *getWithGT(int idGT) const;
     const MEDFileUMesh *getSupMeshWithName(const std::string& name) const;
   private:
index 087f8cd85661e5cea8f1bb7f7faafd35d0503ae3..00c118f746d213368026f7986b89a60a7c7fc954 100644 (file)
@@ -490,7 +490,7 @@ void MEDFileAnyTypeFieldMultiTSWithoutSDA::loadStructureOrStructureAndBigArraysR
   INTERP_KERNEL::AutoCppPtr<MEDFileEntities> entitiesFast;
   const MEDFileEntities *entitiesForSubInstances(entities);
   MEDFileCapability mfcap(fid);
-  if(!entities && mfcap.isFastReader())
+  if( ( !entities || entities->areAllStaticPresentAndNoDyn() ) && mfcap.isFastReader())
     {// no entities
       int nentitype(MEDfieldnEntityType(fid,_name.c_str(),MED_ALL_DT,MED_ALL_IT));
       INTERP_KERNEL::AutoPtr<med_entity_type> types(new med_entity_type[nentitype]);