@@ -210,14 +210,16 @@ private void generateGroupClassHeader(
210210 final String typeForBlockLength = cSharpTypeName (tokens .get (index + 2 ).encoding ().primitiveType ());
211211 final String typeForNumInGroup = cSharpTypeName (numInGroupToken .encoding ().primitiveType ());
212212
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+
213217 sb .append (String .format ("\n " +
214218 indent + INDENT + "public void WrapForEncode(%1$s parentMessage, DirectBuffer buffer, int count)\n " +
215219 indent + INDENT + "{\n " +
216- indent + INDENT + INDENT + "if (count < %2$d || count > %3$d) \n " +
220+ indent + INDENT + INDENT + throwCondition +
217221 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 " +
221223 indent + INDENT + INDENT + "}\n \n " +
222224 indent + INDENT + INDENT + "_parentMessage = parentMessage;\n " +
223225 indent + INDENT + INDENT + "_buffer = buffer;\n " +
@@ -258,7 +260,7 @@ private void generateGroupEnumerator(final StringBuilder sb, final String groupN
258260 indent + INDENT + "{\n " +
259261 indent + INDENT + INDENT + "if (_index + 1 >= _count)\n " +
260262 indent + INDENT + INDENT + "{\n " +
261- indent + INDENT + INDENT + INDENT + "throw new InvalidOperationException ();\n " +
263+ indent + INDENT + INDENT + INDENT + "ThrowHelper.ThrowInvalidOperationException ();\n " +
262264 indent + INDENT + INDENT + "}\n \n " +
263265 indent + INDENT + INDENT + "_offset = _parentMessage.Limit;\n " +
264266 indent + INDENT + INDENT + "_parentMessage.Limit = _offset + _blockLength;\n " +
@@ -811,9 +813,9 @@ private CharSequence generateArrayProperty(
811813 sb .append (String .format ("\n " +
812814 indent + "public %1$s Get%2$s(int index)\n " +
813815 indent + "{\n " +
814- indent + INDENT + "if (index < 0 || index >= %3$d)\n " +
816+ indent + INDENT + "if ((uint) index >= %3$d)\n " +
815817 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 " +
817819 indent + INDENT + "}\n \n " +
818820 "%4$s" +
819821 indent + INDENT + "return _buffer.%5$sGet%8$s(_offset + %6$d + (index * %7$d));\n " +
@@ -825,9 +827,9 @@ private CharSequence generateArrayProperty(
825827 sb .append (String .format ("\n " +
826828 indent + "public void Set%1$s(int index, %2$s value)\n " +
827829 indent + "{\n " +
828- indent + INDENT + "if (index < 0 || index >= %3$d)\n " +
830+ indent + INDENT + "if ((uint) index >= %3$d)\n " +
829831 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 " +
831833 indent + INDENT + "}\n \n " +
832834 indent + INDENT + "_buffer.%4$sPut%7$s(_offset + %5$d + (index * %6$d), value);\n " +
833835 indent + "}\n " ,
@@ -852,8 +854,7 @@ private CharSequence generateArrayProperty(
852854 indent + INDENT + "const int length = %2$d;\n " +
853855 indent + INDENT + "if (dst.Length < length)\n " +
854856 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 " +
857858 indent + INDENT + "}\n \n " +
858859 "%3$s" +
859860 indent + INDENT + "_buffer.GetBytes(_offset + %4$d, dst);\n " +
@@ -874,8 +875,7 @@ private CharSequence generateArrayProperty(
874875 indent + INDENT + "const int length = %2$d;\n " +
875876 indent + INDENT + "if (src.Length > length)\n " +
876877 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 " +
879879 indent + INDENT + "}\n \n " +
880880 indent + INDENT + "_buffer.SetBytes(_offset + %3$d, src);\n " +
881881 indent + "}\n " ,
0 commit comments