@@ -388,7 +388,7 @@ public void visitStructureStart(final int offsetInCompiledBlock, final JBBPByteO
388388 if (nullableArraySize == null ) {
389389 structType = structBaseTypeName ;
390390 if (this .builder .generateFields ) {
391- printField (nullableNameFieldInfo , byteOrder , false , getCurrentStruct ().getFields ().indent (), null , fieldModifier , structType , structName );
391+ printField (nullableNameFieldInfo , byteOrder , false , offsetInCompiledBlock , getCurrentStruct ().getFields ().indent (), null , fieldModifier , structType , structName );
392392 }
393393
394394 processSkipRemainingFlag ();
@@ -401,7 +401,7 @@ public void visitStructureStart(final int offsetInCompiledBlock, final JBBPByteO
401401 } else {
402402 structType = structBaseTypeName + " []" ;
403403 if (this .builder .generateFields ) {
404- printField (nullableNameFieldInfo , byteOrder , true , getCurrentStruct ().getFields ().indent (), null , fieldModifier , structType , structName );
404+ printField (nullableNameFieldInfo , byteOrder , true , offsetInCompiledBlock , getCurrentStruct ().getFields ().indent (), null , fieldModifier , structType , structName );
405405 }
406406 processSkipRemainingFlag ();
407407 processSkipRemainingFlagForWriting ("this." + structName );
@@ -486,7 +486,12 @@ public void visitStructureEnd(final int offsetInCompiledBlock, final JBBPNamedFi
486486 }
487487
488488 @ Override
489- public void visitValField (final int offsetInCompiledBlock , final JBBPByteOrder byteOrder , final JBBPNamedFieldInfo nameFieldInfo , final JBBPIntegerValueEvaluator expression ) {
489+ public void visitValField (
490+ final int offsetInCompiledBlock ,
491+ final JBBPByteOrder byteOrder ,
492+ final JBBPNamedFieldInfo nameFieldInfo ,
493+ final JBBPIntegerValueEvaluator expression
494+ ) {
490495 final String fieldName = prepFldName (nameFieldInfo .getFieldName ());
491496 FieldType type = FieldType .VAL ;
492497
@@ -505,7 +510,7 @@ public void visitValField(final int offsetInCompiledBlock, final JBBPByteOrder b
505510 getCurrentStruct ().getFields ().printf ("@Bin(name=\" %s\" )" , nameFieldInfo .getFieldName ());
506511 }
507512 }
508- printField (nameFieldInfo , byteOrder , false , getCurrentStruct ().getFields (), FieldType .VAL , fieldModifier , textFieldType , fieldName );
513+ printField (nameFieldInfo , byteOrder , false , offsetInCompiledBlock , getCurrentStruct ().getFields (), FieldType .VAL , fieldModifier , textFieldType , fieldName );
509514 }
510515
511516 final String valIn = evaluatorToString (NAME_INPUT_STREAM , offsetInCompiledBlock , expression , this .flagSet , false );
@@ -522,6 +527,7 @@ public void visitValField(final int offsetInCompiledBlock, final JBBPByteOrder b
522527 private void printField (final JBBPNamedFieldInfo nullableFieldInfo ,
523528 final JBBPByteOrder byteOrder ,
524529 final boolean array ,
530+ final int fieldOrder ,
525531 final JavaSrcTextBuffer buffer ,
526532 final FieldType nullableFieldType ,
527533 final String modifier ,
@@ -534,22 +540,23 @@ private void printField(final JBBPNamedFieldInfo nullableFieldInfo,
534540 || nullableFieldType .getBinType () == BinType .UNDEFINED
535541 || nullableFieldType .getBinTypeArray () == BinType .UNDEFINED ) {
536542 if (binName == null ) {
537- buffer .printf ("@Bin(outByteOrder =JBBPByteOrder.%s)%n" , byteOrder .name ());
543+ buffer .printf ("@Bin(byteOrder =JBBPByteOrder.%s,order=%s )%n" , byteOrder .name (), Integer . toString ( fieldOrder ));
538544 } else {
539- buffer .printf ("@Bin(name=\" %s\" ,outByteOrder =JBBPByteOrder.%s)%n" , binName , byteOrder .name ());
545+ buffer .printf ("@Bin(name=\" %s\" ,byteOrder =JBBPByteOrder.%s,order=%s )%n" , binName , byteOrder .name (), Integer . toString ( fieldOrder ));
540546 }
541547 } else {
542548 if (binName == null ) {
543- buffer .printf ("@Bin(type=BinType.%s,outByteOrder =JBBPByteOrder.%s)%n" , array ? nullableFieldType .getBinTypeArray () : nullableFieldType .getBinType (), byteOrder .name ());
549+ buffer .printf ("@Bin(type=BinType.%s,byteOrder =JBBPByteOrder.%s,order=%s )%n" , array ? nullableFieldType .getBinTypeArray () : nullableFieldType .getBinType (), byteOrder .name (), Integer . toString ( fieldOrder ));
544550 } else {
545- buffer .printf ("@Bin(name=\" %s\" ,type=BinType.%s,outByteOrder =JBBPByteOrder.%s)%n" , binName , array ? nullableFieldType .getBinTypeArray () : nullableFieldType .getBinType (), byteOrder .name ());
551+ buffer .printf ("@Bin(name=\" %s\" ,type=BinType.%s,byteOrder =JBBPByteOrder.%s,order=%s )%n" , binName , array ? nullableFieldType .getBinTypeArray () : nullableFieldType .getBinType (), byteOrder .name (), Integer . toString ( fieldOrder ));
546552 }
547553 }
548554 }
549555 buffer .printf ("%s %s %s;%n" , modifier , type , name );
550556 }
551557
552558 private void printBitField (final boolean array ,
559+ final int fieldOrder ,
553560 final JBBPByteOrder byteOrder ,
554561 final JBBPNamedFieldInfo nullableFieldInfo ,
555562 final String sizeOfFieldOut ,
@@ -560,14 +567,16 @@ private void printBitField(final boolean array,
560567 if (this .builder .addBinAnnotations ) {
561568 final String binName = nullableFieldInfo == null ? null : nullableFieldInfo .getFieldName ();
562569 if (binName == null ) {
563- buffer .printf ("@Bin(type=BinType.%s,outBitNumber =%s,outByteOrder =JBBPByteOrder.%s)%n" ,
570+ buffer .printf ("@Bin(type=BinType.%s,bitNumber =%s,byteOrder =JBBPByteOrder.%s,order= %s)%n" ,
564571 (array ? BinType .BIT_ARRAY : BinType .BIT ).name (),
565- sizeOfFieldOut , byteOrder .name ());
572+ sizeOfFieldOut , byteOrder .name (),
573+ Integer .toString (fieldOrder ));
566574 } else {
567- buffer .printf ("@Bin(name=\" %s\" ,type=BinType.%s,outBitNumber =%s,outByteOrder =JBBPByteOrder.%s)%n" ,
575+ buffer .printf ("@Bin(name=\" %s\" ,type=BinType.%s,bitNumber =%s,byteOrder =JBBPByteOrder.%s,order= %s)%n" ,
568576 binName ,
569577 (array ? BinType .BIT_ARRAY : BinType .BIT ).name (),
570- sizeOfFieldOut , byteOrder .name ());
578+ sizeOfFieldOut , byteOrder .name (),
579+ Integer .toString (fieldOrder ));
571580 }
572581 }
573582 buffer .printf ("%s %s %s;%n" , modifier , type , name );
@@ -619,6 +628,7 @@ public void visitPrimitiveField(
619628 nullableNameFieldInfo ,
620629 byteOrder ,
621630 false ,
631+ offsetInCompiledBlock ,
622632 getCurrentStruct ().getFields (),
623633 type ,
624634 fieldModifier ,
@@ -631,7 +641,7 @@ public void visitPrimitiveField(
631641 } else {
632642 textFieldType = type .asJavaArrayFieldType () + " []" ;
633643 if (this .builder .generateFields ) {
634- printField (nullableNameFieldInfo , byteOrder , true , getCurrentStruct ().getFields (), type , fieldModifier , textFieldType , fieldName );
644+ printField (nullableNameFieldInfo , byteOrder , true , offsetInCompiledBlock , getCurrentStruct ().getFields (), type , fieldModifier , textFieldType , fieldName );
635645 }
636646 getCurrentStruct ().getReadFunc ().printf ("this.%s = %s;%n" , fieldName , type .makeReaderForArray (NAME_INPUT_STREAM , arraySizeIn , byteOrder ));
637647 if (readWholeStreamAsArray ) {
@@ -725,6 +735,7 @@ public void visitBitField(final int offsetInCompiledBlock, final JBBPByteOrder b
725735 if (this .builder .generateFields ) {
726736 printBitField (
727737 nullableArraySize != null ,
738+ offsetInCompiledBlock ,
728739 byteOrder ,
729740 nullableNameFieldInfo ,
730741 sizeOfFieldOut ,
@@ -846,7 +857,7 @@ public void visitVarField(
846857 if (readWholeStreamIntoArray || nullableArraySizeEvaluator != null ) {
847858 fieldType = "JBBPAbstractArrayField<? extends JBBPAbstractField>" ;
848859 if (this .builder .generateFields ) {
849- printField (nullableNameFieldInfo , byteOrder , true , getCurrentStruct ().getFields (), FieldType .VAR , fieldModifier , fieldType , fieldName );
860+ printField (nullableNameFieldInfo , byteOrder , true , offsetInCompiledBlock , getCurrentStruct ().getFields (), FieldType .VAR , fieldModifier , fieldType , fieldName );
850861 }
851862
852863 this .getCurrentStruct ().getReadFunc ().printf ("%s = %s;%n" ,
@@ -873,7 +884,7 @@ public void visitVarField(
873884 } else {
874885 fieldType = "JBBPAbstractField" ;
875886 if (this .builder .generateFields ) {
876- printField (nullableNameFieldInfo , byteOrder , false , getCurrentStruct ().getFields (), FieldType .VAR , fieldModifier , fieldType , fieldName );
887+ printField (nullableNameFieldInfo , byteOrder , false , offsetInCompiledBlock , getCurrentStruct ().getFields (), FieldType .VAR , fieldModifier , fieldType , fieldName );
877888 }
878889
879890 this .getCurrentStruct ().getReadFunc ().printf ("%s = %s;%n" ,
0 commit comments