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

◆ ReduceIndex()

Expression System.Linq.Expressions.BinaryExpression.ReduceIndex ( )
inlineprivateinherited

Definition at line 196 of file BinaryExpression.cs.

197 {
198 IndexExpression indexExpression = (IndexExpression)Left;
199 System.Collections.Generic.ArrayBuilder<ParameterExpression> builder = new System.Collections.Generic.ArrayBuilder<ParameterExpression>(indexExpression.ArgumentCount + 2);
201 ParameterExpression parameterExpression = Expression.Variable(indexExpression.Object.Type, "tempObj");
202 builder.UncheckedAdd(parameterExpression);
203 builder2.UncheckedAdd(Expression.Assign(parameterExpression, indexExpression.Object));
204 int argumentCount = indexExpression.ArgumentCount;
206 for (int i = 0; i < argumentCount; i++)
207 {
208 Expression argument = indexExpression.GetArgument(i);
209 ParameterExpression parameterExpression2 = Expression.Variable(argument.Type, "tempArg" + i);
210 builder.UncheckedAdd(parameterExpression2);
211 builder3.UncheckedAdd(parameterExpression2);
212 builder2.UncheckedAdd(Expression.Assign(parameterExpression2, argument));
213 }
214 IndexExpression left = Expression.MakeIndex(parameterExpression, indexExpression.Indexer, builder3.ToReadOnly());
218 if (conversion != null)
219 {
221 }
222 ParameterExpression parameterExpression3 = Expression.Variable(expression.Type, "tempValue");
223 builder.UncheckedAdd(parameterExpression3);
224 builder2.UncheckedAdd(Expression.Assign(parameterExpression3, expression));
225 builder2.UncheckedAdd(Expression.Assign(left, parameterExpression3));
226 return Expression.Block(builder.ToReadOnly(), builder2.ToReadOnly());
227 }
static ExpressionType GetBinaryOpFromAssignmentOp(ExpressionType op)
virtual ExpressionType NodeType

References System.Linq.Expressions.Expression< TDelegate >.Assign(), System.Linq.Expressions.Expression< TDelegate >.Block(), System.Linq.Expressions.BinaryExpression.GetBinaryOpFromAssignmentOp(), System.Linq.Expressions.BinaryExpression.GetConversion(), System.Linq.Expressions.Expression< TDelegate >.Invoke(), System.Linq.Expressions.BinaryExpression.Left, System.Linq.Expressions.Expression< TDelegate >.MakeBinary(), System.Linq.Expressions.Expression< TDelegate >.MakeIndex(), System.Linq.Expressions.BinaryExpression.Method, System.Linq.Expressions.Expression< TDelegate >.NodeType, System.Linq.Expressions.BinaryExpression.Right, and System.Linq.Expressions.Expression< TDelegate >.Variable().

Referenced by System.Linq.Expressions.BinaryExpression.Reduce().