charmxi: refactor Entry::epStr to handle template argument generation
[charm.git] / src / xlat-i / xi-symbol.C
index e795cb37f41df81a3e262b11af47cf3b009eb5a5..4866b52d1ecf3c89870f54e4f79199bf056acf5a 100644 (file)
@@ -3027,7 +3027,7 @@ XStr Entry::marshallMsg(void)
   return ret;
 }
 
   return ret;
 }
 
-XStr Entry::epStr(bool isForRedn)
+XStr Entry::epStr(bool isForRedn, bool templateCall)
 {
   XStr str;
   if (isForRedn)
 {
   XStr str;
   if (isForRedn)
@@ -3042,6 +3042,13 @@ XStr Entry::epStr(bool isForRedn)
     str<<"void";
   else
     str<<"marshall"<<entryCount;
     str<<"void";
   else
     str<<"marshall"<<entryCount;
+
+  if (tspec && templateCall) {
+    str << "< ";
+    tspec->genShort(str);
+    str << " >";
+  }
+
   return str;
 }
 
   return str;
 }
 
@@ -3054,13 +3061,7 @@ XStr Entry::epIdx(int fromProxy, bool isForRedn)
     if (tspec)
       str << "template ";
   }
     if (tspec)
       str << "template ";
   }
-  str << "idx_" << epStr(isForRedn);
-  if (tspec) {
-    str << "< ";
-    tspec->genShort(str);
-    str << " >";
-  }
-  str << "()";
+  str << "idx_" << epStr(isForRedn, true) << "()";
   return str;
 }
 
   return str;
 }
 
@@ -3069,13 +3070,7 @@ XStr Entry::epRegFn(int fromProxy, bool isForRedn)
   XStr str;
   if (fromProxy)
     str << indexName() << "::";
   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;
 }
 
   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 << "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()) {
   str << ", ";
   /* messageIdx: */
   if (param->isMarshalled()) {