This commit is contained in:
niko
2026-06-04 11:42:34 +02:00
parent f39ba70a9f
commit e720b98cd1
7488 changed files with 2493818 additions and 0 deletions
+43
View File
@@ -0,0 +1,43 @@
using System;
namespace Mono.Xml
{
// Token: 0x020000EE RID: 238
internal class DefaultHandler : SmallXmlParser.IContentHandler
{
// Token: 0x06000BDC RID: 3036 RVA: 0x00035AB0 File Offset: 0x00033CB0
public void OnStartParsing(SmallXmlParser parser)
{
}
// Token: 0x06000BDD RID: 3037 RVA: 0x00035AB4 File Offset: 0x00033CB4
public void OnEndParsing(SmallXmlParser parser)
{
}
// Token: 0x06000BDE RID: 3038 RVA: 0x00035AB8 File Offset: 0x00033CB8
public void OnStartElement(string name, SmallXmlParser.IAttrList attrs)
{
}
// Token: 0x06000BDF RID: 3039 RVA: 0x00035ABC File Offset: 0x00033CBC
public void OnEndElement(string name)
{
}
// Token: 0x06000BE0 RID: 3040 RVA: 0x00035AC0 File Offset: 0x00033CC0
public void OnChars(string s)
{
}
// Token: 0x06000BE1 RID: 3041 RVA: 0x00035AC4 File Offset: 0x00033CC4
public void OnIgnorableWhitespace(string s)
{
}
// Token: 0x06000BE2 RID: 3042 RVA: 0x00035AC8 File Offset: 0x00033CC8
public void OnProcessingInstruction(string name, string text)
{
}
}
}
+95
View File
@@ -0,0 +1,95 @@
using System;
using System.Collections;
using System.IO;
using System.Security;
namespace Mono.Xml
{
// Token: 0x020000ED RID: 237
internal class SecurityParser : SmallXmlParser, SmallXmlParser.IContentHandler
{
// Token: 0x06000BD1 RID: 3025 RVA: 0x00035998 File Offset: 0x00033B98
public SecurityParser()
{
this.stack = new Stack();
}
// Token: 0x06000BD2 RID: 3026 RVA: 0x000359AC File Offset: 0x00033BAC
public void LoadXml(string xml)
{
this.root = null;
this.stack.Clear();
base.Parse(new StringReader(xml), this);
}
// Token: 0x06000BD3 RID: 3027 RVA: 0x000359D0 File Offset: 0x00033BD0
public SecurityElement ToXml()
{
return this.root;
}
// Token: 0x06000BD4 RID: 3028 RVA: 0x000359D8 File Offset: 0x00033BD8
public void OnStartParsing(SmallXmlParser parser)
{
}
// Token: 0x06000BD5 RID: 3029 RVA: 0x000359DC File Offset: 0x00033BDC
public void OnProcessingInstruction(string name, string text)
{
}
// Token: 0x06000BD6 RID: 3030 RVA: 0x000359E0 File Offset: 0x00033BE0
public void OnIgnorableWhitespace(string s)
{
}
// Token: 0x06000BD7 RID: 3031 RVA: 0x000359E4 File Offset: 0x00033BE4
public void OnStartElement(string name, SmallXmlParser.IAttrList attrs)
{
SecurityElement securityElement = new SecurityElement(name);
if (this.root == null)
{
this.root = securityElement;
this.current = securityElement;
}
else
{
SecurityElement securityElement2 = (SecurityElement)this.stack.Peek();
securityElement2.AddChild(securityElement);
}
this.stack.Push(securityElement);
this.current = securityElement;
int length = attrs.Length;
for (int i = 0; i < length; i++)
{
this.current.AddAttribute(attrs.GetName(i), SecurityElement.Escape(attrs.GetValue(i)));
}
}
// Token: 0x06000BD8 RID: 3032 RVA: 0x00035A78 File Offset: 0x00033C78
public void OnEndElement(string name)
{
this.current = (SecurityElement)this.stack.Pop();
}
// Token: 0x06000BD9 RID: 3033 RVA: 0x00035A90 File Offset: 0x00033C90
public void OnChars(string ch)
{
this.current.Text = SecurityElement.Escape(ch);
}
// Token: 0x06000BDA RID: 3034 RVA: 0x00035AA4 File Offset: 0x00033CA4
public void OnEndParsing(SmallXmlParser parser)
{
}
// Token: 0x0400033F RID: 831
private SecurityElement root;
// Token: 0x04000340 RID: 832
private SecurityElement current;
// Token: 0x04000341 RID: 833
private Stack stack;
}
}
+781
View File
@@ -0,0 +1,781 @@
using System;
using System.Collections;
using System.Globalization;
using System.IO;
using System.Text;
namespace Mono.Xml
{
// Token: 0x020000EF RID: 239
internal class SmallXmlParser
{
// Token: 0x06000BE4 RID: 3044 RVA: 0x00035B24 File Offset: 0x00033D24
private Exception Error(string msg)
{
return new SmallXmlParserException(msg, this.line, this.column);
}
// Token: 0x06000BE5 RID: 3045 RVA: 0x00035B38 File Offset: 0x00033D38
private Exception UnexpectedEndError()
{
string[] array = new string[this.elementNames.Count];
this.elementNames.CopyTo(array, 0);
return this.Error(string.Format("Unexpected end of stream. Element stack content is {0}", string.Join(",", array)));
}
// Token: 0x06000BE6 RID: 3046 RVA: 0x00035B80 File Offset: 0x00033D80
private bool IsNameChar(char c, bool start)
{
if (c == '-' || c == '.')
{
return !start;
}
if (c == ':' || c == '_')
{
return true;
}
if (c > 'Ā')
{
if (c == 'ۥ' || c == 'ۦ' || c == 'ՙ')
{
return true;
}
if ('ʻ' <= c && c <= 'ˁ')
{
return true;
}
}
switch (char.GetUnicodeCategory(c))
{
case UnicodeCategory.UppercaseLetter:
case UnicodeCategory.LowercaseLetter:
case UnicodeCategory.TitlecaseLetter:
case UnicodeCategory.OtherLetter:
case UnicodeCategory.LetterNumber:
return true;
case UnicodeCategory.ModifierLetter:
case UnicodeCategory.NonSpacingMark:
case UnicodeCategory.SpacingCombiningMark:
case UnicodeCategory.EnclosingMark:
case UnicodeCategory.DecimalDigitNumber:
return !start;
default:
return false;
}
}
// Token: 0x06000BE7 RID: 3047 RVA: 0x00035C4C File Offset: 0x00033E4C
private bool IsWhitespace(int c)
{
switch (c)
{
case 9:
case 10:
case 13:
break;
default:
if (c != 32)
{
return false;
}
break;
}
return true;
}
// Token: 0x06000BE8 RID: 3048 RVA: 0x00035C88 File Offset: 0x00033E88
public void SkipWhitespaces()
{
this.SkipWhitespaces(false);
}
// Token: 0x06000BE9 RID: 3049 RVA: 0x00035C94 File Offset: 0x00033E94
private void HandleWhitespaces()
{
while (this.IsWhitespace(this.Peek()))
{
this.buffer.Append((char)this.Read());
}
if (this.Peek() != 60 && this.Peek() >= 0)
{
this.isWhitespace = false;
}
}
// Token: 0x06000BEA RID: 3050 RVA: 0x00035CEC File Offset: 0x00033EEC
public void SkipWhitespaces(bool expected)
{
for (;;)
{
int num = this.Peek();
switch (num)
{
case 9:
case 10:
case 13:
break;
default:
if (num != 32)
{
goto Block_0;
}
break;
}
this.Read();
if (expected)
{
expected = false;
}
}
Block_0:
if (expected)
{
throw this.Error("Whitespace is expected.");
}
}
// Token: 0x06000BEB RID: 3051 RVA: 0x00035D58 File Offset: 0x00033F58
private int Peek()
{
return this.reader.Peek();
}
// Token: 0x06000BEC RID: 3052 RVA: 0x00035D68 File Offset: 0x00033F68
private int Read()
{
int num = this.reader.Read();
if (num == 10)
{
this.resetColumn = true;
}
if (this.resetColumn)
{
this.line++;
this.resetColumn = false;
this.column = 1;
}
else
{
this.column++;
}
return num;
}
// Token: 0x06000BED RID: 3053 RVA: 0x00035DCC File Offset: 0x00033FCC
public void Expect(int c)
{
int num = this.Read();
if (num < 0)
{
throw this.UnexpectedEndError();
}
if (num != c)
{
throw this.Error(string.Format("Expected '{0}' but got {1}", (char)c, (char)num));
}
}
// Token: 0x06000BEE RID: 3054 RVA: 0x00035E14 File Offset: 0x00034014
private string ReadUntil(char until, bool handleReferences)
{
while (this.Peek() >= 0)
{
char c = (char)this.Read();
if (c == until)
{
string text = this.buffer.ToString();
this.buffer.Length = 0;
return text;
}
if (handleReferences && c == '&')
{
this.ReadReference();
}
else
{
this.buffer.Append(c);
}
}
throw this.UnexpectedEndError();
}
// Token: 0x06000BEF RID: 3055 RVA: 0x00035E8C File Offset: 0x0003408C
public string ReadName()
{
int num = 0;
if (this.Peek() < 0 || !this.IsNameChar((char)this.Peek(), true))
{
throw this.Error("XML name start character is expected.");
}
for (int i = this.Peek(); i >= 0; i = this.Peek())
{
char c = (char)i;
if (!this.IsNameChar(c, false))
{
break;
}
if (num == this.nameBuffer.Length)
{
char[] array = new char[num * 2];
Array.Copy(this.nameBuffer, array, num);
this.nameBuffer = array;
}
this.nameBuffer[num++] = c;
this.Read();
}
if (num == 0)
{
throw this.Error("Valid XML name is expected.");
}
return new string(this.nameBuffer, 0, num);
}
// Token: 0x06000BF0 RID: 3056 RVA: 0x00035F54 File Offset: 0x00034154
public void Parse(TextReader input, SmallXmlParser.IContentHandler handler)
{
this.reader = input;
this.handler = handler;
handler.OnStartParsing(this);
while (this.Peek() >= 0)
{
this.ReadContent();
}
this.HandleBufferedContent();
if (this.elementNames.Count > 0)
{
throw this.Error(string.Format("Insufficient close tag: {0}", this.elementNames.Peek()));
}
handler.OnEndParsing(this);
this.Cleanup();
}
// Token: 0x06000BF1 RID: 3057 RVA: 0x00035FD0 File Offset: 0x000341D0
private void Cleanup()
{
this.line = 1;
this.column = 0;
this.handler = null;
this.reader = null;
this.elementNames.Clear();
this.xmlSpaces.Clear();
this.attributes.Clear();
this.buffer.Length = 0;
this.xmlSpace = null;
this.isWhitespace = false;
}
// Token: 0x06000BF2 RID: 3058 RVA: 0x00036034 File Offset: 0x00034234
public void ReadContent()
{
if (this.IsWhitespace(this.Peek()))
{
if (this.buffer.Length == 0)
{
this.isWhitespace = true;
}
this.HandleWhitespaces();
}
if (this.Peek() != 60)
{
this.ReadCharacters();
return;
}
this.Read();
int num = this.Peek();
if (num != 33)
{
if (num != 47)
{
string text;
if (num != 63)
{
this.HandleBufferedContent();
text = this.ReadName();
while (this.Peek() != 62 && this.Peek() != 47)
{
this.ReadAttribute(this.attributes);
}
this.handler.OnStartElement(text, this.attributes);
this.attributes.Clear();
this.SkipWhitespaces();
if (this.Peek() == 47)
{
this.Read();
this.handler.OnEndElement(text);
}
else
{
this.elementNames.Push(text);
this.xmlSpaces.Push(this.xmlSpace);
}
this.Expect(62);
return;
}
this.HandleBufferedContent();
this.Read();
text = this.ReadName();
this.SkipWhitespaces();
string text2 = string.Empty;
if (this.Peek() != 63)
{
for (;;)
{
text2 += this.ReadUntil('?', false);
if (this.Peek() == 62)
{
break;
}
text2 += "?";
}
}
this.handler.OnProcessingInstruction(text, text2);
this.Expect(62);
return;
}
else
{
this.HandleBufferedContent();
if (this.elementNames.Count == 0)
{
throw this.UnexpectedEndError();
}
this.Read();
string text = this.ReadName();
this.SkipWhitespaces();
string text3 = (string)this.elementNames.Pop();
this.xmlSpaces.Pop();
if (this.xmlSpaces.Count > 0)
{
this.xmlSpace = (string)this.xmlSpaces.Peek();
}
else
{
this.xmlSpace = null;
}
if (text != text3)
{
throw this.Error(string.Format("End tag mismatch: expected {0} but found {1}", text3, text));
}
this.handler.OnEndElement(text);
this.Expect(62);
return;
}
}
else
{
this.Read();
if (this.Peek() == 91)
{
this.Read();
if (this.ReadName() != "CDATA")
{
throw this.Error("Invalid declaration markup");
}
this.Expect(91);
this.ReadCDATASection();
return;
}
else
{
if (this.Peek() == 45)
{
this.ReadComment();
return;
}
if (this.ReadName() != "DOCTYPE")
{
throw this.Error("Invalid declaration markup.");
}
throw this.Error("This parser does not support document type.");
}
}
}
// Token: 0x06000BF3 RID: 3059 RVA: 0x0003630C File Offset: 0x0003450C
private void HandleBufferedContent()
{
if (this.buffer.Length == 0)
{
return;
}
if (this.isWhitespace)
{
this.handler.OnIgnorableWhitespace(this.buffer.ToString());
}
else
{
this.handler.OnChars(this.buffer.ToString());
}
this.buffer.Length = 0;
this.isWhitespace = false;
}
// Token: 0x06000BF4 RID: 3060 RVA: 0x0003637C File Offset: 0x0003457C
private void ReadCharacters()
{
this.isWhitespace = false;
for (;;)
{
int num = this.Peek();
int num2 = num;
if (num2 == -1)
{
break;
}
if (num2 != 38)
{
if (num2 == 60)
{
return;
}
this.buffer.Append((char)this.Read());
}
else
{
this.Read();
this.ReadReference();
}
}
}
// Token: 0x06000BF5 RID: 3061 RVA: 0x000363E8 File Offset: 0x000345E8
private void ReadReference()
{
if (this.Peek() != 35)
{
string text = this.ReadName();
this.Expect(59);
string text2 = text;
switch (text2)
{
case "amp":
this.buffer.Append('&');
return;
case "quot":
this.buffer.Append('"');
return;
case "apos":
this.buffer.Append('\'');
return;
case "lt":
this.buffer.Append('<');
return;
case "gt":
this.buffer.Append('>');
return;
}
throw this.Error("General non-predefined entity reference is not supported in this parser.");
}
this.Read();
this.ReadCharacterReference();
}
// Token: 0x06000BF6 RID: 3062 RVA: 0x0003651C File Offset: 0x0003471C
private int ReadCharacterReference()
{
int num = 0;
if (this.Peek() == 120)
{
this.Read();
for (int i = this.Peek(); i >= 0; i = this.Peek())
{
if (48 <= i && i <= 57)
{
num <<= 4 + i - 48;
}
else if (65 <= i && i <= 70)
{
num <<= 4 + i - 65 + 10;
}
else
{
if (97 > i || i > 102)
{
break;
}
num <<= 4 + i - 97 + 10;
}
this.Read();
}
}
else
{
for (int j = this.Peek(); j >= 0; j = this.Peek())
{
if (48 > j || j > 57)
{
break;
}
num <<= 4 + j - 48;
this.Read();
}
}
return num;
}
// Token: 0x06000BF7 RID: 3063 RVA: 0x0003661C File Offset: 0x0003481C
private void ReadAttribute(SmallXmlParser.AttrListImpl a)
{
this.SkipWhitespaces(true);
if (this.Peek() == 47 || this.Peek() == 62)
{
return;
}
string text = this.ReadName();
this.SkipWhitespaces();
this.Expect(61);
this.SkipWhitespaces();
int num = this.Read();
string text2;
if (num != 34)
{
if (num != 39)
{
throw this.Error("Invalid attribute value markup.");
}
text2 = this.ReadUntil('\'', true);
}
else
{
text2 = this.ReadUntil('"', true);
}
if (text == "xml:space")
{
this.xmlSpace = text2;
}
a.Add(text, text2);
}
// Token: 0x06000BF8 RID: 3064 RVA: 0x000366CC File Offset: 0x000348CC
private void ReadCDATASection()
{
int num = 0;
while (this.Peek() >= 0)
{
char c = (char)this.Read();
if (c == ']')
{
num++;
}
else
{
if (c == '>' && num > 1)
{
for (int i = num; i > 2; i--)
{
this.buffer.Append(']');
}
return;
}
for (int j = 0; j < num; j++)
{
this.buffer.Append(']');
}
num = 0;
this.buffer.Append(c);
}
}
throw this.UnexpectedEndError();
}
// Token: 0x06000BF9 RID: 3065 RVA: 0x00036770 File Offset: 0x00034970
private void ReadComment()
{
this.Expect(45);
this.Expect(45);
for (;;)
{
if (this.Read() == 45)
{
if (this.Read() == 45)
{
break;
}
}
}
if (this.Read() != 62)
{
throw this.Error("'--' is not allowed inside comment markup.");
}
}
// Token: 0x04000342 RID: 834
private SmallXmlParser.IContentHandler handler;
// Token: 0x04000343 RID: 835
private TextReader reader;
// Token: 0x04000344 RID: 836
private Stack elementNames = new Stack();
// Token: 0x04000345 RID: 837
private Stack xmlSpaces = new Stack();
// Token: 0x04000346 RID: 838
private string xmlSpace;
// Token: 0x04000347 RID: 839
private StringBuilder buffer = new StringBuilder(200);
// Token: 0x04000348 RID: 840
private char[] nameBuffer = new char[30];
// Token: 0x04000349 RID: 841
private bool isWhitespace;
// Token: 0x0400034A RID: 842
private SmallXmlParser.AttrListImpl attributes = new SmallXmlParser.AttrListImpl();
// Token: 0x0400034B RID: 843
private int line = 1;
// Token: 0x0400034C RID: 844
private int column;
// Token: 0x0400034D RID: 845
private bool resetColumn;
// Token: 0x020000F0 RID: 240
public interface IContentHandler
{
// Token: 0x06000BFA RID: 3066
void OnStartParsing(SmallXmlParser parser);
// Token: 0x06000BFB RID: 3067
void OnEndParsing(SmallXmlParser parser);
// Token: 0x06000BFC RID: 3068
void OnStartElement(string name, SmallXmlParser.IAttrList attrs);
// Token: 0x06000BFD RID: 3069
void OnEndElement(string name);
// Token: 0x06000BFE RID: 3070
void OnProcessingInstruction(string name, string text);
// Token: 0x06000BFF RID: 3071
void OnChars(string text);
// Token: 0x06000C00 RID: 3072
void OnIgnorableWhitespace(string text);
}
// Token: 0x020000F1 RID: 241
public interface IAttrList
{
// Token: 0x170001B8 RID: 440
// (get) Token: 0x06000C01 RID: 3073
int Length { get; }
// Token: 0x170001B9 RID: 441
// (get) Token: 0x06000C02 RID: 3074
bool IsEmpty { get; }
// Token: 0x06000C03 RID: 3075
string GetName(int i);
// Token: 0x06000C04 RID: 3076
string GetValue(int i);
// Token: 0x06000C05 RID: 3077
string GetValue(string name);
// Token: 0x170001BA RID: 442
// (get) Token: 0x06000C06 RID: 3078
string[] Names { get; }
// Token: 0x170001BB RID: 443
// (get) Token: 0x06000C07 RID: 3079
string[] Values { get; }
}
// Token: 0x020000F2 RID: 242
private class AttrListImpl : SmallXmlParser.IAttrList
{
// Token: 0x170001BC RID: 444
// (get) Token: 0x06000C09 RID: 3081 RVA: 0x000367F4 File Offset: 0x000349F4
public int Length
{
get
{
return this.attrNames.Count;
}
}
// Token: 0x170001BD RID: 445
// (get) Token: 0x06000C0A RID: 3082 RVA: 0x00036804 File Offset: 0x00034A04
public bool IsEmpty
{
get
{
return this.attrNames.Count == 0;
}
}
// Token: 0x06000C0B RID: 3083 RVA: 0x00036814 File Offset: 0x00034A14
public string GetName(int i)
{
return (string)this.attrNames[i];
}
// Token: 0x06000C0C RID: 3084 RVA: 0x00036828 File Offset: 0x00034A28
public string GetValue(int i)
{
return (string)this.attrValues[i];
}
// Token: 0x06000C0D RID: 3085 RVA: 0x0003683C File Offset: 0x00034A3C
public string GetValue(string name)
{
for (int i = 0; i < this.attrNames.Count; i++)
{
if ((string)this.attrNames[i] == name)
{
return (string)this.attrValues[i];
}
}
return null;
}
// Token: 0x170001BE RID: 446
// (get) Token: 0x06000C0E RID: 3086 RVA: 0x00036894 File Offset: 0x00034A94
public string[] Names
{
get
{
return (string[])this.attrNames.ToArray(typeof(string));
}
}
// Token: 0x170001BF RID: 447
// (get) Token: 0x06000C0F RID: 3087 RVA: 0x000368B0 File Offset: 0x00034AB0
public string[] Values
{
get
{
return (string[])this.attrValues.ToArray(typeof(string));
}
}
// Token: 0x06000C10 RID: 3088 RVA: 0x000368CC File Offset: 0x00034ACC
internal void Clear()
{
this.attrNames.Clear();
this.attrValues.Clear();
}
// Token: 0x06000C11 RID: 3089 RVA: 0x000368E4 File Offset: 0x00034AE4
internal void Add(string name, string value)
{
this.attrNames.Add(name);
this.attrValues.Add(value);
}
// Token: 0x0400034F RID: 847
private ArrayList attrNames = new ArrayList();
// Token: 0x04000350 RID: 848
private ArrayList attrValues = new ArrayList();
}
}
}
@@ -0,0 +1,42 @@
using System;
namespace Mono.Xml
{
// Token: 0x020000F3 RID: 243
internal class SmallXmlParserException : SystemException
{
// Token: 0x06000C12 RID: 3090 RVA: 0x00036900 File Offset: 0x00034B00
public SmallXmlParserException(string msg, int line, int column)
: base(string.Format("{0}. At ({1},{2})", msg, line, column))
{
this.line = line;
this.column = column;
}
// Token: 0x170001C0 RID: 448
// (get) Token: 0x06000C13 RID: 3091 RVA: 0x00036930 File Offset: 0x00034B30
public int Line
{
get
{
return this.line;
}
}
// Token: 0x170001C1 RID: 449
// (get) Token: 0x06000C14 RID: 3092 RVA: 0x00036938 File Offset: 0x00034B38
public int Column
{
get
{
return this.column;
}
}
// Token: 0x04000351 RID: 849
private int line;
// Token: 0x04000352 RID: 850
private int column;
}
}