X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FMEDCoupling%2FMEDCouplingMemArray.cxx;h=1c20ae77a9f198dd182c98c20607c6e5faa5e5a2;hb=ac1df6b0ba8b337555fb39610c89f678d889580d;hp=7eb1baf143934d7990dc86bc0097a3a6c2443f1c;hpb=90b804f439579ee0791a35032522678ca9f3fb17;p=tools%2Fmedcoupling.git diff --git a/src/MEDCoupling/MEDCouplingMemArray.cxx b/src/MEDCoupling/MEDCouplingMemArray.cxx index 7eb1baf14..1c20ae77a 100644 --- a/src/MEDCoupling/MEDCouplingMemArray.cxx +++ b/src/MEDCoupling/MEDCouplingMemArray.cxx @@ -25,6 +25,12 @@ #include "InterpKernelAutoPtr.hxx" #include "InterpKernelExprParser.hxx" +#include "InterpKernelAutoPtr.hxx" +#include "InterpKernelGeo2DEdgeArcCircle.hxx" +#include "InterpKernelAutoPtr.hxx" +#include "InterpKernelGeo2DNode.hxx" +#include "InterpKernelGeo2DEdgeLin.hxx" + #include #include #include @@ -196,12 +202,12 @@ void DataArray::copyPartOfStringInfoFrom(const DataArray& other, const std::vect void DataArray::copyPartOfStringInfoFrom2(const std::vector& compoIds, const DataArray& other) { - int nbOfCompo=getNumberOfComponents(); + std::size_t nbOfCompo(getNumberOfComponents()); std::size_t partOfCompoToSet=compoIds.size(); - if((int)partOfCompoToSet!=other.getNumberOfComponents()) + if(partOfCompoToSet!=other.getNumberOfComponents()) throw INTERP_KERNEL::Exception("Given compoIds has not the same size as number of components of given array !"); for(std::size_t i=0;i=nbOfCompo || compoIds[i]<0) + if(compoIds[i]>=(int)nbOfCompo || compoIds[i]<0) { std::ostringstream oss; oss << "Specified component id is out of range (" << compoIds[i] << ") compared with nb of actual components (" << nbOfCompo << ")"; throw INTERP_KERNEL::Exception(oss.str().c_str()); @@ -273,7 +279,7 @@ std::string DataArray::cppRepr(const std::string& varName) const */ void DataArray::setInfoOnComponents(const std::vector& info) { - if(getNumberOfComponents()!=(int)info.size()) + if(getNumberOfComponents()!=info.size()) { std::ostringstream oss; oss << "DataArray::setInfoOnComponents : input is of size " << info.size() << " whereas number of components is equal to " << getNumberOfComponents() << " !"; throw INTERP_KERNEL::Exception(oss.str().c_str()); @@ -556,7 +562,7 @@ void DataArray::setInfoOnComponent(int i, const std::string& info) */ void DataArray::setInfoAndChangeNbOfCompo(const std::vector& info) { - if(getNumberOfComponents()!=(int)info.size()) + if(getNumberOfComponents()!=info.size()) { if(!isAllocated()) _info_on_compo=info; @@ -572,7 +578,7 @@ void DataArray::setInfoAndChangeNbOfCompo(const std::vector& info) void DataArray::checkNbOfTuples(int nbOfTuples, const std::string& msg) const { - if(getNumberOfTuples()!=nbOfTuples) + if((int)getNumberOfTuples()!=nbOfTuples) { std::ostringstream oss; oss << msg << " : mismatch number of tuples : expected " << nbOfTuples << " having " << getNumberOfTuples() << " !"; throw INTERP_KERNEL::Exception(oss.str().c_str()); @@ -581,7 +587,7 @@ void DataArray::checkNbOfTuples(int nbOfTuples, const std::string& msg) const void DataArray::checkNbOfComps(int nbOfCompo, const std::string& msg) const { - if(getNumberOfComponents()!=nbOfCompo) + if((int)getNumberOfComponents()!=nbOfCompo) { std::ostringstream oss; oss << msg << " : mismatch number of components : expected " << nbOfCompo << " having " << getNumberOfComponents() << " !"; throw INTERP_KERNEL::Exception(oss.str().c_str()); @@ -631,7 +637,7 @@ void DataArray::CheckValueInRange(int ref, int value, const std::string& msg) /*! * This method checks that [\b start, \b end) is compliant with ref length \b value. - * typicaly start in [0,\b value) and end in [0,\b value). If value==start and start==end, it is supported. + * typically start in [0,\b value) and end in [0,\b value). If value==start and start==end, it is supported. */ void DataArray::CheckValueInRangeEx(int value, int start, int end, const std::string& msg) { @@ -809,16 +815,6 @@ DataArrayDouble *DataArrayDouble::deepCopy() const return new DataArrayDouble(*this); } -/*! - * Assign zero to all values in \a this array. To know more on filling arrays see - * \ref MEDCouplingArrayFill. - * \throw If \a this is not allocated. - */ -void DataArrayDouble::fillWithZero() -{ - fillWithValue(0.); -} - /*! * Checks that \a this array is consistently **increasing** or **decreasing** in value, * with at least absolute difference value of |\a eps| at each step. @@ -906,18 +902,6 @@ std::string DataArrayDouble::reprZip() const return ret.str(); } -/*! - * This method is close to repr method except that when \a this has more than 1000 tuples, all tuples are not - * printed out to avoid to consume too much space in interpretor. - * \sa repr - */ -std::string DataArrayDouble::reprNotTooLong() const -{ - std::ostringstream ret; - reprNotTooLongStream(ret); - return ret.str(); -} - void DataArrayDouble::writeVTK(std::ostream& ofs, int indent, const std::string& nameInFile, DataArrayByte *byteArr) const { static const char SPACE[4]={' ',' ',' ',' '}; @@ -955,45 +939,6 @@ void DataArrayDouble::writeVTK(std::ostream& ofs, int indent, const std::string& ofs << std::endl << idt << "\n"; } -void DataArrayDouble::reprStream(std::ostream& stream) const -{ - stream << "Name of double array : \"" << _name << "\"\n"; - reprWithoutNameStream(stream); -} - -void DataArrayDouble::reprZipStream(std::ostream& stream) const -{ - stream << "Name of double array : \"" << _name << "\"\n"; - reprZipWithoutNameStream(stream); -} - -void DataArrayDouble::reprNotTooLongStream(std::ostream& stream) const -{ - stream << "Name of double array : \"" << _name << "\"\n"; - reprNotTooLongWithoutNameStream(stream); -} - -void DataArrayDouble::reprWithoutNameStream(std::ostream& stream) const -{ - DataArray::reprWithoutNameStream(stream); - stream.precision(17); - _mem.repr(getNumberOfComponents(),stream); -} - -void DataArrayDouble::reprZipWithoutNameStream(std::ostream& stream) const -{ - DataArray::reprWithoutNameStream(stream); - stream.precision(17); - _mem.reprZip(getNumberOfComponents(),stream); -} - -void DataArrayDouble::reprNotTooLongWithoutNameStream(std::ostream& stream) const -{ - DataArray::reprWithoutNameStream(stream); - stream.precision(17); - _mem.reprNotTooLong(getNumberOfComponents(),stream); -} - void DataArrayDouble::reprCppStream(const std::string& varName, std::ostream& stream) const { int nbTuples(getNumberOfTuples()),nbComp(getNumberOfComponents()); @@ -1246,7 +1191,7 @@ DataArrayInt *DataArrayDouble::findClosestTupleId(const DataArrayDouble *other) if(!other) throw INTERP_KERNEL::Exception("DataArrayDouble::findClosestTupleId : other instance is NULL !"); checkAllocated(); other->checkAllocated(); - int nbOfCompo=getNumberOfComponents(); + std::size_t nbOfCompo(getNumberOfComponents()); if(nbOfCompo!=other->getNumberOfComponents()) { std::ostringstream oss; oss << "DataArrayDouble::findClosestTupleId : number of components in this is " << nbOfCompo; @@ -1309,7 +1254,7 @@ DataArrayInt *DataArrayDouble::computeNbOfInteractionsWith(const DataArrayDouble throw INTERP_KERNEL::Exception("DataArrayDouble::computeNbOfInteractionsWith : input array is NULL !"); if(!isAllocated() || !otherBBoxFrmt->isAllocated()) throw INTERP_KERNEL::Exception("DataArrayDouble::computeNbOfInteractionsWith : this and input array must be allocated !"); - int nbOfComp(getNumberOfComponents()),nbOfTuples(getNumberOfTuples()); + std::size_t nbOfComp(getNumberOfComponents()),nbOfTuples(getNumberOfTuples()); if(nbOfComp!=otherBBoxFrmt->getNumberOfComponents()) { std::ostringstream oss; oss << "DataArrayDouble::computeNbOfInteractionsWith : this number of components (" << nbOfComp << ") must be equal to the number of components of input array (" << otherBBoxFrmt->getNumberOfComponents() << ") !"; @@ -1328,21 +1273,21 @@ DataArrayInt *DataArrayDouble::computeNbOfInteractionsWith(const DataArrayDouble case 3: { BBTree<3,int> bbt(otherBBoxFrmt->begin(),0,0,otherBBoxFrmt->getNumberOfTuples(),eps); - for(int i=0;i bbt(otherBBoxFrmt->begin(),0,0,otherBBoxFrmt->getNumberOfTuples(),eps); - for(int i=0;i bbt(otherBBoxFrmt->begin(),0,0,otherBBoxFrmt->getNumberOfTuples(),eps); - for(int i=0;i::max() is returned. * \return double - the value of the minimum norm, i.e. * the minimal absolute value among values of \a this array (whatever its number of components). @@ -2102,7 +2047,7 @@ DataArrayDouble *DataArrayDouble::fromCartToCylGiven(const DataArrayDouble *coor throw INTERP_KERNEL::Exception("DataArrayDouble::fromCartToCylGiven : input coords are NULL !"); MCAuto ret(DataArrayDouble::New()); checkAllocated(); coords->checkAllocated(); - int nbOfComp(getNumberOfComponents()),nbTuples(getNumberOfTuples()); + std::size_t nbOfComp(getNumberOfComponents()),nbTuples(getNumberOfTuples()); if(nbOfComp!=3) throw INTERP_KERNEL::Exception("DataArrayDouble::fromCartToCylGiven : must be an array with exactly 3 components !"); if(coords->getNumberOfComponents()!=3) @@ -2405,28 +2350,6 @@ DataArrayDouble *DataArrayDouble::magnitude() const return ret; } -/*! - * Computes for each tuple the sum of number of components values in the tuple and return it. - * - * \return DataArrayDouble * - the new instance of DataArrayDouble containing the - * same number of tuples as \a this array and one component. - * The caller is to delete this result array using decrRef() as it is no more - * needed. - * \throw If \a this is not allocated. - */ -DataArrayDouble *DataArrayDouble::sumPerTuple() const -{ - checkAllocated(); - int nbOfComp(getNumberOfComponents()),nbOfTuple(getNumberOfTuples()); - MCAuto ret(DataArrayDouble::New()); - ret->alloc(nbOfTuple,1); - const double *src(getConstPointer()); - double *dest(ret->getPointer()); - for(int i=0;i n0(new INTERP_KERNEL::Node(pt[0],pt[1])),n1(new INTERP_KERNEL::Node(pt[2],pt[3])),n2(new INTERP_KERNEL::Node(pt[4],pt[5])); + { + INTERP_KERNEL::AutoCppPtr e1(new INTERP_KERNEL::EdgeLin(n0,n2)),e2(new INTERP_KERNEL::EdgeLin(n2,n1)); + INTERP_KERNEL::SegSegIntersector inters(*e1,*e2); + bool colinearity(inters.areColinears()); + if(colinearity) + throw INTERP_KERNEL::Exception("DataArrayDouble::asArcOfCircle : 3 points in this have been detected as colinear !"); + } + INTERP_KERNEL::AutoCppPtr ret(new INTERP_KERNEL::EdgeArcCircle(n0,n2,n1)); + const double *c(ret->getCenter()); + center[0]=c[0]; center[1]=c[1]; + radius=ret->getRadius(); + ang=ret->getAngle(); +} + /*! * Sorts value within every tuple of \a this array. * \param [in] asc - if \a true, the values are sorted in ascending order, else, @@ -3189,7 +3144,7 @@ DataArrayDouble *DataArrayDouble::Aggregate(const std::vector::const_iterator it=a.begin(); - int nbOfComp=(*it)->getNumberOfComponents(); + std::size_t nbOfComp((*it)->getNumberOfComponents()); int nbt=(*it++)->getNumberOfTuples(); for(int i=1;it!=a.end();it++,i++) { @@ -3228,21 +3183,20 @@ DataArrayDouble *DataArrayDouble::Dot(const DataArrayDouble *a1, const DataArray throw INTERP_KERNEL::Exception("DataArrayDouble::Dot : input DataArrayDouble instance is NULL !"); a1->checkAllocated(); a2->checkAllocated(); - int nbOfComp=a1->getNumberOfComponents(); + std::size_t nbOfComp(a1->getNumberOfComponents()); if(nbOfComp!=a2->getNumberOfComponents()) throw INTERP_KERNEL::Exception("Nb of components mismatch for array Dot !"); - int nbOfTuple=a1->getNumberOfTuples(); + std::size_t nbOfTuple(a1->getNumberOfTuples()); if(nbOfTuple!=a2->getNumberOfTuples()) throw INTERP_KERNEL::Exception("Nb of tuples mismatch for array Dot !"); DataArrayDouble *ret=DataArrayDouble::New(); ret->alloc(nbOfTuple,1); double *retPtr=ret->getPointer(); - const double *a1Ptr=a1->getConstPointer(); - const double *a2Ptr=a2->getConstPointer(); - for(int i=0;ibegin(),*a2Ptr(a2->begin()); + for(std::size_t i=0;igetNumberOfComponents(); + std::size_t nbOfComp(a1->getNumberOfComponents()); if(nbOfComp!=a2->getNumberOfComponents()) throw INTERP_KERNEL::Exception("Nb of components mismatch for array crossProduct !"); if(nbOfComp!=3) throw INTERP_KERNEL::Exception("Nb of components must be equal to 3 for array crossProduct !"); - int nbOfTuple=a1->getNumberOfTuples(); + std::size_t nbOfTuple(a1->getNumberOfTuples()); if(nbOfTuple!=a2->getNumberOfTuples()) throw INTERP_KERNEL::Exception("Nb of tuples mismatch for array crossProduct !"); DataArrayDouble *ret=DataArrayDouble::New(); ret->alloc(nbOfTuple,3); double *retPtr=ret->getPointer(); - const double *a1Ptr=a1->getConstPointer(); - const double *a2Ptr=a2->getConstPointer(); - for(int i=0;ibegin()),*a2Ptr(a2->begin()); + for(std::size_t i=0;igetNumberOfComponents(); + std::size_t nbOfComp(a1->getNumberOfComponents()); if(nbOfComp!=a2->getNumberOfComponents()) throw INTERP_KERNEL::Exception("Nb of components mismatch for array Max !"); - int nbOfTuple=a1->getNumberOfTuples(); + std::size_t nbOfTuple(a1->getNumberOfTuples()); if(nbOfTuple!=a2->getNumberOfTuples()) throw INTERP_KERNEL::Exception("Nb of tuples mismatch for array Max !"); - DataArrayDouble *ret=DataArrayDouble::New(); + MCAuto ret(DataArrayDouble::New()); ret->alloc(nbOfTuple,nbOfComp); - double *retPtr=ret->getPointer(); - const double *a1Ptr=a1->getConstPointer(); - const double *a2Ptr=a2->getConstPointer(); - int nbElem=nbOfTuple*nbOfComp; - for(int i=0;igetPointer()); + const double *a1Ptr(a1->begin()),*a2Ptr(a2->begin()); + std::size_t nbElem(nbOfTuple*nbOfComp); + for(std::size_t i=0;icopyStringInfoFrom(*a1); - return ret; + return ret.retn(); } /*! @@ -3347,22 +3299,21 @@ DataArrayDouble *DataArrayDouble::Min(const DataArrayDouble *a1, const DataArray { if(!a1 || !a2) throw INTERP_KERNEL::Exception("DataArrayDouble::Min : input DataArrayDouble instance is NULL !"); - int nbOfComp=a1->getNumberOfComponents(); + std::size_t nbOfComp(a1->getNumberOfComponents()); if(nbOfComp!=a2->getNumberOfComponents()) throw INTERP_KERNEL::Exception("Nb of components mismatch for array min !"); - int nbOfTuple=a1->getNumberOfTuples(); + std::size_t nbOfTuple(a1->getNumberOfTuples()); if(nbOfTuple!=a2->getNumberOfTuples()) throw INTERP_KERNEL::Exception("Nb of tuples mismatch for array min !"); - DataArrayDouble *ret=DataArrayDouble::New(); + MCAuto ret(DataArrayDouble::New()); ret->alloc(nbOfTuple,nbOfComp); - double *retPtr=ret->getPointer(); - const double *a1Ptr=a1->getConstPointer(); - const double *a2Ptr=a2->getConstPointer(); - int nbElem=nbOfTuple*nbOfComp; - for(int i=0;igetPointer()); + const double *a1Ptr(a1->begin()),*a2Ptr(a2->begin()); + std::size_t nbElem(nbOfTuple*nbOfComp); + for(std::size_t i=0;icopyStringInfoFrom(*a1); - return ret; + return ret.retn(); } /*! @@ -3747,35 +3698,6 @@ DataArrayInt32 *DataArrayInt32::deepCopy() const return new DataArrayInt32(*this); } -/*! - * Assign zero to all values in \a this array. To know more on filling arrays see - * \ref MEDCouplingArrayFill. - * \throw If \a this is not allocated. - */ -void DataArrayInt::fillWithZero() -{ - fillWithValue(0); -} - -/*! - * Set all values in \a this array so that the i-th element equals to \a init + i - * (i starts from zero). To know more on filling arrays see \ref MEDCouplingArrayFill. - * \param [in] init - value to assign to the first element of array. - * \throw If \a this->getNumberOfComponents() != 1 - * \throw If \a this is not allocated. - */ -void DataArrayInt::iota(int init) -{ - checkAllocated(); - if(getNumberOfComponents()!=1) - throw INTERP_KERNEL::Exception("DataArrayInt::iota : works only for arrays with only one component, you can call 'rearrange' method before !"); - int *ptr=getPointer(); - int ntuples=getNumberOfTuples(); - for(int i=0;i\n"; } -void DataArrayInt::reprStream(std::ostream& stream) const -{ - stream << "Name of int array : \"" << _name << "\"\n"; - reprWithoutNameStream(stream); -} - -void DataArrayInt::reprZipStream(std::ostream& stream) const -{ - stream << "Name of int array : \"" << _name << "\"\n"; - reprZipWithoutNameStream(stream); -} - -void DataArrayInt::reprNotTooLongStream(std::ostream& stream) const -{ - stream << "Name of int array : \"" << _name << "\"\n"; - reprNotTooLongWithoutNameStream(stream); -} - -void DataArrayInt::reprWithoutNameStream(std::ostream& stream) const -{ - DataArray::reprWithoutNameStream(stream); - _mem.repr(getNumberOfComponents(),stream); -} - -void DataArrayInt::reprZipWithoutNameStream(std::ostream& stream) const -{ - DataArray::reprWithoutNameStream(stream); - _mem.reprZip(getNumberOfComponents(),stream); -} - -void DataArrayInt::reprNotTooLongWithoutNameStream(std::ostream& stream) const -{ - DataArray::reprWithoutNameStream(stream); - stream.precision(17); - _mem.reprNotTooLong(getNumberOfComponents(),stream); -} - void DataArrayInt::reprCppStream(const std::string& varName, std::ostream& stream) const { int nbTuples=getNumberOfTuples(),nbComp=getNumberOfComponents(); @@ -4349,180 +4222,6 @@ MCAuto< MapKeyVal > DataArrayInt::invertArrayN2O2O2NOptimized() const return ret; } -/*! - * Computes for each tuple the sum of number of components values in the tuple and return it. - * - * \return DataArrayInt * - the new instance of DataArrayInt containing the - * same number of tuples as \a this array and one component. - * The caller is to delete this result array using decrRef() as it is no more - * needed. - * \throw If \a this is not allocated. - */ -DataArrayInt *DataArrayInt::sumPerTuple() const -{ - checkAllocated(); - int nbOfComp(getNumberOfComponents()),nbOfTuple(getNumberOfTuples()); - MCAuto ret(DataArrayInt::New()); - ret->alloc(nbOfTuple,1); - const int *src(getConstPointer()); - int *dest(ret->getPointer()); - for(int i=0;igetNumberOfComponents() != 1. - * \throw If \a this is not allocated. - */ -void DataArrayInt::checkMonotonic(bool increasing) const -{ - if(!isMonotonic(increasing)) - { - if (increasing) - throw INTERP_KERNEL::Exception("DataArrayInt::checkMonotonic : 'this' is not INCREASING monotonic !"); - else - throw INTERP_KERNEL::Exception("DataArrayInt::checkMonotonic : 'this' is not DECREASING monotonic !"); - } -} - -/*! - * Checks that \a this array is consistently **increasing** or **decreasing** in value. - * \param [in] increasing - if \a true, array values should be increasing. - * \return bool - \a true if values change in accordance with \a increasing arg. - * \throw If \a this->getNumberOfComponents() != 1. - * \throw If \a this is not allocated. - */ -bool DataArrayInt::isMonotonic(bool increasing) const -{ - checkAllocated(); - if(getNumberOfComponents()!=1) - throw INTERP_KERNEL::Exception("DataArrayInt::isMonotonic : only supported with 'this' array with ONE component !"); - int nbOfElements=getNumberOfTuples(); - const int *ptr=getConstPointer(); - if(nbOfElements==0) - return true; - int ref=ptr[0]; - if(increasing) - { - for(int i=1;i=ref) - ref=ptr[i]; - else - return false; - } - } - else - { - for(int i=1;iref) - ref=ptr[i]; - else - return false; - } - } - else - { - for(int i=1;i ret(DataArrayInt::New()); - ret->alloc(nbTuples,1); - int *retPt(ret->getPointer()); - std::map m; - for(int i=0;i::const_iterator it(m.find(*pt)); - if(it!=m.end()) - *retPt=(*it).second; - else - { - std::ostringstream oss; oss << "DataArrayInt::indicesOfSubPart : At pos #" << i << " of input array value is " << *pt << " not in this !"; - throw INTERP_KERNEL::Exception(oss.str()); - } - } - return ret.retn(); -} - /*! * Returns a new DataArrayInt containing a renumbering map in "Old to New" mode. * This map, if applied to \a this array, would make it sorted. For example, if @@ -4551,7 +4250,7 @@ DataArrayInt *DataArrayInt::checkAndPreparePermutation() const } /*! - * This method tries to find the permutation to apply to the first input \a ids1 to obtain the same array (without considering strings informations) the second + * This method tries to find the permutation to apply to the first input \a ids1 to obtain the same array (without considering strings information) the second * input array \a ids2. * \a ids1 and \a ids2 are expected to be both a list of ids (both with number of components equal to one) not sorted and with values that can be negative. * This method will throw an exception is no such permutation array can be obtained. It is typically the case if there is some ids in \a ids1 not in \a ids2 or @@ -4861,7 +4560,7 @@ bool DataArrayInt::hasUniqueValues() const checkAllocated(); if(getNumberOfComponents()!=1) throw INTERP_KERNEL::Exception("DataArrayInt::hasOnlyUniqueValues: must be applied on DataArrayInt with only one component, you can call 'rearrange' method before !"); - int nbOfTuples(getNumberOfTuples()); + std::size_t nbOfTuples(getNumberOfTuples()); std::set s(begin(),end()); // in C++11, should use unordered_set (O(1) complexity) if (s.size() != nbOfTuples) return false; @@ -4970,7 +4669,7 @@ DataArrayInt *DataArrayInt::findIdsEqualTuple(const int *tupleBg, const int *tup { std::size_t nbOfCompoExp(std::distance(tupleBg,tupleEnd)); checkAllocated(); - if(getNumberOfComponents()!=(int)nbOfCompoExp) + if(getNumberOfComponents()!=nbOfCompoExp) { std::ostringstream oss; oss << "DataArrayInt::findIdsEqualTuple : mismatch of number of components. Input tuple has " << nbOfCompoExp << " whereas this array has " << getNumberOfComponents() << " components !"; throw INTERP_KERNEL::Exception(oss.str().c_str()); @@ -5345,17 +5044,16 @@ DataArrayInt *DataArrayInt::Aggregate(const DataArrayInt *a1, const DataArrayInt { if(!a1 || !a2) throw INTERP_KERNEL::Exception("DataArrayInt::Aggregate : input DataArrayInt instance is NULL !"); - int nbOfComp=a1->getNumberOfComponents(); + std::size_t nbOfComp(a1->getNumberOfComponents()); if(nbOfComp!=a2->getNumberOfComponents()) throw INTERP_KERNEL::Exception("Nb of components mismatch for array Aggregation !"); - int nbOfTuple1=a1->getNumberOfTuples(); - int nbOfTuple2=a2->getNumberOfTuples(); - DataArrayInt *ret=DataArrayInt::New(); + std::size_t nbOfTuple1(a1->getNumberOfTuples()),nbOfTuple2(a2->getNumberOfTuples()); + MCAuto ret(DataArrayInt::New()); ret->alloc(nbOfTuple1+nbOfTuple2-offsetA2,nbOfComp); - int *pt=std::copy(a1->getConstPointer(),a1->getConstPointer()+nbOfTuple1*nbOfComp,ret->getPointer()); + int *pt=std::copy(a1->begin(),a1->end(),ret->getPointer()); std::copy(a2->getConstPointer()+offsetA2*nbOfComp,a2->getConstPointer()+nbOfTuple2*nbOfComp,pt); ret->copyStringInfoFrom(*a1); - return ret; + return ret.retn(); } /*! @@ -5382,8 +5080,7 @@ DataArrayInt *DataArrayInt::Aggregate(const std::vector& a if(a.empty()) throw INTERP_KERNEL::Exception("DataArrayInt::Aggregate : input list must be NON EMPTY !"); std::vector::const_iterator it=a.begin(); - int nbOfComp=(*it)->getNumberOfComponents(); - int nbt=(*it++)->getNumberOfTuples(); + std::size_t nbOfComp((*it)->getNumberOfComponents()),nbt((*it++)->getNumberOfTuples()); for(int i=1;it!=a.end();it++,i++) { if((*it)->getNumberOfComponents()!=nbOfComp) @@ -5908,7 +5605,7 @@ DataArrayInt *DataArrayInt::BuildListOfSwitchedOff(const std::vector& v) } /*! - * This method allows to put a vector of vector of integer into a more compact data stucture (skyline). + * This method allows to put a vector of vector of integer into a more compact data structure (skyline). * This method is not available into python because no available optimized data structure available to map std::vector< std::vector >. * * \param [in] v the input data structure to be translate into skyline format. @@ -6132,7 +5829,7 @@ DataArrayInt *DataArrayInt::buildUniqueNotSorted() const * "MEDCouplingUMesh::buildDescendingConnectivity" and * \ref MEDCoupling::MEDCouplingUMesh::getNodalConnectivityIndex * "MEDCouplingUMesh::getNodalConnectivityIndex" etc. - * This method preforms the reverse operation of DataArrayInt::computeOffsetsFull. + * This method performs the reverse operation of DataArrayInt::computeOffsetsFull. * \return DataArrayInt * - a new instance of DataArrayInt, whose number of tuples * equals to \a this->getNumberOfComponents() - 1, and number of components is 1. * The caller is to delete this array using decrRef() as it is no more needed. @@ -6208,7 +5905,7 @@ void DataArrayInt::computeOffsets() * components remains the same and number of tuples is inceamented by one.
* This method is useful for allToAllV in MPI with contiguous policy. This method * differs from computeOffsets() in that the number of tuples is changed by this one. - * This method preforms the reverse operation of DataArrayInt::deltaShiftIndex. + * This method performs the reverse operation of DataArrayInt::deltaShiftIndex. * \throw If \a this is not allocated. * \throw If \a this->getNumberOfComponents() != 1. *