Skip to content

Commit d8a01ce

Browse files
committed
[C++] Use [[nodiscard]] attribute where applicable.
1 parent ce5802e commit d8a01ce

File tree

1 file changed

+52
-46
lines changed

1 file changed

+52
-46
lines changed

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

Lines changed: 52 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -206,7 +206,7 @@ private static void generateGroupClassHeader(
206206
indent + " std::uint64_t m_offset;\n" +
207207
indent + " std::uint64_t m_actingVersion;\n\n" +
208208

209-
indent + " std::uint64_t *sbePositionPtr() SBE_NOEXCEPT\n" +
209+
indent + " SBE_NODISCARD std::uint64_t *sbePositionPtr() SBE_NOEXCEPT\n" +
210210
indent + " {\n" +
211211
indent + " return m_positionPtr;\n" +
212212
indent + " }\n\n" +
@@ -283,7 +283,7 @@ private static void generateGroupClassHeader(
283283
indent + " return %2$d;\n" +
284284
indent + " }\n\n" +
285285

286-
indent + " std::uint64_t sbePosition() const\n" +
286+
indent + " SBE_NODISCARD std::uint64_t sbePosition() const\n" +
287287
indent + " {\n" +
288288
indent + " return *m_positionPtr;\n" +
289289
indent + " }\n\n" +
@@ -302,12 +302,12 @@ private static void generateGroupClassHeader(
302302
indent + " *m_positionPtr = sbeCheckPosition(position);\n" +
303303
indent + " }\n\n" +
304304

305-
indent + " inline std::uint64_t count() const SBE_NOEXCEPT\n" +
305+
indent + " SBE_NODISCARD inline std::uint64_t count() const SBE_NOEXCEPT\n" +
306306
indent + " {\n" +
307307
indent + " return m_count;\n" +
308308
indent + " }\n\n" +
309309

310-
indent + " inline bool hasNext() const SBE_NOEXCEPT\n" +
310+
indent + " SBE_NODISCARD inline bool hasNext() const SBE_NOEXCEPT\n" +
311311
indent + " {\n" +
312312
indent + " return m_index + 1 < m_count;\n" +
313313
indent + " }\n\n" +
@@ -367,15 +367,15 @@ private static CharSequence generateGroupProperty(
367367
propertyName));
368368

369369
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" +
371371
indent + " {\n" +
372372
indent + " return %2$d;\n" +
373373
indent + " }\n",
374374
groupName,
375375
token.id()));
376376

