| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164 | using System.Runtime.CompilerServices;namespace LitMotion{    internal static class Utf16StringHelper    {        [MethodImpl(MethodImplOptions.AggressiveInlining)]        public static void WriteInt32(ref char[] buffer, ref int bufferOffset, int value)        {            WriteInt64(ref buffer, ref bufferOffset, value);        }        [MethodImpl(MethodImplOptions.AggressiveInlining)]        public static void WriteInt64(ref char[] buffer, ref int bufferOffset, long value)        {            long num1 = value, num2, num3, num4, num5, div;            if (value < 0)            {                if (value == long.MinValue) // -9223372036854775808                {                    ArrayHelper.EnsureCapacity(ref buffer, bufferOffset + 20);                    buffer[bufferOffset++] = '-';                    buffer[bufferOffset++] = '9';                    buffer[bufferOffset++] = '2';                    buffer[bufferOffset++] = '2';                    buffer[bufferOffset++] = '3';                    buffer[bufferOffset++] = '3';                    buffer[bufferOffset++] = '7';                    buffer[bufferOffset++] = '2';                    buffer[bufferOffset++] = '0';                    buffer[bufferOffset++] = '3';                    buffer[bufferOffset++] = '6';                    buffer[bufferOffset++] = '8';                    buffer[bufferOffset++] = '5';                    buffer[bufferOffset++] = '4';                    buffer[bufferOffset++] = '7';                    buffer[bufferOffset++] = '7';                    buffer[bufferOffset++] = '5';                    buffer[bufferOffset++] = '8';                    buffer[bufferOffset++] = '0';                    buffer[bufferOffset++] = '8';                }                ArrayHelper.EnsureCapacity(ref buffer, bufferOffset + 1);                buffer[bufferOffset++] = '-';                num1 = unchecked(-value);            }            // WriteUInt64(inlined)            if (num1 < 10000)            {                if (num1 < 10) { ArrayHelper.EnsureCapacity(ref buffer, bufferOffset + 1); goto L1; }                if (num1 < 100) { ArrayHelper.EnsureCapacity(ref buffer, bufferOffset + 2); goto L2; }                if (num1 < 1000) { ArrayHelper.EnsureCapacity(ref buffer, bufferOffset + 3); goto L3; }                ArrayHelper.EnsureCapacity(ref buffer, bufferOffset + 4); goto L4;            }            else            {                num2 = num1 / 10000;                num1 -= num2 * 10000;                if (num2 < 10000)                {                    if (num2 < 10) { ArrayHelper.EnsureCapacity(ref buffer, bufferOffset + 5); goto L5; }                    if (num2 < 100) { ArrayHelper.EnsureCapacity(ref buffer, bufferOffset + 6); goto L6; }                    if (num2 < 1000) { ArrayHelper.EnsureCapacity(ref buffer, bufferOffset + 7); goto L7; }                    ArrayHelper.EnsureCapacity(ref buffer, bufferOffset + 8); goto L8;                }                else                {                    num3 = num2 / 10000;                    num2 -= num3 * 10000;                    if (num3 < 10000)                    {                        if (num3 < 10) { ArrayHelper.EnsureCapacity(ref buffer, bufferOffset + 9); goto L9; }                        if (num3 < 100) { ArrayHelper.EnsureCapacity(ref buffer, bufferOffset + 10); goto L10; }                        if (num3 < 1000) { ArrayHelper.EnsureCapacity(ref buffer, bufferOffset + 11); goto L11; }                        ArrayHelper.EnsureCapacity(ref buffer, bufferOffset + 12); goto L12;                    }                    else                    {                        num4 = num3 / 10000;                        num3 -= num4 * 10000;                        if (num4 < 10000)                        {                            if (num4 < 10) { ArrayHelper.EnsureCapacity(ref buffer, bufferOffset + 13); goto L13; }                            if (num4 < 100) { ArrayHelper.EnsureCapacity(ref buffer, bufferOffset + 14); goto L14; }                            if (num4 < 1000) { ArrayHelper.EnsureCapacity(ref buffer, bufferOffset + 15); goto L15; }                            ArrayHelper.EnsureCapacity(ref buffer, bufferOffset + 16); goto L16;                        }                        else                        {                            num5 = num4 / 10000;                            num4 -= num5 * 10000;                            if (num5 < 10000)                            {                                if (num5 < 10) { ArrayHelper.EnsureCapacity(ref buffer, bufferOffset + 17); goto L17; }                                if (num5 < 100) { ArrayHelper.EnsureCapacity(ref buffer, bufferOffset + 18); goto L18; }                                if (num5 < 1000) { ArrayHelper.EnsureCapacity(ref buffer, bufferOffset + 19); goto L19; }                                ArrayHelper.EnsureCapacity(ref buffer, bufferOffset + 20); goto L20;                            }                        L20:                            buffer[bufferOffset++] = (char)('0' + (div = (num5 * 8389L) >> 23));                            num5 -= div * 1000;                        L19:                            buffer[bufferOffset++] = (char)('0' + (div = (num5 * 5243L) >> 19));                            num5 -= div * 100;                        L18:                            buffer[bufferOffset++] = (char)('0' + (div = (num5 * 6554L) >> 16));                            num5 -= div * 10;                        L17:                            buffer[bufferOffset++] = (char)('0' + num5);                        }                    L16:                        buffer[bufferOffset++] = (char)('0' + (div = (num4 * 8389L) >> 23));                        num4 -= div * 1000;                    L15:                        buffer[bufferOffset++] = (char)('0' + (div = (num4 * 5243L) >> 19));                        num4 -= div * 100;                    L14:                        buffer[bufferOffset++] = (char)('0' + (div = (num4 * 6554L) >> 16));                        num4 -= div * 10;                    L13:                        buffer[bufferOffset++] = (char)('0' + num4);                    }                L12:                    buffer[bufferOffset++] = (char)('0' + (div = (num3 * 8389L) >> 23));                    num3 -= div * 1000;                L11:                    buffer[bufferOffset++] = (char)('0' + (div = (num3 * 5243L) >> 19));                    num3 -= div * 100;                L10:                    buffer[bufferOffset++] = (char)('0' + (div = (num3 * 6554L) >> 16));                    num3 -= div * 10;                L9:                    buffer[bufferOffset++] = (char)('0' + num3);                }            L8:                buffer[bufferOffset++] = (char)('0' + (div = (num2 * 8389L) >> 23));                num2 -= div * 1000;            L7:                buffer[bufferOffset++] = (char)('0' + (div = (num2 * 5243L) >> 19));                num2 -= div * 100;            L6:                buffer[bufferOffset++] = (char)('0' + (div = (num2 * 6554L) >> 16));                num2 -= div * 10;            L5:                buffer[bufferOffset++] = (char)('0' + num2);            }        L4:            buffer[bufferOffset++] = (char)('0' + (div = (num1 * 8389L) >> 23));            num1 -= div * 1000;        L3:            buffer[bufferOffset++] = (char)('0' + (div = (num1 * 5243L) >> 19));            num1 -= div * 100;        L2:            buffer[bufferOffset++] = (char)('0' + (div = (num1 * 6554L) >> 16));            num1 -= div * 10;        L1:            buffer[bufferOffset++] = (char)('0' + num1);        }    }}
 |