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

◆ ParseTextAsync_ParseEntity()

async Task<(int, int, int, bool)> System.Xml.XmlTextReaderImpl.ParseTextAsync_ParseEntity ( int outOrChars,
char[] chars,
int pos,
int rcount,
int rpos,
int orChars,
char c )
inlineprivate

Definition at line 11243 of file XmlTextReaderImpl.cs.

11244 {
11245 int num;
11246 if ((num = ParseCharRefInline(pos, out var charCount, out var entityType)) > 0)
11247 {
11248 if (rcount > 0)
11249 {
11250 ShiftBuffer(rpos + rcount, rpos, pos - rpos - rcount);
11251 }
11252 rpos = pos - rcount;
11253 rcount += num - pos - charCount;
11254 pos = num;
11255 if (!XmlCharType.IsWhiteSpace(chars[num - charCount]) || (_v1Compat && entityType == EntityType.CharacterDec))
11256 {
11257 orChars |= 0xFF;
11258 }
11259 }
11260 else
11261 {
11262 if (pos > _ps.charPos)
11263 {
11264 _lastParseTextState = new ParseTextState(outOrChars, chars, pos, rcount, rpos, orChars, c);
11265 _parseText_NextFunction = ParseTextFunction.PartialValue;
11267 }
11269 (pos, _) = tuple;
11270 switch (tuple.Item2)
11271 {
11272 case EntityType.Unexpanded:
11274 _parsingFunction = ParsingFunction.EntityReference;
11275 _lastParseTextState = new ParseTextState(outOrChars, chars, pos, rcount, rpos, orChars, c);
11276 _parseText_NextFunction = ParseTextFunction.NoValue;
11278 case EntityType.CharacterDec:
11279 if (_v1Compat)
11280 {
11281 orChars |= 0xFF;
11282 break;
11283 }
11284 goto case EntityType.CharacterHex;
11285 case EntityType.CharacterHex:
11286 case EntityType.CharacterNamed:
11287 if (!XmlCharType.IsWhiteSpace(_ps.chars[pos - 1]))
11288 {
11289 orChars |= 0xFF;
11290 }
11291 break;
11292 default:
11293 pos = _ps.charPos;
11294 break;
11295 }
11296 chars = _ps.chars;
11297 }
11298 _lastParseTextState = new ParseTextState(outOrChars, chars, pos, rcount, rpos, orChars, c);
11299 _parseText_NextFunction = ParseTextFunction.ParseText;
11301 }
readonly Task<(int, int, int, bool)> _parseText_dummyTask
async Task<(int, EntityType)> HandleEntityReferenceAsync(bool isInAttributeValue, EntityExpandType expandType)
ParseTextFunction _parseText_NextFunction
void ShiftBuffer(int sourcePos, int destPos, int count)
int ParseCharRefInline(int startPos, out int charCount, out EntityType entityType)

References System.Xml.XmlTextReaderImpl._lastParseTextState, System.Xml.XmlTextReaderImpl._nextParsingFunction, System.Xml.XmlTextReaderImpl._parseText_dummyTask, System.Xml.XmlTextReaderImpl._parseText_NextFunction, System.Xml.XmlTextReaderImpl._parsingFunction, System.Xml.XmlTextReaderImpl._ps, System.Xml.XmlTextReaderImpl._v1Compat, System.charCount, System.Xml.XmlTextReaderImpl.ParsingState.charPos, System.chars, System.Xml.XmlTextReaderImpl.ParsingState.chars, System.Xml.Dictionary, System.Xml.XmlTextReaderImpl.HandleEntityReferenceAsync(), System.Xml.XmlTextReaderImpl.int, System.Xml.XmlCharType.IsWhiteSpace(), System.Xml.XmlTextReaderImpl.ParseCharRefInline(), System.Threading.Tasks.Task< TResult >.Result, and System.Xml.XmlTextReaderImpl.ShiftBuffer().

Referenced by System.Xml.XmlTextReaderImpl.ParseTextAsync(), and System.Xml.XmlTextReaderImpl.ParseTextAsync_AsyncFunc().