Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
EncoderFallbackBufferHelper.cs
Go to the documentation of this file.
1namespace System.Text;
2
4{
5 internal unsafe char* charStart;
6
7 internal unsafe char* charEnd;
8
10
11 internal bool setEncoder;
12
13 internal bool bUsedEncoder;
14
15 internal bool bFallingBack;
16
17 internal int iRecursionCount;
18
20
22 {
23 _fallbackBuffer = fallbackBuffer;
24 bFallingBack = (bUsedEncoder = (setEncoder = false));
26 charEnd = (charStart = null);
27 encoder = null;
28 }
29
30 internal unsafe void InternalReset()
31 {
32 charStart = null;
33 bFallingBack = false;
36 }
37
38 internal unsafe void InternalInitialize(char* _charStart, char* _charEnd, System.Text.EncoderNLS _encoder, bool _setEncoder)
39 {
40 charStart = _charStart;
41 charEnd = _charEnd;
42 encoder = _encoder;
43 setEncoder = _setEncoder;
44 bUsedEncoder = false;
45 bFallingBack = false;
47 }
48
49 internal char InternalGetNextChar()
50 {
51 char nextChar = _fallbackBuffer.GetNextChar();
52 bFallingBack = nextChar != '\0';
53 if (nextChar == '\0')
54 {
56 }
57 return nextChar;
58 }
59
60 internal unsafe bool InternalFallback(char ch, ref char* chars)
61 {
62 int index = (int)(chars - charStart) - 1;
63 if (char.IsHighSurrogate(ch))
64 {
65 if (chars >= charEnd)
66 {
67 if (encoder != null && !encoder.MustFlush)
68 {
69 if (setEncoder)
70 {
71 bUsedEncoder = true;
72 encoder.charLeftOver = ch;
73 }
74 bFallingBack = false;
75 return false;
76 }
77 }
78 else
79 {
80 char c = *chars;
81 if (char.IsLowSurrogate(c))
82 {
83 if (bFallingBack && iRecursionCount++ > 250)
84 {
85 ThrowLastCharRecursive(char.ConvertToUtf32(ch, c));
86 }
87 chars++;
89 return bFallingBack;
90 }
91 }
92 }
93 if (bFallingBack && iRecursionCount++ > 250)
94 {
96 }
98 return bFallingBack;
99 }
100
101 internal void ThrowLastCharRecursive(int charRecursive)
102 {
103 throw new ArgumentException(System.SR.Format(System.SR.Argument_RecursiveFallback, charRecursive), "chars");
104 }
105}
static string Argument_RecursiveFallback
Definition SR.cs:844
static string Format(string resourceFormat, object p1)
Definition SR.cs:118
Definition SR.cs:7
bool Fallback(char charUnknown, int index)
unsafe void InternalInitialize(char *_charStart, char *_charEnd, System.Text.EncoderNLS _encoder, bool _setEncoder)
unsafe EncoderFallbackBufferHelper(EncoderFallbackBuffer fallbackBuffer)
unsafe bool InternalFallback(char ch, ref char *chars)