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

◆ Optimize()

override ExpressionNode System.Data.BinaryNode.Optimize ( )
inlinepackageinherited

Definition at line 133 of file BinaryNode.cs.

134 {
135 _left = _left.Optimize();
136 if (_op == 13)
137 {
138 if (_right is UnaryNode)
139 {
140 UnaryNode unaryNode = (UnaryNode)_right;
141 if (unaryNode._op != 3)
142 {
143 throw ExprException.InvalidIsSyntax();
144 }
145 _op = 39;
146 _right = unaryNode._right;
147 }
148 if (!(_right is ZeroOpNode))
149 {
150 throw ExprException.InvalidIsSyntax();
151 }
152 if (((ZeroOpNode)_right)._op != 32)
153 {
154 throw ExprException.InvalidIsSyntax();
155 }
156 }
157 else
158 {
160 }
161 if (IsConstant())
162 {
163 object obj = EvalConstant();
164 if (obj == DBNull.Value)
165 {
166 return new ZeroOpNode(32);
167 }
168 if (obj is bool)
169 {
170 if ((bool)obj)
171 {
172 return new ZeroOpNode(33);
173 }
174 return new ZeroOpNode(34);
175 }
176 return new ConstNode(base.table, ValueType.Object, obj, fParseQuotes: false);
177 }
178 return this;
179 }
override bool IsConstant()
Definition BinaryNode.cs:88
ExpressionNode _left
Definition BinaryNode.cs:51
ExpressionNode _right
Definition BinaryNode.cs:53
ExpressionNode Optimize()

References System.Data.BinaryNode._left, System.Data.BinaryNode._op, System.Data.BinaryNode._right, System.Data.BinaryNode.EvalConstant(), System.Data.ExprException.InvalidIsSyntax(), System.Data.BinaryNode.IsConstant(), System.obj, System.Data.ExpressionNode.Optimize(), and System.DBNull.Value.