Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
FormattingHelpers.cs
Go to the documentation of this file.
3
4namespace System.Buffers.Text;
5
6internal static class FormattingHelpers
7{
8 [MethodImpl(MethodImplOptions.AggressiveInlining)]
9 public static int CountDigits(ulong value)
10 {
11 int num = 1;
12 uint num2;
13 if (value >= 10000000)
14 {
15 if (value >= 100000000000000L)
16 {
17 num2 = (uint)(value / 100000000000000L);
18 num += 14;
19 }
20 else
21 {
22 num2 = (uint)(value / 10000000);
23 num += 7;
24 }
25 }
26 else
27 {
28 num2 = (uint)value;
29 }
30 if (num2 >= 10)
31 {
32 num = ((num2 < 100) ? (num + 1) : ((num2 < 1000) ? (num + 2) : ((num2 < 10000) ? (num + 3) : ((num2 < 100000) ? (num + 4) : ((num2 >= 1000000) ? (num + 6) : (num + 5))))));
33 }
34 return num;
35 }
36
37 [MethodImpl(MethodImplOptions.AggressiveInlining)]
38 public static int CountDigits(uint value)
39 {
40 int num = 1;
41 if (value >= 100000)
42 {
43 value /= 100000;
44 num += 5;
45 }
46 if (value >= 10)
47 {
48 num = ((value < 100) ? (num + 1) : ((value < 1000) ? (num + 2) : ((value >= 10000) ? (num + 4) : (num + 3))));
49 }
50 return num;
51 }
52
53 [MethodImpl(MethodImplOptions.AggressiveInlining)]
54 public static int CountHexDigits(ulong value)
55 {
56 return (BitOperations.Log2(value) >> 2) + 1;
57 }
58
59 [MethodImpl(MethodImplOptions.AggressiveInlining)]
60 public static int CountDecimalTrailingZeros(uint value, out uint valueWithoutTrailingZeros)
61 {
62 int num = 0;
63 if (value != 0)
64 {
65 while (true)
66 {
67 uint num2 = value / 10;
68 if (value != num2 * 10)
69 {
70 break;
71 }
72 value = num2;
73 num++;
74 }
75 }
76 valueWithoutTrailingZeros = value;
77 return num;
78 }
79
80 [MethodImpl(MethodImplOptions.AggressiveInlining)]
81 public static char GetSymbolOrDefault(in StandardFormat format, char defaultSymbol)
82 {
83 char c = format.Symbol;
84 if (c == '\0' && format.Precision == 0)
85 {
86 c = defaultSymbol;
87 }
88 return c;
89 }
90
91 [MethodImpl(MethodImplOptions.AggressiveInlining)]
93 {
94 for (int i = 0; i < buffer.Length; i++)
95 {
96 buffer[i] = 48;
97 }
98 }
99
100 [MethodImpl(MethodImplOptions.AggressiveInlining)]
101 public static void WriteDigits(ulong value, Span<byte> buffer)
102 {
103 for (int num = buffer.Length - 1; num >= 1; num--)
104 {
105 ulong num2 = 48 + value;
106 value /= 10;
107 buffer[num] = (byte)(num2 - value * 10);
108 }
109 buffer[0] = (byte)(48 + value);
110 }
111
112 [MethodImpl(MethodImplOptions.AggressiveInlining)]
114 {
115 int num = 0;
116 for (int num2 = buffer.Length - 1; num2 >= 1; num2--)
117 {
118 ulong num3 = 48 + value;
119 value /= 10;
120 buffer[num2] = (byte)(num3 - value * 10);
121 if (num == 2)
122 {
123 buffer[--num2] = 44;
124 num = 0;
125 }
126 else
127 {
128 num++;
129 }
130 }
131 buffer[0] = (byte)(48 + value);
132 }
133
134 [MethodImpl(MethodImplOptions.AggressiveInlining)]
135 public static void WriteDigits(uint value, Span<byte> buffer)
136 {
137 for (int num = buffer.Length - 1; num >= 1; num--)
138 {
139 uint num2 = 48 + value;
140 value /= 10;
141 buffer[num] = (byte)(num2 - value * 10);
142 }
143 buffer[0] = (byte)(48 + value);
144 }
145
146 [MethodImpl(MethodImplOptions.AggressiveInlining)]
147 public static void WriteFourDecimalDigits(uint value, Span<byte> buffer, int startingIndex = 0)
148 {
149 uint num = 48 + value;
150 value /= 10;
151 buffer[startingIndex + 3] = (byte)(num - value * 10);
152 num = 48 + value;
153 value /= 10;
154 buffer[startingIndex + 2] = (byte)(num - value * 10);
155 num = 48 + value;
156 value /= 10;
157 buffer[startingIndex + 1] = (byte)(num - value * 10);
158 buffer[startingIndex] = (byte)(48 + value);
159 }
160
161 [MethodImpl(MethodImplOptions.AggressiveInlining)]
162 public static void WriteTwoDecimalDigits(uint value, Span<byte> buffer, int startingIndex = 0)
163 {
164 uint num = 48 + value;
165 value /= 10;
166 buffer[startingIndex + 1] = (byte)(num - value * 10);
167 buffer[startingIndex] = (byte)(48 + value);
168 }
169
170 public static bool TryFormatThrowFormatException(out int bytesWritten)
171 {
172 bytesWritten = 0;
174 return false;
175 }
176}
static void WriteDigitsWithGroupSeparator(ulong value, Span< byte > buffer)
static bool TryFormatThrowFormatException(out int bytesWritten)
static void WriteDigits(uint value, Span< byte > buffer)
static void WriteDigits(ulong value, Span< byte > buffer)
static void WriteFourDecimalDigits(uint value, Span< byte > buffer, int startingIndex=0)
static void FillWithAsciiZeros(Span< byte > buffer)
static void WriteTwoDecimalDigits(uint value, Span< byte > buffer, int startingIndex=0)
static char GetSymbolOrDefault(in StandardFormat format, char defaultSymbol)
static int CountDecimalTrailingZeros(uint value, out uint valueWithoutTrailingZeros)
static int Log2(uint value)
static void ThrowFormatException_BadFormatSpecifier()