@@ -197,23 +197,32 @@ private void generateGroupClassHeader(
197197
198198 final int blockLength = tokens .get (index ).encodedLength ();
199199 final String typeForBlockLength = cSharpTypeName (tokens .get (index + 2 ).encoding ().primitiveType ());
200- final String typeForNumInGroup = cSharpTypeName (tokens .get (index + 3 ).encoding ().primitiveType ());
200+ final Token numInGroupToken = tokens .get (index + 3 );
201+ final String typeForNumInGroup = cSharpTypeName (numInGroupToken .encoding ().primitiveType ());
201202
202203 sb .append (String .format ("\n " +
203204 indent + INDENT + "public void WrapForEncode(%1$s parentMessage, DirectBuffer buffer, int count)\n " +
204205 indent + INDENT + "{\n " +
206+ indent + INDENT + INDENT + "if (count < %2$d || count > %3$d)\n " +
207+ indent + INDENT + INDENT + "{\n " +
208+ indent + INDENT + INDENT + INDENT + "throw new ArgumentOutOfRangeException(\" count\" ,\n " +
209+ indent + INDENT + INDENT + INDENT + INDENT + "\" Outside allowed range: count=\" + count +\n " +
210+ indent + INDENT + INDENT + INDENT + INDENT + "\" , min=%2$d, max=%3$d\" );\n " +
211+ indent + INDENT + INDENT + "}\n \n " +
205212 indent + INDENT + INDENT + "_parentMessage = parentMessage;\n " +
206213 indent + INDENT + INDENT + "_buffer = buffer;\n " +
207214 indent + INDENT + INDENT + "_dimensions.Wrap(buffer, parentMessage.Limit, _actingVersion);\n " +
208- indent + INDENT + INDENT + "_dimensions.BlockLength = (%2 $s)%3 $d;\n " +
209- indent + INDENT + INDENT + "_dimensions.NumInGroup = (%4 $s)count;\n " +
215+ indent + INDENT + INDENT + "_dimensions.BlockLength = (%4 $s)%5 $d;\n " +
216+ indent + INDENT + INDENT + "_dimensions.NumInGroup = (%6 $s)count;\n " +
210217 indent + INDENT + INDENT + "_index = -1;\n " +
211218 indent + INDENT + INDENT + "_count = count;\n " +
212- indent + INDENT + INDENT + "_blockLength = %3 $d;\n " +
219+ indent + INDENT + INDENT + "_blockLength = %5 $d;\n " +
213220 indent + INDENT + INDENT + "_actingVersion = SchemaVersion;\n " +
214221 indent + INDENT + INDENT + "parentMessage.Limit = parentMessage.Limit + SbeHeaderSize;\n " +
215222 indent + INDENT + "}\n " ,
216223 parentMessageClassName ,
224+ numInGroupToken .encoding ().applicableMinValue ().longValue (),
225+ numInGroupToken .encoding ().applicableMaxValue ().longValue (),
217226 typeForBlockLength ,
218227 blockLength ,
219228 typeForNumInGroup ));
0 commit comments