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

◆ GetString()

static string System.Text.EncodingExtensions.GetString ( this Encoding encoding,
in ReadOnlySequence< byte > bytes )
inlinestatic

Definition at line 186 of file EncodingExtensions.cs.

187 {
188 if (encoding == null)
189 {
190 throw new ArgumentNullException("encoding");
191 }
192 if (bytes.IsSingleSegment)
193 {
194 return encoding.GetString(bytes.FirstSpan);
195 }
196 Decoder decoder = encoding.GetDecoder();
197 List<(char[], int)> list = new List<(char[], int)>();
198 int num = 0;
200 bool isSingleSegment;
201 do
202 {
203 readOnlySequence.GetFirstSpan(out var first, out var next);
204 isSingleSegment = readOnlySequence.IsSingleSegment;
205 int charCount = decoder.GetCharCount(first, isSingleSegment);
206 char[] array = ArrayPool<char>.Shared.Rent(charCount);
207 int chars = decoder.GetChars(first, array, isSingleSegment);
208 list.Add((array, chars));
209 num += chars;
210 if (num < 0)
211 {
212 num = int.MaxValue;
213 break;
214 }
216 }
217 while (!isSingleSegment);
218 return string.Create(num, list, delegate(Span<char> span, List<(char[], int)> listOfSegments)
219 {
220 foreach (var (array2, num2) in listOfSegments)
221 {
222 array2.AsSpan(0, num2).CopyTo(span);
223 ArrayPool<char>.Shared.Return(array2);
224 span = span.Slice(num2);
225 }
226 });
227 }
void CopyTo(KeyValuePair< TKey, TValue >[] array, int index)
void Add(TKey key, TValue value)

References System.array, System.bytes, System.charCount, System.chars, System.Collections.Generic.Dictionary< TKey, TValue >.CopyTo(), System.Text.Decoder.GetCharCount(), System.Text.Decoder.GetChars(), System.Text.Encoding.GetDecoder(), System.Text.Encoding.GetString(), and System.list.