Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
XmlSchemaDatatype.cs
Go to the documentation of this file.
3using System.Text;
4
5namespace System.Xml.Schema;
6
7public abstract class XmlSchemaDatatype
8{
9 public abstract Type ValueType { get; }
10
11 public abstract XmlTokenizedType TokenizedType { get; }
12
14
15 public virtual XmlTypeCode TypeCode => XmlTypeCode.None;
16
17 internal abstract bool HasLexicalFacets { get; }
18
19 internal abstract bool HasValueFacets { get; }
20
21 internal abstract XmlValueConverter ValueConverter { get; }
22
23 internal abstract RestrictionFacets? Restriction { get; }
24
25 internal abstract FacetsChecker FacetsChecker { get; }
26
28
29 internal string TypeCodeString
30 {
31 get
32 {
33 string result = string.Empty;
34 XmlTypeCode typeCode = TypeCode;
35 switch (Variety)
36 {
38 result = ((typeCode != XmlTypeCode.AnyAtomicType) ? ("List of " + TypeCodeToString(typeCode)) : "List of Union");
39 break;
40 case XmlSchemaDatatypeVariety.Union:
41 result = "Union";
42 break;
43 case XmlSchemaDatatypeVariety.Atomic:
44 result = ((typeCode != XmlTypeCode.AnyAtomicType) ? TypeCodeToString(typeCode) : "anySimpleType");
45 break;
46 }
47 return result;
48 }
49 }
50
51 public abstract object ParseValue(string s, XmlNameTable? nameTable, IXmlNamespaceResolver? nsmgr);
52
54 {
55 }
56
57 public virtual object ChangeType(object value, Type targetType)
58 {
59 if (value == null)
60 {
61 throw new ArgumentNullException("value");
62 }
63 if (targetType == null)
64 {
65 throw new ArgumentNullException("targetType");
66 }
68 }
69
71 {
72 if (value == null)
73 {
74 throw new ArgumentNullException("value");
75 }
76 if (targetType == null)
77 {
78 throw new ArgumentNullException("targetType");
79 }
80 if (namespaceResolver == null)
81 {
82 throw new ArgumentNullException("namespaceResolver");
83 }
85 }
86
87 public virtual bool IsDerivedFrom(XmlSchemaDatatype datatype)
88 {
89 return false;
90 }
91
92 internal abstract int Compare(object value1, object value2);
93
95
96 internal abstract Exception TryParseValue(string s, XmlNameTable nameTable, IXmlNamespaceResolver nsmgr, out object typedValue);
97
99
101
102 internal abstract XmlSchemaDatatype DeriveByList(XmlSchemaType schemaType);
103
105
106 internal abstract bool IsEqual(object o1, object o2);
107
108 internal abstract bool IsComparable(XmlSchemaDatatype dtype);
109
110 internal string TypeCodeToString(XmlTypeCode typeCode)
111 {
112 return typeCode switch
113 {
114 XmlTypeCode.None => "None",
115 XmlTypeCode.Item => "AnyType",
116 XmlTypeCode.AnyAtomicType => "AnyAtomicType",
117 XmlTypeCode.String => "String",
118 XmlTypeCode.Boolean => "Boolean",
119 XmlTypeCode.Decimal => "Decimal",
120 XmlTypeCode.Float => "Float",
121 XmlTypeCode.Double => "Double",
122 XmlTypeCode.Duration => "Duration",
123 XmlTypeCode.DateTime => "DateTime",
124 XmlTypeCode.Time => "Time",
125 XmlTypeCode.Date => "Date",
126 XmlTypeCode.GYearMonth => "GYearMonth",
127 XmlTypeCode.GYear => "GYear",
128 XmlTypeCode.GMonthDay => "GMonthDay",
129 XmlTypeCode.GDay => "GDay",
130 XmlTypeCode.GMonth => "GMonth",
131 XmlTypeCode.HexBinary => "HexBinary",
132 XmlTypeCode.Base64Binary => "Base64Binary",
133 XmlTypeCode.AnyUri => "AnyUri",
134 XmlTypeCode.QName => "QName",
135 XmlTypeCode.Notation => "Notation",
136 XmlTypeCode.NormalizedString => "NormalizedString",
137 XmlTypeCode.Token => "Token",
138 XmlTypeCode.Language => "Language",
139 XmlTypeCode.NmToken => "NmToken",
140 XmlTypeCode.Name => "Name",
141 XmlTypeCode.NCName => "NCName",
142 XmlTypeCode.Id => "Id",
143 XmlTypeCode.Idref => "Idref",
144 XmlTypeCode.Entity => "Entity",
145 XmlTypeCode.Integer => "Integer",
146 XmlTypeCode.NonPositiveInteger => "NonPositiveInteger",
147 XmlTypeCode.NegativeInteger => "NegativeInteger",
148 XmlTypeCode.Long => "Long",
149 XmlTypeCode.Int => "Int",
150 XmlTypeCode.Short => "Short",
151 XmlTypeCode.Byte => "Byte",
152 XmlTypeCode.NonNegativeInteger => "NonNegativeInteger",
153 XmlTypeCode.UnsignedLong => "UnsignedLong",
154 XmlTypeCode.UnsignedInt => "UnsignedInt",
155 XmlTypeCode.UnsignedShort => "UnsignedShort",
156 XmlTypeCode.UnsignedByte => "UnsignedByte",
157 XmlTypeCode.PositiveInteger => "PositiveInteger",
158 _ => typeCode.ToString(),
159 };
160 }
161
162 internal static string ConcatenatedToString(object value)
163 {
165 string result = string.Empty;
166 if (!(type == typeof(IEnumerable)) || !(type != typeof(string)))
167 {
168 result = ((!(value is IFormattable)) ? value.ToString() : ((IFormattable)value).ToString("", CultureInfo.InvariantCulture));
169 }
170 else
171 {
173 IEnumerator enumerator = (value as IEnumerable).GetEnumerator();
174 if (enumerator.MoveNext())
175 {
176 stringBuilder.Append('{');
177 object current = enumerator.Current;
178 if (current is IFormattable)
179 {
180 stringBuilder.Append(((IFormattable)current).ToString("", CultureInfo.InvariantCulture));
181 }
182 else
183 {
184 stringBuilder.Append(current.ToString());
185 }
186 while (enumerator.MoveNext())
187 {
188 stringBuilder.Append(" , ");
189 current = enumerator.Current;
190 if (current is IFormattable)
191 {
192 stringBuilder.Append(((IFormattable)current).ToString("", CultureInfo.InvariantCulture));
193 }
194 else
195 {
196 stringBuilder.Append(current.ToString());
197 }
198 }
199 stringBuilder.Append('}');
200 result = stringBuilder.ToString();
201 }
202 }
203 return result;
204 }
205
210
215
216 internal static XmlSchemaDatatype FromXdrName(string name)
217 {
219 }
220
222 {
223 return DatatypeImplementation.DeriveByUnion(types, schemaType);
224 }
225
226 internal static string XdrCanonizeUri(string uri, XmlNameTable nameTable, SchemaNames schemaNames)
227 {
228 int num = 5;
229 bool flag = false;
230 if (uri.Length > 5 && uri.StartsWith("uuid:", StringComparison.Ordinal))
231 {
232 flag = true;
233 }
234 else if (uri.Length > 9 && uri.StartsWith("urn:uuid:", StringComparison.Ordinal))
235 {
236 flag = true;
237 num = 9;
238 }
239 string text = ((!flag) ? uri : nameTable.Add(string.Concat(uri.AsSpan(0, num), uri.Substring(num, uri.Length - num).ToUpperInvariant())));
240 if (Ref.Equal(schemaNames.NsDataTypeAlias, text) || Ref.Equal(schemaNames.NsDataTypeOld, text))
241 {
242 text = schemaNames.NsDataType;
243 }
244 else if (Ref.Equal(schemaNames.NsXdrAlias, text))
245 {
246 text = schemaNames.NsXdr;
247 }
248 return text;
249 }
250}
static CultureInfo InvariantCulture
static ? Type GetType(string typeName, bool throwOnError, bool ignoreCase)
Definition Type.cs:408
static bool Equal(string strA, string strB)
Definition Ref.cs:5
static new DatatypeImplementation FromXmlTokenizedTypeXsd(XmlTokenizedType token)
static new DatatypeImplementation FromXdrName(string name)
static new DatatypeImplementation DeriveByUnion(XmlSchemaSimpleType[] types, XmlSchemaType schemaType)
static new DatatypeImplementation FromXmlTokenizedType(XmlTokenizedType token)
static string XdrCanonizeUri(string uri, XmlNameTable nameTable, SchemaNames schemaNames)
virtual bool IsDerivedFrom(XmlSchemaDatatype datatype)
XmlSchemaDatatype DeriveByRestriction(XmlSchemaObjectCollection facets, XmlNameTable nameTable, XmlSchemaType schemaType)
virtual object ChangeType(object value, Type targetType, IXmlNamespaceResolver namespaceResolver)
XmlSchemaDatatype DeriveByList(XmlSchemaType schemaType)
virtual object ChangeType(object value, Type targetType)
Exception TryParseValue(string s, XmlNameTable nameTable, IXmlNamespaceResolver nsmgr, out object typedValue)
bool IsEqual(object o1, object o2)
Exception TryParseValue(object value, XmlNameTable nameTable, IXmlNamespaceResolver namespaceResolver, out object typedValue)
void VerifySchemaValid(XmlSchemaObjectTable notations, XmlSchemaObject caller)
object ParseValue(string s, XmlNameTable? nameTable, IXmlNamespaceResolver? nsmgr)
static XmlSchemaDatatype FromXmlTokenizedType(XmlTokenizedType token)
object ParseValue(string s, XmlNameTable nameTable, IXmlNamespaceResolver nsmgr, bool createAtomicValue)
static string ConcatenatedToString(object value)
bool IsComparable(XmlSchemaDatatype dtype)
static XmlSchemaDatatype FromXmlTokenizedTypeXsd(XmlTokenizedType token)
virtual XmlSchemaDatatypeVariety Variety
string TypeCodeToString(XmlTypeCode typeCode)
int Compare(object value1, object value2)
static XmlSchemaDatatype FromXdrName(string name)
static XmlSchemaDatatype DeriveByUnion(XmlSchemaSimpleType[] types, XmlSchemaType schemaType)
object ChangeType(bool value, Type destinationType)
TypeCode
Definition TypeCode.cs:4