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

◆ TryParseInt32D()

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

Definition at line 1595 of file Utf8Parser.cs.

1596 {
1597 int num;
1598 int num2;
1599 int num4;
1600 int num3;
1601 if (source.Length >= 1)
1602 {
1603 num = 1;
1604 num2 = 0;
1605 num3 = source[num2];
1606 if (num3 == 45)
1607 {
1608 num = -1;
1609 num2++;
1610 if ((uint)num2 >= (uint)source.Length)
1611 {
1612 goto IL_0281;
1613 }
1614 num3 = source[num2];
1615 }
1616 else if (num3 == 43)
1617 {
1618 num2++;
1619 if ((uint)num2 >= (uint)source.Length)
1620 {
1621 goto IL_0281;
1622 }
1623 num3 = source[num2];
1624 }
1625 num4 = 0;
1626 if (ParserHelpers.IsDigit(num3))
1627 {
1628 if (num3 != 48)
1629 {
1630 goto IL_009c;
1631 }
1632 while (true)
1633 {
1634 num2++;
1635 if ((uint)num2 >= (uint)source.Length)
1636 {
1637 break;
1638 }
1639 num3 = source[num2];
1640 if (num3 == 48)
1641 {
1642 continue;
1643 }
1644 goto IL_0091;
1645 }
1646 goto IL_0289;
1647 }
1648 }
1649 goto IL_0281;
1650 IL_0289:
1651 bytesConsumed = num2;
1652 value = num4 * num;
1653 return true;
1654 IL_009c:
1655 num4 = num3 - 48;
1656 num2++;
1657 if ((uint)num2 < (uint)source.Length)
1658 {
1659 num3 = source[num2];
1660 if (ParserHelpers.IsDigit(num3))
1661 {
1662 num2++;
1663 num4 = 10 * num4 + num3 - 48;
1664 if ((uint)num2 < (uint)source.Length)
1665 {
1666 num3 = source[num2];
1667 if (ParserHelpers.IsDigit(num3))
1668 {
1669 num2++;
1670 num4 = 10 * num4 + num3 - 48;
1671 if ((uint)num2 < (uint)source.Length)
1672 {
1673 num3 = source[num2];
1674 if (ParserHelpers.IsDigit(num3))
1675 {
1676 num2++;
1677 num4 = 10 * num4 + num3 - 48;
1678 if ((uint)num2 < (uint)source.Length)
1679 {
1680 num3 = source[num2];
1681 if (ParserHelpers.IsDigit(num3))
1682 {
1683 num2++;
1684 num4 = 10 * num4 + num3 - 48;
1685 if ((uint)num2 < (uint)source.Length)
1686 {
1687 num3 = source[num2];
1688 if (ParserHelpers.IsDigit(num3))
1689 {
1690 num2++;
1691 num4 = 10 * num4 + num3 - 48;
1692 if ((uint)num2 < (uint)source.Length)
1693 {
1694 num3 = source[num2];
1695 if (ParserHelpers.IsDigit(num3))
1696 {
1697 num2++;
1698 num4 = 10 * num4 + num3 - 48;
1699 if ((uint)num2 < (uint)source.Length)
1700 {
1701 num3 = source[num2];
1702 if (ParserHelpers.IsDigit(num3))
1703 {
1704 num2++;
1705 num4 = 10 * num4 + num3 - 48;
1706 if ((uint)num2 < (uint)source.Length)
1707 {
1708 num3 = source[num2];
1709 if (ParserHelpers.IsDigit(num3))
1710 {
1711 num2++;
1712 num4 = 10 * num4 + num3 - 48;
1713 if ((uint)num2 < (uint)source.Length)
1714 {
1715 num3 = source[num2];
1716 if (ParserHelpers.IsDigit(num3))
1717 {
1718 num2++;
1719 if (num4 <= 214748364)
1720 {
1721 num4 = num4 * 10 + num3 - 48;
1722 if ((uint)num4 <= 2147483647L + (long)((-1 * num + 1) / 2) && ((uint)num2 >= (uint)source.Length || !ParserHelpers.IsDigit(source[num2])))
1723 {
1724 goto IL_0289;
1725 }
1726 }
1727 goto IL_0281;
1728 }
1729 }
1730 }
1731 }
1732 }
1733 }
1734 }
1735 }
1736 }
1737 }
1738 }
1739 }
1740 }
1741 }
1742 }
1743 }
1744 }
1745 }
1746 goto IL_0289;
1747 IL_0281:
1748 bytesConsumed = 0;
1749 value = 0;
1750 return false;
1751 IL_0091:
1752 if (ParserHelpers.IsDigit(num3))
1753 {
1754 goto IL_009c;
1755 }
1756 goto IL_0289;
1757 }

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

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