Skip to content

Commit e003916

Browse files
committed
[C++]: generate nested namespaces in message stubs
1 parent 3c22866 commit e003916

File tree

1 file changed

+17
-16
lines changed

1 file changed

+17
-16
lines changed

sbe-tool/src/main/java/uk/co/real_logic/sbe/generation/cpp/CppGenerator.java

Lines changed: 17 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -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(" {\nnamespace ", namespaces) +
867+
" {\n\n"
868+
);
868869

869870
return sb;
870871
}

0 commit comments

Comments
 (0)