charmxi: Emit overloaded constructors for CProxyElement_Foo only when index type...
authorRamprasad Venkataraman <ramv@illinois.edu>
Sat, 31 Mar 2012 01:39:06 +0000 (20:39 -0500)
committerRamprasad Venkataraman <ramv@illinois.edu>
Sat, 31 Mar 2012 02:52:03 +0000 (21:52 -0500)
src/xlat-i/xi-symbol.C

index 02724a0d16f47c3b14a7cd1ce4344508a876dd70..13ce4de6e2b415e4fa49a4da46a7831b63e804e3 100644 (file)
@@ -1442,17 +1442,20 @@ Array::genSubDecls(XStr& str)
     str <<
          "    "<<ptype<<"(const CkArrayID &aid,const "<<indexType<<" &idx)\n"
          "        :";genProxyNames(str, "",NULL, "(aid,idx)", ", ");str<<" {}\n";
-    // Emit constructors that take the base class array index too.  This proves
-    // useful for runtime code that needs to access an element via a CkArrayIndex and
-    // an array proxy. This might compromise type safety a wee bit and is hence not
-    // propagated throughout.  For eg, CProxy_Foo::operator[] still accepts only the
-    // appropriate CkArrayIndexND.
-    str <<
-         "    "<<ptype<<"(const CkArrayID &aid,const CkArrayIndex &idx,CK_DELCTOR_PARAM)\n"
-         "        :";genProxyNames(str, "",NULL, "(aid,idx,CK_DELCTOR_ARGS)", ", ");str<<" {}\n";
-    str <<
-         "    "<<ptype<<"(const CkArrayID &aid,const CkArrayIndex &idx)\n"
-         "        :";genProxyNames(str, "",NULL, "(aid,idx)", ", ");str<<" {}\n";
+    if ((indexType != (const char*)"CkArrayIndex") && (indexType != (const char*)"CkArrayIndexMax"))
+    {
+      // Emit constructors that take the base class array index too.  This proves
+      // useful for runtime code that needs to access an element via a CkArrayIndex and
+      // an array proxy. This might compromise type safety a wee bit and is hence not
+      // propagated throughout.  For eg, CProxy_Foo::operator[] still accepts only the
+      // appropriate CkArrayIndexND.
+      str <<
+          "    "<<ptype<<"(const CkArrayID &aid,const CkArrayIndex &idx,CK_DELCTOR_PARAM)\n"
+          "        :";genProxyNames(str, "",NULL, "(aid,idx,CK_DELCTOR_ARGS)", ", ");str<<" {}\n";
+      str <<
+          "    "<<ptype<<"(const CkArrayID &aid,const CkArrayIndex &idx)\n"
+          "        :";genProxyNames(str, "",NULL, "(aid,idx)", ", ");str<<" {}\n";
+    }
   }
   else if (forElement==forAll)
   {/*Collective, indexible version*/