Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ BinaryCompare() [2/2]

int System.Data.BinaryNode.BinaryCompare ( object vLeft,
object vRight,
StorageType resultType,
int op,
CompareInfo comparer )
inlinepackageinherited

Definition at line 207 of file BinaryNode.cs.

208 {
209 int result = 0;
210 try
211 {
213 {
214 switch (resultType)
215 {
216 case StorageType.SByte:
217 case StorageType.Byte:
218 case StorageType.Int16:
219 case StorageType.UInt16:
220 case StorageType.Int32:
221 return Convert.ToInt32(vLeft, base.FormatProvider).CompareTo(Convert.ToInt32(vRight, base.FormatProvider));
222 case StorageType.UInt32:
223 case StorageType.Int64:
224 case StorageType.UInt64:
225 case StorageType.Decimal:
226 return decimal.Compare(Convert.ToDecimal(vLeft, base.FormatProvider), Convert.ToDecimal(vRight, base.FormatProvider));
227 case StorageType.Char:
228 return Convert.ToInt32(vLeft, base.FormatProvider).CompareTo(Convert.ToInt32(vRight, base.FormatProvider));
229 case StorageType.Double:
230 return Convert.ToDouble(vLeft, base.FormatProvider).CompareTo(Convert.ToDouble(vRight, base.FormatProvider));
231 case StorageType.Single:
232 return Convert.ToSingle(vLeft, base.FormatProvider).CompareTo(Convert.ToSingle(vRight, base.FormatProvider));
233 case StorageType.DateTime:
234 return DateTime.Compare(Convert.ToDateTime(vLeft, base.FormatProvider), Convert.ToDateTime(vRight, base.FormatProvider));
235 case StorageType.DateTimeOffset:
237 case StorageType.String:
238 return base.table.Compare(Convert.ToString(vLeft, base.FormatProvider), Convert.ToString(vRight, base.FormatProvider), comparer);
239 case StorageType.Guid:
240 return ((Guid)vLeft).CompareTo((Guid)vRight);
241 case StorageType.Boolean:
242 if (op == 7 || op == 12)
243 {
244 return Convert.ToInt32(DataExpression.ToBoolean(vLeft), base.FormatProvider) - Convert.ToInt32(DataExpression.ToBoolean(vRight), base.FormatProvider);
245 }
246 break;
247 case StorageType.TimeSpan:
248 case StorageType.ByteArray:
249 case StorageType.CharArray:
250 case StorageType.Type:
251 break;
252 }
253 }
254 else
255 {
256 switch (resultType)
257 {
258 case StorageType.SByte:
259 case StorageType.Byte:
260 case StorageType.Int16:
261 case StorageType.UInt16:
262 case StorageType.Int32:
263 case StorageType.SqlByte:
264 case StorageType.SqlInt16:
265 case StorageType.SqlInt32:
267 case StorageType.UInt32:
268 case StorageType.Int64:
269 case StorageType.SqlInt64:
271 case StorageType.UInt64:
272 case StorageType.SqlDecimal:
274 case StorageType.SqlDouble:
276 case StorageType.SqlSingle:
278 case StorageType.SqlString:
279 return base.table.Compare(vLeft.ToString(), vRight.ToString());
280 case StorageType.SqlGuid:
281 return ((SqlGuid)vLeft).CompareTo(vRight);
282 case StorageType.SqlBoolean:
283 if (op == 7 || op == 12)
284 {
285 result = 1;
286 if ((vLeft.GetType() == typeof(SqlBoolean) && (vRight.GetType() == typeof(SqlBoolean) || vRight.GetType() == typeof(bool))) || (vRight.GetType() == typeof(SqlBoolean) && (vLeft.GetType() == typeof(SqlBoolean) || vLeft.GetType() == typeof(bool))))
287 {
289 }
290 }
291 break;
292 case StorageType.SqlBinary:
294 case StorageType.SqlDateTime:
296 case StorageType.SqlMoney:
298 case StorageType.Single:
299 case StorageType.Double:
300 case StorageType.Decimal:
301 case StorageType.DateTime:
302 case StorageType.TimeSpan:
303 case StorageType.String:
304 case StorageType.Guid:
305 case StorageType.ByteArray:
306 case StorageType.CharArray:
307 case StorageType.Type:
308 case StorageType.DateTimeOffset:
309 case StorageType.BigInteger:
310 case StorageType.Uri:
311 case StorageType.SqlBytes:
312 case StorageType.SqlChars:
313 break;
314 }
315 }
316 }
317 catch (ArgumentException e)
318 {
319 ExceptionBuilder.TraceExceptionWithoutRethrow(e);
320 }
321 catch (FormatException e2)
322 {
323 ExceptionBuilder.TraceExceptionWithoutRethrow(e2);
324 }
325 catch (InvalidCastException e3)
326 {
327 ExceptionBuilder.TraceExceptionWithoutRethrow(e3);
328 }
329 catch (OverflowException e4)
330 {
331 ExceptionBuilder.TraceExceptionWithoutRethrow(e4);
332 }
333 catch (EvaluateException e5)
334 {
335 ExceptionBuilder.TraceExceptionWithoutRethrow(e5);
336 }
337 SetTypeMismatchError(op, vLeft.GetType(), vRight.GetType());
338 return result;
339 }
void SetTypeMismatchError(int op, Type left, Type right)
static bool IsSqlType(StorageType storageType)
static SqlBoolean ConvertToSqlBoolean(object value)
static SqlBinary ConvertToSqlBinary(object value)
static SqlDouble ConvertToSqlDouble(object value)
Definition SqlConvert.cs:85
static SqlDecimal ConvertToSqlDecimal(object value)
static SqlMoney ConvertToSqlMoney(object value)
static SqlInt32 ConvertToSqlInt32(object value)
Definition SqlConvert.cs:42
static SqlDateTime ConvertToSqlDateTime(object value)
static SqlInt64 ConvertToSqlInt64(object value)
Definition SqlConvert.cs:62
static SqlSingle ConvertToSqlSingle(object value)

References System.DateTime.Compare(), System.DateTimeOffset.Compare(), System.comparer, System.Data.Common.SqlConvert.ConvertToSqlBinary(), System.Data.Common.SqlConvert.ConvertToSqlBoolean(), System.Data.Common.SqlConvert.ConvertToSqlDateTime(), System.Data.Common.SqlConvert.ConvertToSqlDecimal(), System.Data.Common.SqlConvert.ConvertToSqlDouble(), System.Data.Common.SqlConvert.ConvertToSqlInt32(), System.Data.Common.SqlConvert.ConvertToSqlInt64(), System.Data.Common.SqlConvert.ConvertToSqlMoney(), System.Data.Common.SqlConvert.ConvertToSqlSingle(), System.Data.Common.DataStorage.IsSqlType(), System.Data.BinaryNode.SetTypeMismatchError(), System.Data.DataExpression.ToBoolean(), System.Convert.ToDateTime(), System.Convert.ToDecimal(), System.Convert.ToDouble(), System.Convert.ToInt32(), System.Convert.ToSingle(), System.Convert.ToString(), and System.Data.ExceptionBuilder.TraceExceptionWithoutRethrow().