@@ -201,7 +201,6 @@ private void generateGroupClassHeader(
201201 indent + INDENT + INDENT + "_blockLength = _dimensions.BlockLength;\n " +
202202 indent + INDENT + INDENT + "_count = (int) _dimensions.NumInGroup;\n " + // cast safety checked above
203203 indent + INDENT + INDENT + "_actingVersion = actingVersion;\n " +
204- indent + INDENT + INDENT + "_index = -1;\n " +
205204 indent + INDENT + INDENT + "_parentMessage.Limit = parentMessage.Limit + SbeHeaderSize;\n " +
206205 indent + INDENT + "}\n " ,
207206 parentMessageClassName ));
@@ -224,19 +223,17 @@ private void generateGroupClassHeader(
224223 indent + INDENT + INDENT + "_parentMessage = parentMessage;\n " +
225224 indent + INDENT + INDENT + "_buffer = buffer;\n " +
226225 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 " +
226+ indent + INDENT + INDENT + "_dimensions.BlockLength = SbeBlockLength;\n " +
227+ indent + INDENT + INDENT + "_dimensions.NumInGroup = (%5$s) count;\n " +
230228 indent + INDENT + INDENT + "_count = count;\n " +
231- indent + INDENT + INDENT + "_blockLength = %5$d ;\n " +
229+ indent + INDENT + INDENT + "_blockLength = SbeBlockLength ;\n " +
232230 indent + INDENT + INDENT + "_actingVersion = SchemaVersion;\n " +
233231 indent + INDENT + INDENT + "parentMessage.Limit = parentMessage.Limit + SbeHeaderSize;\n " +
234232 indent + INDENT + "}\n " ,
235233 parentMessageClassName ,
236234 numInGroupToken .encoding ().applicableMinValue ().longValue (),
237235 numInGroupToken .encoding ().applicableMaxValue ().longValue (),
238236 typeForBlockLength ,
239- blockLength ,
240237 typeForNumInGroup ));
241238
242239 sb .append (String .format ("\n " +
@@ -245,20 +242,33 @@ private void generateGroupClassHeader(
245242 blockLength ,
246243 dimensionHeaderLength ));
247244
248- generateGroupEnumerator (sb , groupName , indent );
245+ generateGroupEnumerator (sb , groupName , indent , typeForNumInGroup );
249246 }
250247
251- private void generateGroupEnumerator (final StringBuilder sb , final String groupName , final String indent )
248+ private void generateGroupEnumerator (
249+ final StringBuilder sb ,
250+ final String groupName ,
251+ final String indent ,
252+ final String typeForNumInGroup )
252253 {
253254 sb .append (
254255 indent + INDENT + "public int ActingBlockLength { get { return _blockLength; } }\n \n " +
255256 indent + INDENT + "public int Count { get { return _count; } }\n \n " +
256- indent + INDENT + "public bool HasNext { get { return (_index + 1) < _count; } }\n " );
257+ indent + INDENT + "public bool HasNext { get { return _index < _count; } }\n " );
258+
259+ sb .append (String .format ("\n " +
260+ indent + INDENT + "public int ResetCountToIndex()\n " +
261+ indent + INDENT + "{\n " +
262+ indent + INDENT + INDENT + "_count = _index;\n " +
263+ indent + INDENT + INDENT + "_dimensions.NumInGroup = (%s) _count;\n \n " +
264+ indent + INDENT + INDENT + "return _count;\n " +
265+ indent + INDENT + "}\n " ,
266+ typeForNumInGroup ));
257267
258268 sb .append (String .format ("\n " +
259269 indent + INDENT + "public %sGroup Next()\n " +
260270 indent + INDENT + "{\n " +
261- indent + INDENT + INDENT + "if (_index + 1 >= _count)\n " +
271+ indent + INDENT + INDENT + "if (_index >= _count)\n " +
262272 indent + INDENT + INDENT + "{\n " +
263273 indent + INDENT + INDENT + INDENT + "ThrowHelper.ThrowInvalidOperationException();\n " +
264274 indent + INDENT + INDENT + "}\n \n " +
0 commit comments