X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FMEDCoupling%2FMEDCouplingMemArray.hxx;h=d70be4d273dfebab3911a6ea885c988e9500fb93;hb=9abc40a840f69fd7f07b356cd31876b64dc81e14;hp=b5f121415d1cfd75b4cc37c4a8cd26523917c89c;hpb=b307fa3ee9c6d9e08082e2ccc832b28a17fd6d2c;p=tools%2Fmedcoupling.git diff --git a/src/MEDCoupling/MEDCouplingMemArray.hxx b/src/MEDCoupling/MEDCouplingMemArray.hxx index b5f121415..d70be4d27 100755 --- a/src/MEDCoupling/MEDCouplingMemArray.hxx +++ b/src/MEDCoupling/MEDCouplingMemArray.hxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2021 CEA/DEN, EDF R&D +// Copyright (C) 2007-2022 CEA/DEN, EDF R&D // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public @@ -33,6 +33,7 @@ #include #include #include +#include namespace MEDCoupling { @@ -45,7 +46,7 @@ namespace MEDCoupling // -- WARNING this enum must be synchronized with MEDCouplingCommon.i file ! -- class PartDefinition; - + template class MEDCouplingPointer { @@ -197,6 +198,7 @@ namespace MEDCoupling static mcIdType GetNumberOfItemGivenBES(mcIdType begin, mcIdType end, mcIdType step, const std::string& msg); static mcIdType GetNumberOfItemGivenBESRelative(mcIdType begin, mcIdType end, mcIdType step, const std::string& msg); static mcIdType GetPosOfItemGivenBESRelativeNoThrow(mcIdType value, mcIdType begin, mcIdType end, mcIdType step); + static std::vector SplitStringInChuncks(const std::string st, std::size_t sz); static std::string GetVarNameFromInfo(const std::string& info); static std::string GetUnitFromInfo(const std::string& info); static std::string BuildInfoFromVarAndUnit(const std::string& var, const std::string& unit); @@ -337,6 +339,7 @@ namespace MEDCoupling public: MCAuto convertToDblArr() const; MCAuto convertToIntArr() const; + MCAuto convertToInt64Arr() const; MCAuto convertToFloatArr() const; void applyLin(T a, T b, std::size_t compoId); void applyLin(T a, T b); @@ -385,7 +388,7 @@ namespace MEDCoupling template void somethingEqual(const typename Traits::ArrayType *other); }; - + template class DataArrayTemplateFP : public DataArrayTemplateClassic { @@ -495,6 +498,7 @@ namespace MEDCoupling DataArrayDouble *trace() const; DataArrayDouble *deviator() const; DataArrayDouble *magnitude() const; + DataArrayDouble *minPerTuple() const; DataArrayDouble *maxPerTuple() const; DataArrayDouble *maxPerTupleWithCompoId(DataArrayIdType* &compoIdOfMaxPerTuple) const; DataArrayDouble *buildEuclidianDistanceDenseMatrix() const; @@ -542,6 +546,8 @@ namespace MEDCoupling template static void FindTupleIdsNearTuplesAlg(const BBTreePts& myTree, const double *pos, mcIdType nbOfTuples, double eps, DataArrayIdType *c, DataArrayIdType *cI); + private: + DataArrayDouble *operatePerTuple(std::function func) const; private: ~DataArrayDouble() { } DataArrayDouble() { } @@ -597,6 +603,7 @@ namespace MEDCoupling T checkUniformAndGuess() const; bool hasUniqueValues() const; void setSelectedComponents(const DataArrayType *a, const std::vector& compoIds); + DataArrayIdType *locateComponentId(const DataArrayType *valToSearchIntoTuples, const DataArrayIdType *tupleIdHint) const; DataArrayIdType *findIdsNotEqual(T val) const; DataArrayIdType *findIdsEqualTuple(const T *tupleBg, const T *tupleEnd) const; DataArrayIdType *findIdsEqualList(const T *valsBg, const T *valsEnd) const; @@ -646,6 +653,7 @@ namespace MEDCoupling DataArrayIdType *findRangeIdForEachTuple(const DataArrayType *ranges) const; DataArrayType *findIdInRangeForEachTuple(const DataArrayType *ranges) const; void sortEachPairToMakeALinkedList(); + void sortToHaveConsecutivePairs(); MCAuto fromLinkedListOfPairToList() const; DataArrayType *getDifferentValues() const; std::vector partitionByDifferentValues(std::vector& differentIds) const; @@ -699,7 +707,7 @@ namespace MEDCoupling protected: ~DataArrayDiscrete() { } }; - + template class DataArrayDiscreteSigned : public DataArrayDiscrete { @@ -830,7 +838,7 @@ namespace MEDCoupling DataArrayChar *buildEmptySpecializedDAChar() const; DataArrayByteIterator *iterator(); DataArrayByte *deepCopy() const; - DataArrayByte *copySorted(bool asc=true) const override { return this->copySortedImpl(asc); } + DataArrayByte *copySorted(bool asc=true) const override { return this->copySortedImpl(asc); } DataArrayByte *performCopyOrIncrRef(bool deepCopy) const; DataArrayByte *buildNewEmptyInstance() const { return DataArrayByte::New(); } char byteValue() const; @@ -860,7 +868,7 @@ namespace MEDCoupling DataArrayChar *buildEmptySpecializedDAChar() const; DataArrayAsciiCharIterator *iterator(); DataArrayAsciiChar *deepCopy() const; - DataArrayAsciiChar *copySorted(bool asc=true) const override { throw INTERP_KERNEL::Exception("DataArrayAsciiChar::copySorted : not implemented for DataArrayByte"); } + DataArrayAsciiChar *copySorted(bool asc=true) const override { (void)asc;throw INTERP_KERNEL::Exception("DataArrayAsciiChar::copySorted : not implemented for DataArrayByte"); } DataArrayAsciiChar *performCopyOrIncrRef(bool deepCopy) const; DataArrayAsciiChar *buildNewEmptyInstance() const { return DataArrayAsciiChar::New(); } char asciiCharValue() const; @@ -947,7 +955,7 @@ namespace MEDCoupling float floatValue() const; DataArrayFloat *buildDAFloat(std::size_t nbOfTuples, std::size_t nbOfCompo) const; }; - + class MEDCOUPLING_EXPORT DataArrayInt32Iterator : public DataArrayIterator { public: @@ -1012,7 +1020,7 @@ namespace MEDCoupling char *_pt; std::size_t _nb_of_compo; }; - + class DataArrayByteTuple; class MEDCOUPLING_EXPORT DataArrayByteIterator