Definition at line 202 of file Rune.cs.
  203    {
  204        int num = 0;
  205        uint num2;
  206        if ((uint)num < (uint)
source.Length)
 
  207        {
  209            if (UnicodeUtility.IsAsciiCodePoint(num2))
  210            {
  211                goto IL_0021;
  212            }
  213            if (UnicodeUtility.IsInRangeInclusive(num2, 194u, 244u))
  214            {
  215                num2 = num2 - 194 << 6;
  216                num++;
  217                if ((uint)num >= (uint)
source.Length)
 
  218                {
  219                    goto IL_0163;
  220                }
  221                int num3 = (sbyte)
source[num];
 
  222                if (num3 < -64)
  223                {
  224                    num2 += (uint)num3;
  225                    num2 += 128;
  226                    num2 += 128;
  227                    if (num2 < 2048)
  228                    {
  229                        goto IL_0021;
  230                    }
  231                    if (UnicodeUtility.IsInRangeInclusive(num2, 2080u, 3343u) && !UnicodeUtility.IsInRangeInclusive(num2, 2912u, 2943u) && !UnicodeUtility.IsInRangeInclusive(num2, 3072u, 3087u))
  232                    {
  233                        num++;
  234                        if ((uint)num >= (uint)
source.Length)
 
  235                        {
  236                            goto IL_0163;
  237                        }
  238                        num3 = (sbyte)
source[num];
 
  239                        if (num3 < -64)
  240                        {
  241                            num2 <<= 6;
  242                            num2 += (uint)num3;
  243                            num2 += 128;
  244                            num2 -= 131072;
  245                            if (num2 > 65535)
  246                            {
  247                                num++;
  248                                if ((uint)num >= (uint)
source.Length)
 
  249                                {
  250                                    goto IL_0163;
  251                                }
  252                                num3 = (sbyte)
source[num];
 
  253                                if (num3 >= -64)
  254                                {
  255                                    goto IL_0153;
  256                                }
  257                                num2 <<= 6;
  258                                num2 += (uint)num3;
  259                                num2 += 128;
  260                                num2 -= 4194304;
  261                            }
  262                            goto IL_0021;
  263                        }
  264                    }
  265                }
  266            }
  267            else
  268            {
  269                num = 1;
  270            }
  271            goto IL_0153;
  272        }
  273        goto IL_0163;
  274        IL_0021:
  275        bytesConsumed = num + 1;
  278        IL_0163:
  279        bytesConsumed = num;
  282        IL_0153:
  283        bytesConsumed = num;
  286    }
static Rune UnsafeCreate(uint scalarValue)
 
static Rune ReplacementChar
 
 
References System.Text.UnicodeUtility.IsAsciiCodePoint(), System.Text.UnicodeUtility.IsInRangeInclusive(), System.Text.Rune.ReplacementChar, System.source, and System.Text.Rune.UnsafeCreate().
Referenced by System.Text.UTF8Encoding.DecodeFirstRune(), System.Text.Rune.DecodeLastFromUtf8(), System.Text.Encodings.Web.OptimizedInboxTextEncoder.EncodeUtf8(), System.Text.Encodings.Web.TextEncoder.EncodeUtf8Core(), System.Text.Encodings.Web.TextEncoder.FindFirstCharacterToEncodeUtf8(), System.Text.Encodings.Web.OptimizedInboxTextEncoder.GetIndexOfFirstByteToEncode(), System.Text.Unicode.Utf8.ToUtf16(), and System.PercentEncodingHelper.UnescapePercentEncodedUTF8Sequence().