Skip to content

Commit 777e543

Browse files
committed
[C++] Add skip method for var data fields without reading.
1 parent d4b2326 commit 777e543

File tree

1 file changed

+18
-0
lines changed

1 file changed

+18
-0
lines changed

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

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -443,6 +443,24 @@ private void generateVarData(
443443
generateVarDataDescriptors(
444444
sb, token, propertyName, characterEncoding, lengthToken, lengthOfLengthField, lengthCppType, indent);
445445

446+
new Formatter(sb).format("\n" +
447+
indent + " std::uint64_t skip%1$s()\n" +
448+
indent + " {\n" +
449+
"%2$s" +
450+
indent + " std::uint64_t lengthOfLengthField = %3$d;\n" +
451+
indent + " std::uint64_t lengthPosition = sbePosition();\n" +
452+
indent + " %5$s lengthFieldValue;\n" +
453+
indent + " std::memcpy(&lengthFieldValue, m_buffer + lengthPosition, sizeof(%5$s));\n" +
454+
indent + " std::uint64_t dataLength = %4$s(lengthFieldValue);\n" +
455+
indent + " sbePosition(lengthPosition + lengthOfLengthField + dataLength);\n" +
456+
indent + " return dataLength;\n" +
457+
indent + " }\n",
458+
propertyName,
459+
generateArrayFieldNotPresentCondition(token.version(), indent),
460+
lengthOfLengthField,
461+
lengthByteOrderStr,
462+
lengthCppType);
463+
446464
new Formatter(sb).format("\n" +
447465
indent + " SBE_NODISCARD const char *%1$s()\n" +
448466
indent + " {\n" +

0 commit comments

Comments
 (0)