@@ -210,14 +210,16 @@ private void generateGroupClassHeader(
210
210
final String typeForBlockLength = cSharpTypeName (tokens .get (index + 2 ).encoding ().primitiveType ());
211
211
final String typeForNumInGroup = cSharpTypeName (numInGroupToken .encoding ().primitiveType ());
212
212
213
+ final String throwCondition = numInGroupToken .encoding ().applicableMinValue ().longValue () == 0 ?
214
+ "if ((uint) count > %3$d)\n " :
215
+ "if (count < %2$d || count > %3$d)\n " ;
216
+
213
217
sb .append (String .format ("\n " +
214
218
indent + INDENT + "public void WrapForEncode(%1$s parentMessage, DirectBuffer buffer, int count)\n " +
215
219
indent + INDENT + "{\n " +
216
- indent + INDENT + INDENT + "if (count < %2$d || count > %3$d) \n " +
220
+ indent + INDENT + INDENT + throwCondition +
217
221
indent + INDENT + INDENT + "{\n " +
218
- indent + INDENT + INDENT + INDENT + "throw new ArgumentOutOfRangeException(\" count\" ,\n " +
219
- indent + INDENT + INDENT + INDENT + INDENT + "\" Outside allowed range: count=\" + count +\n " +
220
- indent + INDENT + INDENT + INDENT + INDENT + "\" , min=%2$d, max=%3$d\" );\n " +
222
+ indent + INDENT + INDENT + INDENT + "ThrowHelper.ThrowCountOutOfRangeException(count);\n " +
221
223
indent + INDENT + INDENT + "}\n \n " +
222
224
indent + INDENT + INDENT + "_parentMessage = parentMessage;\n " +
223
225
indent + INDENT + INDENT + "_buffer = buffer;\n " +
@@ -258,7 +260,7 @@ private void generateGroupEnumerator(final StringBuilder sb, final String groupN
258
260
indent + INDENT + "{\n " +
259
261
indent + INDENT + INDENT + "if (_index + 1 >= _count)\n " +
260
262
indent + INDENT + INDENT + "{\n " +
261
- indent + INDENT + INDENT + INDENT + "throw new InvalidOperationException ();\n " +
263
+ indent + INDENT + INDENT + INDENT + "ThrowHelper.ThrowInvalidOperationException ();\n " +
262
264
indent + INDENT + INDENT + "}\n \n " +
263
265
indent + INDENT + INDENT + "_offset = _parentMessage.Limit;\n " +
264
266
indent + INDENT + INDENT + "_parentMessage.Limit = _offset + _blockLength;\n " +
@@ -811,9 +813,9 @@ private CharSequence generateArrayProperty(
811
813
sb .append (String .format ("\n " +
812
814
indent + "public %1$s Get%2$s(int index)\n " +
813
815
indent + "{\n " +
814
- indent + INDENT + "if (index < 0 || index >= %3$d)\n " +
816
+ indent + INDENT + "if ((uint) index >= %3$d)\n " +
815
817
indent + INDENT + "{\n " +
816
- indent + INDENT + INDENT + "throw new IndexOutOfRangeException( \" index out of range: index= \" + index);\n " +
818
+ indent + INDENT + INDENT + "ThrowHelper.ThrowIndexOutOfRangeException( index);\n " +
817
819
indent + INDENT + "}\n \n " +
818
820
"%4$s" +
819
821
indent + INDENT + "return _buffer.%5$sGet%8$s(_offset + %6$d + (index * %7$d));\n " +
@@ -825,9 +827,9 @@ private CharSequence generateArrayProperty(
825
827
sb .append (String .format ("\n " +
826
828
indent + "public void Set%1$s(int index, %2$s value)\n " +
827
829
indent + "{\n " +
828
- indent + INDENT + "if (index < 0 || index >= %3$d)\n " +
830
+ indent + INDENT + "if ((uint) index >= %3$d)\n " +
829
831
indent + INDENT + "{\n " +
830
- indent + INDENT + INDENT + "throw new IndexOutOfRangeException( \" index out of range: index= \" + index);\n " +
832
+ indent + INDENT + INDENT + "ThrowHelper.ThrowIndexOutOfRangeException( index);\n " +
831
833
indent + INDENT + "}\n \n " +
832
834
indent + INDENT + "_buffer.%4$sPut%7$s(_offset + %5$d + (index * %6$d), value);\n " +
833
835
indent + "}\n " ,
@@ -852,8 +854,7 @@ private CharSequence generateArrayProperty(
852
854
indent + INDENT + "const int length = %2$d;\n " +
853
855
indent + INDENT + "if (dst.Length < length)\n " +
854
856
indent + INDENT + "{\n " +
855
- indent + INDENT + INDENT +
856
- "throw new ArgumentOutOfRangeException($\" dst.Length={dst.Length} is too large.\" );\n " +
857
+ indent + INDENT + INDENT + "ThrowHelper.ThrowWhenSpanLengthTooSmall(dst.Length);\n " +
857
858
indent + INDENT + "}\n \n " +
858
859
"%3$s" +
859
860
indent + INDENT + "_buffer.GetBytes(_offset + %4$d, dst);\n " +
@@ -874,8 +875,7 @@ private CharSequence generateArrayProperty(
874
875
indent + INDENT + "const int length = %2$d;\n " +
875
876
indent + INDENT + "if (src.Length > length)\n " +
876
877
indent + INDENT + "{\n " +
877
- indent + INDENT + INDENT +
878
- "throw new ArgumentOutOfRangeException($\" src.Length={src.Length} is too large.\" );\n " +
878
+ indent + INDENT + INDENT + "ThrowHelper.ThrowWhenSpanLengthTooLarge(src.Length);\n " +
879
879
indent + INDENT + "}\n \n " +
880
880
indent + INDENT + "_buffer.SetBytes(_offset + %3$d, src);\n " +
881
881
indent + "}\n " ,
0 commit comments