Utility function to construct int128 types.
| 1828 | |
| 1829 | // Utility function to construct int128 types. |
| 1830 | int128_t StringToInt128(string s) { |
| 1831 | int128_t result = 0; |
| 1832 | int sign = 1; |
| 1833 | int digit = 0; |
| 1834 | for (int i = 0; i < s.length(); ++i) { |
| 1835 | switch (s[i]) { |
| 1836 | case '-': |
| 1837 | digit = -1; |
| 1838 | break; |
| 1839 | case '0': |
| 1840 | digit = 0; |
| 1841 | break; |
| 1842 | case '1': |
| 1843 | digit = 1; |
| 1844 | break; |
| 1845 | case '2': |
| 1846 | digit = 2; |
| 1847 | break; |
| 1848 | case '3': |
| 1849 | digit = 3; |
| 1850 | break; |
| 1851 | case '4': |
| 1852 | digit = 4; |
| 1853 | break; |
| 1854 | case '5': |
| 1855 | digit = 5; |
| 1856 | break; |
| 1857 | case '6': |
| 1858 | digit = 6; |
| 1859 | break; |
| 1860 | case '7': |
| 1861 | digit = 7; |
| 1862 | break; |
| 1863 | case '8': |
| 1864 | digit = 8; |
| 1865 | break; |
| 1866 | case '9': |
| 1867 | digit = 9; |
| 1868 | break; |
| 1869 | default: |
| 1870 | DCHECK(false) << "Unexpected character."; |
| 1871 | } |
| 1872 | if (digit == -1) { |
| 1873 | DCHECK_EQ(sign, 1) << "Minus symbol appears multiple times."; |
| 1874 | sign = -1; |
| 1875 | } else { |
| 1876 | result = result * 10 + digit; |
| 1877 | } |
| 1878 | } |
| 1879 | return sign * result; |
| 1880 | } |
| 1881 | |
| 1882 | // Format is: |
| 1883 | // { Test Expression (as a string), |