charmxi: fill in definitions for templated CBase_ types
authorAaron Becker <akbecker@gmail.com>
Fri, 19 Oct 2012 20:29:19 +0000 (15:29 -0500)
committerAaron Becker <akbecker@gmail.com>
Fri, 19 Oct 2012 20:29:19 +0000 (15:29 -0500)
normally CBase_ types are typedefs, but for templated types they are
classes that inherit from CBaseT types. Provide definitions for
constructors and pup methods that call the appropriate CBaseT functions,
rather than leaving the CBase_ implementation empty.

src/xlat-i/xi-symbol.C

index eac52a148ac489a680ced6fff17f8670540abda6..c40ff8664cf878cef19b74ebcc23df14fb073911 100644 (file)
@@ -1076,7 +1076,18 @@ Chare::genDecls(XStr& str)
   str << ", CProxy_" << type;
   if (templat) {
     templat->genVars(str);
   str << ", CProxy_" << type;
   if (templat) {
     templat->genVars(str);
-    str << " > { };\n";
+    str << " > {\npublic:\n\tCBase_" << type << "() : ";
+    str << "CBaseT" << b->length() << "<" << b << ", CProxy_" << type;
+    templat->genVars(str);
+    str << ">() {}\n";
+    str << "\tCBase_" << type << "(CkMigrateMessage* m) : ";
+    str << "CBaseT" << b->length() << "<" << b << ", CProxy_" << type;
+    templat->genVars(str);
+    str << ">(m) {}\n";
+    str << "\tvoid pup(PUP::er& p) {\n";
+    str << "\t\tCBaseT" << b->length() << "<" << b << ", CProxy_" << type;
+    templat->genVars(str);
+    str << ">::pup(p);\n\t}\n};\n";
   } else {
     str << "> CBase_" << type << ";\n";
   }
   } else {
     str << "> CBase_" << type << ";\n";
   }