ckarrayindex: Remove all base class constructors
authorRamprasad Venkataraman <ramv@illinois.edu>
Fri, 22 Apr 2011 20:00:01 +0000 (15:00 -0500)
committerRamprasad Venkataraman <ramv@illinois.edu>
Tue, 31 May 2011 15:18:29 +0000 (10:18 -0500)
Putting an object in a union requires that the class not have any constructors.
Removing all base class constructors will mean that the array index base class
can now participate in a union; thus removing all purpose for the existence of
a CkArrayIndexStruct.

src/ck-core/charm++.h
src/ck-core/ckarray.h

index b4117e4d761cacd42263fc516ee3da911f3489c6..308a5f01718f8e5b9ef7b26db24c2d09c1267a8e 100644 (file)
@@ -224,7 +224,8 @@ public:
         };
 
         /// Zero out the index bits upon construction
-        CkArrayIndex(): nInts(0), dimension(0) { bzero(index,CK_ARRAYINDEX_MAXLEN*sizeof(int)); }
+        //CkArrayIndex(): nInts(0), dimension(0) { bzero(index,CK_ARRAYINDEX_MAXLEN*sizeof(int)); }
+        inline void init(void)  { nInts=0; dimension=0; for (int i=0; i<CK_ARRAYINDEX_MAXLEN; i++) index[i] = 0; }
 
        int *data(void)             {return index; }
        const int *data(void) const {return index; }
@@ -283,8 +284,8 @@ class CkArrayIndexMax : public CkArrayIndex {
                for (int i=0;i<nInts;i++) index[i]=that.data()[i];
        }
 public:
-       CkArrayIndexMax(void) { nInts=0; dimension=0; }
-       CkArrayIndexMax(int i) { nInts=0; dimension=0; }   // used for CkVec
+       CkArrayIndexMax(void)  { init(); }
+       CkArrayIndexMax(int i) { init(); }
        CkArrayIndexMax(const CkArrayIndex &that) 
                {copyFrom(that);}
        CkArrayIndexMax &operator=(const CkArrayIndex &that) 
index d835cd496062b81f85696750501cdd5b0bf3a9b5..6c169b4345a942765344d532beef92c47926fdf3 100644 (file)
@@ -76,7 +76,7 @@ inline void operator|(PUP::er &p,CkIndexMax &i) {
 /// Simple ArrayIndex classes: the key is just integer indices.
 class CkArrayIndex1D : public CkArrayIndex {
 public:
-       CkArrayIndex1D() { nInts=1; dimension=1; }
+       CkArrayIndex1D() { init(); nInts=1; dimension=1; }
        // CkIndex1D is an int, so that conversion is automatic
        CkArrayIndex1D(int i0) {
                index[0]=i0;nInts=1;dimension=1;
@@ -92,7 +92,7 @@ public:
 };
 class CkArrayIndex2D : public CkArrayIndex {
 public:
-       CkArrayIndex2D() { nInts=2; dimension=2; }
+       CkArrayIndex2D() { init(); nInts=2; dimension=2; }
        CkArrayIndex2D(int i0,int i1) {
                index[0]=i0;index[1]=i1;nInts=2;dimension=2;
        }
@@ -110,7 +110,7 @@ public:
 };
 class CkArrayIndex3D : public CkArrayIndex {
 public:
-       CkArrayIndex3D() { nInts=3; dimension=3; }
+       CkArrayIndex3D() { init(); nInts=3; dimension=3; }
        CkArrayIndex3D(int i0,int i1,int i2) {
                index[0]=i0;index[1]=i1;index[2]=i2;nInts=3;dimension=3;
        }
@@ -128,7 +128,7 @@ public:
 };
 class CkArrayIndex4D : public CkArrayIndex {
 public:
-       CkArrayIndex4D(){ nInts=2; dimension=4; }
+       CkArrayIndex4D(){ init(); nInts=2; dimension=4; }
        CkArrayIndex4D(short int i0,short int i1,short int i2,short int i3) {
                indexShorts[0]=i0;indexShorts[1]=i1;indexShorts[2]=i2;indexShorts[3]=i3;nInts=2;dimension=4;
        }
@@ -150,7 +150,7 @@ public:
 };
 class CkArrayIndex5D : public CkArrayIndex {
 public:
-       CkArrayIndex5D(){ nInts=3; dimension=5; }
+       CkArrayIndex5D(){ init(); nInts=3; dimension=5; }
        CkArrayIndex5D(short int i0,short int i1,short int i2,short int i3,short int i4) {
                indexShorts[0]=i0;indexShorts[1]=i1;indexShorts[2]=i2;indexShorts[3]=i3;indexShorts[4]=i4;nInts=3;dimension=5;
         }
@@ -173,7 +173,7 @@ public:
 };
 class CkArrayIndex6D : public CkArrayIndex {
 public:
-       CkArrayIndex6D(){ nInts=3; dimension=6; }
+       CkArrayIndex6D(){ init(); nInts=3; dimension=6; }
        CkArrayIndex6D(short int i0,short int i1,short int i2,short int i3,short int i4,short int i5) {
                indexShorts[0]=i0;indexShorts[1]=i1;indexShorts[2]=i2;indexShorts[3]=i3;indexShorts[4]=i4;indexShorts[5]=i5;nInts=3;dimension=6;
        }