Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
SqlBinary.cs
Go to the documentation of this file.
3using System.Xml;
6
8
9[XmlSchemaProvider("GetXsdType")]
11{
12 private byte[] _value;
13
14 public static readonly SqlBinary Null = new SqlBinary(fNull: true);
15
16 public bool IsNull => _value == null;
17
18 public byte[] Value
19 {
20 get
21 {
22 if (_value == null)
23 {
24 throw new SqlNullValueException();
25 }
26 byte[] array = new byte[_value.Length];
27 _value.CopyTo(array, 0);
28 return array;
29 }
30 }
31
32 public byte this[int index]
33 {
34 get
35 {
36 if (_value == null)
37 {
38 throw new SqlNullValueException();
39 }
40 return _value[index];
41 }
42 }
43
44 public int Length
45 {
46 get
47 {
48 if (_value != null)
49 {
50 return _value.Length;
51 }
52 throw new SqlNullValueException();
53 }
54 }
55
56 private SqlBinary(bool fNull)
57 {
58 _value = null;
59 }
60
61 public SqlBinary(byte[]? value)
62 {
63 if (value == null)
64 {
65 _value = null;
66 return;
67 }
68 _value = new byte[value.Length];
69 value.CopyTo(_value, 0);
70 }
71
72 public static implicit operator SqlBinary(byte[] x)
73 {
74 return new SqlBinary(x);
75 }
76
77 public static explicit operator byte[]?(SqlBinary x)
78 {
79 return x.Value;
80 }
81
82 public override string ToString()
83 {
84 if (_value != null)
85 {
86 return $"SqlBinary({_value.Length})";
87 }
89 }
90
92 {
93 if (x.IsNull || y.IsNull)
94 {
95 return Null;
96 }
97 byte[] array = new byte[x.Value.Length + y.Value.Length];
98 x.Value.CopyTo(array, 0);
99 y.Value.CopyTo(array, x.Value.Length);
100 return new SqlBinary(array);
101 }
102
103 private static EComparison PerformCompareByte(byte[] x, byte[] y)
104 {
105 int num = ((x.Length < y.Length) ? x.Length : y.Length);
106 for (int i = 0; i < num; i++)
107 {
108 if (x[i] != y[i])
109 {
110 if (x[i] < y[i])
111 {
112 return EComparison.LT;
113 }
114 return EComparison.GT;
115 }
116 }
117 if (x.Length == y.Length)
118 {
119 return EComparison.EQ;
120 }
121 byte b = 0;
122 if (x.Length < y.Length)
123 {
124 for (int i = num; i < y.Length; i++)
125 {
126 if (y[i] != b)
127 {
128 return EComparison.LT;
129 }
130 }
131 }
132 else
133 {
134 for (int i = num; i < x.Length; i++)
135 {
136 if (x[i] != b)
137 {
138 return EComparison.GT;
139 }
140 }
141 }
142 return EComparison.EQ;
143 }
144
145 public static explicit operator SqlBinary(SqlGuid x)
146 {
147 if (!x.IsNull)
148 {
149 return new SqlBinary(x.ToByteArray());
150 }
151 return Null;
152 }
153
155 {
156 if (x.IsNull || y.IsNull)
157 {
158 return SqlBoolean.Null;
159 }
160 return new SqlBoolean(PerformCompareByte(x.Value, y.Value) == EComparison.EQ);
161 }
162
164 {
165 return !(x == y);
166 }
167
169 {
170 if (x.IsNull || y.IsNull)
171 {
172 return SqlBoolean.Null;
173 }
174 return new SqlBoolean(PerformCompareByte(x.Value, y.Value) == EComparison.LT);
175 }
176
178 {
179 if (x.IsNull || y.IsNull)
180 {
181 return SqlBoolean.Null;
182 }
183 return new SqlBoolean(PerformCompareByte(x.Value, y.Value) == EComparison.GT);
184 }
185
187 {
188 if (x.IsNull || y.IsNull)
189 {
190 return SqlBoolean.Null;
191 }
193 return new SqlBoolean(eComparison == EComparison.LT || eComparison == EComparison.EQ);
194 }
195
197 {
198 if (x.IsNull || y.IsNull)
199 {
200 return SqlBoolean.Null;
201 }
203 return new SqlBoolean(eComparison == EComparison.GT || eComparison == EComparison.EQ);
204 }
205
206 public static SqlBinary Add(SqlBinary x, SqlBinary y)
207 {
208 return x + y;
209 }
210
212 {
213 return x + y;
214 }
215
217 {
218 return x == y;
219 }
220
222 {
223 return x != y;
224 }
225
227 {
228 return x < y;
229 }
230
232 {
233 return x > y;
234 }
235
237 {
238 return x <= y;
239 }
240
242 {
243 return x >= y;
244 }
245
247 {
248 return (SqlGuid)this;
249 }
250
251 public int CompareTo(object? value)
252 {
254 {
255 return CompareTo(value2);
256 }
257 throw ADP.WrongType(value.GetType(), typeof(SqlBinary));
258 }
259
261 {
262 if (IsNull)
263 {
264 if (!value.IsNull)
265 {
266 return -1;
267 }
268 return 0;
269 }
270 if (value.IsNull)
271 {
272 return 1;
273 }
274 if (this < value)
275 {
276 return -1;
277 }
278 if (this > value)
279 {
280 return 1;
281 }
282 return 0;
283 }
284
285 public override bool Equals([NotNullWhen(true)] object? value)
286 {
288 {
289 return false;
290 }
291 if (sqlBinary.IsNull || IsNull)
292 {
293 if (sqlBinary.IsNull)
294 {
295 return IsNull;
296 }
297 return false;
298 }
299 return (this == sqlBinary).Value;
300 }
301
302 internal static int HashByteArray(byte[] rgbValue, int length)
303 {
304 if (length <= 0)
305 {
306 return 0;
307 }
308 int num = 0;
309 for (int i = 0; i < length; i++)
310 {
311 int num2 = (num >> 28) & 0xFF;
312 num <<= 4;
313 num = num ^ rgbValue[i] ^ num2;
314 }
315 return num;
316 }
317
318 public override int GetHashCode()
319 {
320 if (_value == null)
321 {
322 return 0;
323 }
324 int num = _value.Length;
325 while (num > 0 && _value[num - 1] == 0)
326 {
327 num--;
328 }
329 return HashByteArray(_value, num);
330 }
331
333 {
334 return null;
335 }
336
338 {
339 string attribute = reader.GetAttribute("nil", "http://www.w3.org/2001/XMLSchema-instance");
340 if (attribute != null && XmlConvert.ToBoolean(attribute))
341 {
342 reader.ReadElementString();
343 _value = null;
344 return;
345 }
346 string text = reader.ReadElementString();
347 if (text == null)
348 {
349 _value = Array.Empty<byte>();
350 return;
351 }
352 text = text.Trim();
353 if (text.Length == 0)
354 {
355 _value = Array.Empty<byte>();
356 }
357 else
358 {
360 }
361 }
362
364 {
365 if (_value == null)
366 {
367 writer.WriteAttributeString("xsi", "nil", "http://www.w3.org/2001/XMLSchema-instance", "true");
368 }
369 else
370 {
371 writer.WriteString(Convert.ToBase64String(_value));
372 }
373 }
374
376 {
377 return new XmlQualifiedName("base64Binary", "http://www.w3.org/2001/XMLSchema");
378 }
379}
static string ToBase64String(byte[] inArray)
Definition Convert.cs:2675
static unsafe byte[] FromBase64String(string s)
Definition Convert.cs:2904
static Exception WrongType(Type got, Type expected)
Definition ADP.cs:174
static bool ToBoolean(string s)
string? GetAttribute(string name)
virtual string ReadElementString()
Definition XmlReader.cs:667
static SqlBoolean GreaterThan(SqlBinary x, SqlBinary y)
Definition SqlBinary.cs:231
static SqlBoolean operator>=(SqlBinary x, SqlBinary y)
Definition SqlBinary.cs:196
static SqlBoolean operator<(SqlBinary x, SqlBinary y)
Definition SqlBinary.cs:168
override string ToString()
Definition SqlBinary.cs:82
static SqlBoolean operator==(SqlBinary x, SqlBinary y)
Definition SqlBinary.cs:154
int CompareTo(SqlBinary value)
Definition SqlBinary.cs:260
static SqlBinary operator+(SqlBinary x, SqlBinary y)
Definition SqlBinary.cs:91
static readonly SqlBinary Null
Definition SqlBinary.cs:14
int CompareTo(object? value)
Definition SqlBinary.cs:251
static SqlBoolean LessThanOrEqual(SqlBinary x, SqlBinary y)
Definition SqlBinary.cs:236
static XmlQualifiedName GetXsdType(XmlSchemaSet schemaSet)
Definition SqlBinary.cs:375
static EComparison PerformCompareByte(byte[] x, byte[] y)
Definition SqlBinary.cs:103
static SqlBoolean NotEquals(SqlBinary x, SqlBinary y)
Definition SqlBinary.cs:221
static SqlBoolean operator<=(SqlBinary x, SqlBinary y)
Definition SqlBinary.cs:186
static SqlBinary Concat(SqlBinary x, SqlBinary y)
Definition SqlBinary.cs:211
static SqlBoolean LessThan(SqlBinary x, SqlBinary y)
Definition SqlBinary.cs:226
static SqlBinary Add(SqlBinary x, SqlBinary y)
Definition SqlBinary.cs:206
override bool Equals([NotNullWhen(true)] object? value)
Definition SqlBinary.cs:285
static SqlBoolean Equals(SqlBinary x, SqlBinary y)
Definition SqlBinary.cs:216
static SqlBoolean GreaterThanOrEqual(SqlBinary x, SqlBinary y)
Definition SqlBinary.cs:241
static SqlBoolean operator!=(SqlBinary x, SqlBinary y)
Definition SqlBinary.cs:163
static SqlBoolean operator>(SqlBinary x, SqlBinary y)
Definition SqlBinary.cs:177
static int HashByteArray(byte[] rgbValue, int length)
Definition SqlBinary.cs:302
static readonly SqlBoolean Null
Definition SqlBoolean.cs:21