ckarrayindex: Always use operator== for comparisons
authorRamprasad Venkataraman <ramv@illinois.edu>
Wed, 1 Jun 2011 17:42:01 +0000 (12:42 -0500)
committerRamprasad Venkataraman <ramv@illinois.edu>
Wed, 8 Jun 2011 15:37:39 +0000 (10:37 -0500)
Also consolidate member function definitions to single location

src/ck-core/charm++.h
src/ck-core/cklocation.C

index 5d603a38eb1779c81214845333114b57baf9a42b..c1f7d3f235879231e4e1afa8ddb0c0504fc8ebe1 100644 (file)
@@ -251,10 +251,18 @@ public:
 
     //These routines allow CkArrayIndex to be used in
     //  a CkHashtableT
-       CkHashCode hash(void) const;
-       static CkHashCode staticHash(const void *a,size_t);
-       int compare(const CkArrayIndex &ind) const;
-       static int staticCompare(const void *a,const void *b,size_t);
+       inline CkHashCode hash(void) const
+    {
+        register int i;
+        register const int *d=data();
+        register CkHashCode ret=d[0];
+        for (i=1;i<nInts;i++)
+            ret +=circleShift(d[i],10+11*i)+circleShift(d[i],9+7*i);
+        return ret;
+    }
+       static CkHashCode staticHash(const void *a,size_t) { return ((const CkArrayIndex *)a)->hash(); }
+       inline int compare(const CkArrayIndex &idx) const { return (idx == *this); }
+       static int staticCompare(const void *a,const void *b,size_t) { return (*(const CkArrayIndex *)a == *(const CkArrayIndex *)b); }
         CmiBool operator==(const CkArrayIndex& idx) const {
           if (nInts != idx.nInts) return CmiFalse;
           for (int i=0; i<nInts; i++)
@@ -304,33 +312,6 @@ public:
  */
 typedef CkArrayIndex CkArrayIndexMax;
 
-inline CkHashCode CkArrayIndex::hash(void) const
-{
-        register int i;
-       register const int *d=data();
-       register CkHashCode ret=d[0];
-       for (i=1;i<nInts;i++)
-               ret +=circleShift(d[i],10+11*i)+circleShift(d[i],9+7*i);
-       return ret;
-}
-inline int CkArrayIndex::compare(const CkArrayIndex &i2) const
-{
-       const CkArrayIndex &i1=*this;
-#if CMK_1D_ONLY
-       return i1.data()[0]==i2.data()[0];
-#else
-       const int *d1=i1.data();
-       const int *d2=i2.data();
-       int l=i1.nInts;
-       if (l!=i2.nInts) return 0;
-       for (int i=0;i<l;i++)
-               if (d1[i]!=d2[i])
-                       return 0;
-       //If we got here, the two keys must have exactly the same data
-       return 1;
-#endif
-}
-
 
 
 class CkArrayID {
index 16c56b10f904a0779d8f055cb9a734b0e8a5be91..2c2a7ea45fc061743e855f6473915cffae001ab6 100644 (file)
@@ -85,21 +85,6 @@ LDObjid idx2LDObjid(const CkArrayIndex &idx)
 }
 #endif
 
-/************************* Array Index *********************
-Array Index class.  An array index is just a 
-a run of bytes used to look up an object in a hash table.
-*/
-typedef unsigned char uc;
-
-CkHashCode CkArrayIndex::staticHash(const void *v,size_t)
-       {return ((const CkArrayIndex *)v)->hash();}
-
-int CkArrayIndex::staticCompare(const void *k1,const void *k2,size_t /*len*/)
-{
-       return ((const CkArrayIndex *)k1)->
-               compare(*(const CkArrayIndex *)k2);
-}
-
 /*********************** Array Messages ************************/
 CkArrayIndexMax &CkArrayMessage::array_index(void)
 {