private CharSequence generatePrimitivePropertyEncode( final String containingClassName, final String propertyName, final Token token, final String indent) { final Encoding encoding = token.encoding(); final String javaTypeName = javaTypeName(encoding.primitiveType()); final int offset = token.offset(); final String byteOrderStr = byteOrderString(encoding); return String.format( "\n" + indent + " public %s %s(final %s value)\n" + indent + " {\n" + indent + " %s;\n" + indent + " return this;\n" + indent + " }\n\n", formatClassName(containingClassName), formatPropertyName(propertyName), javaTypeName, generatePut(encoding.primitiveType(), "offset + " + offset, "value", byteOrderStr)); }
final String fieldName = formatPropertyName(fieldToken.name()); append(sb, indent, "//" + fieldToken); lengthBeforeLastGeneratedSeparator = writeTokenDisplay(fieldName, encodingToken, sb, indent); final String groupName = formatPropertyName(groupToken.name()); final String groupDecoderName = decoderName(formatClassName(groupToken.name())); append(sb, indent, groupDecoderName + " " + groupName + " = " + groupName + "();"); append(sb, indent, "if (" + groupName + ".count() > 0)"); append(sb, indent, "{"); append(sb, indent, " while (" + groupName + ".hasNext())"); append(sb, indent, " {"); append(sb, indent, " " + groupName + ".next().appendTo(builder);"); Separators.ENTRY.appendToGeneratedBuilder(sb, indent + INDENT + INDENT, "builder"); append(sb, indent, " }"); append(sb, indent, " builder.setLength(builder.length() - 1);"); append(sb, indent, "}"); Separators.END_GROUP.appendToGeneratedBuilder(sb, indent, "builder"); final String varDataName = formatPropertyName(varDataToken.name()); append(sb, indent, "builder.append(\"" + varDataName + Separators.KEY_VALUE + "\");"); if (null == characterEncoding)
enum CodecType { DECODER, ENCODER }
append(sb, indent, "public StringBuilder appendTo(final StringBuilder builder)"); append(sb, indent, "{"); Separators.BEGIN_SET.appendToGeneratedBuilder(sb, indent + INDENT, "builder"); append(sb, indent, " boolean atLeastOne = false;"); .forEach((token) -> final String choiceName = formatPropertyName(token.name()); append(sb, indent, " if (" + choiceName + "())"); append(sb, indent, " {"); append(sb, indent, " if (atLeastOne)"); append(sb, indent, " {"); Separators.ENTRY.appendToGeneratedBuilder(sb, indent + INDENT + INDENT + INDENT, "builder"); append(sb, indent, " }"); append(sb, indent, " builder.append(\"" + choiceName + "\");"); append(sb, indent, " atLeastOne = true;"); append(sb, indent, " }"); }); append(sb, indent, " return builder;"); append(sb, indent, "}");
final String className = formatClassName(encoderName(groupName)); final String propertyName = formatPropertyName(groupName); indent + " return %d;\n" + indent + " }\n", formatPropertyName(groupName), token.id())); indent + " return %3$s;\n" + indent + " }\n", generateGroupEncodePropertyJavadoc(indent + INDENT, token, className), className, propertyName));
final String javaTypeName = javaTypeName(primitiveType); final String formattedPropertyName = formatPropertyName(propertyName); javaTypeName, formattedPropertyName, generateLiteral(primitiveType, token.encoding().applicableNullValue().toString()))); javaTypeName, formattedPropertyName, generateLiteral(primitiveType, token.encoding().applicableMinValue().toString()))); javaTypeName, formattedPropertyName, generateLiteral(primitiveType, token.encoding().applicableMaxValue().toString())));
final String className = formatClassName(groupName); final String propertyName = formatPropertyName(token.name()); indent + " return %d;\n" + indent + " }\n", formatPropertyName(groupName), token.id())); indent + " return %d;\n" + indent + " }\n", formatPropertyName(groupName), token.version())); indent + " return %3$s;\n" + indent + " }\n", generateFlyweightPropertyJavadoc(indent + INDENT, token, className), className, propertyName,
final int dimensionHeaderSize) final String className = formatClassName(groupName); indent + " private int offset;\n" + indent + " private int blockLength;\n", generateTypeJavadoc(indent, groupToken), className, dimensionHeaderSize, final String type = formatClassName(decoderName(subGroupName)); final String field = formatPropertyName(subGroupName); sb.append(indent).append(" private final ").append(type).append(" ").append(field).append(";\n"); final String type = formatClassName(decoderName(subGroupName)); final String field = formatPropertyName(subGroupName); sb .append(indent).append(" ")
" {\n", enumName, javaTypeName(primitiveType))); "%s" + " }\n", generateLiteral(primitiveType, tokens.get(0).encoding().applicableNullValue().toString()), handleUnknownLogic));
groupClassNames.add(formatClassName(nameMapping.apply(groupName)));
private CharSequence generatePrimitivePropertyDecode( final boolean inComposite, final String propertyName, final Token propertyToken, final Token encodingToken, final String indent) { final Encoding encoding = encodingToken.encoding(); final String javaTypeName = javaTypeName(encoding.primitiveType()); final int offset = encodingToken.offset(); final String byteOrderStr = byteOrderString(encoding); return String.format( "\n" + indent + " public %s %s()\n" + indent + " {\n" + "%s" + indent + " return %s;\n" + indent + " }\n\n", javaTypeName, formatPropertyName(propertyName), generateFieldNotPresentCondition(inComposite, propertyToken.version(), encoding, indent), generateGet(encoding.primitiveType(), "offset + " + offset, byteOrderStr)); }
private static void generateArrayLengthMethod( final String propertyName, final String indent, final int fieldLength, final StringBuilder sb) { sb.append(String.format("\n" + indent + " public static int %sLength()\n" + indent + " {\n" + indent + " return %d;\n" + indent + " }\n\n", formatPropertyName(propertyName), fieldLength)); }
(fieldToken, typeToken) -> final String propertyName = formatPropertyName(fieldToken.name()); final String typeName = decoderName(formatClassName(typeToken.name()));
private CharSequence generateChoiceDecoders(final List<Token> tokens) { return concatTokens( tokens, Signal.CHOICE, (token) -> { final String choiceName = formatPropertyName(token.name()); final Encoding encoding = token.encoding(); final String choiceBitIndex = encoding.constValue().toString(); final String byteOrderStr = byteOrderString(encoding); final PrimitiveType primitiveType = encoding.primitiveType(); final String argType = bitsetArgType(primitiveType); return String.format("\n" + "%1$s" + " public boolean %2$s()\n" + " {\n" + " return %3$s;\n" + " }\n\n" + " public static boolean %2$s(final %4$s value)\n" + " {\n" + " return %5$s;\n" + " }\n", generateOptionDecodeJavadoc(INDENT, token), choiceName, generateChoiceGet(primitiveType, choiceBitIndex, byteOrderStr), argType, generateStaticChoiceGet(primitiveType, choiceBitIndex)); }); }
(token) -> final String choiceName = formatPropertyName(token.name()); final Encoding encoding = token.encoding(); final String choiceBitIndex = encoding.constValue().toString(); "%6$s" + " }\n", generateOptionEncodeJavadoc(INDENT, token), bitSetClassName, choiceName,
final String javaTypeName = javaTypeName(encoding.primitiveType()); final int offset = token.offset(); final String byteOrderStr = byteOrderString(encoding); indent + " return this;\n" + indent + " }\n", formatClassName(containingClassName), propertyName, javaTypeName,
final String javaTypeName = javaTypeName(encoding.primitiveType()); final int offset = encodingToken.offset(); final String byteOrderStr = byteOrderString(encoding); fieldLength, offset, fieldLength, fieldLength, charset(encoding.characterEncoding())));
private CharSequence generateEnumValues(final List<Token> tokens) { final StringBuilder sb = new StringBuilder(); for (final Token token : tokens) { final Encoding encoding = token.encoding(); final CharSequence constVal = generateLiteral(encoding.primitiveType(), encoding.constValue().toString()); sb.append(generateTypeJavadoc(INDENT, token)); sb.append(INDENT).append(token.name()).append('(').append(constVal).append("),\n\n"); } final Token token = tokens.get(0); final Encoding encoding = token.encoding(); final CharSequence nullVal = generateLiteral( encoding.primitiveType(), encoding.applicableNullValue().toString()); if (shouldDecodeUnknownEnumValues) { sb.append(INDENT).append("/**\n"); sb.append(INDENT).append(" * To be used to represent a not known value from a later version.\n"); sb.append(INDENT).append(" */\n"); sb.append(INDENT).append("SBE_UNKNOWN").append('(').append(nullVal).append("),\n\n"); } sb.append(INDENT).append("/**\n"); sb.append(INDENT).append(" * To be used to represent not present or null.\n"); sb.append(INDENT).append(" */\n"); sb.append(INDENT).append("NULL_VAL").append('(').append(nullVal).append(");\n\n"); return sb; }
final String castType = javaTypeName(type); switch (type)