@@ -56,13 +56,13 @@ public void generateMessageHeaderStub() throws IOException
5656 try (final Writer out = outputManager .createOutput (messageHeader ))
5757 {
5858 final List <Token > tokens = ir .headerStructure ().tokens ();
59- out .append (generateFileHeader (ir .applicableNamespace (). replace ( '.' , '_' ), messageHeader , null ));
59+ out .append (generateFileHeader (ir .namespaces ( ), messageHeader , null ));
6060 out .append (generateClassDeclaration (messageHeader ));
6161 out .append (generateFixedFlyweightCode (messageHeader , tokens .get (0 ).encodedLength ()));
6262 out .append (generateCompositePropertyElements (
6363 messageHeader , tokens .subList (1 , tokens .size () - 1 ), BASE_INDENT ));
6464
65- out .append ("}; \n }\n #endif\n " );
65+ out .append (CppUtil . closingBraces ( ir . namespaces (). length ) + " }\n #endif\n " );
6666 }
6767 }
6868
@@ -124,7 +124,7 @@ public void generate() throws IOException
124124
125125 try (final Writer out = outputManager .createOutput (className ))
126126 {
127- out .append (generateFileHeader (ir .applicableNamespace (). replace ( '.' , '_' ), className , typesToInclude ));
127+ out .append (generateFileHeader (ir .namespaces ( ), className , typesToInclude ));
128128 out .append (generateClassDeclaration (className ));
129129 out .append (generateMessageFlyweightCode (className , msgToken ));
130130
@@ -146,7 +146,7 @@ public void generate() throws IOException
146146 out .append (sb );
147147 out .append (generateVarData (className , varData , BASE_INDENT ));
148148
149- out .append ("}; \n }\n #endif\n " );
149+ out .append (CppUtil . closingBraces ( ir . namespaces (). length ) + " }\n #endif\n " );
150150 }
151151 }
152152 }
@@ -566,7 +566,7 @@ private void generateChoiceSet(final List<Token> tokens) throws IOException
566566
567567 try (final Writer out = outputManager .createOutput (bitSetName ))
568568 {
569- out .append (generateFileHeader (ir .applicableNamespace (). replace ( '.' , '_' ), bitSetName , null ));
569+ out .append (generateFileHeader (ir .namespaces ( ), bitSetName , null ));
570570 out .append (generateClassDeclaration (bitSetName ));
571571 out .append (generateFixedFlyweightCode (bitSetName , tokens .get (0 ).encodedLength ()));
572572
@@ -583,7 +583,7 @@ private void generateChoiceSet(final List<Token> tokens) throws IOException
583583
584584 out .append (generateChoices (bitSetName , tokens .subList (1 , tokens .size () - 1 )));
585585
586- out .append ("}; \n }\n #endif\n " );
586+ out .append (CppUtil . closingBraces ( ir . namespaces (). length ) + " }\n #endif\n " );
587587 }
588588 }
589589
@@ -594,14 +594,14 @@ private void generateEnum(final List<Token> tokens) throws IOException
594594
595595 try (final Writer out = outputManager .createOutput (enumName ))
596596 {
597- out .append (generateFileHeader (ir .applicableNamespace (). replace ( '.' , '_' ), enumName , null ));
597+ out .append (generateFileHeader (ir .namespaces ( ), enumName , null ));
598598 out .append (generateEnumDeclaration (enumName ));
599599
600600 out .append (generateEnumValues (tokens .subList (1 , tokens .size () - 1 ), enumToken ));
601601
602602 out .append (generateEnumLookupMethod (tokens .subList (1 , tokens .size () - 1 ), enumToken ));
603603
604- out .append ("}; \n }\n #endif\n " );
604+ out .append (CppUtil . closingBraces ( ir . namespaces (). length ) + " }\n #endif\n " );
605605 }
606606 }
607607
@@ -611,14 +611,14 @@ private void generateComposite(final List<Token> tokens) throws IOException
611611
612612 try (final Writer out = outputManager .createOutput (compositeName ))
613613 {
614- out .append (generateFileHeader (ir .applicableNamespace (). replace ( '.' , '_' ), compositeName ,
614+ out .append (generateFileHeader (ir .namespaces ( ), compositeName ,
615615 generateTypesToIncludes (tokens .subList (1 , tokens .size () - 1 ))));
616616 out .append (generateClassDeclaration (compositeName ));
617617 out .append (generateFixedFlyweightCode (compositeName , tokens .get (0 ).encodedLength ()));
618618
619619 out .append (generateCompositePropertyElements (compositeName , tokens .subList (1 , tokens .size () - 1 ), BASE_INDENT ));
620620
621- out .append ("}; \n }\n #endif\n " );
621+ out .append (CppUtil . closingBraces ( ir . namespaces (). length ) + " }\n #endif\n " );
622622 }
623623 }
624624
@@ -815,7 +815,7 @@ private static CharSequence generateTypeFieldNotPresentCondition(final int since
815815 }
816816
817817 private static CharSequence generateFileHeader (
818- final String namespaceName ,
818+ final String [] namespaces ,
819819 final String className ,
820820 final List <String > typesToInclude )
821821 {
@@ -844,7 +844,7 @@ private static CharSequence generateFileHeader(
844844 "# include <cstring>\n " +
845845 "#endif\n \n " +
846846 "#include <sbe/sbe.h>\n \n " ,
847- namespaceName .toUpperCase (),
847+ String . join ( "_" , namespaces ) .toUpperCase (),
848848 className .toUpperCase ()
849849 ));
850850
@@ -860,11 +860,12 @@ private static CharSequence generateFileHeader(
860860 sb .append ("\n " );
861861 }
862862
863- sb .append (String . format (
863+ sb .append (
864864 "using namespace sbe;\n \n " +
865- "namespace %1$s {\n \n " ,
866- namespaceName
867- ));
865+ "namespace " +
866+ String .join (" {\n namespace " , namespaces ) +
867+ " {\n \n "
868+ );
868869
869870 return sb ;
870871 }
0 commit comments