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

◆ VisitBinary()

override Expression System.Linq.Expressions.ExpressionStringBuilder.VisitBinary ( BinaryExpression node)
inlinepackagevirtual

Reimplemented from System.Linq.Expressions.ExpressionVisitor.

Definition at line 122 of file ExpressionStringBuilder.cs.

123 {
124 if (node.NodeType == ExpressionType.ArrayIndex)
125 {
126 Visit(node.Left);
127 Out('[');
128 Visit(node.Right);
129 Out(']');
130 }
131 else
132 {
133 string s;
134 switch (node.NodeType)
135 {
136 case ExpressionType.AndAlso:
137 s = "AndAlso";
138 break;
139 case ExpressionType.OrElse:
140 s = "OrElse";
141 break;
142 case ExpressionType.Assign:
143 s = "=";
144 break;
145 case ExpressionType.Equal:
146 s = "==";
147 break;
148 case ExpressionType.NotEqual:
149 s = "!=";
150 break;
151 case ExpressionType.GreaterThan:
152 s = ">";
153 break;
154 case ExpressionType.LessThan:
155 s = "<";
156 break;
157 case ExpressionType.GreaterThanOrEqual:
158 s = ">=";
159 break;
160 case ExpressionType.LessThanOrEqual:
161 s = "<=";
162 break;
163 case ExpressionType.Add:
164 case ExpressionType.AddChecked:
165 s = "+";
166 break;
167 case ExpressionType.AddAssign:
168 case ExpressionType.AddAssignChecked:
169 s = "+=";
170 break;
171 case ExpressionType.Subtract:
172 case ExpressionType.SubtractChecked:
173 s = "-";
174 break;
175 case ExpressionType.SubtractAssign:
176 case ExpressionType.SubtractAssignChecked:
177 s = "-=";
178 break;
179 case ExpressionType.Divide:
180 s = "/";
181 break;
182 case ExpressionType.DivideAssign:
183 s = "/=";
184 break;
185 case ExpressionType.Modulo:
186 s = "%";
187 break;
188 case ExpressionType.ModuloAssign:
189 s = "%=";
190 break;
191 case ExpressionType.Multiply:
192 case ExpressionType.MultiplyChecked:
193 s = "*";
194 break;
195 case ExpressionType.MultiplyAssign:
196 case ExpressionType.MultiplyAssignChecked:
197 s = "*=";
198 break;
199 case ExpressionType.LeftShift:
200 s = "<<";
201 break;
202 case ExpressionType.LeftShiftAssign:
203 s = "<<=";
204 break;
205 case ExpressionType.RightShift:
206 s = ">>";
207 break;
208 case ExpressionType.RightShiftAssign:
209 s = ">>=";
210 break;
211 case ExpressionType.And:
212 s = (IsBool(node) ? "And" : "&");
213 break;
214 case ExpressionType.AndAssign:
215 s = (IsBool(node) ? "&&=" : "&=");
216 break;
217 case ExpressionType.Or:
218 s = (IsBool(node) ? "Or" : "|");
219 break;
220 case ExpressionType.OrAssign:
221 s = (IsBool(node) ? "||=" : "|=");
222 break;
223 case ExpressionType.ExclusiveOr:
224 s = "^";
225 break;
226 case ExpressionType.ExclusiveOrAssign:
227 s = "^=";
228 break;
229 case ExpressionType.Power:
230 s = "**";
231 break;
232 case ExpressionType.PowerAssign:
233 s = "**=";
234 break;
235 case ExpressionType.Coalesce:
236 s = "??";
237 break;
238 default:
239 throw new InvalidOperationException();
240 }
241 Out('(');
242 Visit(node.Left);
243 Out(' ');
244 Out(s);
245 Out(' ');
246 Visit(node.Right);
247 Out(')');
248 }
249 return node;
250 }
virtual ? Expression Visit(Expression? node)

References System.Linq.Expressions.ExpressionStringBuilder.IsBool(), System.Reflection.Out, System.s, and System.Linq.Expressions.ExpressionVisitor.Visit().