Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
Datatype_union.cs
Go to the documentation of this file.
1namespace System.Xml.Schema;
2
4{
5 private static readonly Type s_atomicValueType = typeof(object);
6
7 private static readonly Type s_listValueType = typeof(object[]);
8
9 private readonly XmlSchemaSimpleType[] _types;
10
11 public override Type ValueType => s_atomicValueType;
12
13 public override XmlTypeCode TypeCode => XmlTypeCode.AnyAtomicType;
14
16
17 internal override Type ListValueType => s_listValueType;
18
20
22
24 {
25 return XmlUnionConverter.Create(schemaType);
26 }
27
32
33 internal override int Compare(object value1, object value2)
34 {
37 if (xsdSimpleValue == null || xsdSimpleValue2 == null)
38 {
39 return -1;
40 }
41 XmlSchemaType xmlType = xsdSimpleValue.XmlType;
43 if (xmlType == xmlType2)
44 {
45 XmlSchemaDatatype datatype = xmlType.Datatype;
46 return datatype.Compare(xsdSimpleValue.TypedValue, xsdSimpleValue2.TypedValue);
47 }
48 return -1;
49 }
50
51 internal bool HasAtomicMembers()
52 {
53 for (int i = 0; i < _types.Length; i++)
54 {
55 if (_types[i].Datatype.Variety == XmlSchemaDatatypeVariety.List)
56 {
57 return false;
58 }
59 }
60 return true;
61 }
62
64 {
65 for (int i = 0; i < _types.Length; i++)
66 {
67 if (derivedType.IsDerivedFrom(_types[i].Datatype))
68 {
69 return true;
70 }
71 }
72 return false;
73 }
74
75 internal override Exception TryParseValue(string s, XmlNameTable nameTable, IXmlNamespaceResolver nsmgr, out object typedValue)
76 {
78 typedValue = null;
79 Exception ex = DatatypeImplementation.unionFacetsChecker.CheckLexicalFacets(ref s, this);
80 if (ex == null)
81 {
82 for (int i = 0; i < _types.Length; i++)
83 {
84 ex = _types[i].Datatype.TryParseValue(s, nameTable, nsmgr, out typedValue);
85 if (ex == null)
86 {
88 break;
89 }
90 }
91 if (xmlSchemaSimpleType == null)
92 {
94 }
95 else
96 {
97 typedValue = new XsdSimpleValue(xmlSchemaSimpleType, typedValue);
98 ex = DatatypeImplementation.unionFacetsChecker.CheckValueFacets(typedValue, this);
99 if (ex == null)
100 {
101 return null;
102 }
103 }
104 }
105 return ex;
106 }
107
108 internal override Exception TryParseValue(object value, XmlNameTable nameTable, IXmlNamespaceResolver nsmgr, out object typedValue)
109 {
110 if (value == null)
111 {
112 throw new ArgumentNullException("value");
113 }
114 typedValue = null;
115 if (value is string s)
116 {
117 return TryParseValue(s, nameTable, nsmgr, out typedValue);
118 }
119 object typedValue2 = null;
120 XmlSchemaSimpleType st = null;
121 for (int i = 0; i < _types.Length; i++)
122 {
123 if (_types[i].Datatype.TryParseValue(value, nameTable, nsmgr, out typedValue2) == null)
124 {
125 st = _types[i];
126 break;
127 }
128 }
130 if (typedValue2 == null)
131 {
133 }
134 else
135 {
136 try
137 {
138 if (!HasLexicalFacets)
139 {
140 goto IL_00bc;
141 }
143 ex = DatatypeImplementation.unionFacetsChecker.CheckLexicalFacets(ref parseString, this);
144 if (ex == null)
145 {
146 goto IL_00bc;
147 }
148 goto end_IL_0083;
149 IL_00e2:
150 return null;
151 IL_00bc:
152 typedValue = new XsdSimpleValue(st, typedValue2);
153 if (!HasValueFacets)
154 {
155 goto IL_00e2;
156 }
157 ex = DatatypeImplementation.unionFacetsChecker.CheckValueFacets(typedValue, this);
158 if (ex == null)
159 {
160 goto IL_00e2;
161 }
163 }
164 catch (FormatException ex2)
165 {
166 ex = ex2;
167 }
169 {
170 ex = ex3;
171 }
172 catch (OverflowException ex4)
173 {
174 ex = ex4;
175 }
176 catch (ArgumentException ex5)
177 {
178 ex = ex5;
179 }
180 }
181 return ex;
182 }
183}
static string Sch_UnionFailedEx
Definition SR.cs:708
Definition SR.cs:7
Datatype_union(XmlSchemaSimpleType[] types)
override Exception TryParseValue(string s, XmlNameTable nameTable, IXmlNamespaceResolver nsmgr, out object typedValue)
override int Compare(object value1, object value2)
override RestrictionFlags ValidRestrictionFlags
readonly XmlSchemaSimpleType[] _types
override XmlValueConverter CreateValueConverter(XmlSchemaType schemaType)
bool IsUnionBaseOf(DatatypeImplementation derivedType)
override Exception TryParseValue(object value, XmlNameTable nameTable, IXmlNamespaceResolver nsmgr, out object typedValue)
static readonly Type s_atomicValueType
XmlSchemaSimpleType[] BaseMemberTypes
static readonly Type s_listValueType
Exception TryParseValue(string s, XmlNameTable nameTable, IXmlNamespaceResolver nsmgr, out object typedValue)
int Compare(object value1, object value2)
static XmlValueConverter Create(XmlSchemaType schemaType)
object ChangeType(bool value, Type destinationType)
TypeCode
Definition TypeCode.cs:4