]> SALOME platform Git repositories - tools/medcoupling.git/commitdiff
Salome HOME
Example of move of a simple method getHashCode from DataArrayInt -> DataArrayDiscrete
authorAnthony Geay <anthony.geay@edf.fr>
Thu, 20 Dec 2018 07:09:10 +0000 (08:09 +0100)
committerAnthony Geay <anthony.geay@edf.fr>
Thu, 20 Dec 2018 07:09:10 +0000 (08:09 +0100)
src/MEDCoupling/MEDCouplingMemArray.cxx
src/MEDCoupling/MEDCouplingMemArray.hxx
src/MEDCoupling/MEDCouplingMemArray.txx

index cbf0576d3d941170968466ac4b4a0c0ba22db753..5651e374ab3631e054cea64a4944abe6e6591b8c 100644 (file)
@@ -3699,27 +3699,6 @@ int DataArrayInt::intValue() const
     throw INTERP_KERNEL::Exception("DataArrayInt::intValue : DataArrayInt instance is not allocated !");
 }
 
-/*!
- * Returns an integer value characterizing \a this array, which is useful for a quick
- * comparison of many instances of DataArrayInt.
- *  \return int - the hash value.
- *  \throw If \a this is not allocated.
- */
-int DataArrayInt::getHashCode() const
-{
-  checkAllocated();
-  std::size_t nbOfElems=getNbOfElems();
-  int ret=nbOfElems*65536;
-  int delta=3;
-  if(nbOfElems>48)
-    delta=nbOfElems/8;
-  int ret0=0;
-  const int *pt=begin();
-  for(std::size_t i=0;i<nbOfElems;i+=delta)
-    ret0+=pt[i] & 0x1FFF;
-  return ret+ret0;
-}
-
 /*!
  * Returns a full copy of \a this. For more info on copying data arrays see
  * \ref MEDCouplingArrayBasicsCopyDeep.
index 0f42721e5002f37a3dcc68d3e10ef0268f2916eb..9e405bf180867367354096c6bb3dae058a280823 100644 (file)
@@ -541,6 +541,7 @@ namespace MEDCoupling
     MEDCOUPLING_EXPORT bool isMonotonic(bool increasing) const;
     MEDCOUPLING_EXPORT void checkStrictlyMonotonic(bool increasing) const;
     MEDCOUPLING_EXPORT bool isStrictlyMonotonic(bool increasing) const;
+    MEDCOUPLING_EXPORT int getHashCode() const;
   protected:
     template<class ALG>
     void switchOnTupleAlg(T val, std::vector<bool>& vec, ALG algo) const;
@@ -564,7 +565,6 @@ namespace MEDCoupling
     friend class DataArrayDiscrete<Int32>;
   public:
     MEDCOUPLING_EXPORT int intValue() const;
-    MEDCOUPLING_EXPORT int getHashCode() const;
     MEDCOUPLING_EXPORT DataArrayInt32 *deepCopy() const;//ok
     MEDCOUPLING_EXPORT DataArrayInt32 *buildNewEmptyInstance() const { return DataArrayInt32::New(); }//ok
     MEDCOUPLING_EXPORT std::string repr() const;
index a9d0a697ac1161a02723f61f0f163bc95f956f55..7f6731e94960474e2dc5ae0bfc99bf8d2c545fff 100644 (file)
@@ -3730,6 +3730,28 @@ struct NotInRange
       }
   }
 
+  /*!
+   * Returns an integer value characterizing \a this array, which is useful for a quick
+   * comparison of many instances of DataArrayInt.
+   *  \return int - the hash value.
+   *  \throw If \a this is not allocated.
+   */
+  template<class T>
+  int DataArrayDiscrete<T>::getHashCode() const
+  {
+    DataArrayTemplate<T>::checkAllocated();
+    std::size_t nbOfElems(DataArrayTemplate<T>::getNbOfElems());
+    int ret=nbOfElems*65536;
+    int delta=3;
+    if(nbOfElems>48)
+      delta=nbOfElems/8;
+    T ret0(0);
+    const T *pt(DataArrayTemplate<T>::begin());
+    for(std::size_t i=0;i<nbOfElems;i+=delta)
+      ret0+=pt[i] & 0x1FFF;
+    return ret+ret0;
+  }
+
   ////////////////////////////////////
 
   /*!