@@ -201,7 +201,7 @@ private void generateGroupClassHeader(
201
201
indent + INDENT + INDENT + "_blockLength = _dimensions.BlockLength;\n " +
202
202
indent + INDENT + INDENT + "_count = (int) _dimensions.NumInGroup;\n " + // cast safety checked above
203
203
indent + INDENT + INDENT + "_actingVersion = actingVersion;\n " +
204
- indent + INDENT + INDENT + "_index = -1 ;\n " +
204
+ indent + INDENT + INDENT + "_index = 0 ;\n " +
205
205
indent + INDENT + INDENT + "_parentMessage.Limit = parentMessage.Limit + SbeHeaderSize;\n " +
206
206
indent + INDENT + "}\n " ,
207
207
parentMessageClassName ));
@@ -224,19 +224,18 @@ private void generateGroupClassHeader(
224
224
indent + INDENT + INDENT + "_parentMessage = parentMessage;\n " +
225
225
indent + INDENT + INDENT + "_buffer = buffer;\n " +
226
226
indent + INDENT + INDENT + "_dimensions.Wrap(buffer, parentMessage.Limit, _actingVersion);\n " +
227
- indent + INDENT + INDENT + "_dimensions.BlockLength = (%4$s)%5$d ;\n " +
228
- indent + INDENT + INDENT + "_dimensions.NumInGroup = (%6 $s)count;\n " +
229
- indent + INDENT + INDENT + "_index = -1 ;\n " +
227
+ indent + INDENT + INDENT + "_dimensions.BlockLength = SbeBlockLength ;\n " +
228
+ indent + INDENT + INDENT + "_dimensions.NumInGroup = (%5 $s) count;\n " +
229
+ indent + INDENT + INDENT + "_index = 0 ;\n " +
230
230
indent + INDENT + INDENT + "_count = count;\n " +
231
- indent + INDENT + INDENT + "_blockLength = %5$d ;\n " +
231
+ indent + INDENT + INDENT + "_blockLength = SbeBlockLength ;\n " +
232
232
indent + INDENT + INDENT + "_actingVersion = SchemaVersion;\n " +
233
233
indent + INDENT + INDENT + "parentMessage.Limit = parentMessage.Limit + SbeHeaderSize;\n " +
234
234
indent + INDENT + "}\n " ,
235
235
parentMessageClassName ,
236
236
numInGroupToken .encoding ().applicableMinValue ().longValue (),
237
237
numInGroupToken .encoding ().applicableMaxValue ().longValue (),
238
238
typeForBlockLength ,
239
- blockLength ,
240
239
typeForNumInGroup ));
241
240
242
241
sb .append (String .format ("\n " +
@@ -245,20 +244,33 @@ private void generateGroupClassHeader(
245
244
blockLength ,
246
245
dimensionHeaderLength ));
247
246
248
- generateGroupEnumerator (sb , groupName , indent );
247
+ generateGroupEnumerator (sb , groupName , typeForNumInGroup , indent );
249
248
}
250
249
251
- private void generateGroupEnumerator (final StringBuilder sb , final String groupName , final String indent )
250
+ private void generateGroupEnumerator (
251
+ final StringBuilder sb ,
252
+ final String groupName ,
253
+ final String typeForNumInGroup ,
254
+ final String indent )
252
255
{
253
256
sb .append (
254
257
indent + INDENT + "public int ActingBlockLength { get { return _blockLength; } }\n \n " +
255
258
indent + INDENT + "public int Count { get { return _count; } }\n \n " +
256
- indent + INDENT + "public bool HasNext { get { return (_index + 1) < _count; } }\n " );
259
+ indent + INDENT + "public bool HasNext { get { return _index < _count; } }\n " );
260
+
261
+ sb .append (String .format ("\n " +
262
+ indent + INDENT + "public int ResetCountToIndex()\n " +
263
+ indent + INDENT + "{\n " +
264
+ indent + INDENT + INDENT + "_count = _index;\n " +
265
+ indent + INDENT + INDENT + "_dimensions.NumInGroup = (%s) _count;\n \n " +
266
+ indent + INDENT + INDENT + "return _count;\n " +
267
+ indent + INDENT + "}\n " ,
268
+ typeForNumInGroup ));
257
269
258
270
sb .append (String .format ("\n " +
259
271
indent + INDENT + "public %sGroup Next()\n " +
260
272
indent + INDENT + "{\n " +
261
- indent + INDENT + INDENT + "if (_index + 1 >= _count)\n " +
273
+ indent + INDENT + INDENT + "if (_index >= _count)\n " +
262
274
indent + INDENT + INDENT + "{\n " +
263
275
indent + INDENT + INDENT + INDENT + "ThrowHelper.ThrowInvalidOperationException();\n " +
264
276
indent + INDENT + INDENT + "}\n \n " +
0 commit comments