String makeReaderForArray(final String streamName, final String arraySize, final JBBPByteOrder byteOrder) { assertNotUnknown(); return String.format(this.methodReadArray, streamName, arraySize, "JBBPByteOrder." + byteOrder.name()); }
@Override public void visitPrimitiveField(final int offsetInCompiledBlock, final int primitiveType, final JBBPNamedFieldInfo nullableNameFieldInfo, final JBBPByteOrder byteOrder, final boolean readWholeStreamAsArray, final boolean altFieldType, final JBBPIntegerValueEvaluator nullableArraySize) { final String fieldName = nullableNameFieldInfo == null ? makeAnonymousFieldName() : prepFldName(nullableNameFieldInfo.getFieldName()); FieldType type = FieldType.findForCode(primitiveType); textFieldType = type.asJavaSingleFieldType(); if (this.builder.generateFields) { getCurrentStruct().getFields().printf("%s %s %s;%n", fieldModifier, textFieldType, fieldName); getCurrentStruct().getReadFunc().println(String.format("this.%s = %s;", fieldName, type.makeReaderForSingleField(NAME_INPUT_STREAM, byteOrder))); getCurrentStruct().getWriteFunc().print(type.makeWriterForSingleField(NAME_OUTPUT_STREAM, "this." + fieldName, byteOrder)).println(";"); } else { textFieldType = type.asJavaArrayFieldType() + " []"; if (this.builder.generateFields) { getCurrentStruct().getFields().printf("%s %s %s;%n", fieldModifier, textFieldType, fieldName); getCurrentStruct().getReadFunc().printf("this.%s = %s;%n", fieldName, type.makeReaderForArray(NAME_INPUT_STREAM, arraySizeIn, byteOrder)); if (readWholeStreamAsArray) { getCurrentStruct().getWriteFunc().print(type.makeWriterForArrayWithUnknownSize(NAME_OUTPUT_STREAM, "this." + fieldName, byteOrder)).println(";"); } else { getCurrentStruct().getWriteFunc().print(type.makeWriterForArray(NAME_OUTPUT_STREAM, "this." + fieldName, arraySizeOut, byteOrder)).println(";");
@Override public void visitValField(final int offsetInCompiledBlock, final JBBPNamedFieldInfo nameFieldInfo, final JBBPIntegerValueEvaluator expression) { final String fieldName = prepFldName(nameFieldInfo.getFieldName()); FieldType type = FieldType.VAL; registerNamedField(nameFieldInfo, type); final String fieldModifier = makeModifier(nameFieldInfo); processSkipRemainingFlag(); final String textFieldType = type.asJavaSingleFieldType(); if (this.builder.generateFields) { getCurrentStruct().getFields().printf("%s %s %s;%n", fieldModifier, textFieldType, fieldName); } final String valIn = evaluatorToString(NAME_INPUT_STREAM, offsetInCompiledBlock, expression, this.flagSet, false); final String valOut = evaluatorToString(NAME_OUTPUT_STREAM, offsetInCompiledBlock, expression, this.flagSet, false); getCurrentStruct().getReadFunc().println(String.format("this.%s = %s;", fieldName, valIn)); getCurrentStruct().getWriteFunc().println(String.format("this.%s = %s;", fieldName, valOut)); if (this.builder.addGettersSetters) { registerGetterSetter(textFieldType, fieldName, true); } }
String asJavaSingleFieldType() { assertNotUnknown(); return this.javaSingleType; }
String makeWriterForArray(final String streamName, final String fieldName, final String arraySize, final JBBPByteOrder byteOrder) { assertNotUnknown(); return String.format(this.methodWriteArray, streamName, fieldName, arraySize, "JBBPByteOrder." + byteOrder.name()); }
String asJavaArrayFieldType() { assertNotUnknown(); return this.javaArrayType; }
String makeWriterForSingleField(final String streamName, final String fieldName, final JBBPByteOrder byteOrder) { assertNotUnknown(); return String.format(this.methodWriteOne, streamName, fieldName, "JBBPByteOrder." + byteOrder.name()); }
String makeReaderForSingleField(final String streamName, final JBBPByteOrder byteOrder) { assertNotUnknown(); return String.format(this.methodReadOne, streamName, "JBBPByteOrder." + byteOrder.name()); }
static FieldType findForCode(final int code) { for (final FieldType t : values()) { if (t.code == code) { return t; } } return UNKNOWN; }
String makeWriterForArrayWithUnknownSize(final String streamName, final String fieldName, final JBBPByteOrder byteOrder) { assertNotUnknown(); return String.format(this.methodWriteArrayWithUnknownSize, streamName, fieldName, "JBBPByteOrder." + byteOrder.name()); } }