diff --git a/src/libraries/System.Private.Xml/src/System.Private.Xml.csproj b/src/libraries/System.Private.Xml/src/System.Private.Xml.csproj index 0d6948e5f38b9f..2036931b408c86 100644 --- a/src/libraries/System.Private.Xml/src/System.Private.Xml.csproj +++ b/src/libraries/System.Private.Xml/src/System.Private.Xml.csproj @@ -7,12 +7,9 @@ enable - - - + + + @@ -552,11 +549,6 @@ rss-0.91.dtd - - - XmlCharType.bin - - @@ -579,6 +571,7 @@ + @@ -790,8 +783,7 @@ - + diff --git a/src/libraries/System.Private.Xml/src/System/Xml/Base64Decoder.cs b/src/libraries/System.Private.Xml/src/System/Xml/Base64Decoder.cs index 950d840aba98e4..96375e646f2744 100644 --- a/src/libraries/System.Private.Xml/src/System/Xml/Base64Decoder.cs +++ b/src/libraries/System.Private.Xml/src/System/Xml/Base64Decoder.cs @@ -1,7 +1,6 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. -using System; using System.Diagnostics; namespace System.Xml @@ -166,7 +165,6 @@ private unsafe void Decode(char* pChars, char* pCharsEndPos, char* pChar = pChars; int b = _bits; int bFilled = _bitsFilled; - XmlCharType xmlCharType = XmlCharType.Instance; while (pChar < pCharsEndPos && pByte < pBytesEndPos) { char ch = *pChar; @@ -178,7 +176,7 @@ private unsafe void Decode(char* pChars, char* pCharsEndPos, pChar++; // ignore whitespace - if (xmlCharType.IsWhiteSpace(ch)) + if (XmlCharType.IsWhiteSpace(ch)) { continue; } @@ -219,7 +217,7 @@ private unsafe void Decode(char* pChars, char* pCharsEndPos, { do { - if (!(xmlCharType.IsWhiteSpace(*pChar++))) + if (!XmlCharType.IsWhiteSpace(*pChar++)) { throw new XmlException(SR.Xml_InvalidBase64Value, new string(pChars, 0, (int)(pCharsEndPos - pChars))); } diff --git a/src/libraries/System.Private.Xml/src/System/Xml/BinHexDecoder.cs b/src/libraries/System.Private.Xml/src/System/Xml/BinHexDecoder.cs index b4551c53542929..058621d26563d6 100644 --- a/src/libraries/System.Private.Xml/src/System/Xml/BinHexDecoder.cs +++ b/src/libraries/System.Private.Xml/src/System/Xml/BinHexDecoder.cs @@ -192,7 +192,6 @@ private static unsafe void Decode(char* pChars, char* pCharsEndPos, char* pChar = pChars; byte* pByte = pBytes; - XmlCharType xmlCharType = XmlCharType.Instance; while (pChar < pCharsEndPos && pByte < pBytesEndPos) { byte halfByte; @@ -203,7 +202,7 @@ private static unsafe void Decode(char* pChars, char* pCharsEndPos, { halfByte = (byte)val; } - else if (xmlCharType.IsWhiteSpace(ch)) + else if (XmlCharType.IsWhiteSpace(ch)) { continue; } diff --git a/src/libraries/System.Private.Xml/src/System/Xml/BinaryXml/XmlBinaryReader.cs b/src/libraries/System.Private.Xml/src/System/Xml/BinaryXml/XmlBinaryReader.cs index d8f34ab4c557f6..0215d5b243e614 100644 --- a/src/libraries/System.Private.Xml/src/System/Xml/BinaryXml/XmlBinaryReader.cs +++ b/src/libraries/System.Private.Xml/src/System/Xml/BinaryXml/XmlBinaryReader.cs @@ -333,7 +333,6 @@ public NestedBinXml(SymbolTables symbolTables, int docState, NestedBinXml? next) private readonly bool _ignoreComments; private readonly DtdProcessing _dtdProcessing; - private XmlCharType _xmlCharType; private readonly Encoding _unicode; // current version of the protocol @@ -342,7 +341,6 @@ public NestedBinXml(SymbolTables symbolTables, int docState, NestedBinXml? next) public XmlSqlBinaryReader(Stream stream, byte[] data, int len, string baseUri, bool closeInput, XmlReaderSettings settings) { _unicode = System.Text.Encoding.Unicode; - _xmlCharType = XmlCharType.Instance; _xnt = settings.NameTable!; if (_xnt == null) @@ -3531,7 +3529,6 @@ private unsafe XmlNodeType CheckText(bool attr) // assert that size is an even number Debug.Assert(0 == ((_pos - _tokDataPos) & 1), "Data size should not be odd"); // grab local copy (perf) - XmlCharType xmlCharType = _xmlCharType; fixed (byte* pb = _data) { @@ -3546,7 +3543,7 @@ private unsafe XmlNodeType CheckText(bool attr) int posNext = pos + 2; if (posNext > end) return _xmlspacePreserve ? XmlNodeType.SignificantWhitespace : XmlNodeType.Whitespace; - if (pb[pos + 1] != 0 || !xmlCharType.IsWhiteSpace((char)pb[pos])) + if (pb[pos + 1] != 0 || !XmlCharType.IsWhiteSpace((char)pb[pos])) break; pos = posNext; } @@ -3561,7 +3558,7 @@ private unsafe XmlNodeType CheckText(bool attr) if (posNext > end) return XmlNodeType.Text; ch = (char)(pb[pos] | ((int)(pb[pos + 1]) << 8)); - if (!_xmlCharType.IsCharData(ch)) + if (!XmlCharType.IsCharData(ch)) break; pos = posNext; } diff --git a/src/libraries/System.Private.Xml/src/System/Xml/Core/HtmlEncodedRawTextWriter.cs b/src/libraries/System.Private.Xml/src/System/Xml/Core/HtmlEncodedRawTextWriter.cs index bd7c24855ff4b2..55bf9134f90947 100644 --- a/src/libraries/System.Private.Xml/src/System/Xml/Core/HtmlEncodedRawTextWriter.cs +++ b/src/libraries/System.Private.Xml/src/System/Xml/Core/HtmlEncodedRawTextWriter.cs @@ -572,7 +572,7 @@ private unsafe void WriteHtmlAttributeText(char* pSrc, char* pSrcEnd) pDstEnd = pDstBegin + _bufLen; } - while (pDst < pDstEnd && _xmlCharType.IsAttributeValueChar((char)(ch = *pSrc))) + while (pDst < pDstEnd && XmlCharType.IsAttributeValueChar((char)(ch = *pSrc))) { *pDst++ = (char)ch; pSrc++; @@ -660,7 +660,7 @@ private unsafe void WriteUriAttributeText(char* pSrc, char* pSrcEnd) pDstEnd = pDstBegin + _bufLen; } - while (pDst < pDstEnd && (_xmlCharType.IsAttributeValueChar((char)(ch = *pSrc)) && ch < 0x80)) + while (pDst < pDstEnd && (XmlCharType.IsAttributeValueChar((char)(ch = *pSrc)) && ch < 0x80)) { *pDst++ = (char)ch; pSrc++; diff --git a/src/libraries/System.Private.Xml/src/System/Xml/Core/HtmlUtf8RawTextWriter.cs b/src/libraries/System.Private.Xml/src/System/Xml/Core/HtmlUtf8RawTextWriter.cs index 228088b9dc8315..55294ffdd97ea1 100644 --- a/src/libraries/System.Private.Xml/src/System/Xml/Core/HtmlUtf8RawTextWriter.cs +++ b/src/libraries/System.Private.Xml/src/System/Xml/Core/HtmlUtf8RawTextWriter.cs @@ -549,7 +549,7 @@ private unsafe void WriteHtmlAttributeText(char* pSrc, char* pSrcEnd) pDstEnd = pDstBegin + _bufLen; } - while (pDst < pDstEnd && (_xmlCharType.IsAttributeValueChar((char)(ch = *pSrc)) && ch <= 0x7F)) + while (pDst < pDstEnd && XmlCharType.IsAttributeValueChar((char)(ch = *pSrc)) && ch <= 0x7F) { *pDst++ = (byte)ch; pSrc++; @@ -637,7 +637,7 @@ private unsafe void WriteUriAttributeText(char* pSrc, char* pSrcEnd) pDstEnd = pDstBegin + _bufLen; } - while (pDst < pDstEnd && (_xmlCharType.IsAttributeValueChar((char)(ch = *pSrc)) && ch < 0x80)) + while (pDst < pDstEnd && XmlCharType.IsAttributeValueChar((char)(ch = *pSrc)) && ch < 0x80) { *pDst++ = (byte)ch; pSrc++; diff --git a/src/libraries/System.Private.Xml/src/System/Xml/Core/XmlAutoDetectWriter.cs b/src/libraries/System.Private.Xml/src/System/Xml/Core/XmlAutoDetectWriter.cs index 39978242bc82d2..78b163d37906b9 100644 --- a/src/libraries/System.Private.Xml/src/System/Xml/Core/XmlAutoDetectWriter.cs +++ b/src/libraries/System.Private.Xml/src/System/Xml/Core/XmlAutoDetectWriter.cs @@ -396,7 +396,7 @@ private bool TextBlockCreatesWriter(string? textBlock) if (_wrapped == null) { // Whitespace-only text blocks aren't enough to determine Xml vs. Html - if (XmlCharType.Instance.IsOnlyWhitespace(textBlock)) + if (XmlCharType.IsOnlyWhitespace(textBlock)) { return false; } diff --git a/src/libraries/System.Private.Xml/src/System/Xml/Core/XmlCharCheckingReader.cs b/src/libraries/System.Private.Xml/src/System/Xml/Core/XmlCharCheckingReader.cs index 30b088cdc3ffcd..2f9708a1131e0c 100644 --- a/src/libraries/System.Private.Xml/src/System/Xml/Core/XmlCharCheckingReader.cs +++ b/src/libraries/System.Private.Xml/src/System/Xml/Core/XmlCharCheckingReader.cs @@ -39,7 +39,6 @@ private enum State private readonly DtdProcessing _dtdProcessing; // -1 means do nothing private XmlNodeType _lastNodeType; - private XmlCharType _xmlCharType; private ReadContentAsBinaryHelper? _readBinaryHelper; @@ -60,11 +59,6 @@ internal XmlCharCheckingReader(XmlReader reader, bool checkCharacters, bool igno _dtdProcessing = dtdProcessing; _lastNodeType = XmlNodeType.None; - - if (checkCharacters) - { - _xmlCharType = XmlCharType.Instance; - } } // @@ -320,7 +314,7 @@ public override bool Read() if (str != null) { int i; - if ((i = _xmlCharType.IsPublicId(str)) >= 0) + if ((i = XmlCharType.IsPublicId(str)) >= 0) { Throw(SR.Xml_InvalidCharacter, XmlException.BuildCharExceptionArgs(str, i)); } @@ -622,7 +616,7 @@ private void Throw(string res, string[] args) private void CheckWhitespace(string value) { int i; - if ((i = _xmlCharType.IsOnlyWhitespaceWithPos(value)) != -1) + if ((i = XmlCharType.IsOnlyWhitespaceWithPos(value)) != -1) { Throw(SR.Xml_InvalidWhitespaceCharacter, XmlException.BuildCharExceptionArgs(value, i)); } diff --git a/src/libraries/System.Private.Xml/src/System/Xml/Core/XmlCharCheckingReaderAsync.cs b/src/libraries/System.Private.Xml/src/System/Xml/Core/XmlCharCheckingReaderAsync.cs index 85e0e2a6edace5..933d288774a0ee 100644 --- a/src/libraries/System.Private.Xml/src/System/Xml/Core/XmlCharCheckingReaderAsync.cs +++ b/src/libraries/System.Private.Xml/src/System/Xml/Core/XmlCharCheckingReaderAsync.cs @@ -172,7 +172,7 @@ public override async Task ReadAsync() if (str != null) { int i; - if ((i = _xmlCharType.IsPublicId(str)) >= 0) + if ((i = XmlCharType.IsPublicId(str)) >= 0) { Throw(SR.Xml_InvalidCharacter, XmlException.BuildCharExceptionArgs(str, i)); } diff --git a/src/libraries/System.Private.Xml/src/System/Xml/Core/XmlCharCheckingWriter.cs b/src/libraries/System.Private.Xml/src/System/Xml/Core/XmlCharCheckingWriter.cs index 548287eac1629d..f3cb979c70f0ee 100644 --- a/src/libraries/System.Private.Xml/src/System/Xml/Core/XmlCharCheckingWriter.cs +++ b/src/libraries/System.Private.Xml/src/System/Xml/Core/XmlCharCheckingWriter.cs @@ -24,7 +24,6 @@ internal partial class XmlCharCheckingWriter : XmlWrappingWriter private readonly bool _replaceNewLines; private readonly string _newLineChars; - private XmlCharType _xmlCharType; // // Constructor // @@ -37,10 +36,6 @@ internal XmlCharCheckingWriter(XmlWriter baseWriter, bool checkValues, bool chec _replaceNewLines = replaceNewLines; _newLineChars = newLineChars; - if (checkValues) - { - _xmlCharType = XmlCharType.Instance; - } } // @@ -83,7 +78,7 @@ public override void WriteDocType(string name, string? pubid, string? sysid, str if (pubid != null) { int i; - if ((i = _xmlCharType.IsPublicId(pubid)) >= 0) + if ((i = XmlCharType.IsPublicId(pubid)) >= 0) { throw XmlConvert.CreateInvalidCharException(pubid, i); } @@ -238,7 +233,7 @@ public override void WriteWhitespace(string? ws) if (_checkNames) { int i; - if ((i = _xmlCharType.IsOnlyWhitespaceWithPos(ws)) != -1) + if ((i = XmlCharType.IsOnlyWhitespaceWithPos(ws)) != -1) { throw new ArgumentException(SR.Format(SR.Xml_InvalidWhitespaceCharacter, XmlException.BuildCharExceptionArgs(ws, i))); } diff --git a/src/libraries/System.Private.Xml/src/System/Xml/Core/XmlCharCheckingWriterAsync.cs b/src/libraries/System.Private.Xml/src/System/Xml/Core/XmlCharCheckingWriterAsync.cs index 0c6d854e23c87b..8d3b8c4934d850 100644 --- a/src/libraries/System.Private.Xml/src/System/Xml/Core/XmlCharCheckingWriterAsync.cs +++ b/src/libraries/System.Private.Xml/src/System/Xml/Core/XmlCharCheckingWriterAsync.cs @@ -29,7 +29,7 @@ public override Task WriteDocTypeAsync(string name, string? pubid, string? sysid if (pubid != null) { int i; - if ((i = _xmlCharType.IsPublicId(pubid)) >= 0) + if ((i = XmlCharType.IsPublicId(pubid)) >= 0) { throw XmlConvert.CreateInvalidCharException(pubid, i); } @@ -180,7 +180,7 @@ public override Task WriteWhitespaceAsync(string? ws) if (_checkNames) { int i; - if ((i = _xmlCharType.IsOnlyWhitespaceWithPos(ws)) != -1) + if ((i = XmlCharType.IsOnlyWhitespaceWithPos(ws)) != -1) { throw new ArgumentException(SR.Format(SR.Xml_InvalidWhitespaceCharacter, XmlException.BuildCharExceptionArgs(ws, i))); } diff --git a/src/libraries/System.Private.Xml/src/System/Xml/Core/XmlEncodedRawTextWriter.cs b/src/libraries/System.Private.Xml/src/System/Xml/Core/XmlEncodedRawTextWriter.cs index 4b9796b609e13b..91a9b6d52ec9fa 100644 --- a/src/libraries/System.Private.Xml/src/System/Xml/Core/XmlEncodedRawTextWriter.cs +++ b/src/libraries/System.Private.Xml/src/System/Xml/Core/XmlEncodedRawTextWriter.cs @@ -5,9 +5,7 @@ // Instead, modify XmlRawTextWriterGenerator.ttinclude #nullable disable -using System; using System.IO; -using System.Xml; using System.Text; using System.Diagnostics; using System.Globalization; @@ -34,9 +32,6 @@ internal partial class XmlEncodedRawTextWriter : XmlRawWriter // encoding of the stream or text writer protected Encoding _encoding; - // char type tables - protected XmlCharType _xmlCharType = XmlCharType.Instance; - // buffer positions protected int _bufPos = 1; // buffer position starts at 1, because we need to be able to safely step back -1 in case we need to // close an empty element or in CDATA section detection of double ]; _bufChars[0] will always be 0 @@ -567,7 +562,7 @@ public override void WriteCharEntity(char ch) { string strVal = ((int)ch).ToString("X", NumberFormatInfo.InvariantInfo); - if (_checkCharacters && !_xmlCharType.IsCharData(ch)) + if (_checkCharacters && !XmlCharType.IsCharData(ch)) { // we just have a single char, not a surrogate, therefore we have to pass in '\0' for the second char throw XmlConvert.CreateInvalidCharException(ch, '\0'); @@ -908,7 +903,7 @@ protected unsafe void WriteAttributeTextBlock(char* pSrc, char* pSrcEnd) pDstEnd = pDstBegin + _bufLen; } - while (pDst < pDstEnd && _xmlCharType.IsAttributeValueChar((char)(ch = *pSrc))) + while (pDst < pDstEnd && XmlCharType.IsAttributeValueChar((char)(ch = *pSrc))) { *pDst = (char)ch; pDst++; @@ -1032,7 +1027,7 @@ protected unsafe void WriteElementTextBlock(char* pSrc, char* pSrcEnd) pDstEnd = pDstBegin + _bufLen; } - while (pDst < pDstEnd && _xmlCharType.IsAttributeValueChar((char)(ch = *pSrc))) + while (pDst < pDstEnd && XmlCharType.IsAttributeValueChar((char)(ch = *pSrc))) { *pDst = (char)ch; pDst++; @@ -1227,7 +1222,7 @@ protected unsafe void WriteRawWithCharChecking(char* pSrcBegin, char* pSrcEnd) pDstEnd = pDstBegin + _bufLen; } - while (pDst < pDstEnd && _xmlCharType.IsTextChar((char)(ch = *pSrc))) + while (pDst < pDstEnd && XmlCharType.IsTextChar((char)(ch = *pSrc))) { *pDst = (char)ch; pDst++; @@ -1347,7 +1342,7 @@ protected unsafe void WriteCommentOrPi(string text, int stopChar) pDstEnd = pDstBegin + _bufLen; } - while (pDst < pDstEnd && (_xmlCharType.IsTextChar((char)(ch = *pSrc)) && ch != stopChar)) + while (pDst < pDstEnd && (XmlCharType.IsTextChar((char)(ch = *pSrc)) && ch != stopChar)) { *pDst = (char)ch; pDst++; @@ -1498,7 +1493,7 @@ protected unsafe void WriteCDataSection(string text) pDstEnd = pDstBegin + _bufLen; } - while (pDst < pDstEnd && (_xmlCharType.IsAttributeValueChar((char)(ch = *pSrc)) && ch != ']')) + while (pDst < pDstEnd && (XmlCharType.IsAttributeValueChar((char)(ch = *pSrc)) && ch != ']')) { *pDst = (char)ch; pDst++; @@ -1639,8 +1634,8 @@ protected unsafe void WriteCDataSection(string text) private unsafe char* InvalidXmlChar(int ch, char* pDst, bool entitize) { - Debug.Assert(!_xmlCharType.IsWhiteSpace((char)ch)); - Debug.Assert(!_xmlCharType.IsAttributeValueChar((char)ch)); + Debug.Assert(!XmlCharType.IsWhiteSpace((char)ch)); + Debug.Assert(!XmlCharType.IsAttributeValueChar((char)ch)); if (_checkCharacters) { @@ -1853,7 +1848,7 @@ protected void ValidateContentChars(string chars, string propertyName, bool allo { if (allowOnlyWhitespace) { - if (!_xmlCharType.IsOnlyWhitespace(chars)) + if (!XmlCharType.IsOnlyWhitespace(chars)) { throw new ArgumentException(SR.Format(SR.Xml_IndentCharsNotWhitespace, propertyName)); } @@ -1863,7 +1858,7 @@ protected void ValidateContentChars(string chars, string propertyName, bool allo string error = null; for (int i = 0; i < chars.Length; i++) { - if (!_xmlCharType.IsTextChar(chars[i])) + if (!XmlCharType.IsTextChar(chars[i])) { switch (chars[i]) { diff --git a/src/libraries/System.Private.Xml/src/System/Xml/Core/XmlEncodedRawTextWriterAsync.cs b/src/libraries/System.Private.Xml/src/System/Xml/Core/XmlEncodedRawTextWriterAsync.cs index b48b6051fce649..9231fe81926b4f 100644 --- a/src/libraries/System.Private.Xml/src/System/Xml/Core/XmlEncodedRawTextWriterAsync.cs +++ b/src/libraries/System.Private.Xml/src/System/Xml/Core/XmlEncodedRawTextWriterAsync.cs @@ -458,7 +458,7 @@ public override async Task WriteCharEntityAsync(char ch) CheckAsyncCall(); string strVal = ((int)ch).ToString("X", NumberFormatInfo.InvariantInfo); - if (_checkCharacters && !_xmlCharType.IsCharData(ch)) + if (_checkCharacters && !XmlCharType.IsCharData(ch)) { // we just have a single char, not a surrogate, therefore we have to pass in '\0' for the second char throw XmlConvert.CreateInvalidCharException(ch, '\0'); @@ -737,7 +737,7 @@ protected unsafe int WriteAttributeTextBlockNoFlush(char* pSrc, char* pSrcEnd) pDstEnd = pDstBegin + _bufLen; } - while (pDst < pDstEnd && _xmlCharType.IsAttributeValueChar((char)(ch = *pSrc))) + while (pDst < pDstEnd && XmlCharType.IsAttributeValueChar((char)(ch = *pSrc))) { *pDst = (char)ch; pDst++; @@ -941,7 +941,7 @@ protected unsafe int WriteElementTextBlockNoFlush(char* pSrc, char* pSrcEnd, out pDstEnd = pDstBegin + _bufLen; } - while (pDst < pDstEnd && _xmlCharType.IsAttributeValueChar((char)(ch = *pSrc))) + while (pDst < pDstEnd && XmlCharType.IsAttributeValueChar((char)(ch = *pSrc))) { *pDst = (char)ch; pDst++; @@ -1357,7 +1357,7 @@ protected unsafe int WriteRawWithCharCheckingNoFlush(char* pSrcBegin, char* pSrc pDstEnd = pDstBegin + _bufLen; } - while (pDst < pDstEnd && _xmlCharType.IsTextChar((char)(ch = *pSrc))) + while (pDst < pDstEnd && XmlCharType.IsTextChar((char)(ch = *pSrc))) { *pDst = (char)ch; pDst++; @@ -1559,7 +1559,7 @@ protected unsafe int WriteCommentOrPiNoFlush(string text, int index, int count, pDstEnd = pDstBegin + _bufLen; } - while (pDst < pDstEnd && (_xmlCharType.IsTextChar((char)(ch = *pSrc)) && ch != stopChar)) + while (pDst < pDstEnd && (XmlCharType.IsTextChar((char)(ch = *pSrc)) && ch != stopChar)) { *pDst = (char)ch; pDst++; @@ -1749,7 +1749,7 @@ protected unsafe int WriteCDataSectionNoFlush(string text, int index, int count, pDstEnd = pDstBegin + _bufLen; } - while (pDst < pDstEnd && (_xmlCharType.IsAttributeValueChar((char)(ch = *pSrc)) && ch != ']')) + while (pDst < pDstEnd && (XmlCharType.IsAttributeValueChar((char)(ch = *pSrc)) && ch != ']')) { *pDst = (char)ch; pDst++; diff --git a/src/libraries/System.Private.Xml/src/System/Xml/Core/XmlTextEncoder.cs b/src/libraries/System.Private.Xml/src/System/Xml/Core/XmlTextEncoder.cs index a613b1ca9002a6..a25a9f08501aae 100644 --- a/src/libraries/System.Private.Xml/src/System/Xml/Core/XmlTextEncoder.cs +++ b/src/libraries/System.Private.Xml/src/System/Xml/Core/XmlTextEncoder.cs @@ -31,9 +31,6 @@ internal class XmlTextEncoder private StringBuilder? _attrValue; private bool _cacheAttrValue; - // XmlCharType - private XmlCharType _xmlCharType; - // // Constructor // @@ -41,7 +38,6 @@ internal XmlTextEncoder(TextWriter textWriter) { _textWriter = textWriter; _quoteChar = '"'; - _xmlCharType = XmlCharType.Instance; } // @@ -146,7 +142,7 @@ internal void Write(char[] array, int offset, int count) while (true) { int startPos = i; - while (i < endPos && _xmlCharType.IsAttributeValueChar(ch = array[i])) + while (i < endPos && XmlCharType.IsAttributeValueChar(ch = array[i])) { i++; } @@ -224,7 +220,7 @@ internal void Write(char[] array, int offset, int count) } else { - Debug.Assert((ch < 0x20 && !_xmlCharType.IsWhiteSpace(ch)) || (ch > 0xFFFD)); + Debug.Assert((ch < 0x20 && !XmlCharType.IsWhiteSpace(ch)) || (ch > 0xFFFD)); WriteCharEntityImpl(ch); } break; @@ -274,7 +270,7 @@ internal void Write(string text) char ch = (char)0; while (true) { - while (i < len && _xmlCharType.IsAttributeValueChar(ch = text[i])) + while (i < len && XmlCharType.IsAttributeValueChar(ch = text[i])) { i++; } @@ -380,14 +376,14 @@ internal void Write(string text) } else { - Debug.Assert((ch < 0x20 && !_xmlCharType.IsWhiteSpace(ch)) || (ch > 0xFFFD)); + Debug.Assert((ch < 0x20 && !XmlCharType.IsWhiteSpace(ch)) || (ch > 0xFFFD)); WriteCharEntityImpl(ch); } break; } i++; startPos = i; - while (i < len && _xmlCharType.IsAttributeValueChar(ch = text[i])) + while (i < len && XmlCharType.IsAttributeValueChar(ch = text[i])) { i++; } @@ -413,7 +409,7 @@ internal void WriteRawWithSurrogateChecking(string text) while (true) { - while (i < len && (_xmlCharType.IsCharData((ch = text[i])) || ch < 0x20)) + while (i < len && (XmlCharType.IsCharData((ch = text[i])) || ch < 0x20)) { i++; } diff --git a/src/libraries/System.Private.Xml/src/System/Xml/Core/XmlTextReaderImpl.cs b/src/libraries/System.Private.Xml/src/System/Xml/Core/XmlTextReaderImpl.cs index 7927d28da61745..eefbba970c17fd 100644 --- a/src/libraries/System.Private.Xml/src/System/Xml/Core/XmlTextReaderImpl.cs +++ b/src/libraries/System.Private.Xml/src/System/Xml/Core/XmlTextReaderImpl.cs @@ -143,9 +143,6 @@ private enum InitInputType #endregion - // XmlCharType instance - private XmlCharType _xmlCharType = XmlCharType.Instance; - // current parsing state (aka. scanner data) private ParsingState _ps; @@ -3707,7 +3704,7 @@ private bool ParseXmlDeclaration(bool isTextDecl) } if (!XmlConvert.StrEqual(_ps.chars, _ps.charPos, 5, XmlDeclarationBeginning) || - _xmlCharType.IsNameSingleChar(_ps.chars![_ps.charPos + 5])) + XmlCharType.IsNameSingleChar(_ps.chars![_ps.charPos + 5])) { goto NoXmlDecl; } @@ -3889,7 +3886,7 @@ private bool ParseXmlDeclaration(bool isTextDecl) char[] chars; Continue: chars = _ps.chars; - while (_xmlCharType.IsAttributeValueChar(chars[pos])) + while (XmlCharType.IsAttributeValueChar(chars[pos])) { pos++; } @@ -4431,7 +4428,7 @@ private void ParseElement() // case occurs (like end of buffer, invalid name char) ContinueStartName: // check element name start char - if (_xmlCharType.IsStartNCNameSingleChar(chars[pos])) + if (XmlCharType.IsStartNCNameSingleChar(chars[pos])) { pos++; } @@ -4444,7 +4441,7 @@ private void ParseElement() // parse element name while (true) { - if (_xmlCharType.IsNCNameSingleChar(chars[pos])) + if (XmlCharType.IsNCNameSingleChar(chars[pos])) { pos++; } @@ -4519,7 +4516,7 @@ private void ParseElement() char ch = chars[pos]; // whitespace after element name -> there are probably some attributes - bool isWs = _xmlCharType.IsWhiteSpace(ch); + bool isWs = XmlCharType.IsWhiteSpace(ch); if (isWs) { _ps.charPos = pos; @@ -4707,7 +4704,7 @@ private void ParseEndElement() goto ReadData; } - if (_xmlCharType.IsNCNameSingleChar(chars[pos]) || (chars[pos] == ':')) + if (XmlCharType.IsNCNameSingleChar(chars[pos]) || (chars[pos] == ':')) { ThrowTagMismatch(startTagNode); } @@ -4716,7 +4713,7 @@ private void ParseEndElement() if (chars[pos] != '>') { char tmpCh; - while (_xmlCharType.IsWhiteSpace(tmpCh = chars[pos])) + while (XmlCharType.IsWhiteSpace(tmpCh = chars[pos])) { pos++; switch (tmpCh) @@ -4814,7 +4811,7 @@ private void ParseAttributes() // eat whitespace int lineNoDelta = 0; char tmpch0; - while (_xmlCharType.IsWhiteSpace(tmpch0 = chars[pos])) + while (XmlCharType.IsWhiteSpace(tmpch0 = chars[pos])) { if (tmpch0 == (char)0xA) { @@ -4846,7 +4843,7 @@ private void ParseAttributes() char tmpch1; int startNameCharSize = 0; - if (_xmlCharType.IsStartNCNameSingleChar(tmpch1 = chars[pos])) + if (XmlCharType.IsStartNCNameSingleChar(tmpch1 = chars[pos])) { startNameCharSize = 1; } @@ -4918,7 +4915,7 @@ private void ParseAttributes() while (true) { - if (_xmlCharType.IsNCNameSingleChar(tmpch2 = chars[pos])) + if (XmlCharType.IsNCNameSingleChar(tmpch2 = chars[pos])) { pos++; } @@ -4948,7 +4945,7 @@ private void ParseAttributes() colonPos = pos; pos++; - if (_xmlCharType.IsStartNCNameSingleChar(chars[pos])) + if (XmlCharType.IsStartNCNameSingleChar(chars[pos])) { pos++; goto ContinueParseName; @@ -5004,7 +5001,7 @@ private void ParseAttributes() // parse attribute value char tmpch3; - while (_xmlCharType.IsAttributeValueChar(tmpch3 = chars[pos])) + while (XmlCharType.IsAttributeValueChar(tmpch3 = chars[pos])) { pos++; } @@ -5236,7 +5233,7 @@ private void ParseAttributeValueSlow(int curPos, char quoteChar, NodeData attr) while (true) { // parse the rest of the attribute value - while (_xmlCharType.IsAttributeValueChar(chars[pos])) + while (XmlCharType.IsAttributeValueChar(chars[pos])) { pos++; } @@ -5678,7 +5675,7 @@ private bool ParseText(out int startPos, out int endPos, ref int outOrChars) while (true) { // parse text content - while (_xmlCharType.IsTextChar(c = chars[pos])) + while (XmlCharType.IsTextChar(c = chars[pos])) { orChars |= (int)c; pos++; @@ -5752,7 +5749,7 @@ private bool ParseText(out int startPos, out int endPos, ref int outOrChars) rcount += (charRefEndPos - pos - charCount); pos = charRefEndPos; - if (!_xmlCharType.IsWhiteSpace(chars[charRefEndPos - charCount]) || + if (!XmlCharType.IsWhiteSpace(chars[charRefEndPos - charCount]) || (_v1Compat && entityType == EntityType.CharacterDec)) { orChars |= 0xFF; @@ -5781,7 +5778,7 @@ private bool ParseText(out int startPos, out int endPos, ref int outOrChars) break; case EntityType.CharacterHex: case EntityType.CharacterNamed: - if (!_xmlCharType.IsWhiteSpace(_ps.chars[pos - 1])) + if (!XmlCharType.IsWhiteSpace(_ps.chars[pos - 1])) { orChars |= 0xFF; } @@ -6060,7 +6057,7 @@ private bool ParseRootLevelWhitespace() } } - if (_xmlCharType.IsCharData(_ps.chars[_ps.charPos])) + if (XmlCharType.IsCharData(_ps.chars[_ps.charPos])) { Throw(SR.Xml_InvalidRootData); } @@ -6448,7 +6445,7 @@ private bool ParsePIValue(out int outStartPos, out int outEndPos) while (true) { char tmpch; - while (_xmlCharType.IsTextChar(tmpch = chars[pos]) && tmpch != '?') + while (XmlCharType.IsTextChar(tmpch = chars[pos]) && tmpch != '?') { pos++; } @@ -6654,7 +6651,7 @@ private bool ParseCDataOrComment(XmlNodeType type, out int outStartPos, out int while (true) { char tmpch; - while (_xmlCharType.IsTextChar(tmpch = chars[pos]) && tmpch != stopChar) + while (XmlCharType.IsTextChar(tmpch = chars[pos]) && tmpch != stopChar) { pos++; } @@ -6818,7 +6815,7 @@ private bool ParseDoctypeDecl() } Debug.Assert(_ps.chars != null); - if (!_xmlCharType.IsWhiteSpace(_ps.chars[_ps.charPos + 7])) + if (!XmlCharType.IsWhiteSpace(_ps.chars[_ps.charPos + 7])) { ThrowExpectingWhitespace(_ps.charPos + 7); } @@ -7008,7 +7005,7 @@ private void SkipUntil(char stopChar, bool recognizeLiterals) { char ch; - while (_xmlCharType.IsAttributeValueChar(ch = chars[pos]) && chars[pos] != stopChar && ch != '-' && ch != '?') + while (XmlCharType.IsAttributeValueChar(ch = chars[pos]) && chars[pos] != stopChar && ch != '-' && ch != '?') { pos++; } @@ -7427,7 +7424,7 @@ private int ParseNumericCharRefInline(int startPos, bool expand, StringBuilder? if (val <= char.MaxValue) { char ch = (char)val; - if (!_xmlCharType.IsCharData(ch) && + if (!XmlCharType.IsCharData(ch) && ((_v1Compat && _normalize) || (!_v1Compat && _checkCharacters))) { Throw((_ps.chars[startPos + 2] == 'x') ? startPos + 3 : startPos + 2, SR.Xml_InvalidCharacter, XmlException.BuildCharExceptionArgs(ch, '\0')); @@ -7665,7 +7662,7 @@ private int ParseQName(bool isQName, int startOffset, out int colonPos) char[] chars = _ps.chars; // start name char - if (_xmlCharType.IsStartNCNameSingleChar(chars[pos])) + if (XmlCharType.IsStartNCNameSingleChar(chars[pos])) { pos++; } @@ -7689,7 +7686,7 @@ private int ParseQName(bool isQName, int startOffset, out int colonPos) // parse name while (true) { - if (_xmlCharType.IsNCNameSingleChar(chars[pos])) + if (XmlCharType.IsNCNameSingleChar(chars[pos])) { pos++; } @@ -8441,14 +8438,14 @@ private int IncrementalRead() char c; if (_incReadState == IncrementalReadState.Attributes) { - while (_xmlCharType.IsAttributeValueChar(c = chars[pos]) && c != '/') + while (XmlCharType.IsAttributeValueChar(c = chars[pos]) && c != '/') { pos++; } } else { - while (_xmlCharType.IsAttributeValueChar(c = chars[pos])) + while (XmlCharType.IsAttributeValueChar(c = chars[pos])) { pos++; } @@ -8542,7 +8539,7 @@ private int IncrementalRead() // ParseQName can flush the buffer, so we need to update the startPos, pos and chars after calling it int endPos = ParseQName(true, 2, out colonPos); if (XmlConvert.StrEqual(chars, _ps.charPos + 2, endPos - _ps.charPos - 2, _curNode.GetNameWPrefix(_nameTable)) && - (_ps.chars[endPos] == '>' || _xmlCharType.IsWhiteSpace(_ps.chars[endPos]))) + (_ps.chars[endPos] == '>' || XmlCharType.IsWhiteSpace(_ps.chars[endPos]))) { if (--_incReadDepth > 0) { @@ -8551,7 +8548,7 @@ private int IncrementalRead() } _ps.charPos = endPos; - if (_xmlCharType.IsWhiteSpace(_ps.chars[endPos])) + if (XmlCharType.IsWhiteSpace(_ps.chars[endPos])) { EatWhitespaces(null); } @@ -8582,7 +8579,7 @@ private int IncrementalRead() // ParseQName can flush the buffer, so we need to update the startPos, pos and chars after calling it int endPos = ParseQName(true, 1, out colonPos); if (XmlConvert.StrEqual(_ps.chars, _ps.charPos + 1, endPos - _ps.charPos - 1, _curNode.localName) && - (_ps.chars[endPos] == '>' || _ps.chars[endPos] == '/' || _xmlCharType.IsWhiteSpace(_ps.chars[endPos]))) + (_ps.chars[endPos] == '>' || _ps.chars[endPos] == '/' || XmlCharType.IsWhiteSpace(_ps.chars[endPos]))) { _incReadDepth++; _incReadState = IncrementalReadState.Attributes; @@ -8746,7 +8743,7 @@ private bool ParseAttributeValueChunk() while (true) { - while (_xmlCharType.IsAttributeValueChar(chars[pos])) + while (XmlCharType.IsAttributeValueChar(chars[pos])) pos++; switch (chars[pos]) @@ -8790,7 +8787,7 @@ private bool ParseAttributeValueChunk() case EntityType.CharacterHex: case EntityType.CharacterNamed: chars = _ps.chars; - if (_normalize && _xmlCharType.IsWhiteSpace(chars[_ps.charPos]) && pos - _ps.charPos == 1) + if (_normalize && XmlCharType.IsWhiteSpace(chars[_ps.charPos]) && pos - _ps.charPos == 1) { chars[_ps.charPos] = (char)0x20; // CDATA normalization of character references in entities } @@ -8948,10 +8945,10 @@ private void ThrowUnexpectedToken(string expectedToken1, string? expectedToken2) Debug.Assert(_ps.chars != null); - if (_xmlCharType.IsNCNameSingleChar(_ps.chars[_ps.charPos])) + if (XmlCharType.IsNCNameSingleChar(_ps.chars[_ps.charPos])) { int pos = _ps.charPos + 1; - while (_xmlCharType.IsNCNameSingleChar(_ps.chars[pos])) + while (XmlCharType.IsNCNameSingleChar(_ps.chars[pos])) { pos++; } diff --git a/src/libraries/System.Private.Xml/src/System/Xml/Core/XmlTextReaderImplAsync.cs b/src/libraries/System.Private.Xml/src/System/Xml/Core/XmlTextReaderImplAsync.cs index d4ef7509a8f7d3..178c401897c452 100644 --- a/src/libraries/System.Private.Xml/src/System/Xml/Core/XmlTextReaderImplAsync.cs +++ b/src/libraries/System.Private.Xml/src/System/Xml/Core/XmlTextReaderImplAsync.cs @@ -1246,7 +1246,7 @@ private async Task ParseXmlDeclarationAsync(bool isTextDecl) } if (!XmlConvert.StrEqual(_ps.chars, _ps.charPos, 5, XmlDeclarationBeginning) || - _xmlCharType.IsNameSingleChar(_ps.chars[_ps.charPos + 5])) + XmlCharType.IsNameSingleChar(_ps.chars[_ps.charPos + 5])) { goto NoXmlDecl; } @@ -1425,7 +1425,7 @@ private async Task ParseXmlDeclarationAsync(bool isTextDecl) Continue: chars = _ps.chars; - while (_xmlCharType.IsAttributeValueChar(chars[pos])) + while (XmlCharType.IsAttributeValueChar(chars[pos])) { pos++; } @@ -1939,7 +1939,7 @@ private Task ParseElementAsync() // case occurs (like end of buffer, invalid name char) ContinueStartName: // check element name start char - if (_xmlCharType.IsStartNCNameSingleChar(chars[pos])) + if (XmlCharType.IsStartNCNameSingleChar(chars[pos])) { pos++; } @@ -1952,7 +1952,7 @@ private Task ParseElementAsync() // parse element name while (true) { - if (_xmlCharType.IsNCNameSingleChar(chars[pos])) + if (XmlCharType.IsNCNameSingleChar(chars[pos])) { pos++; } @@ -2058,7 +2058,7 @@ private Task ParseElementAsync_SetElement(int colonPos, int pos) // whitespace after element name -> there are probably some attributes bool isWs; - isWs = _xmlCharType.IsWhiteSpace(ch); + isWs = XmlCharType.IsWhiteSpace(ch); _ps.charPos = pos; if (isWs) @@ -2269,7 +2269,7 @@ private Task ParseEndElementAsync_CheckEndTag(int nameLen, NodeData startTagNode bool tagMismatch = false; - if (_xmlCharType.IsNCNameSingleChar(chars[pos]) || (chars[pos] == ':')) + if (XmlCharType.IsNCNameSingleChar(chars[pos]) || (chars[pos] == ':')) { tagMismatch = true; } @@ -2283,7 +2283,7 @@ private Task ParseEndElementAsync_CheckEndTag(int nameLen, NodeData startTagNode if (chars[pos] != '>') { char tmpCh; - while (_xmlCharType.IsWhiteSpace(tmpCh = chars[pos])) + while (XmlCharType.IsWhiteSpace(tmpCh = chars[pos])) { pos++; switch (tmpCh) @@ -2392,7 +2392,7 @@ private async Task ParseAttributesAsync() int lineNoDelta = 0; char tmpch0; - while (_xmlCharType.IsWhiteSpace(tmpch0 = chars[pos])) + while (XmlCharType.IsWhiteSpace(tmpch0 = chars[pos])) { if (tmpch0 == (char)0xA) { @@ -2424,7 +2424,7 @@ private async Task ParseAttributesAsync() char tmpch1; int startNameCharSize = 0; - if (_xmlCharType.IsStartNCNameSingleChar(tmpch1 = chars[pos])) + if (XmlCharType.IsStartNCNameSingleChar(tmpch1 = chars[pos])) { startNameCharSize = 1; } @@ -2496,7 +2496,7 @@ private async Task ParseAttributesAsync() while (true) { - if (_xmlCharType.IsNCNameSingleChar(tmpch2 = chars[pos])) + if (XmlCharType.IsNCNameSingleChar(tmpch2 = chars[pos])) { pos++; } @@ -2526,7 +2526,7 @@ private async Task ParseAttributesAsync() colonPos = pos; pos++; - if (_xmlCharType.IsStartNCNameSingleChar(chars[pos])) + if (XmlCharType.IsStartNCNameSingleChar(chars[pos])) { pos++; goto ContinueParseName; @@ -2592,7 +2592,7 @@ private async Task ParseAttributesAsync() // parse attribute value char tmpch3; - while (_xmlCharType.IsAttributeValueChar(tmpch3 = chars[pos])) + while (XmlCharType.IsAttributeValueChar(tmpch3 = chars[pos])) { pos++; } @@ -2691,7 +2691,7 @@ private async Task ParseAttributeValueSlowAsync(int curPos, char quoteChar, Node while (true) { // parse the rest of the attribute value - while (_xmlCharType.IsAttributeValueChar(chars[pos])) + while (XmlCharType.IsAttributeValueChar(chars[pos])) { pos++; } @@ -3325,7 +3325,7 @@ private enum ParseTextFunction while (true) { // parse text content - while (_xmlCharType.IsTextChar(c = chars[pos])) + while (XmlCharType.IsTextChar(c = chars[pos])) { orChars |= (int)c; pos++; @@ -3441,7 +3441,7 @@ private enum ParseTextFunction rcount += (charRefEndPos - pos - charCount); pos = charRefEndPos; - if (!_xmlCharType.IsWhiteSpace(chars[charRefEndPos - charCount]) || + if (!XmlCharType.IsWhiteSpace(chars[charRefEndPos - charCount]) || (_v1Compat && entityType == EntityType.CharacterDec)) { orChars |= 0xFF; @@ -3479,7 +3479,7 @@ private enum ParseTextFunction break; case EntityType.CharacterHex: case EntityType.CharacterNamed: - if (!_xmlCharType.IsWhiteSpace(_ps.chars[pos - 1])) + if (!XmlCharType.IsWhiteSpace(_ps.chars[pos - 1])) { orChars |= 0xFF; } @@ -3781,7 +3781,7 @@ private async Task ParseRootLevelWhitespaceAsync() } } - if (_xmlCharType.IsCharData(_ps.chars[_ps.charPos])) + if (XmlCharType.IsCharData(_ps.chars[_ps.charPos])) { Throw(SR.Xml_InvalidRootData); } @@ -4118,7 +4118,7 @@ private async Task ParsePIAsync(StringBuilder? piInDtdStringBuilder) { char tmpch; - while (_xmlCharType.IsTextChar(tmpch = chars[pos]) && tmpch != '?') + while (XmlCharType.IsTextChar(tmpch = chars[pos]) && tmpch != '?') { pos++; } @@ -4345,7 +4345,7 @@ private async Task ParseCDataOrCommentAsync(XmlNodeType type) while (true) { char tmpch; - while (_xmlCharType.IsTextChar(tmpch = chars[pos]) && tmpch != stopChar) + while (XmlCharType.IsTextChar(tmpch = chars[pos]) && tmpch != stopChar) { pos++; } @@ -4508,7 +4508,7 @@ private async Task ParseDoctypeDeclAsync() { ThrowUnexpectedToken((!_rootElementParsed && _dtdInfo == null) ? "DOCTYPE" : "