Skip to content

Commit 6200b47

Browse files
committed
[C++] Fix composite encode generation to use formatted property names, i.e. escape keywords.
1 parent 0d3cd0e commit 6200b47

File tree

1 file changed

+26
-36
lines changed

1 file changed

+26
-36
lines changed

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

Lines changed: 26 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -1005,22 +1005,21 @@ private void generateArrayEncodeWith(
10051005
return;
10061006
}
10071007

1008-
final String propertyName = fieldToken.name();
1009-
final String formattedPropertyName = formatPropertyName(propertyName);
1008+
final String formattedPropertyName = formatPropertyName(fieldToken.name());
10101009

10111010
if (typeToken.encoding().primitiveType() == PrimitiveType.CHAR)
10121011
{
10131012
final String accessor = "dto." + formattedPropertyName + "()";
10141013
final String value = fieldToken.isOptionalEncoding() ?
10151014
accessor + ".value_or(" + "\"\"" + ")" :
10161015
accessor;
1017-
sb.append(indent).append("codec.put").append(toUpperFirstChar(propertyName)).append("(")
1016+
sb.append(indent).append("codec.put").append(toUpperFirstChar(formattedPropertyName)).append("(")
10181017
.append(value).append(".c_str());\n");
10191018
}
10201019
else
10211020
{
10221021
final String typeName = cppTypeName(typeToken.encoding().primitiveType());
1023-
final String vectorVar = toLowerFirstChar(propertyName) + "Vector";
1022+
final String vectorVar = toLowerFirstChar(formattedPropertyName) + "Vector";
10241023

10251024
final String accessor = "dto." + formattedPropertyName + "()";
10261025
final String value = fieldToken.isOptionalEncoding() ?
@@ -1034,7 +1033,7 @@ private void generateArrayEncodeWith(
10341033
.append(typeToken.arrayLength()).append(")\n")
10351034
.append(indent).append("{\n")
10361035
.append(indent).append(INDENT).append("throw std::invalid_argument(\"")
1037-
.append(propertyName)
1036+
.append(formattedPropertyName)
10381037
.append(": array length != ")
10391038
.append(typeToken.arrayLength())
10401039
.append("\");\n")
@@ -1083,8 +1082,7 @@ private void generateEnumEncodeWith(
10831082
return;
10841083
}
10851084

1086-
final String propertyName = fieldToken.name();
1087-
final String formattedPropertyName = formatPropertyName(propertyName);
1085+
final String formattedPropertyName = formatPropertyName(fieldToken.name());
10881086

10891087
sb.append(indent).append("codec.").append(formattedPropertyName).append("(dto.")
10901088
.append(formattedPropertyName).append("());\n");
@@ -1096,8 +1094,7 @@ private void generateComplexPropertyEncodeWith(
10961094
final Token typeToken,
10971095
final String indent)
10981096
{
1099-
final String propertyName = fieldToken.name();
1100-
final String formattedPropertyName = formatPropertyName(propertyName);
1097+
final String formattedPropertyName = formatPropertyName(fieldToken.name());
11011098
final String typeName = formatDtoClassName(typeToken.applicableTypeName());
11021099

11031100
sb.append(indent).append(typeName).append("::encodeWith(codec.")
@@ -1225,7 +1222,7 @@ private void generateFields(
12251222
if (signalToken.signal() == Signal.BEGIN_FIELD)
12261223
{
12271224
final Token encodingToken = tokens.get(i + 1);
1228-
final String propertyName = signalToken.name();
1225+
final String propertyName = formatPropertyName(signalToken.name());
12291226

12301227
switch (encodingToken.signal())
12311228
{
@@ -1258,7 +1255,6 @@ private void generateComplexProperty(
12581255
final String indent)
12591256
{
12601257
final String typeName = formatDtoClassName(typeToken.applicableTypeName());
1261-
final String formattedPropertyName = formatPropertyName(propertyName);
12621258
final String fieldName = "m_" + toLowerFirstChar(propertyName);
12631259

12641260
classBuilder.appendField()
@@ -1267,15 +1263,15 @@ private void generateComplexProperty(
12671263
classBuilder.appendPublic().append("\n")
12681264
.append(generateDocumentation(indent, fieldToken))
12691265
.append(indent).append("[[nodiscard]] const ").append(typeName).append("& ")
1270-
.append(formattedPropertyName).append("() const\n")
1266+
.append(propertyName).append("() const\n")
12711267
.append(indent).append("{\n")
12721268
.append(indent).append(INDENT).append("return ").append(fieldName).append(";\n")
12731269
.append(indent).append("}\n");
12741270

12751271
classBuilder.appendPublic().append("\n")
12761272
.append(generateDocumentation(indent, fieldToken))
12771273
.append(indent).append("[[nodiscard]] ").append(typeName).append("& ")
1278-
.append(formattedPropertyName).append("()\n")
1274+
.append(propertyName).append("()\n")
12791275
.append(indent).append("{\n")
12801276
.append(indent).append(INDENT).append("return ").append(fieldName).append(";\n")
12811277
.append(indent).append("}\n");
@@ -1290,8 +1286,6 @@ private void generateEnumProperty(
12901286
{
12911287
final String enumName = formatClassName(typeToken.applicableTypeName()) + "::Value";
12921288

1293-
final String formattedPropertyName = formatPropertyName(propertyName);
1294-
12951289
if (fieldToken.isConstantEncoding())
12961290
{
12971291
final String constValue = fieldToken.encoding().constValue().toString();
@@ -1300,7 +1294,7 @@ private void generateEnumProperty(
13001294
classBuilder.appendPublic().append("\n")
13011295
.append(generateDocumentation(indent, fieldToken))
13021296
.append(indent).append("[[nodiscard]] static ").append(enumName).append(" ")
1303-
.append(formattedPropertyName).append("()\n")
1297+
.append(propertyName).append("()\n")
13041298
.append(indent).append("{\n")
13051299
.append(indent).append(INDENT).append("return ").append(enumName).append("::")
13061300
.append(caseName).append(";\n")
@@ -1316,14 +1310,14 @@ private void generateEnumProperty(
13161310
classBuilder.appendPublic().append("\n")
13171311
.append(generateDocumentation(indent, fieldToken))
13181312
.append(indent).append("[[nodiscard]] ").append(enumName).append(" ")
1319-
.append(formattedPropertyName).append("() const\n")
1313+
.append(propertyName).append("() const\n")
13201314
.append(indent).append("{\n")
13211315
.append(indent).append(INDENT).append("return ").append(fieldName).append(";\n")
13221316
.append(indent).append("}\n");
13231317

13241318
classBuilder.appendPublic().append("\n")
13251319
.append(generateDocumentation(indent, fieldToken))
1326-
.append(indent).append("void ").append(formattedPropertyName)
1320+
.append(indent).append("void ").append(propertyName)
13271321
.append("(").append(enumName).append(" value)\n")
13281322
.append(indent).append("{\n")
13291323
.append(indent).append(INDENT).append(fieldName).append(" = value;\n")
@@ -1378,7 +1372,6 @@ private void generateArrayProperty(
13781372
final String indent)
13791373
{
13801374
final String fieldName = "m_" + toLowerFirstChar(propertyName);
1381-
final String formattedPropertyName = formatPropertyName(propertyName);
13821375
final String validateMethod = "validate" + toUpperFirstChar(propertyName);
13831376

13841377
if (typeToken.encoding().primitiveType() == PrimitiveType.CHAR)
@@ -1394,22 +1387,22 @@ private void generateArrayProperty(
13941387
classBuilder.appendPublic().append("\n")
13951388
.append(generateDocumentation(indent, fieldToken))
13961389
.append(indent).append("[[nodiscard]] const ").append(typeName).append("& ")
1397-
.append(formattedPropertyName).append("() const\n")
1390+
.append(propertyName).append("() const\n")
13981391
.append(indent).append("{\n")
13991392
.append(indent).append(INDENT).append("return ").append(fieldName).append(";\n")
14001393
.append(indent).append("}\n");
14011394

14021395
classBuilder.appendPublic().append("\n")
14031396
.append(generateDocumentation(indent, fieldToken))
1404-
.append(indent).append("void ").append(formattedPropertyName)
1397+
.append(indent).append("void ").append(propertyName)
14051398
.append("(const ").append(typeName).append("& borrowedValue)\n")
14061399
.append(indent).append("{\n")
14071400
.append(indent).append(INDENT).append(fieldName).append(" = borrowedValue;\n")
14081401
.append(indent).append("}\n");
14091402

14101403
classBuilder.appendPublic().append("\n")
14111404
.append(generateDocumentation(indent, fieldToken))
1412-
.append(indent).append("void ").append(formattedPropertyName).append("(")
1405+
.append(indent).append("void ").append(propertyName).append("(")
14131406
.append(typeName).append("&& ownedValue)\n")
14141407
.append(indent).append("{\n")
14151408
.append(indent).append(INDENT).append(fieldName).append(" = std::move(ownedValue);\n")
@@ -1423,7 +1416,7 @@ private void generateArrayProperty(
14231416
validateMethod,
14241417
typeName,
14251418
"std::string",
1426-
formattedPropertyName);
1419+
propertyName);
14271420
}
14281421
else
14291422
{
@@ -1440,14 +1433,14 @@ private void generateArrayProperty(
14401433
classBuilder.appendPublic().append("\n")
14411434
.append(generateDocumentation(indent, fieldToken))
14421435
.append(indent).append("[[nodiscard]] ").append(typeName).append(" ")
1443-
.append(formattedPropertyName).append("() const\n")
1436+
.append(propertyName).append("() const\n")
14441437
.append(indent).append("{\n")
14451438
.append(indent).append(INDENT).append("return ").append(fieldName).append(";\n")
14461439
.append(indent).append("}\n");
14471440

14481441
classBuilder.appendPublic().append("\n")
14491442
.append(generateDocumentation(indent, fieldToken))
1450-
.append(indent).append("void ").append(formattedPropertyName).append("(")
1443+
.append(indent).append("void ").append(propertyName).append("(")
14511444
.append(typeName).append("& borrowedValue").append(")\n")
14521445
.append(indent).append("{\n")
14531446
.append(indent).append(INDENT).append(validateMethod).append("(borrowedValue);\n")
@@ -1456,7 +1449,7 @@ private void generateArrayProperty(
14561449

14571450
classBuilder.appendPublic().append("\n")
14581451
.append(generateDocumentation(indent, fieldToken))
1459-
.append(indent).append("void ").append(formattedPropertyName).append("(")
1452+
.append(indent).append("void ").append(propertyName).append("(")
14601453
.append(typeName).append("&& ownedValue").append(")\n")
14611454
.append(indent).append("{\n")
14621455
.append(indent).append(INDENT).append(validateMethod).append("(ownedValue);\n")
@@ -1471,7 +1464,7 @@ private void generateArrayProperty(
14711464
validateMethod,
14721465
typeName,
14731466
vectorTypeName,
1474-
formattedPropertyName);
1467+
propertyName);
14751468
}
14761469
}
14771470

@@ -1538,7 +1531,6 @@ private void generateSingleValueProperty(
15381531
fieldToken,
15391532
elementTypeName
15401533
);
1541-
final String formattedPropertyName = formatPropertyName(propertyName);
15421534
final String fieldName = "m_" + toLowerFirstChar(propertyName);
15431535
final String validateMethod = "validate" + toUpperFirstChar(propertyName);
15441536

@@ -1548,14 +1540,14 @@ private void generateSingleValueProperty(
15481540
classBuilder.appendPublic().append("\n")
15491541
.append(generateDocumentation(indent, fieldToken))
15501542
.append(indent).append("[[nodiscard]] ").append(typeName).append(" ")
1551-
.append(formattedPropertyName).append("() const\n")
1543+
.append(propertyName).append("() const\n")
15521544
.append(indent).append("{\n")
15531545
.append(indent).append(INDENT).append("return ").append(fieldName).append(";\n")
15541546
.append(indent).append("}\n");
15551547

15561548
classBuilder.appendPublic().append("\n")
15571549
.append(generateDocumentation(indent, fieldToken))
1558-
.append(indent).append("void ").append(formattedPropertyName).append("(")
1550+
.append(indent).append("void ").append(propertyName).append("(")
15591551
.append(typeName).append(" value)\n")
15601552
.append(indent).append("{\n")
15611553
.append(indent).append(INDENT).append(validateMethod).append("(value);\n")
@@ -1570,7 +1562,6 @@ private void generateSingleValueProperty(
15701562
indent,
15711563
validateMethod,
15721564
typeName,
1573-
formattedPropertyName,
15741565
elementTypeName,
15751566
encoding);
15761567
}
@@ -1583,7 +1574,6 @@ private static void generateSingleValuePropertyValidateMethod(
15831574
final String indent,
15841575
final String validateMethod,
15851576
final CharSequence typeName,
1586-
final String formattedPropertyName,
15871577
final String elementTypeName,
15881578
final Encoding encoding)
15891579
{
@@ -1613,7 +1603,7 @@ private static void generateSingleValuePropertyValidateMethod(
16131603

16141604
validateBuilder.append(indent).append(INDENT)
16151605
.append("if (value.value() == ").append(codecClassName).append("::")
1616-
.append(formattedPropertyName).append("NullValue())\n")
1606+
.append(propertyName).append("NullValue())\n")
16171607
.append(indent).append(INDENT)
16181608
.append("{\n")
16191609
.append(indent).append(INDENT).append(INDENT)
@@ -1636,7 +1626,7 @@ private static void generateSingleValuePropertyValidateMethod(
16361626
{
16371627
validateBuilder.append(indent).append(INDENT)
16381628
.append("if (").append(value).append(" < ")
1639-
.append(codecClassName).append("::").append(formattedPropertyName).append("MinValue())\n")
1629+
.append(codecClassName).append("::").append(propertyName).append("MinValue())\n")
16401630
.append(indent).append(INDENT)
16411631
.append("{\n")
16421632
.append(indent).append(INDENT).append(INDENT)
@@ -1652,7 +1642,7 @@ private static void generateSingleValuePropertyValidateMethod(
16521642
{
16531643
validateBuilder.append(indent).append(INDENT)
16541644
.append("if (").append(value).append(" > ")
1655-
.append(codecClassName).append("::").append(formattedPropertyName).append("MaxValue())\n")
1645+
.append(codecClassName).append("::").append(propertyName).append("MaxValue())\n")
16561646
.append(indent).append(INDENT)
16571647
.append("{\n")
16581648
.append(indent).append(INDENT).append(INDENT)
@@ -1693,7 +1683,7 @@ private void generateConstPropertyMethods(
16931683
.append(generateDocumentation(indent, fieldToken))
16941684
.append(indent).append("[[nodiscard]] static ")
16951685
.append(cppTypeName(typeToken.encoding().primitiveType()))
1696-
.append(" ").append(formatPropertyName(propertyName)).append("()\n")
1686+
.append(" ").append(propertyName).append("()\n")
16971687
.append(indent).append("{\n")
16981688
.append(indent).append(INDENT).append("return ").append(literalValue).append(";\n")
16991689
.append(indent).append("}\n");

0 commit comments

Comments
 (0)