Skip to content

Commit d43a2d5

Browse files
authored
Merge pull request #724 from trozen/cpp-set-raw-value
[C++] Read/write set raw value
2 parents da83679 + 8db4cfa commit d43a2d5

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
@@ -669,6 +669,24 @@ private void generateChoiceSet(final List<Token> tokens) throws IOException
669669
" }\n",
670670
cppTypeName(tokens.get(0).encoding().primitiveType())));
671671

672+
out.append(String.format("\n" +
673+
" SBE_NODISCARD %1$s rawValue() const\n" +
674+
" {\n" +
675+
" %1$s val;\n" +
676+
" std::memcpy(&val, m_buffer + m_offset, sizeof(%1$s));\n" +
677+
" return val;\n" +
678+
" }\n",
679+
cppTypeName(tokens.get(0).encoding().primitiveType())));
680+
681+
out.append(String.format("\n" +
682+
" %1$s &rawValue(%2$s value)\n" +
683+
" {\n" +
684+
" std::memcpy(m_buffer + m_offset, &value, sizeof(%2$s));\n" +
685+
" return *this;\n" +
686+
" }\n",
687+
bitSetName,
688+
cppTypeName(tokens.get(0).encoding().primitiveType())));
689+
672690
out.append(generateChoices(bitSetName, tokens.subList(1, tokens.size() - 1)));
673691
out.append(generateChoicesDisplay(bitSetName, tokens.subList(1, tokens.size() - 1)));
674692
out.append("};\n");

0 commit comments

Comments
 (0)