@@ -206,7 +206,7 @@ private static void generateGroupClassHeader(
206
206
indent + " std::uint64_t m_offset;\n " +
207
207
indent + " std::uint64_t m_actingVersion;\n \n " +
208
208
209
- indent + " std::uint64_t *sbePositionPtr() SBE_NOEXCEPT\n " +
209
+ indent + " SBE_NODISCARD std::uint64_t *sbePositionPtr() SBE_NOEXCEPT\n " +
210
210
indent + " {\n " +
211
211
indent + " return m_positionPtr;\n " +
212
212
indent + " }\n \n " +
@@ -283,7 +283,7 @@ private static void generateGroupClassHeader(
283
283
indent + " return %2$d;\n " +
284
284
indent + " }\n \n " +
285
285
286
- indent + " std::uint64_t sbePosition() const\n " +
286
+ indent + " SBE_NODISCARD std::uint64_t sbePosition() const\n " +
287
287
indent + " {\n " +
288
288
indent + " return *m_positionPtr;\n " +
289
289
indent + " }\n \n " +
@@ -302,12 +302,12 @@ private static void generateGroupClassHeader(
302
302
indent + " *m_positionPtr = sbeCheckPosition(position);\n " +
303
303
indent + " }\n \n " +
304
304
305
- indent + " inline std::uint64_t count() const SBE_NOEXCEPT\n " +
305
+ indent + " SBE_NODISCARD inline std::uint64_t count() const SBE_NOEXCEPT\n " +
306
306
indent + " {\n " +
307
307
indent + " return m_count;\n " +
308
308
indent + " }\n \n " +
309
309
310
- indent + " inline bool hasNext() const SBE_NOEXCEPT\n " +
310
+ indent + " SBE_NODISCARD inline bool hasNext() const SBE_NOEXCEPT\n " +
311
311
indent + " {\n " +
312
312
indent + " return m_index + 1 < m_count;\n " +
313
313
indent + " }\n \n " +
@@ -367,15 +367,15 @@ private static CharSequence generateGroupProperty(
367
367
propertyName ));
368
368
369
369
sb .append (String .format (
370
- indent + " static SBE_CONSTEXPR std::uint16_t %1$sId() SBE_NOEXCEPT\n " +
370
+ indent + " SBE_NODISCARD static SBE_CONSTEXPR std::uint16_t %1$sId() SBE_NOEXCEPT\n " +
371
371
indent + " {\n " +
372
372
indent + " return %2$d;\n " +
373
373
indent + " }\n " ,
374
374
groupName ,
375
375
token .id ()));
376
376
377
377
sb .append (String .format ("\n " +
378
- indent + " inline %1$s &%2$s()\n " +
378
+ indent + " SBE_NODISCARD inline %1$s &%2$s()\n " +
379
379
indent + " {\n " +
380
380
indent + " m_%2$s.wrapForDecode(m_buffer, sbePositionPtr(), m_actingVersion, m_bufferLength);\n " +
381
381
indent + " return m_%2$s;\n " +
@@ -395,12 +395,12 @@ private static CharSequence generateGroupProperty(
395
395
cppTypeForNumInGroup ));
396
396
397
397
sb .append (String .format ("\n " +
398
- indent + " static SBE_CONSTEXPR std::uint64_t %1$sSinceVersion() SBE_NOEXCEPT\n " +
398
+ indent + " SBE_NODISCARD static SBE_CONSTEXPR std::uint64_t %1$sSinceVersion() SBE_NOEXCEPT\n " +
399
399
indent + " {\n " +
400
400
indent + " return %2$d;\n " +
401
401
indent + " }\n \n " +
402
402
403
- indent + " bool %1$sInActingVersion() const SBE_NOEXCEPT\n " +
403
+ indent + " SBE_NODISCARD bool %1$sInActingVersion() const SBE_NOEXCEPT\n " +
404
404
indent + " {\n " +
405
405
indent + "#if defined(__clang__)\n " +
406
406
indent + "#pragma clang diagnostic push\n " +
@@ -444,7 +444,7 @@ private CharSequence generateVarData(final String className, final List<Token> t
444
444
sb , token , propertyName , characterEncoding , lengthToken , lengthOfLengthField , lengthCppType , indent );
445
445
446
446
sb .append (String .format ("\n " +
447
- indent + " const char *%1$s()\n " +
447
+ indent + " SBE_NODISCARD const char *%1$s()\n " +
448
448
indent + " {\n " +
449
449
"%2$s" +
450
450
indent + " %4$s lengthFieldValue;\n " +
@@ -771,7 +771,7 @@ private CharSequence generateChoices(final String bitsetClassName, final List<To
771
771
choiceBitPosition ));
772
772
773
773
sb .append (String .format ("\n " +
774
- " bool %1$s() const\n " +
774
+ " SBE_NODISCARD bool %1$s() const\n " +
775
775
" {\n " +
776
776
"%2$s" +
777
777
" %4$s val;\n " +
@@ -979,6 +979,12 @@ private static CharSequence generateFileHeader(
979
979
"# define SBE_NOEXCEPT\n " +
980
980
"#endif\n \n " +
981
981
982
+ "#if __cplusplus >= 201703L\n " +
983
+ "# define SBE_NODISCARD [[nodiscard]]\n " +
984
+ "#else\n " +
985
+ "# define SBE_NODISCARD\n " +
986
+ "#endif\n \n " +
987
+
982
988
"#if !defined(__STDC_LIMIT_MACROS)\n " +
983
989
"# define __STDC_LIMIT_MACROS 1\n " +
984
990
"#endif\n " +
@@ -1273,7 +1279,7 @@ private CharSequence generateSingleValueProperty(
1273
1279
final StringBuilder sb = new StringBuilder ();
1274
1280
1275
1281
sb .append (String .format ("\n " +
1276
- indent + " %1$s %2$s() const\n " +
1282
+ indent + " SBE_NODISCARD %1$s %2$s() const\n " +
1277
1283
indent + " {\n " +
1278
1284
"%3$s" +
1279
1285
"%4$s" +
@@ -1319,7 +1325,7 @@ private CharSequence generateArrayProperty(
1319
1325
arrayLength ));
1320
1326
1321
1327
sb .append (String .format ("\n " +
1322
- indent + " const char *%1$s() const SBE_NOEXCEPT\n " +
1328
+ indent + " SBE_NODISCARD const char *%1$s() const SBE_NOEXCEPT\n " +
1323
1329
indent + " {\n " +
1324
1330
"%2$s" +
1325
1331
indent + " return m_buffer + m_offset + %3$d;\n " +
@@ -1329,7 +1335,7 @@ private CharSequence generateArrayProperty(
1329
1335
offset ));
1330
1336
1331
1337
sb .append (String .format ("\n " +
1332
- indent + " char *%1$s() SBE_NOEXCEPT\n " +
1338
+ indent + " SBE_NODISCARD char *%1$s() SBE_NOEXCEPT\n " +
1333
1339
indent + " {\n " +
1334
1340
"%2$s" +
1335
1341
indent + " return m_buffer + m_offset + %3$d;\n " +
@@ -1345,7 +1351,7 @@ private CharSequence generateArrayProperty(
1345
1351
indent );
1346
1352
1347
1353
sb .append (String .format ("\n " +
1348
- indent + " %1$s %2$s(const std::uint64_t index) const\n " +
1354
+ indent + " SBE_NODISCARD %1$s %2$s(const std::uint64_t index) const\n " +
1349
1355
indent + " {\n " +
1350
1356
indent + " if (index >= %3$d)\n " +
1351
1357
indent + " {\n " +
@@ -1536,7 +1542,7 @@ private CharSequence generateConstPropertyMethods(
1536
1542
if (token .encoding ().primitiveType () != PrimitiveType .CHAR )
1537
1543
{
1538
1544
return String .format ("\n " +
1539
- indent + " static SBE_CONSTEXPR %1$s %2$s() SBE_NOEXCEPT\n " +
1545
+ indent + " SBE_NODISCARD static SBE_CONSTEXPR %1$s %2$s() SBE_NOEXCEPT\n " +
1540
1546
indent + " {\n " +
1541
1547
indent + " return %3$s;\n " +
1542
1548
indent + " }\n " ,
@@ -1568,7 +1574,7 @@ private CharSequence generateConstPropertyMethods(
1568
1574
constantValue .length ));
1569
1575
1570
1576
sb .append (String .format ("\n " +
1571
- indent + " const char *%1$s() const\n " +
1577
+ indent + " SBE_NODISCARD const char *%1$s() const\n " +
1572
1578
indent + " {\n " +
1573
1579
indent + " static std::uint8_t %1$sValues[] = {%2$s};\n \n " +
1574
1580
@@ -1674,42 +1680,42 @@ private CharSequence generateFixedFlyweightCode(final String className, final in
1674
1680
" return *this = %1$s(buffer, offset, bufferLength, actingVersion);\n " +
1675
1681
" }\n \n " +
1676
1682
1677
- " static SBE_CONSTEXPR std::uint64_t encodedLength() SBE_NOEXCEPT\n " +
1683
+ " SBE_NODISCARD static SBE_CONSTEXPR std::uint64_t encodedLength() SBE_NOEXCEPT\n " +
1678
1684
" {\n " +
1679
1685
" return %2$s;\n " +
1680
1686
" }\n \n " +
1681
1687
1682
- " std::uint64_t offset() const SBE_NOEXCEPT\n " +
1688
+ " SBE_NODISCARD std::uint64_t offset() const SBE_NOEXCEPT\n " +
1683
1689
" {\n " +
1684
1690
" return m_offset;\n " +
1685
1691
" }\n \n " +
1686
1692
1687
- " const char * buffer() const SBE_NOEXCEPT\n " +
1693
+ " SBE_NODISCARD const char * buffer() const SBE_NOEXCEPT\n " +
1688
1694
" {\n " +
1689
1695
" return m_buffer;\n " +
1690
1696
" }\n \n " +
1691
1697
1692
- " char * buffer() SBE_NOEXCEPT\n " +
1698
+ " SBE_NODISCARD char * buffer() SBE_NOEXCEPT\n " +
1693
1699
" {\n " +
1694
1700
" return m_buffer;\n " +
1695
1701
" }\n \n " +
1696
1702
1697
- " std::uint64_t bufferLength() const SBE_NOEXCEPT\n " +
1703
+ " SBE_NODISCARD std::uint64_t bufferLength() const SBE_NOEXCEPT\n " +
1698
1704
" {\n " +
1699
1705
" return m_bufferLength;\n " +
1700
1706
" }\n \n " +
1701
1707
1702
- " std::uint64_t actingVersion() const SBE_NOEXCEPT\n " +
1708
+ " SBE_NODISCARD std::uint64_t actingVersion() const SBE_NOEXCEPT\n " +
1703
1709
" {\n " +
1704
1710
" return m_actingVersion;\n " +
1705
1711
" }\n \n " +
1706
1712
1707
- " static SBE_CONSTEXPR %3$s sbeSchemaId() SBE_NOEXCEPT\n " +
1713
+ " SBE_NODISCARD static SBE_CONSTEXPR %3$s sbeSchemaId() SBE_NOEXCEPT\n " +
1708
1714
" {\n " +
1709
1715
" return %4$s;\n " +
1710
1716
" }\n \n " +
1711
1717
1712
- " static SBE_CONSTEXPR %5$s sbeSchemaVersion() SBE_NOEXCEPT\n " +
1718
+ " SBE_NODISCARD static SBE_CONSTEXPR %5$s sbeSchemaVersion() SBE_NOEXCEPT\n " +
1713
1719
" {\n " +
1714
1720
" return %6$s;\n " +
1715
1721
" }\n " ,
@@ -1793,32 +1799,32 @@ private CharSequence generateMessageFlyweightCode(final String className, final
1793
1799
" };\n \n " +
1794
1800
1795
1801
"%11$s" +
1796
- " static SBE_CONSTEXPR %1$s sbeBlockLength() SBE_NOEXCEPT\n " +
1802
+ " SBE_NODISCARD static SBE_CONSTEXPR %1$s sbeBlockLength() SBE_NOEXCEPT\n " +
1797
1803
" {\n " +
1798
1804
" return %2$s;\n " +
1799
1805
" }\n \n " +
1800
1806
1801
- " static SBE_CONSTEXPR %3$s sbeTemplateId() SBE_NOEXCEPT\n " +
1807
+ " SBE_NODISCARD static SBE_CONSTEXPR %3$s sbeTemplateId() SBE_NOEXCEPT\n " +
1802
1808
" {\n " +
1803
1809
" return %4$s;\n " +
1804
1810
" }\n \n " +
1805
1811
1806
- " static SBE_CONSTEXPR %5$s sbeSchemaId() SBE_NOEXCEPT\n " +
1812
+ " SBE_NODISCARD static SBE_CONSTEXPR %5$s sbeSchemaId() SBE_NOEXCEPT\n " +
1807
1813
" {\n " +
1808
1814
" return %6$s;\n " +
1809
1815
" }\n \n " +
1810
1816
1811
- " static SBE_CONSTEXPR %7$s sbeSchemaVersion() SBE_NOEXCEPT\n " +
1817
+ " SBE_NODISCARD static SBE_CONSTEXPR %7$s sbeSchemaVersion() SBE_NOEXCEPT\n " +
1812
1818
" {\n " +
1813
1819
" return %8$s;\n " +
1814
1820
" }\n \n " +
1815
1821
1816
- " static SBE_CONSTEXPR const char * sbeSemanticType() SBE_NOEXCEPT\n " +
1822
+ " SBE_NODISCARD static SBE_CONSTEXPR const char * sbeSemanticType() SBE_NOEXCEPT\n " +
1817
1823
" {\n " +
1818
1824
" return \" %9$s\" ;\n " +
1819
1825
" }\n \n " +
1820
1826
1821
- " std::uint64_t offset() const SBE_NOEXCEPT\n " +
1827
+ " SBE_NODISCARD std::uint64_t offset() const SBE_NOEXCEPT\n " +
1822
1828
" {\n " +
1823
1829
" return m_offset;\n " +
1824
1830
" }\n \n " +
@@ -1854,7 +1860,7 @@ private CharSequence generateMessageFlyweightCode(final String className, final
1854
1860
" return *this = %10$s(buffer, offset, bufferLength, actingBlockLength, actingVersion);\n " +
1855
1861
" }\n \n " +
1856
1862
1857
- " std::uint64_t sbePosition() const SBE_NOEXCEPT\n " +
1863
+ " SBE_NODISCARD std::uint64_t sbePosition() const SBE_NOEXCEPT\n " +
1858
1864
" {\n " +
1859
1865
" return m_position;\n " +
1860
1866
" }\n \n " +
@@ -1873,27 +1879,27 @@ private CharSequence generateMessageFlyweightCode(final String className, final
1873
1879
" m_position = sbeCheckPosition(position);\n " +
1874
1880
" }\n \n " +
1875
1881
1876
- " std::uint64_t encodedLength() const SBE_NOEXCEPT\n " +
1882
+ " SBE_NODISCARD std::uint64_t encodedLength() const SBE_NOEXCEPT\n " +
1877
1883
" {\n " +
1878
1884
" return sbePosition() - m_offset;\n " +
1879
1885
" }\n \n " +
1880
1886
1881
- " const char * buffer() const SBE_NOEXCEPT\n " +
1887
+ " SBE_NODISCARD const char * buffer() const SBE_NOEXCEPT\n " +
1882
1888
" {\n " +
1883
1889
" return m_buffer;\n " +
1884
1890
" }\n \n " +
1885
1891
1886
- " char * buffer() SBE_NOEXCEPT\n " +
1892
+ " SBE_NODISCARD char * buffer() SBE_NOEXCEPT\n " +
1887
1893
" {\n " +
1888
1894
" return m_buffer;\n " +
1889
1895
" }\n \n " +
1890
1896
1891
- " std::uint64_t bufferLength() const SBE_NOEXCEPT\n " +
1897
+ " SBE_NODISCARD std::uint64_t bufferLength() const SBE_NOEXCEPT\n " +
1892
1898
" {\n " +
1893
1899
" return m_bufferLength;\n " +
1894
1900
" }\n \n " +
1895
1901
1896
- " std::uint64_t actingVersion() const SBE_NOEXCEPT\n " +
1902
+ " SBE_NODISCARD std::uint64_t actingVersion() const SBE_NOEXCEPT\n " +
1897
1903
" {\n " +
1898
1904
" return m_actingVersion;\n " +
1899
1905
" }\n " ,
@@ -1971,12 +1977,12 @@ private void generateFieldCommonMethods(
1971
1977
}
1972
1978
1973
1979
sb .append (String .format ("\n " +
1974
- indent + " static SBE_CONSTEXPR std::uint64_t %1$sSinceVersion() SBE_NOEXCEPT\n " +
1980
+ indent + " SBE_NODISCARD static SBE_CONSTEXPR std::uint64_t %1$sSinceVersion() SBE_NOEXCEPT\n " +
1975
1981
indent + " {\n " +
1976
1982
indent + " return %2$d;\n " +
1977
1983
indent + " }\n \n " +
1978
1984
1979
- indent + " bool %1$sInActingVersion() SBE_NOEXCEPT\n " +
1985
+ indent + " SBE_NODISCARD bool %1$sInActingVersion() SBE_NOEXCEPT\n " +
1980
1986
indent + " {\n " +
1981
1987
indent + "#if defined(__clang__)\n " +
1982
1988
indent + "#pragma clang diagnostic push\n " +
@@ -1991,7 +1997,7 @@ private void generateFieldCommonMethods(
1991
1997
fieldToken .version ()));
1992
1998
1993
1999
sb .append (String .format ("\n " +
1994
- indent + " static SBE_CONSTEXPR std::size_t %1$sEncodingOffset() SBE_NOEXCEPT\n " +
2000
+ indent + " SBE_NODISCARD static SBE_CONSTEXPR std::size_t %1$sEncodingOffset() SBE_NOEXCEPT\n " +
1995
2001
indent + " {\n " +
1996
2002
indent + " return %2$d;\n " +
1997
2003
indent + " }\n " ,
@@ -2008,7 +2014,7 @@ private static void generateFieldMetaAttributeMethod(
2008
2014
final String semanticType = encoding .semanticType () == null ? "" : encoding .semanticType ();
2009
2015
2010
2016
sb .append (String .format ("\n " +
2011
- indent + " static const char * %sMetaAttribute(const MetaAttribute metaAttribute)" +
2017
+ indent + " SBE_NODISCARD static const char * %sMetaAttribute(const MetaAttribute metaAttribute)" +
2012
2018
" SBE_NOEXCEPT\n " +
2013
2019
indent + " {\n " +
2014
2020
indent + " switch (metaAttribute)\n " +
@@ -2061,7 +2067,7 @@ private CharSequence generateEnumProperty(
2061
2067
final StringBuilder sb = new StringBuilder ();
2062
2068
2063
2069
sb .append (String .format ("\n " +
2064
- indent + " static SBE_CONSTEXPR std::size_t %1$sEncodingLength() SBE_NOEXCEPT\n " +
2070
+ indent + " SBE_NODISCARD static SBE_CONSTEXPR std::size_t %1$sEncodingLength() SBE_NOEXCEPT\n " +
2065
2071
indent + " {\n " +
2066
2072
indent + " return %2$d;\n " +
2067
2073
indent + " }\n " ,
@@ -2073,7 +2079,7 @@ private CharSequence generateEnumProperty(
2073
2079
final String constValue = fieldToken .encoding ().constValue ().toString ();
2074
2080
2075
2081
sb .append (String .format ("\n " +
2076
- indent + " static SBE_CONSTEXPR %1$s::Value %2$sConstValue() SBE_NOEXCEPT\n " +
2082
+ indent + " SBE_NODISCARD static SBE_CONSTEXPR %1$s::Value %2$sConstValue() SBE_NOEXCEPT\n " +
2077
2083
indent + " {\n " +
2078
2084
indent + " return %1$s::Value::%3$s;\n " +
2079
2085
indent + " }\n " ,
@@ -2082,7 +2088,7 @@ private CharSequence generateEnumProperty(
2082
2088
constValue .substring (constValue .indexOf ("." ) + 1 )));
2083
2089
2084
2090
sb .append (String .format ("\n " +
2085
- indent + " %1$s::Value %2$s() const SBE_NOEXCEPT\n " +
2091
+ indent + " SBE_NODISCARD %1$s::Value %2$s() const SBE_NOEXCEPT\n " +
2086
2092
indent + " {\n " +
2087
2093
"%3$s" +
2088
2094
indent + " return %1$s::Value::%4$s;\n " +
@@ -2095,7 +2101,7 @@ private CharSequence generateEnumProperty(
2095
2101
else
2096
2102
{
2097
2103
sb .append (String .format ("\n " +
2098
- indent + " %1$s::Value %2$s() const\n " +
2104
+ indent + " SBE_NODISCARD %1$s::Value %2$s() const\n " +
2099
2105
indent + " {\n " +
2100
2106
"%3$s" +
2101
2107
indent + " %5$s val;\n " +
@@ -2143,7 +2149,7 @@ private static Object generateBitsetProperty(final String propertyName, final To
2143
2149
propertyName ));
2144
2150
2145
2151
sb .append (String .format (
2146
- indent + " %1$s &%2$s()\n " +
2152
+ indent + " SBE_NODISCARD %1$s &%2$s()\n " +
2147
2153
indent + " {\n " +
2148
2154
indent + " m_%2$s.wrap(m_buffer, m_offset + %3$d, m_actingVersion, m_bufferLength);\n " +
2149
2155
indent + " return m_%2$s;\n " +
@@ -2179,7 +2185,7 @@ private static Object generateCompositeProperty(final String propertyName, final
2179
2185
propertyName ));
2180
2186
2181
2187
sb .append (String .format (
2182
- indent + " %1$s &%2$s()\n " +
2188
+ indent + " SBE_NODISCARD %1$s &%2$s()\n " +
2183
2189
indent + " {\n " +
2184
2190
indent + " m_%2$s.wrap(m_buffer, m_offset + %3$d, m_actingVersion, m_bufferLength);\n " +
2185
2191
indent + " return m_%2$s;\n " +
0 commit comments