Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
ExpressionVisitorUtils.cs
Go to the documentation of this file.
2
4
5internal static class ExpressionVisitorUtils
6{
8 {
9 Expression[] array = null;
10 int i = 0;
11 for (int expressionCount = block.ExpressionCount; i < expressionCount; i++)
12 {
13 Expression expression = block.GetExpression(i);
14 Expression expression2 = visitor.Visit(expression);
15 if (array != null)
16 {
17 array[i] = expression2;
18 }
19 else if (expression2 != expression)
20 {
21 array = new Expression[expressionCount];
22 for (int j = 0; j < i; j++)
23 {
24 array[j] = block.GetExpression(j);
25 }
26 array[i] = expression2;
27 }
28 }
29 return array;
30 }
31
32 public static ParameterExpression[] VisitParameters(ExpressionVisitor visitor, IParameterProvider nodes, string callerName)
33 {
35 int i = 0;
36 for (int parameterCount = nodes.ParameterCount; i < parameterCount; i++)
37 {
38 ParameterExpression parameter = nodes.GetParameter(i);
39 ParameterExpression parameterExpression = visitor.VisitAndConvert(parameter, callerName);
40 if (array != null)
41 {
42 array[i] = parameterExpression;
43 }
44 else if (parameterExpression != parameter)
45 {
46 array = new ParameterExpression[parameterCount];
47 for (int j = 0; j < i; j++)
48 {
49 array[j] = nodes.GetParameter(j);
50 }
51 array[i] = parameterExpression;
52 }
53 }
54 return array;
55 }
56
58 {
59 Expression[] array = null;
60 int i = 0;
61 for (int argumentCount = nodes.ArgumentCount; i < argumentCount; i++)
62 {
63 Expression argument = nodes.GetArgument(i);
64 Expression expression = visitor.Visit(argument);
65 if (array != null)
66 {
67 array[i] = expression;
68 }
69 else if (expression != argument)
70 {
71 array = new Expression[argumentCount];
72 for (int j = 0; j < i; j++)
73 {
74 array[j] = nodes.GetArgument(j);
75 }
76 array[i] = expression;
77 }
78 }
79 return array;
80 }
81}
static ParameterExpression[] VisitParameters(ExpressionVisitor visitor, IParameterProvider nodes, string callerName)
static Expression[] VisitBlockExpressions(ExpressionVisitor visitor, BlockExpression block)
static Expression[] VisitArguments(ExpressionVisitor visitor, IArgumentProvider nodes)
virtual Expression GetExpression(int index)
virtual ? Expression Visit(Expression? node)
ParameterExpression GetParameter(int index)