From bad019ecfdd09f6ff0ea35493154144286f94081 Mon Sep 17 00:00:00 2001 From: Jerry Shea Date: Sat, 28 Jul 2018 21:40:33 +1000 Subject: [PATCH 1/2] Generate noChoicesSet convenience method for Sets --- .../sbe/generation/java/JavaGenerator.java | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/sbe-tool/src/main/java/uk/co/real_logic/sbe/generation/java/JavaGenerator.java b/sbe-tool/src/main/java/uk/co/real_logic/sbe/generation/java/JavaGenerator.java index 4565bd4e82..c1f5c6ac87 100644 --- a/sbe-tool/src/main/java/uk/co/real_logic/sbe/generation/java/JavaGenerator.java +++ b/sbe-tool/src/main/java/uk/co/real_logic/sbe/generation/java/JavaGenerator.java @@ -1052,6 +1052,7 @@ private void generateBitSet(final List tokens) throws IOException try (Writer out = outputManager.createOutput(decoderName)) { generateFixedFlyweightHeader(token, decoderName, out, readOnlyBuffer, fqReadOnlyBuffer); + out.append(generateNoChoicesSet(token.encoding().primitiveType())); out.append(generateChoiceDecoders(messageBody)); out.append(generateChoiceDisplay(messageBody)); out.append("}\n"); @@ -2740,6 +2741,34 @@ private String generatePut( throw new IllegalArgumentException("primitive type not supported: " + type); } + private String generateNoChoicesSet(final PrimitiveType type) + { + return String.format( + "\n public boolean noChoicesSet()\n" + + " {\n" + + " return %1$s;\n" + + " }\n", generateChoiceUnsetInner(type)); + } + + private String generateChoiceUnsetInner(PrimitiveType type) { + switch (type) + { + case UINT8: + return "0 == buffer.getByte(offset)"; + + case UINT16: + return "0 == buffer.getShort(offset)"; + + case UINT32: + return "0 == buffer.getInt(offset)"; + + case UINT64: + return "0 == buffer.getLong(offset)"; + } + + throw new IllegalArgumentException("primitive type not supported: " + type); + } + private String generateChoiceGet(final PrimitiveType type, final String bitIndex, final String byteOrder) { switch (type) From 84187079c995384d02d6d9d2423ac0e14a540985 Mon Sep 17 00:00:00 2001 From: Jerry Shea Date: Sat, 28 Jul 2018 22:29:32 +1000 Subject: [PATCH 2/2] Generate isEmpty convenience method for Sets --- .../uk/co/real_logic/sbe/generation/java/JavaGenerator.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sbe-tool/src/main/java/uk/co/real_logic/sbe/generation/java/JavaGenerator.java b/sbe-tool/src/main/java/uk/co/real_logic/sbe/generation/java/JavaGenerator.java index c1f5c6ac87..23ec287720 100644 --- a/sbe-tool/src/main/java/uk/co/real_logic/sbe/generation/java/JavaGenerator.java +++ b/sbe-tool/src/main/java/uk/co/real_logic/sbe/generation/java/JavaGenerator.java @@ -2744,7 +2744,7 @@ private String generatePut( private String generateNoChoicesSet(final PrimitiveType type) { return String.format( - "\n public boolean noChoicesSet()\n" + + "\n public boolean isEmpty()\n" + " {\n" + " return %1$s;\n" + " }\n", generateChoiceUnsetInner(type));