Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
Expression3.cs
Go to the documentation of this file.
4
6
7internal sealed class Expression3<TDelegate> : Expression<TDelegate>
8{
9 private object _par0;
10
11 private readonly ParameterExpression _par1;
12
13 private readonly ParameterExpression _par2;
14
15 internal override int ParameterCount => 3;
16
24
25 internal override ParameterExpression GetParameter(int index)
26 {
27 return index switch
28 {
29 0 => ExpressionUtils.ReturnObject<ParameterExpression>(_par0),
30 1 => _par1,
31 2 => _par2,
32 _ => throw Error.ArgumentOutOfRange("index"),
33 };
34 }
35
36 internal override bool SameParameters(ICollection<ParameterExpression> parameters)
37 {
38 if (parameters != null && parameters.Count == 3)
39 {
41 {
42 return ExpressionUtils.SameElements(parameters, current);
43 }
45 enumerator.MoveNext();
46 if (enumerator.Current == _par0)
47 {
48 enumerator.MoveNext();
49 if (enumerator.Current == _par1)
50 {
51 enumerator.MoveNext();
52 return enumerator.Current == _par2;
53 }
54 }
55 }
56 return false;
57 }
58
63
64 internal override Expression<TDelegate> Rewrite(Expression body, ParameterExpression[] parameters)
65 {
66 if (parameters != null)
67 {
68 return Expression.Lambda<TDelegate>(body, parameters);
69 }
71 {
73 _par1,
74 _par2
75 });
76 }
77}
static ReadOnlyCollection< ParameterExpression > ReturnReadOnly(IParameterProvider provider, ref object collection)
static Exception ArgumentOutOfRange(string paramName)
Definition Error.cs:818
override ParameterExpression GetParameter(int index)
override bool SameParameters(ICollection< ParameterExpression > parameters)
readonly ParameterExpression _par1
Expression3(Expression body, ParameterExpression par0, ParameterExpression par1, ParameterExpression par2)
readonly ParameterExpression _par2
override ReadOnlyCollection< ParameterExpression > GetOrMakeParameters()
override Expression< TDelegate > Rewrite(Expression body, ParameterExpression[] parameters)
static LambdaExpression Lambda(Expression body, params ParameterExpression[]? parameters)