@@ -2915,6 +2915,7 @@ private CharSequence generateMessageLength(
2915
2915
final String indent )
2916
2916
{
2917
2917
final StringBuilder sbEncode = new StringBuilder ();
2918
+ final StringBuilder sbSkip = new StringBuilder ();
2918
2919
2919
2920
for (int i = 0 , size = groups .size (); i < size ; i ++)
2920
2921
{
@@ -2979,6 +2980,15 @@ private CharSequence generateMessageLength(
2979
2980
generateMessageLengthCallPre17Helper (thisGroup ));
2980
2981
}
2981
2982
2983
+ new Formatter (sbSkip ).format (
2984
+ indent + " %2$s().forEach([](%1$s e)" +
2985
+ indent + " {\n " +
2986
+ indent + " e.skip();\n " +
2987
+ indent + " });\n " ,
2988
+ formatClassName (groupToken .name ()),
2989
+ formatPropertyName (groupToken .name ()),
2990
+ groupToken .name ());
2991
+
2982
2992
i = endSignal ;
2983
2993
}
2984
2994
@@ -2991,6 +3001,7 @@ private CharSequence generateMessageLength(
2991
3001
throw new IllegalStateException ("tokens must begin with BEGIN_VAR_DATA: token=" + varDataToken );
2992
3002
}
2993
3003
3004
+ final String propertyName = toUpperFirstChar (varDataToken .name ());
2994
3005
final Token lengthToken = Generators .findFirst ("length" , varData , i );
2995
3006
2996
3007
new Formatter (sbEncode ).format ("\n " +
@@ -3003,12 +3014,21 @@ private CharSequence generateMessageLength(
3003
3014
varDataToken .name (),
3004
3015
lengthToken .encoding ().applicableMaxValue ().longValue ());
3005
3016
3017
+ new Formatter (sbSkip ).format (
3018
+ indent + " skip%1$s();\n " ,
3019
+ propertyName );
3020
+
3006
3021
i += varDataToken .componentTokenCount ();
3007
3022
}
3008
3023
3009
3024
final StringBuilder sb = new StringBuilder ();
3010
3025
3011
3026
new Formatter (sb ).format ("\n " +
3027
+ indent + "void skip()\n " +
3028
+ indent + "{\n " +
3029
+ "%3$s" +
3030
+ indent + "}\n \n " +
3031
+
3012
3032
indent + "SBE_NODISCARD static SBE_CONSTEXPR bool isConstLength() SBE_NOEXCEPT\n " +
3013
3033
indent + "{\n " +
3014
3034
indent + " return " + ((groups .isEmpty () && varData .isEmpty ()) ? "true" : "false" ) + ";\n " +
@@ -3028,7 +3048,8 @@ private CharSequence generateMessageLength(
3028
3048
"#endif\n " +
3029
3049
indent + "}\n " ,
3030
3050
generateMessageLengthArgs (fields , groups , varData , indent + INDENT , true )[0 ],
3031
- sbEncode .toString ());
3051
+ sbEncode .toString (),
3052
+ sbSkip .toString ());
3032
3053
3033
3054
return sb ;
3034
3055
}
0 commit comments