Skip to content

Commit 5f658a2

Browse files
authored
Merge pull request #659 from denizevrenci/fix_warnings
Fix warnings in tests for C generator
2 parents 6ffbd10 + 77d8782 commit 5f658a2

File tree

4 files changed

+57
-16
lines changed

4 files changed

+57
-16
lines changed

sbe-tool/src/main/java/uk/co/real_logic/sbe/generation/c/CGenerator.java

Lines changed: 36 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -337,7 +337,14 @@ private static void generateGroupHeaderFunctions(
337337

338338
"SBE_ONE_DEF uint64_t %3$s_sbe_position(const struct %3$s *const codec)\n" +
339339
"{\n" +
340+
"#if defined(__GNUG__) && !defined(__clang__)\n" +
341+
"#pragma GCC diagnostic push\n" +
342+
"#pragma GCC diagnostic ignored \"-Wmaybe-uninitialized\"\n" +
343+
"#endif\n" +
340344
" return *codec->position_ptr;\n" +
345+
"#if defined(__GNUG__) && !defined(__clang__)\n" +
346+
"#pragma GCC diagnostic pop\n" +
347+
"#endif\n" +
341348
"}\n\n" +
342349

343350
"SBE_ONE_DEF bool %3$s_set_sbe_position(struct %3$s *const codec, const uint64_t position)\n" +
@@ -358,14 +365,28 @@ private static void generateGroupHeaderFunctions(
358365

359366
"SBE_ONE_DEF bool %3$s_has_next(const struct %3$s *const codec)\n" +
360367
"{\n" +
368+
"#if defined(__GNUG__) && !defined(__clang__)\n" +
369+
"#pragma GCC diagnostic push\n" +
370+
"#pragma GCC diagnostic ignored \"-Wmaybe-uninitialized\"\n" +
371+
"#endif\n" +
361372
" return codec->index + 1 < codec->count;\n" +
373+
"#if defined(__GNUG__) && !defined(__clang__)\n" +
374+
"#pragma GCC diagnostic pop\n" +
375+
"#endif\n" +
362376
"}\n\n" +
363377

364378
"SBE_ONE_DEF struct %3$s *%3$s_next(struct %3$s *const codec)\n" +
365379
"{\n" +
366380
" codec->offset = *codec->position_ptr;\n" +
381+
"#if defined(__GNUG__) && !defined(__clang__)\n" +
382+
"#pragma GCC diagnostic push\n" +
383+
"#pragma GCC diagnostic ignored \"-Wmaybe-uninitialized\"\n" +
384+
"#endif\n" +
367385
" if (SBE_BOUNDS_CHECK_EXPECT(((codec->offset + codec->block_length) " +
368386
"> codec->buffer_length), false))\n" +
387+
"#if defined(__GNUG__) && !defined(__clang__)\n" +
388+
"#pragma GCC diagnostic pop\n" +
389+
"#endif\n" +
369390
" {\n" +
370391
" errno = E108;\n" +
371392
" return NULL;\n" +
@@ -1341,7 +1362,14 @@ private CharSequence generateLoadValue(
13411362
{
13421363
sb.append(String.format(
13431364
" %1$s val;\n" +
1365+
"#if defined(__GNUG__) && !defined(__clang__)\n" +
1366+
"#pragma GCC diagnostic push\n" +
1367+
"#pragma GCC diagnostic ignored \"-Wmaybe-uninitialized\"\n" +
1368+
"#endif\n" +
13441369
" memcpy(&val, codec->buffer + codec->offset + %2$s, sizeof(%1$s));\n" +
1370+
"#if defined(__GNUG__) && !defined(__clang__)\n" +
1371+
"#pragma GCC diagnostic pop\n" +
1372+
"#endif\n" +
13451373
" %4$s %3$s(val);",
13461374
cTypeName,
13471375
offsetStr,
@@ -1400,7 +1428,14 @@ private CharSequence generateStoreValue(
14001428
{
14011429
sb.append(String.format(
14021430
" %1$s val = %2$s(value);\n" +
1403-
" memcpy(codec->buffer + codec->offset + %3$s, &val, sizeof(%1$s));",
1431+
"#if defined(__GNUG__) && !defined(__clang__)\n" +
1432+
"#pragma GCC diagnostic push\n" +
1433+
"#pragma GCC diagnostic ignored \"-Wmaybe-uninitialized\"\n" +
1434+
"#endif\n" +
1435+
" memcpy(codec->buffer + codec->offset + %3$s, &val, sizeof(%1$s));\n" +
1436+
"#if defined(__GNUG__) && !defined(__clang__)\n" +
1437+
"#pragma GCC diagnostic pop\n" +
1438+
"#endif",
14041439
cTypeName,
14051440
byteOrderStr,
14061441
offsetStr));

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

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -387,7 +387,7 @@ private static CharSequence generateGroupProperty(
387387
sb.append(String.format("\n" +
388388
indent + " static SBE_CONSTEXPR std::uint64_t %1$sSinceVersion() SBE_NOEXCEPT\n" +
389389
indent + " {\n" +
390-
indent + " return %2$d;\n" +
390+
indent + " return %2$d;\n" +
391391
indent + " }\n\n" +
392392

393393
indent + " bool %1$sInActingVersion() const SBE_NOEXCEPT\n" +
@@ -437,11 +437,11 @@ private CharSequence generateVarData(final String className, final List<Token> t
437437
indent + " const char *%1$s()\n" +
438438
indent + " {\n" +
439439
"%2$s" +
440-
indent + " %4$s lengthFieldValue;\n" +
441-
indent + " std::memcpy(&lengthFieldValue, m_buffer + sbePosition(), sizeof(%4$s));\n" +
442-
indent + " const char *fieldPtr = m_buffer + sbePosition() + %3$d;\n" +
443-
indent + " sbePosition(sbePosition() + %3$d + %5$s(lengthFieldValue));\n" +
444-
indent + " return fieldPtr;\n" +
440+
indent + " %4$s lengthFieldValue;\n" +
441+
indent + " std::memcpy(&lengthFieldValue, m_buffer + sbePosition(), sizeof(%4$s));\n" +
442+
indent + " const char *fieldPtr = m_buffer + sbePosition() + %3$d;\n" +
443+
indent + " sbePosition(sbePosition() + %3$d + %5$s(lengthFieldValue));\n" +
444+
indent + " return fieldPtr;\n" +
445445
indent + " }\n",
446446
formatPropertyName(propertyName),
447447
generateTypeFieldNotPresentCondition(token.version(), indent),
@@ -539,7 +539,7 @@ private CharSequence generateVarData(final String className, final List<Token> t
539539
indent + " {\n" +
540540
indent + " if (str.length() > %6$d)\n" +
541541
indent + " {\n" +
542-
indent + " throw std::runtime_error(\"std::string too long for length type [E109]\");\n" +
542+
indent + " throw std::runtime_error(\"std::string too long for length type [E109]\");\n" +
543543
indent + " }\n" +
544544
indent + " std::uint64_t lengthOfLengthField = %3$d;\n" +
545545
indent + " std::uint64_t lengthPosition = sbePosition();\n" +
@@ -585,7 +585,7 @@ private void generateVarDataDescriptors(
585585
sb.append(String.format("\n" +
586586
indent + " static SBE_CONSTEXPR std::uint64_t %1$sSinceVersion() SBE_NOEXCEPT\n" +
587587
indent + " {\n" +
588-
indent + " return %2$d;\n" +
588+
indent + " return %2$d;\n" +
589589
indent + " }\n\n" +
590590

591591
indent + " bool %1$sInActingVersion() SBE_NOEXCEPT\n" +
@@ -1365,7 +1365,7 @@ private CharSequence generateArrayProperty(
13651365
indent + " {\n" +
13661366
indent + " if (length > %2$d)\n" +
13671367
indent + " {\n" +
1368-
indent + " throw std::runtime_error(\"length too large for get%1$s [E106]\");\n" +
1368+
indent + " throw std::runtime_error(\"length too large for get%1$s [E106]\");\n" +
13691369
indent + " }\n\n" +
13701370

13711371
"%3$s" +
@@ -1431,7 +1431,7 @@ private CharSequence generateArrayProperty(
14311431
indent + " const size_t srcLength = str.length();\n" +
14321432
indent + " if (srcLength > %4$d)\n" +
14331433
indent + " {\n" +
1434-
indent + " throw std::runtime_error(\"string too large for put%2$s [E106]\");\n" +
1434+
indent + " throw std::runtime_error(\"string too large for put%2$s [E106]\");\n" +
14351435
indent + " }\n\n" +
14361436

14371437
indent + " size_t length = srcLength < %4$d ? srcLength : %4$d;\n" +
@@ -1449,7 +1449,7 @@ private CharSequence generateArrayProperty(
14491449
indent + " const size_t srcLength = str.length();\n" +
14501450
indent + " if (srcLength > %4$d)\n" +
14511451
indent + " {\n" +
1452-
indent + " throw std::runtime_error(\"string too large for put%2$s [E106]\");\n" +
1452+
indent + " throw std::runtime_error(\"string too large for put%2$s [E106]\");\n" +
14531453
indent + " }\n\n" +
14541454

14551455
indent + " size_t length = srcLength < %4$d ? srcLength : %4$d;\n" +
@@ -1791,8 +1791,8 @@ private CharSequence generateMessageFlyweightCode(final String className, final
17911791
" }\n\n" +
17921792

17931793
" %10$s &wrapForDecode(\n" +
1794-
" char *buffer, const std::uint64_t offset, const std::uint64_t actingBlockLength,\n" +
1795-
" const std::uint64_t actingVersion, const std::uint64_t bufferLength)\n" +
1794+
" char *buffer, const std::uint64_t offset, const std::uint64_t actingBlockLength,\n" +
1795+
" const std::uint64_t actingVersion, const std::uint64_t bufferLength)\n" +
17961796
" {\n" +
17971797
" return *this = %10$s(buffer, offset, bufferLength, actingBlockLength, actingVersion);\n" +
17981798
" }\n\n" +
@@ -1916,7 +1916,7 @@ private void generateFieldCommonMethods(
19161916
sb.append(String.format("\n" +
19171917
indent + " static SBE_CONSTEXPR std::uint64_t %1$sSinceVersion() SBE_NOEXCEPT\n" +
19181918
indent + " {\n" +
1919-
indent + " return %2$d;\n" +
1919+
indent + " return %2$d;\n" +
19201920
indent + " }\n\n" +
19211921

19221922
indent + " bool %1$sInActingVersion() SBE_NOEXCEPT\n" +
@@ -1936,7 +1936,7 @@ private void generateFieldCommonMethods(
19361936
sb.append(String.format("\n" +
19371937
indent + " static SBE_CONSTEXPR std::size_t %1$sEncodingOffset() SBE_NOEXCEPT\n" +
19381938
indent + " {\n" +
1939-
indent + " return %2$d;\n" +
1939+
indent + " return %2$d;\n" +
19401940
indent + " }\n",
19411941
propertyName,
19421942
encodingToken.offset()));

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,9 @@ function(sbe_test name)
2020
PRIVATE ${GTEST_SOURCE_DIR}/googletest/include
2121
PRIVATE ${C_CODEC_TARGET_DIR}
2222
)
23+
target_compile_options("C${name}" PRIVATE $<$<CXX_COMPILER_ID:AppleClang>:-Werror>)
24+
target_compile_options("C${name}" PRIVATE $<$<CXX_COMPILER_ID:Clang>:-Werror>)
25+
target_compile_options("C${name}" PRIVATE $<$<CXX_COMPILER_ID:GNU>:-Werror>)
2326
target_link_libraries("C${name}" ${GTEST_LIBS} ${CMAKE_THREAD_LIBS_INIT})
2427
add_test(NAME C${name} COMMAND C${name} WORKING_DIRECTORY ${C_CODEC_TARGET_DIR})
2528
add_dependencies(C${name} gtest)

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,9 @@ function(sbe_test name)
2020
PRIVATE ${GTEST_SOURCE_DIR}/googletest/include
2121
PRIVATE ${CXX_CODEC_TARGET_DIR}
2222
)
23+
target_compile_options("${name}" PRIVATE $<$<CXX_COMPILER_ID:AppleClang>:-Werror>)
24+
target_compile_options("${name}" PRIVATE $<$<CXX_COMPILER_ID:Clang>:-Werror>)
25+
target_compile_options("${name}" PRIVATE $<$<CXX_COMPILER_ID:GNU>:-Werror>)
2326
target_link_libraries("${name}" sbe ${GTEST_LIBS} ${CMAKE_THREAD_LIBS_INIT})
2427
add_test(NAME ${name} COMMAND ${name} WORKING_DIRECTORY ${CXX_CODEC_TARGET_DIR})
2528
add_dependencies(${name} gtest)

0 commit comments

Comments
 (0)