Skip to content

Commit 3655cbf

Browse files
authored
Merge pull request #575 from JerryShea/master
Generate noChoicesSet convenience method for Sets
2 parents 2fb6ea6 + 8418707 commit 3655cbf

File tree

1 file changed

+29
-0
lines changed

1 file changed

+29
-0
lines changed

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

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1052,6 +1052,7 @@ private void generateBitSet(final List<Token> tokens) throws IOException
10521052
try (Writer out = outputManager.createOutput(decoderName))
10531053
{
10541054
generateFixedFlyweightHeader(token, decoderName, out, readOnlyBuffer, fqReadOnlyBuffer);
1055+
out.append(generateNoChoicesSet(token.encoding().primitiveType()));
10551056
out.append(generateChoiceDecoders(messageBody));
10561057
out.append(generateChoiceDisplay(messageBody));
10571058
out.append("}\n");
@@ -2740,6 +2741,34 @@ private String generatePut(
27402741
throw new IllegalArgumentException("primitive type not supported: " + type);
27412742
}
27422743

2744+
private String generateNoChoicesSet(final PrimitiveType type)
2745+
{
2746+
return String.format(
2747+
"\n public boolean isEmpty()\n" +
2748+
" {\n" +
2749+
" return %1$s;\n" +
2750+
" }\n", generateChoiceUnsetInner(type));
2751+
}
2752+
2753+
private String generateChoiceUnsetInner(PrimitiveType type) {
2754+
switch (type)
2755+
{
2756+
case UINT8:
2757+
return "0 == buffer.getByte(offset)";
2758+
2759+
case UINT16:
2760+
return "0 == buffer.getShort(offset)";
2761+
2762+
case UINT32:
2763+
return "0 == buffer.getInt(offset)";
2764+
2765+
case UINT64:
2766+
return "0 == buffer.getLong(offset)";
2767+
}
2768+
2769+
throw new IllegalArgumentException("primitive type not supported: " + type);
2770+
}
2771+
27432772
private String generateChoiceGet(final PrimitiveType type, final String bitIndex, final String byteOrder)
27442773
{
27452774
switch (type)

0 commit comments

Comments
 (0)