charmxi: refactor Entry::epStr to handle template argument generation
authorPhil Miller <mille121@illinois.edu>
Fri, 6 Apr 2012 01:33:47 +0000 (20:33 -0500)
committerPhil Miller <mille121@illinois.edu>
Fri, 6 Apr 2012 17:36:32 +0000 (12:36 -0500)
src/xlat-i/xi-symbol.C
src/xlat-i/xi-symbol.h

index e795cb37f41df81a3e262b11af47cf3b009eb5a5..4866b52d1ecf3c89870f54e4f79199bf056acf5a 100644 (file)
@@ -3027,7 +3027,7 @@ XStr Entry::marshallMsg(void)
   return ret;
 }
 
-XStr Entry::epStr(bool isForRedn)
+XStr Entry::epStr(bool isForRedn, bool templateCall)
 {
   XStr str;
   if (isForRedn)
@@ -3042,6 +3042,13 @@ XStr Entry::epStr(bool isForRedn)
     str<<"void";
   else
     str<<"marshall"<<entryCount;
+
+  if (tspec && templateCall) {
+    str << "< ";
+    tspec->genShort(str);
+    str << " >";
+  }
+
   return str;
 }
 
@@ -3054,13 +3061,7 @@ XStr Entry::epIdx(int fromProxy, bool isForRedn)
     if (tspec)
       str << "template ";
   }
-  str << "idx_" << epStr(isForRedn);
-  if (tspec) {
-    str << "< ";
-    tspec->genShort(str);
-    str << " >";
-  }
-  str << "()";
+  str << "idx_" << epStr(isForRedn, true) << "()";
   return str;
 }
 
@@ -3069,13 +3070,7 @@ XStr Entry::epRegFn(int fromProxy, bool isForRedn)
   XStr str;
   if (fromProxy)
     str << indexName() << "::";
-  str << "reg_" << epStr(isForRedn);
-  if (tspec) {
-    str << "< ";
-    tspec->genShort(str);
-    str << " >";
-  }
-  str << "()";
+  str << "reg_" << epStr(isForRedn, true) << "()";
   return str;
 }
 
@@ -4812,12 +4807,7 @@ XStr Entry::genRegEp(bool isForRedn)
       str << "redn_wrapper_" << name << "(CkReductionMsg *impl_msg)\",\n";
   else
       str << name << "("<<paramType(0)<<")\",\n";
-  str << "      _call_" << epStr(isForRedn);
-  if (tspec) {
-    str << "< ";
-    tspec->genShort(str);
-    str << " >";
-  }
+  str << "      _call_" << epStr(isForRedn, true);
   str << ", ";
   /* messageIdx: */
   if (param->isMarshalled()) {
index df8439e12dfb10d1d06e58b49af4e9c2dc62f644..51a9ba66c83104abd2d72d4cd5fe25e3b57bb557 100644 (file)
@@ -924,7 +924,7 @@ class Entry : public Member {
     int hasCallMarshall;
     void genCall(XStr &dest,const XStr &preCall, bool redn_wrapper=false);
 
-    XStr epStr(bool isForRedn = false);
+    XStr epStr(bool isForRedn = false, bool templateCall = false);
     XStr epIdx(int fromProxy=1, bool isForRedn = false);
     XStr epRegFn(int fromProxy=1, bool isForRedn = false);
     XStr chareIdx(int fromProxy=1);