[esnacc-dev] [PATCH 1/5] c++-code-gen: Cleanup whitespace and fix namespace

Aaron Conole aconole at bytheb.org
Fri Jul 15 16:07:48 UTC 2016


When the C++ code generator spits out a namespace, it does not properly
guard in the source file for the opening.  This means when trying to use
NO_NAMESPACE, the compiler will fail.

Signed-off-by: Aaron Conole <aconole at bytheb.org>
---
 compiler/back-ends/c++-gen/gen-code.c | 200 ++++++++++++++++------------------
 1 file changed, 94 insertions(+), 106 deletions(-)

diff --git a/compiler/back-ends/c++-gen/gen-code.c b/compiler/back-ends/c++-gen/gen-code.c
index 444bc8d..3a9f73d 100644
--- a/compiler/back-ends/c++-gen/gen-code.c
+++ b/compiler/back-ends/c++-gen/gen-code.c
@@ -4229,147 +4229,135 @@ PrintCxxCode PARAMS ((src, hdr, if_META (printMeta COMMA meta COMMA meta_pdus CO
      */
     if (gNO_NAMESPACE == 0)
     {
-       fprintf(hdr,"#ifndef NO_NAMESPACE\n");
-       if (gAlternateNamespaceString)
-       {
-          fprintf(hdr,"using namespace SNACC;\n");
-          fprintf(src,"using namespace SNACC;\n");
-          fprintf(hdr,"namespace %s {\n", gAlternateNamespaceString);
-          fprintf(src,"namespace %s {\n", gAlternateNamespaceString);
-       }
-       else if (m->namespaceToUse)
-       {            // PRINT namespace designated in .asn1 file for this module.
-          fprintf(hdr,"using namespace SNACC;\n");
-          fprintf(src,"using namespace SNACC;\n");
-          fprintf(hdr,"namespace %s {\n", m->namespaceToUse);
-          fprintf(src,"namespace %s {\n", m->namespaceToUse);
+       fprintf(hdr, "#ifndef NO_NAMESPACE\n");
+       fprintf(src, "#ifndef NO_NAMESPACE\n");
+       if (gAlternateNamespaceString) {
+          fprintf(hdr, "using namespace SNACC;\n");
+          fprintf(src, "using namespace SNACC;\n");
+          fprintf(hdr, "namespace %s {\n", gAlternateNamespaceString);
+          fprintf(src, "namespace %s {\n", gAlternateNamespaceString);
+       } else if (m->namespaceToUse) {
+          fprintf(hdr, "using namespace SNACC;\n");
+          fprintf(src, "using namespace SNACC;\n");
+          fprintf(hdr, "namespace %s {\n", m->namespaceToUse);
+          fprintf(src, "namespace %s {\n", m->namespaceToUse);
+       } else {
+          fprintf(hdr, "namespace SNACC {\n");
+          fprintf(src, "namespace SNACC {\n");
        }
-       else
-       {
-          fprintf(hdr,"namespace SNACC {\n"); 
-	      fprintf(src,"namespace SNACC{\n"); 
-       }
-       fprintf(hdr,"#endif\n");
+       fprintf(hdr, "#endif\n");
+       fprintf(src, "#endif\n");
     }
 
-    if (bVDAGlobalDLLExport)
-    {
-       /* RWC; VDA Enhanced to allow produced files to be DLLs exporting 
-        * SNACC classes.
-        */
-        fprintf (hdr, 
-         "// RWC; IF static refs to this class set, compiler define %s=""""\n", 
-        bVDAGlobalDLLExport);
-
-        fprintf (hdr, "#ifndef %s\n", bVDAGlobalDLLExport);
-        fprintf (hdr, "#if defined(WIN32)\n");
-        fprintf (hdr, "#pragma warning( disable : 4251)\n");
-        if (strcmp(bVDAGlobalDLLExport, "SNACCDLL_API") == 0)
-        {
+    if (bVDAGlobalDLLExport) {
+        fprintf(hdr, "#ifndef %s\n", bVDAGlobalDLLExport);
+        fprintf(hdr, "#if defined(WIN32)\n");
+        fprintf(hdr, "#pragma warning( disable : 4251)\n");
+        if (strcmp(bVDAGlobalDLLExport, "SNACCDLL_API") == 0) {
            /* Special case for compatibility */
-           fprintf (hdr, "#ifdef SNACCDLL_EXPORTS\n");
-        }
-        else
-        {
-           fprintf (hdr, "#ifdef %s_EXPORTS\n", bVDAGlobalDLLExport);
+           fprintf(hdr, "#ifdef SNACCDLL_EXPORTS\n");
+        } else {
+           fprintf(hdr, "#ifdef %s_EXPORTS\n", bVDAGlobalDLLExport);
         }
 
-       fprintf (hdr, "#define %s __declspec(dllexport)\n", bVDAGlobalDLLExport);
-       fprintf (hdr, "#else\n");
-       fprintf (hdr, "#define %s __declspec(dllimport)\n", bVDAGlobalDLLExport);
-       fprintf (hdr, "#endif      // %s\n", bVDAGlobalDLLExport);
-       fprintf (hdr, "#else       // Handle Unix...\n");
-       fprintf (hdr, "#define %s \n", bVDAGlobalDLLExport);
-       fprintf (hdr, "#endif      // WIN32\n");
-       fprintf (hdr, "#endif      // %s\n", bVDAGlobalDLLExport);
-    }       /* RWC;VDA; END Additional support for DLLs. */
-
-    fprintf (hdr, "//------------------------------------------------------------------------------\n");
+        fprintf(hdr, "#define %s __declspec(dllexport)\n", bVDAGlobalDLLExport);
+        fprintf(hdr, "#else\n");
+        fprintf(hdr, "#define %s __declspec(dllimport)\n", bVDAGlobalDLLExport);
+        fprintf(hdr, "#endif      // %s\n", bVDAGlobalDLLExport);
+        fprintf(hdr, "#else       // Handle Unix...\n");
+        fprintf(hdr, "#define %s \n", bVDAGlobalDLLExport);
+        fprintf(hdr, "#endif      // WIN32\n");
+        fprintf(hdr, "#endif      // %s\n", bVDAGlobalDLLExport);
+    }
+
+    fprintf (hdr,
+             "//------------------------------------------------------------------------------\n");
     fprintf (hdr, "// class declarations:\n\n");
-    FOR_EACH_LIST_ELMT (td, m->typeDefs)
+    FOR_EACH_LIST_ELMT (td, m->typeDefs) {
         PrintTypeDecl (hdr, td);
+    }
+
     fprintf (hdr, "\n");
 
-    #if META
-        if (printMeta)
-        {
+#if META
+    if (printMeta) {
 	    fprintf (hdr, "#if META\n");
 	    fprintf (src, "#if META\n\n");
 
-	    fprintf (hdr, "//------------------------------------------------------------------------------\n");
-
-       char *ptr="";   /* NOT DLL Exported, or ignored on Unix. */
-       if (bVDAGlobalDLLExport != NULL) 
-          ptr = bVDAGlobalDLLExport;
-	    
-       fprintf (hdr, "extern const %s AsnModuleDesc %sModuleDesc;\n", ptr, m->cxxname);
+        fprintf (hdr, "//------------------------------------------------------------------------------\n");
 
-	    fprintf (src, "//------------------------------------------------------------------------------\n");
-	    fprintf (src, "static const AsnTypeDesc *%sModuleTypes[] =\n", m->cxxname);
-	    fprintf (src, "{\n");
-	    FOR_EACH_LIST_ELMT (td, m->typeDefs)
-	        fprintf (src, "  &%s::_desc,\n", td->cxxTypeDefInfo->className);
-	    fprintf (src, "  NULL\n");
-	    fprintf (src, "};\n\n");
+        char *ptr="";   /* NOT DLL Exported, or ignored on Unix. */
 
-    #if 0 /* yet unused: */
-	    if (printMetaG == META_backend_names)
-	    else /* META_asn1_names */
-    #endif
+        if (bVDAGlobalDLLExport != NULL) {
+            ptr = bVDAGlobalDLLExport;
+        }
 
-	    fprintf (src, "const AsnModuleDesc %sModuleDesc = { \"%s\", %sModuleTypes };\n\n", m->cxxname, m->modId->name, m->cxxname);
+        fprintf(hdr, "extern const %s AsnModuleDesc %sModuleDesc;\n",
+                ptr, m->cxxname);
 
-	    fprintf (hdr, "#endif // META\n\n");
-	    fprintf (src, "#endif // META\n\n");
+	    fprintf(src, "//------------------------------------------------------------------------------\n");
+	    fprintf(src, "static const AsnTypeDesc *%sModuleTypes[] = {\n", m->cxxname);
+	    FOR_EACH_LIST_ELMT(td, m->typeDefs) {
+	        fprintf(src, "    &%s::_desc,\n", td->cxxTypeDefInfo->className);
         }
-    #endif /* META */
+
+	    fprintf(src, "    NULL\n");
+	    fprintf(src, "};\n");
+
+	    fprintf(src,
+                "const AsnModuleDesc %sModuleDesc = { \"%s\", %sModuleTypes };\n\n",
+                m->cxxname, m->modId->name, m->cxxname);
+
+        fprintf(hdr, "#endif // META\n\n");
+        fprintf(src, "#endif // META\n\n");
+    }
+#endif /* META */
 
     /* REMOVE PIERCE changed to print the Value definitions to the header file
      * 10-25-2001
      */
-    if (printValues)
-    {
-	     fprintf (src, "//------------------------------------------------------------------------------\n");
-        fprintf (src, "// value defs\n\n");
-        FOR_EACH_LIST_ELMT (vd, m->valueDefs)
-            PrintCxxValueDef (src, r, vd);
-        fprintf (src, "\n");
+    if (printValues) {
+        fprintf(src, "//------------------------------------------------------------------------------\n");
+        fprintf(src, "// value defs\n\n");
+        FOR_EACH_LIST_ELMT (vd, m->valueDefs) {
+            PrintCxxValueDef(src, r, vd);
+        }
+        fprintf(src, "\n");
     }
+
     /* REMOVE PIERCE changed const values to print to the header file only.  This negates the 
      * need to extern or export the const values.
      * 10-25-2001
      */
-    if (printValues)
-    {
-	    fprintf (hdr, "//------------------------------------------------------------------------------\n");
-       fprintf (hdr, "// externs for value defs\n\n");
+    if (printValues) {
+        fprintf(hdr, "//------------------------------------------------------------------------------\n");
+        fprintf(hdr, "// externs for value defs\n\n");
        FOR_EACH_LIST_ELMT (vd, m->valueDefs)
             PrintCxxValueExtern (hdr, r, vd);
+       fprintf(hdr, "//------------------------------------------------------------------------------\n");
     }
 
-    fprintf (hdr, "//------------------------------------------------------------------------------\n");
-
-    fprintf (hdr, "//------------------------------------------------------------------------------\n");
-    fprintf (hdr, "// class definitions:\n\n");
-    fprintf (src, "//------------------------------------------------------------------------------\n");
-    fprintf (src, "// class member definitions:\n\n");
+    fprintf(hdr, "//------------------------------------------------------------------------------\n");
+    fprintf(hdr, "// class definitions:\n\n");
+    fprintf(src, "//------------------------------------------------------------------------------\n");
+    fprintf(src, "// class member definitions:\n\n");
 
     PrintCxxAnyCode (src, hdr, r, mods, m);
 
-    FOR_EACH_LIST_ELMT (td, m->typeDefs)
+    FOR_EACH_LIST_ELMT (td, m->typeDefs) {
         PrintCxxTypeDefCode (src, hdr, mods, m, r, td, novolatilefuncs);
-
-   /* 7-09-2001 Pierce Leonberger
-    */
-   if (gNO_NAMESPACE == 0)
-   {
-      fprintf(hdr, "#ifndef NO_NAMESPACE\n");
-      fprintf(hdr, "} // namespace close\n");
-      fprintf(hdr, "#endif\n");
-      fprintf(src, "#ifndef NO_NAMESPACE\n");
-      fprintf(src, "} // namespace close\n");
-      fprintf(src, "#endif\n");
-   }
+    }
+    
+    /* 7-09-2001 Pierce Leonberger
+     */
+    if (gNO_NAMESPACE == 0) {
+        fprintf(hdr, "#ifndef NO_NAMESPACE\n");
+        fprintf(hdr, "} // namespace close\n");
+        fprintf(hdr, "#endif\n");
+        fprintf(src, "#ifndef NO_NAMESPACE\n");
+        fprintf(src, "} // namespace close\n");
+        fprintf(src, "#endif\n");
+    }
 
     PrintConditionalIncludeClose (hdr, m->cxxHdrFileName);
 
-- 
2.5.5




More information about the dev mailing list