Skip to content

Commit b13d103

Browse files
committed
[C++] Fix property name usage in display code generator.
1 parent ecb43f4 commit b13d103

File tree

3 files changed

+86
-8
lines changed

3 files changed

+86
-8
lines changed

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

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -290,12 +290,12 @@ private CharSequence generateFullyEncodedCheck(final FieldPrecedenceModel fieldP
290290

291291
private static String accessOrderListenerMethodName(final Token token)
292292
{
293-
return "on" + Generators.toUpperFirstChar(token.name()) + "Accessed";
293+
return "on" + Generators.toUpperFirstChar(formatPropertyName(token.name())) + "Accessed";
294294
}
295295

296296
private static String accessOrderListenerMethodName(final Token token, final String suffix)
297297
{
298-
return "on" + Generators.toUpperFirstChar(token.name()) + suffix + "Accessed";
298+
return "on" + Generators.toUpperFirstChar(formatPropertyName(token.name())) + suffix + "Accessed";
299299
}
300300

301301
private static void generateAccessOrderListenerMethod(
@@ -1405,7 +1405,7 @@ private void generateChoiceSet(final List<Token> tokens) throws IOException
14051405
private void generateEnum(final List<Token> tokens) throws IOException
14061406
{
14071407
final Token enumToken = tokens.get(0);
1408-
final String enumName = formatClassName(tokens.get(0).applicableTypeName());
1408+
final String enumName = formatClassName(enumToken.applicableTypeName());
14091409

14101410
try (Writer out = outputManager.createOutput(enumName))
14111411
{
@@ -3879,19 +3879,20 @@ private CharSequence appendDisplay(
38793879
atLeastOne[0] = true;
38803880

38813881
final String characterEncoding = varData.get(i + 3).encoding().characterEncoding();
3882-
sb.append(indent).append("builder << R\"(\"").append(varDataToken.name()).append("\": )\";\n");
3882+
final String propertyName = formatPropertyName(varDataToken.name());
3883+
sb.append(indent).append("builder << R\"(\"").append(propertyName).append("\": )\";\n");
38833884

38843885
if (null == characterEncoding)
38853886
{
3886-
final String skipFunction = "writer.skip" + toUpperFirstChar(varDataToken.name()) + "()";
3887+
final String skipFunction = "writer.skip" + toUpperFirstChar(propertyName) + "()";
38873888

38883889
sb.append(indent).append("builder << '\"' <<\n").append(indent).append(INDENT).append(skipFunction)
38893890
.append(" << \" bytes of raw data\\\"\";\n");
38903891
}
38913892
else
38923893
{
38933894
final String getAsStringFunction =
3894-
"writer.get" + toUpperFirstChar(varDataToken.name()) + "AsJsonEscapedString().c_str()";
3895+
"writer.get" + toUpperFirstChar(propertyName) + "AsJsonEscapedString().c_str()";
38953896

38963897
sb.append(indent).append("builder << '\"' <<\n").append(indent).append(INDENT)
38973898
.append(getAsStringFunction).append(" << '\"';\n\n");
@@ -3925,7 +3926,8 @@ private void writeTokenDisplay(
39253926
}
39263927

39273928
sb.append(indent).append("builder << R\"(\"").append(fieldTokenName).append("\": )\";\n");
3928-
final String fieldName = "writer." + formatPropertyName(fieldTokenName);
3929+
final String propertyName = formatPropertyName(fieldTokenName);
3930+
final String fieldName = "writer." + propertyName;
39293931

39303932
switch (typeToken.signal())
39313933
{
@@ -3935,7 +3937,7 @@ private void writeTokenDisplay(
39353937
if (typeToken.encoding().primitiveType() == PrimitiveType.CHAR)
39363938
{
39373939
final String getAsStringFunction =
3938-
"writer.get" + toUpperFirstChar(fieldTokenName) + "AsJsonEscapedString().c_str()";
3940+
"writer.get" + toUpperFirstChar(propertyName) + "AsJsonEscapedString().c_str()";
39393941

39403942
sb.append(indent).append("builder << '\"' <<\n").append(indent).append(INDENT)
39413943
.append(getAsStringFunction).append(" << '\"';\n");

sbe-tool/src/test/c/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ add_custom_command(
4949
${Java_JAVA_EXECUTABLE} --add-opens java.base/jdk.internal.misc=ALL-UNNAMED
5050
-Dsbe.output.dir=${C_CODEC_TARGET_DIR}
5151
-Dsbe.target.language="C"
52+
-Dsbe.keyword.append.token="X"
5253
-jar ${SBE_JAR}
5354
${CODE_GENERATION_SCHEMA}
5455
${CODE_GENERATION_SCHEMA_WITH_VERSION}

sbe-tool/src/test/resources/code-generation-schema.xml

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77
description="Example schema"
88
byteOrder="littleEndian">
99
<types>
10+
<type name="CharArray9" primitiveType="char" length="9" />
11+
<type name="Buffer" primitiveType="int32" length="5"/>
1012
<composite name="BoosterT">
1113
<enum name="BoostType" encodingType="char">
1214
<validValue name="TURBO">T</validValue>
@@ -34,6 +36,10 @@
3436
<type name="length" primitiveType="uint32" maxValue="1073741824"/>
3537
<type name="varData" primitiveType="uint8" length="0" characterEncoding="ASCII"/>
3638
</composite>
39+
<composite name="ArrayPair">
40+
<ref name="char" type="CharArray9"/>
41+
<ref name="false" type="Buffer"/>
42+
</composite>
3743
</types>
3844
<types>
3945
<type name="ModelYear" primitiveType="uint16"/>
@@ -57,6 +63,12 @@
5763
<validValue name="B">B</validValue>
5864
<validValue name="C">C</validValue>
5965
</enum>
66+
<enum name="Break" encodingType="uint8">
67+
<validValue name="false">0</validValue>
68+
<validValue name="true">1</validValue>
69+
<validValue name="null">222</validValue>
70+
<validValue name="return">254</validValue>
71+
</enum>
6072
<set name="OptionalExtras" encodingType="uint8">
6173
<choice name="sunRoof">0</choice>
6274
<choice name="sportsPack">1</choice>
@@ -90,4 +102,67 @@
90102
<data name="activationCode" id="20" type="varStringEncoding"/>
91103
<data name="color" id="21" type="varAsciiStringEncoding"/>
92104
</sbe:message>
105+
<sbe:message name="Keywords" id="2">
106+
<field name="Abstract" id="1" type="int8"/>
107+
<field name="assert" id="2" type="int8"/>
108+
<field name="boolean" id="3" type="int8"/>
109+
<field name="break" id="4" type="int8"/>
110+
<field name="byte" id="5" type="int8"/>
111+
<field name="case" id="6" type="int8"/>
112+
<field name="catch" id="7" type="int8"/>
113+
<field name="char" id="8" type="int8"/>
114+
<field name="class" id="9" type="int8"/>
115+
<field name="const" id="10" type="int8"/>
116+
<field name="continue" id="11" type="int8"/>
117+
<field name="default" id="12" type="int8"/>
118+
<field name="do" id="13" type="int8"/>
119+
<field name="double" id="14" type="int8"/>
120+
<field name="else" id="15" type="int8"/>
121+
<field name="enum" id="16" type="int8"/>
122+
<field name="extends" id="17" type="int8"/>
123+
<field name="final" id="18" type="int8"/>
124+
<field name="finally" id="19" type="int8"/>
125+
<field name="float" id="20" type="int8"/>
126+
<field name="for" id="21" type="int8"/>
127+
<field name="goto" id="22" type="int8"/>
128+
<field name="if" id="23" type="int8"/>
129+
<field name="implements" id="24" type="int8"/>
130+
<field name="Import" id="25" type="CharArray9"/>
131+
<field name="instanceof" id="26" type="int8"/>
132+
<field name="int" id="27" type="int8"/>
133+
<field name="interface" id="28" type="int8"/>
134+
<field name="long" id="29" type="int8"/>
135+
<field name="native" id="30" type="int8"/>
136+
<field name="new" id="31" type="int8"/>
137+
<field name="package" id="32" type="int8"/>
138+
<field name="private" id="33" type="int8"/>
139+
<field name="protected" id="34" type="int8"/>
140+
<field name="public" id="35" type="int8"/>
141+
<field name="return" id="36" type="int8"/>
142+
<field name="short" id="37" type="int8"/>
143+
<field name="static" id="38" type="int8"/>
144+
<field name="strictfp" id="39" type="CharArray9"/>
145+
<field name="super" id="40" type="int8"/>
146+
<field name="switch" id="41" type="int8"/>
147+
<field name="synchronized" id="42" type="int8"/>
148+
<field name="this" id="43" type="int8"/>
149+
<field name="throw" id="44" type="int8"/>
150+
<field name="throws" id="45" type="int8"/>
151+
<field name="transient" id="46" type="int8"/>
152+
<field name="try" id="47" type="int8"/>
153+
<field name="void" id="48" type="Buffer"/>
154+
<field name="volatile" id="49" type="int8"/>
155+
<field name="while" id="50" type="int8"/>
156+
<field name="true" id="52" type="ArrayPair"/>
157+
<field name="false" id="53" type="int8"/>
158+
<field name="_" id="54" type="Break"/>
159+
<field name="falsE" id="55" type="int8"/>
160+
<group name="data" id="56" dimensionType="groupSizeEncoding">
161+
<field name="this" id="57" type="Ron"/>
162+
<group name="super" id="58" dimensionType="groupSizeEncoding">
163+
<field name="mph" id="59" type="uint16"/>
164+
<field name="try" id="60" type="float"/>
165+
</group>
166+
</group>
167+
</sbe:message>
93168
</sbe:messageSchema>

0 commit comments

Comments
 (0)