Salome HOME
Add test for .mesh file format
[tools/medcoupling.git] / src / MEDCoupling_Swig / MEDCouplingMemArray.i
index a3f3ffb733046a58ae6e1cd4c690bc6eff5100f6..5da9355d8e99e1938a0b2647b4926c8500460545 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2021  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2024  CEA, EDF
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
 %newobject MEDCoupling::DataArrayInt32::occurenceRankInThis;
 %newobject MEDCoupling::DataArrayInt32::buildPermutationArr;
 %newobject MEDCoupling::DataArrayInt32::buildPermArrPerLevel;
+%newobject MEDCoupling::DataArrayInt32::locateComponentId;
 %newobject MEDCoupling::DataArrayInt32::getDifferentValues;
 %newobject MEDCoupling::DataArrayInt32::FindPermutationFromFirstToSecond;
 %newobject MEDCoupling::DataArrayInt32::FindPermutationFromFirstToSecondDuplicate;
 %newobject MEDCoupling::DataArrayInt64::occurenceRankInThis;
 %newobject MEDCoupling::DataArrayInt64::buildPermutationArr;
 %newobject MEDCoupling::DataArrayInt64::buildPermArrPerLevel;
+%newobject MEDCoupling::DataArrayInt64::locateComponentId;
 %newobject MEDCoupling::DataArrayInt64::getDifferentValues;
 %newobject MEDCoupling::DataArrayInt64::FindPermutationFromFirstToSecond;
 %newobject MEDCoupling::DataArrayInt64::FindPermutationFromFirstToSecondDuplicate;
 %newobject MEDCoupling::DataArrayDouble::deviator;
 %newobject MEDCoupling::DataArrayDouble::magnitude;
 %newobject MEDCoupling::DataArrayDouble::maxPerTuple;
+%newobject MEDCoupling::DataArrayDouble::minPerTuple;
 %newobject MEDCoupling::DataArrayDouble::sumPerTuple;
 %newobject MEDCoupling::DataArrayDouble::computeBBoxPerTuple;
 %newobject MEDCoupling::DataArrayDouble::buildEuclidianDistanceDenseMatrix;
 %newobject MEDCoupling::DataArrayPartDefinition::New;
 %newobject MEDCoupling::SlicePartDefinition::New;
 
+%newobject FromPyIntPtrToDataArrayByte;
+
 
 %feature("unref") DataArray "$this->decrRef();"
 %feature("unref") DataArrayDouble "$this->decrRef();"
@@ -365,7 +370,7 @@ typedef DataArrayInt64 DataArrayIdType;
   public:
     static MCAuto< MapII > New();
   };
-  
+
   class PartDefinition : public RefCountObject, public TimeLabel
   {
   public:
@@ -420,7 +425,7 @@ typedef DataArrayInt64 DataArrayIdType;
       {
         return self->getRepr();
       }
-      
+
       std::string __repr__() const
       {
         std::ostringstream oss; oss << "DataArrayPartDefinition C++ instance at " << self << "." << std::endl;
@@ -450,12 +455,12 @@ typedef DataArrayInt64 DataArrayIdType;
         self->getSlice(a,b,c);
         return PySlice_New(PyInt_FromLong(a),PyInt_FromLong(b),PyInt_FromLong(c));
       }
-      
+
       std::string __str__() const
       {
         return self->getRepr();
       }
-      
+
       std::string __repr__() const
       {
         std::ostringstream oss; oss << "SlicePartDefinition C++ instance at " << self << "." << std::endl;
@@ -466,7 +471,7 @@ typedef DataArrayInt64 DataArrayIdType;
   protected:
     virtual ~SlicePartDefinition();
   };
-  
+
   class DataArray : public RefCountObject, public TimeLabel
   {
   public:
@@ -526,7 +531,7 @@ typedef DataArrayInt64 DataArrayIdType;
           PyList_SetItem(ret,i,PyString_FromString(comps[i].c_str()));
         return ret;
       }
-      
+
       void copyPartOfStringInfoFrom(const DataArray& other, PyObject *li)
       {
         std::vector<std::size_t> tmp;
@@ -614,7 +619,7 @@ typedef DataArrayInt64 DataArrayIdType;
           }
         self->setContigPartOfSelectedValues(tupleIdStart,a,tuplesSelecPtr2);
       }
