Skip to content

Commit 2596552

Browse files
committed
[Java] Fix SBE_SEMANTIC_VERSION field generation for C++.
1 parent 57011d1 commit 2596552

File tree

3 files changed

+22
-14
lines changed

3 files changed

+22
-14
lines changed

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

Lines changed: 1 addition & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -169,7 +169,6 @@ public void generate() throws IOException
169169
generateDisplay(sb, msgToken.name(), fields, groups, varData);
170170
sb.append(generateMessageLength(groups, varData, BASE_INDENT));
171171
sb.append("};\n");
172-
sb.append(generateStaticVariablesInitialization(className));
173172
sb.append(CppUtil.closingBraces(ir.namespaces().length)).append("#endif\n");
174173
out.append(sb);
175174
}
@@ -1995,7 +1994,7 @@ private CharSequence generateMessageFlyweightCode(final String className, final
19951994
" static const %3$s SBE_TEMPLATE_ID = %4$s;\n" +
19961995
" static const %5$s SBE_SCHEMA_ID = %6$s;\n" +
19971996
" static const %7$s SBE_SCHEMA_VERSION = %8$s;\n" +
1998-
" static const char* SBE_SEMANTIC_VERSION;\n\n" +
1997+
" static constexpr const char* SBE_SEMANTIC_VERSION = \"%13$s\";\n\n" +
19991998

20001999
" enum MetaAttribute\n" +
20012000
" {\n" +
@@ -3193,15 +3192,4 @@ private CharSequence generateMessageLength(final List<Token> groups, final List<
31933192

31943193
return sb;
31953194
}
3196-
3197-
private CharSequence generateStaticVariablesInitialization(final String className)
3198-
{
3199-
final String semanticVersion = ir.semanticVersion() == null ? "" : ir.semanticVersion();
3200-
3201-
return String.format(
3202-
"\n" +
3203-
"const char* %1$s::SBE_SEMANTIC_VERSION = \"%2$s\";\n\n",
3204-
className,
3205-
semanticVersion);
3206-
}
32073195
}

sbe-tool/src/test/java/uk/co/real_logic/sbe/generation/cpp/CppGeneratorTest.java

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,4 +52,24 @@ void shouldUseGeneratedLiteralForConstantOneWhenGeneratingBitsetCode() throws Ex
5252
assertThat(source, containsString("UINT64_C(0x1) << "));
5353
}
5454
}
55+
56+
@Test
57+
void shouldUseConstexprWhenInitializingSemanticVersion() throws Exception
58+
{
59+
try (InputStream in = Tests.getLocalResource("code-generation-schema.xml"))
60+
{
61+
final ParserOptions options = ParserOptions.builder().stopOnError(true).build();
62+
final MessageSchema schema = parse(in, options);
63+
final IrGenerator irg = new IrGenerator();
64+
final Ir ir = irg.generate(schema);
65+
final StringWriterOutputManager outputManager = new StringWriterOutputManager();
66+
outputManager.setPackageName(ir.applicableNamespace());
67+
68+
final CppGenerator generator = new CppGenerator(ir, false, outputManager);
69+
generator.generate();
70+
71+
final String source = outputManager.getSource("code.generation.test.Car").toString();
72+
assertThat(source, containsString("static constexpr const char* SBE_SEMANTIC_VERSION = \"5.2\""));
73+
}
74+
}
5575
}

version.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
1.29.0-SNAPSHOT
1+
1.28.1-SNAPSHOT

0 commit comments

Comments
 (0)