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