Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ TryParseInt32N()

static bool System.Buffers.Text.Utf8Parser.TryParseInt32N ( ReadOnlySpan< byte > source,
out int value,
out int bytesConsumed )
inlinestaticprivate

Definition at line 2048 of file Utf8Parser.cs.

2049 {
2050 int num;
2051 int num2;
2052 int num4;
2053 int num3;
2054 if (source.Length >= 1)
2055 {
2056 num = 1;
2057 num2 = 0;
2058 num3 = source[num2];
2059 if (num3 == 45)
2060 {
2061 num = -1;
2062 num2++;
2063 if ((uint)num2 >= (uint)source.Length)
2064 {
2065 goto IL_010a;
2066 }
2067 num3 = source[num2];
2068 }
2069 else if (num3 == 43)
2070 {
2071 num2++;
2072 if ((uint)num2 >= (uint)source.Length)
2073 {
2074 goto IL_010a;
2075 }
2076 num3 = source[num2];
2077 }
2078 if (num3 != 46)
2079 {
2080 if (ParserHelpers.IsDigit(num3))
2081 {
2082 num4 = num3 - 48;
2083 while (true)
2084 {
2085 num2++;
2086 if ((uint)num2 >= (uint)source.Length)
2087 {
2088 break;
2089 }
2090 num3 = source[num2];
2091 if (num3 == 44)
2092 {
2093 continue;
2094 }
2095 if (num3 == 46)
2096 {
2097 goto IL_00e5;
2098 }
2099 if (!ParserHelpers.IsDigit(num3))
2100 {
2101 break;
2102 }
2103 if ((uint)num4 <= 214748364u)
2104 {
2105 num4 = num4 * 10 + num3 - 48;
2106 if ((uint)num4 <= 2147483647L + (long)((-1 * num + 1) / 2))
2107 {
2108 continue;
2109 }
2110 }
2111 goto IL_010a;
2112 }
2113 goto IL_0112;
2114 }
2115 }
2116 else
2117 {
2118 num4 = 0;
2119 num2++;
2120 if ((uint)num2 < (uint)source.Length && source[num2] == 48)
2121 {
2122 goto IL_00e5;
2123 }
2124 }
2125 }
2126 goto IL_010a;
2127 IL_010a:
2128 bytesConsumed = 0;
2129 value = 0;
2130 return false;
2131 IL_0102:
2132 if (ParserHelpers.IsDigit(num3))
2133 {
2134 goto IL_010a;
2135 }
2136 goto IL_0112;
2137 IL_00e5:
2138 while (true)
2139 {
2140 num2++;
2141 if ((uint)num2 >= (uint)source.Length)
2142 {
2143 break;
2144 }
2145 num3 = source[num2];
2146 if (num3 == 48)
2147 {
2148 continue;
2149 }
2150 goto IL_0102;
2151 }
2152 goto IL_0112;
2153 IL_0112:
2154 bytesConsumed = num2;
2155 value = num4 * num;
2156 return true;
2157 }

References System.Buffers.Text.ParserHelpers.IsDigit(), System.L, System.source, and System.value.

Referenced by System.Buffers.Text.Utf8Parser.TryParse().