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

◆ EvalUnaryOp()

object System.Data.UnaryNode.EvalUnaryOp ( int op,
object vl )
inlineprivate

Definition at line 45 of file UnaryNode.cs.

46 {
47 object value = DBNull.Value;
48 if (DataExpression.IsUnknown(vl))
49 {
50 return DBNull.Value;
51 }
52 switch (op)
53 {
54 case 0:
55 return vl;
56 case 2:
57 {
59 if (ExpressionNode.IsNumericSql(storageType))
60 {
61 return vl;
62 }
63 throw ExprException.TypeMismatch(ToString());
64 }
65 case 1:
66 {
68 if (ExpressionNode.IsNumericSql(storageType))
69 {
70 return storageType switch
71 {
72 StorageType.Byte => -(byte)vl,
73 StorageType.Int16 => -(short)vl,
74 StorageType.Int32 => -(int)vl,
75 StorageType.Int64 => -(long)vl,
76 StorageType.Single => 0f - (float)vl,
77 StorageType.Double => 0.0 - (double)vl,
78 StorageType.Decimal => -(decimal)vl,
79 StorageType.SqlDecimal => -(SqlDecimal)vl,
80 StorageType.SqlDouble => -(SqlDouble)vl,
81 StorageType.SqlSingle => -(SqlSingle)vl,
82 StorageType.SqlMoney => -(SqlMoney)vl,
83 StorageType.SqlInt64 => -(SqlInt64)vl,
84 StorageType.SqlInt32 => -(SqlInt32)vl,
85 StorageType.SqlInt16 => -(SqlInt16)vl,
86 _ => DBNull.Value,
87 };
88 }
89 throw ExprException.TypeMismatch(ToString());
90 }
91 case 3:
93 {
94 if (sqlBoolean.IsFalse)
95 {
96 return SqlBoolean.True;
97 }
98 if (((SqlBoolean)vl).IsTrue)
99 {
100 return SqlBoolean.False;
101 }
102 throw ExprException.UnsupportedOperator(op);
103 }
104 if (DataExpression.ToBoolean(vl))
105 {
106 return false;
107 }
108 return true;
109 default:
110 throw ExprException.UnsupportedOperator(op);
111 }
112 }
static StorageType GetStorageType(Type dataType)
ExpressionNode(DataTable table)
static readonly SqlBoolean True
Definition SqlBoolean.cs:17
static readonly SqlBoolean False
Definition SqlBoolean.cs:19

References System.Data.SqlTypes.SqlBoolean.False, System.Data.Common.DataStorage.GetStorageType(), System.Data.ExpressionNode.IsNumericSql(), System.Data.DataExpression.IsUnknown(), System.Data.Common.SqlDouble, System.Data.Common.SqlInt32, System.Data.Common.SqlMoney, System.Data.DataExpression.ToBoolean(), System.ToString, System.Data.SqlTypes.SqlBoolean.True, System.Data.ExprException.TypeMismatch(), System.Data.ExprException.UnsupportedOperator(), System.DBNull.Value, and System.value.

Referenced by System.Data.UnaryNode.Eval().