-      
+
       virtual void setContigPartOfSelectedValuesSlice(mcIdType tupleIdStart, PyObject *aBase, mcIdType bg, mcIdType end2, mcIdType step)
       {
         DataArray *a=CheckAndRetrieveDataArrayInstance(aBase,"DataArray::setContigPartOfSelectedValuesSlice : 2nd parameter \"aBase\" should be of type DataArray");
@@ -717,7 +722,7 @@ typedef DataArrayInt64 DataArrayIdType;
         GetIndicesOfSliceExplicitely(slic,&strt,&stp,&step,"DataArray::GetNumberOfItemGivenBESRelative (wrap) : the input slice is invalid !");
         return DataArray::GetNumberOfItemGivenBESRelative(ToIdType(strt),ToIdType(stp),ToIdType(step),"");
       }
-      
+
       static DataArray *Aggregate(PyObject *arrs)
       {
         std::vector<const DataArray *> tmp;
@@ -804,7 +809,7 @@ typedef DataArrayInt64 DataArrayIdType;
       {
         return DataArrayT_New<float>(elt0,nbOfTuples,elt2);
       }
-   
+
       DataArrayFloat(PyObject *elt0, PyObject *nbOfTuples=0, PyObject *elt2=0)
       {
         return MEDCoupling_DataArrayFloat_New__SWIG_1(elt0,nbOfTuples,elt2);
@@ -864,7 +869,7 @@ typedef DataArrayInt64 DataArrayIdType;
         PyTuple_SetItem(ret,1,PyString_FromString(ret1.c_str()));
         return ret;
       }
-      
+
       PyObject *__getitem__(PyObject *obj)
       {
         return DataArrayT__getitem<float>(self,obj);
@@ -874,7 +879,7 @@ typedef DataArrayInt64 DataArrayIdType;
       {
         return DataArrayT__setitem__<float>(self,obj,value);
       }
-      
+
       PyObject *___iadd___(PyObject *trueSelf, PyObject *obj)
       {
         return DataArrayT_iadd<float>(trueSelf,obj,self);
@@ -899,7 +904,7 @@ typedef DataArrayInt64 DataArrayIdType;
       {
         return DataArrayT_idiv<float>(trueSelf,obj,self);
       }
-      
+
 #ifdef WITH_NUMPY
       PyObject *toNumPyArray() // not const. It is not a bug !
       {
@@ -953,7 +958,7 @@ typedef DataArrayInt64 DataArrayIdType;
       {
         return self->buildDAFloat(1,self->getNumberOfCompo());
       }
-  
+
       /*PyObject *___imul___(PyObject *trueSelf, PyObject *obj)
       {
         MCAuto<DataArrayFloat> ret=self->buildDAFloat(1,self->getNumberOfCompo());
@@ -968,9 +973,9 @@ typedef DataArrayInt64 DataArrayIdType;
       }
     }
   };
-  
+
   class DataArrayDoubleIterator;
-  
+
   class DataArrayDouble : public DataArray
   {
   public:
@@ -1046,6 +1051,7 @@ typedef DataArrayInt64 DataArrayIdType;
     DataArrayDouble *deviator() const;
     DataArrayDouble *magnitude() const;
     DataArrayDouble *maxPerTuple() const;
+    DataArrayDouble *minPerTuple() const;
     DataArrayDouble *sumPerTuple() const;
     DataArrayDouble *buildEuclidianDistanceDenseMatrix() const;
     DataArrayDouble *buildEuclidianDistanceDenseMatrixWith(const DataArrayDouble *other) const;
@@ -1090,6 +1096,7 @@ typedef DataArrayInt64 DataArrayIdType;
     MCAuto<DataArrayIdType> findIdsLowerOrEqualTo(double val) const;
     MCAuto<DataArrayIdType> findIdsLowerThan(double val) const;
     MCAuto<DataArrayInt32> convertToIntArr() const;
+    MCAuto<DataArrayInt64> convertToInt64Arr() const;
     MCAuto<DataArrayDouble> selectPartDef(const PartDefinition* pd) const;
     MCAuto<DataArrayDouble> cumSum() const;
     MCAuto<DataArrayFloat> convertToFloatArr() const;
@@ -1104,7 +1111,7 @@ typedef DataArrayInt64 DataArrayIdType;
       {
         return DataArrayT_New<double>(elt0,nbOfTuples,elt2);
       }
-   
+
       DataArrayDouble(PyObject *elt0, PyObject *nbOfTuples=0, PyObject *elt2=0)
       {
         return MEDCoupling_DataArrayDouble_New__SWIG_1(elt0,nbOfTuples,elt2);
@@ -1161,7 +1168,7 @@ typedef DataArrayInt64 DataArrayIdType;
           PyTuple_SetItem(ret,0,ret0);
         }
         PyTuple_SetItem(ret,1,PyFloat_FromDouble(radius));
-        PyTuple_SetItem(ret,2,PyFloat_FromDouble(ang));        
+        PyTuple_SetItem(ret,2,PyFloat_FromDouble(ang));
         return ret;
       }
 
@@ -1169,7 +1176,7 @@ typedef DataArrayInt64 DataArrayIdType;
       {
         return self->iterator();
       }
-   
+
       void setValues(PyObject *li, PyObject *nbOfTuples=0, PyObject *nbOfComp=0)
       {
         const char *msg="MEDCoupling::DataArrayDouble::setValues : Available API are : \n-DataArrayDouble.setValues([1.,3.,4.])\n-DataArrayDouble.setValues([1.,3.,4.],3)\n-DataArrayDouble.setValues([1.,3.,4.,5.],2,2)\n-DataArrayDouble.setValues([(1.,1.7),(3.,3.7),(4.,4.7)])\n !";
@@ -1270,7 +1277,7 @@ typedef DataArrayInt64 DataArrayIdType;
         PyTuple_SetItem(ret,1,PyFloat_FromDouble(res1));
         return ret;
       }
-      
+
       DataArrayDouble *symmetry3DPlane(PyObject *point, PyObject *normalVector)
       {
         const char msg[]="Python wrap of DataArrayDouble::symmetry3DPlane : ";
@@ -1311,7 +1318,7 @@ typedef DataArrayInt64 DataArrayIdType;
         const double *vectorPtr=convertObjToPossibleCpp5_Safe(vector,sw,val2,a2,aa2,bb2,msg,1,3,true);
         return self->fromCartToCylGiven(coords,centerPtr,vectorPtr);
       }
-      
+
       DataArrayDouble *renumber(PyObject *li)
       {
         void *da=0;
@@ -1468,7 +1475,7 @@ typedef DataArrayInt64 DataArrayIdType;
         PyObject *ret=convertDblArrToPyListOfTuple<double>(tmp,2,ToIdType(nbOfCompo));
         return ret;
       }
-      
+
       PyObject *normMaxPerComponent() const
       {
         std::size_t nbOfCompo(self->getNumberOfComponents());
@@ -1537,7 +1544,7 @@ typedef DataArrayInt64 DataArrayIdType;
           PyList_SetItem(res,i,SWIG_NewPointerObj(SWIG_as_voidptr(retCpp[i].retn()),SWIGTYPE_p_MEDCoupling__DataArrayDouble, SWIG_POINTER_OWN | 0 ));
         return res;
       }
-   
+
       PyObject *getTuple(mcIdType tupleId)
       {
         std::size_t sz=self->getNumberOfComponents();
@@ -1692,7 +1699,7 @@ typedef DataArrayInt64 DataArrayIdType;
             throw INTERP_KERNEL::Exception(msg);
           }
       }
-   
+
       PyObject *___iadd___(PyObject *trueSelf, PyObject *obj)
       {
         return DataArrayT_iadd<double>(trueSelf,obj,self);
@@ -1945,7 +1952,7 @@ typedef DataArrayInt64 DataArrayIdType;
       {
         return DataArrayT_idiv<double>(trueSelf,obj,self);
       }
-   
+
       DataArrayDouble *__pow__(PyObject *obj)
       {
         const char msg[]="Unexpected situation in __pow__ !";
@@ -2055,7 +2062,7 @@ typedef DataArrayInt64 DataArrayIdType;
             throw INTERP_KERNEL::Exception(msg);
           }
       }
-   
+
       PyObject *computeTupleIdsNearTuples(const DataArrayDouble *other, double eps)
       {
         DataArrayIdType *c=0,*cI=0;
@@ -2131,7 +2138,7 @@ typedef DataArrayInt64 DataArrayIdType;
         Py_XINCREF(trueSelf);
         return trueSelf;
       }
-  
+
       PyObject *___isub___(PyObject *trueSelf, PyObject *obj)
       {
         MCAuto<DataArrayDouble> ret=self->buildDADouble(1,self->getNumberOfCompo());
@@ -2139,7 +2146,7 @@ typedef DataArrayInt64 DataArrayIdType;
         Py_XINCREF(trueSelf);
         return trueSelf;
       }
-  
+
       PyObject *___imul___(PyObject *trueSelf, PyObject *obj)
       {
         MCAuto<DataArrayDouble> ret=self->buildDADouble(1,self->getNumberOfCompo());
@@ -2439,7 +2446,7 @@ typedef DataArrayInt64 DataArrayIdType;
             throw INTERP_KERNEL::Exception("DataArrayChar::__len__ : Instance is NOT allocated !");
           }
       }
-      
+
       PyObject *isEqualIfNotWhy(const DataArrayChar& other) const
       {
         std::string ret1;
@@ -2451,7 +2458,7 @@ typedef DataArrayInt64 DataArrayIdType;
         PyTuple_SetItem(ret,1,PyString_FromString(ret1.c_str()));
         return ret;
       }
-      
+
       DataArrayChar *renumber(PyObject *li)
       {
         void *da=0;
@@ -2480,7 +2487,7 @@ typedef DataArrayInt64 DataArrayIdType;
             return self->renumber(da2->getConstPointer());
           }
       }
-      
+
       DataArrayChar *renumberR(PyObject *li)
       {
         void *da=0;
@@ -2509,7 +2516,7 @@ typedef DataArrayInt64 DataArrayIdType;
             return self->renumberR(da2->getConstPointer());
           }
       }
-      
+
       DataArrayChar *renumberAndReduce(PyObject *li, mcIdType newNbOfTuple)
       {
         void *da=0;
@@ -2538,14 +2545,14 @@ typedef DataArrayInt64 DataArrayIdType;
             return self->renumberAndReduce(da2->getConstPointer(),newNbOfTuple);
           }
       }
-      
+
       static DataArrayChar *Aggregate(PyObject *dachs)
       {
         std::vector<const MEDCoupling::DataArrayChar *> tmp;
         convertFromPyObjVectorOfObj<const MEDCoupling::DataArrayChar *>(dachs,SWIGTYPE_p_MEDCoupling__DataArrayChar,"DataArrayChar",tmp);
         return DataArrayChar::Aggregate(tmp);
       }
-      
+
       static DataArrayChar *Meld(PyObject *dachs)
       {
         std::vector<const MEDCoupling::DataArrayChar *> tmp;
@@ -2554,7 +2561,7 @@ typedef DataArrayInt64 DataArrayIdType;
       }
     }
   };
-  
+
   class DataArrayByteIterator;
 
   class DataArrayByte : public DataArrayChar
@@ -2664,14 +2671,14 @@ typedef DataArrayInt64 DataArrayIdType;
         {
           return MEDCoupling_DataArrayByte_New__SWIG_1(elt0,nbOfTuples,nbOfComp);
         }
-   
+
       std::string __repr__() const
       {
         std::ostringstream oss;
         self->reprQuickOverview(oss);
         return oss.str();
       }
-  
+
       int __int__() const
       {
         return (int) self->byteValue();
@@ -2686,7 +2693,7 @@ typedef DataArrayInt64 DataArrayIdType;
       {
         return (mcIdType)self->getIJ(tupleId,compoId);
       }
-      
+
       mcIdType getIJSafe(mcIdType tupleId, mcIdType compoId) const
       {
         return (mcIdType)self->getIJSafe(tupleId,compoId);
@@ -2704,7 +2711,7 @@ typedef DataArrayInt64 DataArrayIdType;
         mcIdType nbOfTuples=self->getNumberOfTuples();
         return convertCharArrToPyListOfTuple(vals,(int)nbOfComp,nbOfTuples);
       }
-   
+
       bool presenceOfTuple(PyObject *tupl) const
       {
         mcIdType sz=-1,sw=-1;
@@ -2826,7 +2833,7 @@ typedef DataArrayInt64 DataArrayIdType;
             return MEDCoupling_DataArrayByte_presenceOfTuple(self,obj);
           }
       }
-      
+
 #ifdef WITH_NUMPY
       PyObject *toNumPyArray() // not const. It is not a bug !
       {
@@ -3075,21 +3082,21 @@ typedef DataArrayInt64 DataArrayIdType;
       {
         return self->repr();
       }
-      
+
       char __int__() const
       {
         return self->byteValue();
       }
-      
+
       DataArrayByte *buildDAByte()
       {
         return self->buildDAByte(1,self->getNumberOfCompo());
       }
     }
   };
-  
+
   class DataArrayAsciiCharIterator;
-  
+
   class DataArrayAsciiChar : public DataArrayChar
   {
   public:
@@ -3242,7 +3249,7 @@ typedef DataArrayInt64 DataArrayIdType;
         tmp[0]=self->getIJ(tupleId,compoId);
         return std::string(tmp);
       }
-   
+
       std::string getIJSafe(mcIdType tupleId, mcIdType compoId) const
       {
         char tmp[2]; tmp[1]='\0';
@@ -3284,7 +3291,7 @@ typedef DataArrayInt64 DataArrayIdType;
         else
           throw INTERP_KERNEL::Exception("DataArrayAsciiChar::presenceOfTuple : only strings in input supported !");
       }
-   
+
       bool presenceOfValue(PyObject *vals) const
       {
         if(PyString_Check(vals))
@@ -3372,7 +3379,7 @@ typedef DataArrayInt64 DataArrayIdType;
         else
           throw INTERP_KERNEL::Exception("DataArrayAsciiChar::search : only strings in input supported !");
       }
-   
+
       PyObject *getTuple(mcIdType tupleId) const
       {
         std::size_t sz=self->getNumberOfComponents();
@@ -3691,17 +3698,28 @@ typedef DataArrayInt64 DataArrayIdType;
       {
         return self->repr();
       }
-      
+
       DataArrayAsciiChar *buildDAAsciiChar()
       {
         return self->buildDAAsciiChar(1,self->getNumberOfCompo());
       }
     }
   };
+
+}
+
+%inline
+{
+  MEDCoupling::DataArrayByte *FromPyIntPtrToDataArrayByte(mcPyPtrType intPtr)
+  {
+    MEDCoupling::DataArrayByte *ret(reinterpret_cast<MEDCoupling::DataArrayByte *>(intPtr));
+    return ret;
+  }
 }
 
 %include "DataArrayInt.i"
 
+
 %pythoncode %{
 def MEDCouplingStdReduceFunct(cls,params):
     a,b=params