SDAG: move __sdag_pup generated code from decl.h to def.h
authorPhil Miller <mille121@illinois.edu>
Wed, 10 Oct 2012 21:56:25 +0000 (16:56 -0500)
committerPhil Miller <mille121@illinois.edu>
Wed, 10 Oct 2012 21:57:14 +0000 (16:57 -0500)
src/xlat-i/sdag/CParsedFile.C
src/xlat-i/sdag/CParsedFile.h

index f3dac23e6de400d35d483624d290713e96130079..5edd491deb57e625bb22cc5c00cdf99322570b44 100644 (file)
@@ -61,7 +61,7 @@ void CParsedFile::doProcess(XStr& classname, XStr& decls, XStr& defs) {
   generateCode(decls, defs);
   generateEntries(decls, defs);
   generateInitFunction(decls, defs);
-  generatePupFunction(decls);
+  generatePupFunction(decls, defs);
   generateRegisterEp(decls, defs);
   generateTraceEp(decls, defs);
 
@@ -156,15 +156,21 @@ void CParsedFile::generateDependencyMergePoints(XStr& decls)
   }
 }
 
-void CParsedFile::generatePupFunction(XStr& decls)
+void CParsedFile::generatePupFunction(XStr& decls, XStr& defs)
 {
   decls << "public:\n";
-  decls << "  void __sdag_pup(PUP::er& p) {\n";
-  decls << "    bool hasSDAG = __cDep.get();\n";
-  decls << "    p|hasSDAG;\n";
-  decls << "    if (p.isUnpacking() && hasSDAG) _sdag_init();\n";
-  decls << "    if (hasSDAG) { __cDep->pup(p); }\n";
-  decls << "  }\n";
+  XStr signature = "__sdag_pup(PUP::er &p)";
+  decls << "  void " << signature << ";\n";
+
+  templateGuardBegin(false, defs);
+  defs << container->tspec()
+       << "void " << container->baseName() << "::" << signature << " {\n"
+       << "    bool hasSDAG = __cDep.get();\n"
+       << "    p|hasSDAG;\n"
+       << "    if (p.isUnpacking() && hasSDAG) _sdag_init();\n"
+       << "    if (hasSDAG) { __cDep->pup(p); }\n"
+       << "}\n";
+  templateGuardEnd(defs);
 }
 
 void CParsedFile::generateRegisterEp(XStr& decls, XStr& defs)
index 9d6ac8f710cf810977206d8d545e0c9393879583..96a497ee5525f5ccabd2c9bfc71116be0d27c1e6 100644 (file)
@@ -21,7 +21,7 @@ class CParsedFile {
     void generateEntries(XStr& decls, XStr& defs);
     void generateConnectEntries(XStr& output);
     void generateInitFunction(XStr& decls, XStr& defs);
-    void generatePupFunction(XStr& output);
+    void generatePupFunction(XStr& decls, XStr& defs);
     void generateTraceEp(XStr& decls, XStr& defs);
     void generateRegisterEp(XStr& decls, XStr& defs);
     void generateDependencyMergePoints(XStr& output);