377377
sb.append(String.format("\n" +
378-
indent + " inline %1$s &%2$s()\n" +
378+
indent + " SBE_NODISCARD inline %1$s &%2$s()\n" +
379379
indent + " {\n" +
380380
indent + " m_%2$s.wrapForDecode(m_buffer, sbePositionPtr(), m_actingVersion, m_bufferLength);\n" +
381381
indent + " return m_%2$s;\n" +
@@ -395,12 +395,12 @@ private static CharSequence generateGroupProperty(
395395
cppTypeForNumInGroup));
396396

397397
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" +
399399
indent + " {\n" +
400400
indent + " return %2$d;\n" +
401401
indent + " }\n\n" +
402402

403-
indent + " bool %1$sInActingVersion() const SBE_NOEXCEPT\n" +
403+
indent + " SBE_NODISCARD bool %1$sInActingVersion() const SBE_NOEXCEPT\n" +
404404
indent + " {\n" +
405405
indent + "#if defined(__clang__)\n" +
406406
indent + "#pragma clang diagnostic push\n" +
@@ -444,7 +444,7 @@ private CharSequence generateVarData(final String className, final List<Token> t
444444
sb, token, propertyName, characterEncoding, lengthToken, lengthOfLengthField, lengthCppType, indent);
445445

446446
sb.append(String.format("\n" +
447-
indent + " const char *%1$s()\n" +
447+
indent + " SBE_NODISCARD const char *%1$s()\n" +
448448
indent + " {\n" +
449449
"%2$s" +
450450
indent + " %4$s lengthFieldValue;\n" +
@@ -771,7 +771,7 @@ private CharSequence generateChoices(final String bitsetClassName, final List<To
771771
choiceBitPosition));
772772

773773
sb.append(String.format("\n" +
774-
" bool %1$s() const\n" +
774+
" SBE_NODISCARD bool %1$s() const\n" +
775775
" {\n" +
776776
"%2$s" +
777777
" %4$s val;\n" +
@@ -979,6 +979,12 @@ private static CharSequence generateFileHeader(
979979
"# define SBE_NOEXCEPT\n" +
980980
"#endif\n\n" +
981981

982+
"#if __cplusplus >= 201703L\n" +
983+
"# define SBE_NODISCARD [[nodiscard]]\n" +
984+
"#else\n" +
985+
"# define SBE_NODISCARD\n" +
986+
"#endif\n\n" +
987+
982988
"#if !defined(__STDC_LIMIT_MACROS)\n" +
983989
"# define __STDC_LIMIT_MACROS 1\n" +
984990
"#endif\n" +
@@ -1273,7 +1279,7 @@ private CharSequence generateSingleValueProperty(
12731279
final StringBuilder sb = new StringBuilder();
12741280

12751281
sb.append(String.format("\n" +
1276-
indent + " %1$s %2$s() const\n" +
1282+
indent + " SBE_NODISCARD %1$s %2$s() const\n" +
12771283
indent + " {\n" +
12781284
"%3$s" +
12791285
"%4$s" +
@@ -1319,7 +1325,7 @@ private CharSequence generateArrayProperty(
13191325
arrayLength));
13201326

13211327
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" +
13231329
indent + " {\n" +
13241330
"%2$s" +
13251331
indent + " return m_buffer + m_offset + %3$d;\n" +
@@ -1329,7 +1335,7 @@ private CharSequence generateArrayProperty(
13291335
offset));
13301336

13311337
sb.append(String.format("\n" +
1332-
indent + " char *%1$s() SBE_NOEXCEPT\n" +
1338+
indent + " SBE_NODISCARD char *%1$s() SBE_NOEXCEPT\n" +
13331339
indent + " {\n" +
13341340
"%2$s" +
13351341
indent + " return m_buffer + m_offset + %3$d;\n" +
@@ -1345,7 +1351,7 @@ private CharSequence generateArrayProperty(
13451351
indent);
13461352

13471353
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" +
13491355
indent + " {\n" +
13501356
indent + " if (index >= %3$d)\n" +
13511357
indent + " {\n" +
@@ -1536,7 +1542,7 @@ private CharSequence generateConstPropertyMethods(
15361542
if (token.encoding().primitiveType() != PrimitiveType.CHAR)
15371543
{
15381544
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" +
15401546
indent + " {\n" +
15411547
indent + " return %3$s;\n" +
15421548
indent + " }\n",
@@ -1568,7 +1574,7 @@ private CharSequence generateConstPropertyMethods(
15681574
constantValue.length));
15691575

15701576
sb.append(String.format("\n" +
1571-
indent + " const char *%1$s() const\n" +
1577+
indent + " SBE_NODISCARD const char *%1$s() const\n" +
15721578
indent + " {\n" +
15731579
indent + " static std::uint8_t %1$sValues[] = {%2$s};\n\n" +
15741580

@@ -1674,42 +1680,42 @@ private CharSequence generateFixedFlyweightCode(final String className, final in
16741680
" return *this = %1$s(buffer, offset, bufferLength, actingVersion);\n" +
16751681
" }\n\n" +
16761682

1677-
" static SBE_CONSTEXPR std::uint64_t encodedLength() SBE_NOEXCEPT\n" +
1683+
" SBE_NODISCARD static SBE_CONSTEXPR std::uint64_t encodedLength() SBE_NOEXCEPT\n" +
16781684
" {\n" +
16791685
" return %2$s;\n" +
16801686
" }\n\n" +
16811687

1682-
" std::uint64_t offset() const SBE_NOEXCEPT\n" +
1688+
" SBE_NODISCARD std::uint64_t offset() const SBE_NOEXCEPT\n" +
16831689
" {\n" +
16841690
" return m_offset;\n" +
16851691
" }\n\n" +
16861692

1687-
" const char * buffer() const SBE_NOEXCEPT\n" +
1693+
" SBE_NODISCARD const char * buffer() const SBE_NOEXCEPT\n" +
16881694
" {\n" +
16891695
" return m_buffer;\n" +
16901696
" }\n\n" +
16911697

1692-
" char * buffer() SBE_NOEXCEPT\n" +
1698+
" SBE_NODISCARD char * buffer() SBE_NOEXCEPT\n" +
16931699
" {\n" +
16941700
" return m_buffer;\n" +
16951701
" }\n\n" +
16961702

1697-
" std::uint64_t bufferLength() const SBE_NOEXCEPT\n" +
1703+
" SBE_NODISCARD std::uint64_t bufferLength() const SBE_NOEXCEPT\n" +
16981704
" {\n" +
16991705
" return m_bufferLength;\n" +
17001706
" }\n\n" +
17011707

1702-
" std::uint64_t actingVersion() const SBE_NOEXCEPT\n" +
1708+
" SBE_NODISCARD std::uint64_t actingVersion() const SBE_NOEXCEPT\n" +
17031709
" {\n" +
17041710
" return m_actingVersion;\n" +
17051711
" }\n\n" +
17061712

1707-
" static SBE_CONSTEXPR %3$s sbeSchemaId() SBE_NOEXCEPT\n" +
1713+
" SBE_NODISCARD static SBE_CONSTEXPR %3$s sbeSchemaId() SBE_NOEXCEPT\n" +
17081714
" {\n" +
17091715
" return %4$s;\n" +
17101716
" }\n\n" +
17111717

1712-
" static SBE_CONSTEXPR %5$s sbeSchemaVersion() SBE_NOEXCEPT\n" +
1718+
" SBE_NODISCARD static SBE_CONSTEXPR %5$s sbeSchemaVersion() SBE_NOEXCEPT\n" +
17131719
" {\n" +
17141720
" return %6$s;\n" +
17151721
" }\n",
@@ -1793,32 +1799,32 @@ private CharSequence generateMessageFlyweightCode(final String className, final
17931799
" };\n\n" +
17941800

17951801
"%11$s" +
1796-
" static SBE_CONSTEXPR %1$s sbeBlockLength() SBE_NOEXCEPT\n" +
1802+
" SBE_NODISCARD static SBE_CONSTEXPR %1$s sbeBlockLength() SBE_NOEXCEPT\n" +
17971803
" {\n" +
17981804
" return %2$s;\n" +
17991805
" }\n\n" +
18001806

1801-
" static SBE_CONSTEXPR %3$s sbeTemplateId() SBE_NOEXCEPT\n" +
1807+
" SBE_NODISCARD static SBE_CONSTEXPR %3$s sbeTemplateId() SBE_NOEXCEPT\n" +
18021808
" {\n" +
18031809
" return %4$s;\n" +
18041810
" }\n\n" +
18051811

1806-
" static SBE_CONSTEXPR %5$s sbeSchemaId() SBE_NOEXCEPT\n" +
1812+
" SBE_NODISCARD static SBE_CONSTEXPR %5$s sbeSchemaId() SBE_NOEXCEPT\n" +
18071813
" {\n" +
18081814
" return %6$s;\n" +
18091815
" }\n\n" +
18101816

1811-
" static SBE_CONSTEXPR %7$s sbeSchemaVersion() SBE_NOEXCEPT\n" +
1817+
" SBE_NODISCARD static SBE_CONSTEXPR %7$s sbeSchemaVersion() SBE_NOEXCEPT\n" +
18121818
" {\n" +
18131819
" return %8$s;\n" +
18141820
" }\n\n" +
18151821

1816-
" static SBE_CONSTEXPR const char * sbeSemanticType() SBE_NOEXCEPT\n" +
1822+
" SBE_NODISCARD static SBE_CONSTEXPR const char * sbeSemanticType() SBE_NOEXCEPT\n" +
18171823
" {\n" +
18181824
" return \"%9$s\";\n" +
18191825
" }\n\n" +
18201826

1821-
" std::uint64_t offset() const SBE_NOEXCEPT\n" +
1827+
" SBE_NODISCARD std::uint64_t offset() const SBE_NOEXCEPT\n" +
18221828
" {\n" +
18231829
" return m_offset;\n" +
18241830
" }\n\n" +
@@ -1854,7 +1860,7 @@ private CharSequence generateMessageFlyweightCode(final String className, final
18541860
" return *this = %10$s(buffer, offset, bufferLength, actingBlockLength, actingVersion);\n" +
18551861
" }\n\n" +
18561862

1857-
" std::uint64_t sbePosition() const SBE_NOEXCEPT\n" +
1863+
" SBE_NODISCARD std::uint64_t sbePosition() const SBE_NOEXCEPT\n" +
18581864
" {\n" +
18591865
" return m_position;\n" +
18601866
" }\n\n" +
@@ -1873,27 +1879,27 @@ private CharSequence generateMessageFlyweightCode(final String className, final
18731879
" m_position = sbeCheckPosition(position);\n" +
18741880
" }\n\n" +
18751881

1876-
" std::uint64_t encodedLength() const SBE_NOEXCEPT\n" +
1882+
" SBE_NODISCARD std::uint64_t encodedLength() const SBE_NOEXCEPT\n" +
18771883
" {\n" +
18781884
" return sbePosition() - m_offset;\n" +
18791885
" }\n\n" +
18801886

1881-
" const char * buffer() const SBE_NOEXCEPT\n" +
1887+
" SBE_NODISCARD const char * buffer() const SBE_NOEXCEPT\n" +
18821888
" {\n" +
18831889
" return m_buffer;\n" +
18841890
" }\n\n" +
18851891

1886-
" char * buffer() SBE_NOEXCEPT\n" +
1892+
" SBE_NODISCARD char * buffer() SBE_NOEXCEPT\n" +
18871893
" {\n" +
18881894
" return m_buffer;\n" +
18891895
" }\n\n" +
18901896

1891-
" std::uint64_t bufferLength() const SBE_NOEXCEPT\n" +
1897+
" SBE_NODISCARD std::uint64_t bufferLength() const SBE_NOEXCEPT\n" +
18921898
" {\n" +
18931899
" return m_bufferLength;\n" +
18941900
" }\n\n" +
18951901

1896-
" std::uint64_t actingVersion() const SBE_NOEXCEPT\n" +
1902+
" SBE_NODISCARD std::uint64_t actingVersion() const SBE_NOEXCEPT\n" +
18971903
" {\n" +
18981904
" return m_actingVersion;\n" +
18991905
" }\n",
@@ -1971,12 +1977,12 @@ private void generateFieldCommonMethods(
19711977
}
19721978

19731979
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" +
19751981
indent + " {\n" +
19761982
indent + " return %2$d;\n" +
19771983
indent + " }\n\n" +
19781984

1979-
indent + " bool %1$sInActingVersion() SBE_NOEXCEPT\n" +
1985+
indent + " SBE_NODISCARD bool %1$sInActingVersion() SBE_NOEXCEPT\n" +
19801986
indent + " {\n" +
19811987
indent + "#if defined(__clang__)\n" +
19821988
indent + "#pragma clang diagnostic push\n" +
@@ -1991,7 +1997,7 @@ private void generateFieldCommonMethods(
19911997
fieldToken.version()));
19921998

19931999
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" +
19952001
indent + " {\n" +
19962002
indent + " return %2$d;\n" +
19972003
indent + " }\n",
@@ -2008,7 +2014,7 @@ private static void generateFieldMetaAttributeMethod(
20082014
final String semanticType = encoding.semanticType() == null ? "" : encoding.semanticType();
20092015

20102016
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)" +
20122018
" SBE_NOEXCEPT\n" +
20132019
indent + " {\n" +
20142020
indent + " switch (metaAttribute)\n" +
@@ -2061,7 +2067,7 @@ private CharSequence generateEnumProperty(
20612067
final StringBuilder sb = new StringBuilder();
20622068

20632069
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" +
20652071
indent + " {\n" +
20662072
indent + " return %2$d;\n" +
20672073
indent + " }\n",
@@ -2073,7 +2079,7 @@ private CharSequence generateEnumProperty(
20732079
final String constValue = fieldToken.encoding().constValue().toString();
20742080

20752081
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" +
20772083
indent + " {\n" +
20782084
indent + " return %1$s::Value::%3$s;\n" +
20792085
indent + " }\n",
@@ -2082,7 +2088,7 @@ private CharSequence generateEnumProperty(
20822088
constValue.substring(constValue.indexOf(".") + 1)));
20832089

20842090
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" +
20862092
indent + " {\n" +
20872093
"%3$s" +
20882094
indent + " return %1$s::Value::%4$s;\n" +
@@ -2095,7 +2101,7 @@ private CharSequence generateEnumProperty(
20952101
else
20962102
{
20972103
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" +
20992105
indent + " {\n" +
21002106
"%3$s" +
21012107
indent + " %5$s val;\n" +
@@ -2143,7 +2149,7 @@ private static Object generateBitsetProperty(final String propertyName, final To
21432149
propertyName));
21442150

21452151
sb.append(String.format(
2146-
indent + " %1$s &%2$s()\n" +
2152+
indent + " SBE_NODISCARD %1$s &%2$s()\n" +
21472153
indent + " {\n" +
21482154
indent + " m_%2$s.wrap(m_buffer, m_offset + %3$d, m_actingVersion, m_bufferLength);\n" +
21492155
indent + " return m_%2$s;\n" +
@@ -2179,7 +2185,7 @@ private static Object generateCompositeProperty(final String propertyName, final
21792185
propertyName));
21802186

21812187
sb.append(String.format(
2182-
indent + " %1$s &%2$s()\n" +
2188+
indent + " SBE_NODISCARD %1$s &%2$s()\n" +
21832189
indent + " {\n" +
21842190
indent + " m_%2$s.wrap(m_buffer, m_offset + %3$d, m_actingVersion, m_bufferLength);\n" +
21852191
indent + " return m_%2$s;\n" +

0 commit comments

Comments
 (0)