3 using SiliconStudio.Paradox.Shaders.Parser.Ast;
4 using SiliconStudio.Shaders.Ast;
6 namespace SiliconStudio.
Paradox.Shaders.Parser.Mixins
11 internal static class ParadoxAssignmentCloner
15 return Clone(expression);
21 return Clone((ArrayInitializerExpression)expression);
23 return Clone((BinaryExpression)expression);
25 return Clone((ConditionalExpression)expression);
27 return Clone((EmptyExpression)expression);
29 return Clone((ExpressionList)expression);
31 return Clone((IndexerExpression)expression);
33 return Clone((KeywordExpression)expression);
35 return Clone((LiteralExpression)expression);
37 return Clone((MemberReferenceExpression)expression);
39 return Clone((MethodInvocationExpression)expression);
41 return Clone((ParenthesizedExpression)expression);
43 return Clone((TypeReferenceExpression)expression);
45 return Clone((UnaryExpression)expression);
47 return Clone((VariableReferenceExpression)expression);
51 private static ArrayInitializerExpression
Clone(ArrayInitializerExpression expression)
53 var aie =
new ArrayInitializerExpression();
54 foreach (var item
in expression.
Items)
55 aie.Items.Add(
Clone(item));
59 private static BinaryExpression
Clone(BinaryExpression expression)
64 private static ConditionalExpression
Clone(ConditionalExpression expression)
69 private static EmptyExpression
Clone(EmptyExpression expression)
74 private static ExpressionList
Clone(ExpressionList expression)
76 var parameters =
new Expression[expression.Count];
77 for (
int i = 0; i < expression.Count; ++i)
78 parameters[i] =
Clone(expression[i]);
79 return new ExpressionList(parameters);
82 private static IndexerExpression
Clone(IndexerExpression expression)
86 ire.TypeInference.TargetType = expression.TypeInference.TargetType;
90 private static KeywordExpression
Clone(KeywordExpression expression)
95 private static LiteralExpression
Clone(LiteralExpression expression)
100 private static MemberReferenceExpression
Clone(MemberReferenceExpression expression)
102 var mre =
new MemberReferenceExpression(
Clone(expression.
Target), expression.
Member);
104 mre.TypeInference.TargetType = expression.TypeInference.TargetType;
108 private static MethodInvocationExpression
Clone(MethodInvocationExpression expression)
110 var parameters =
new Expression[expression.Arguments.Count];
111 for (
int i = 0; i < expression.Arguments.Count; ++i)
113 return new MethodInvocationExpression(
Clone(expression.
Target), parameters);
116 private static ParenthesizedExpression
Clone(ParenthesizedExpression expression)
118 return new ParenthesizedExpression(
Clone(expression.
Content));
121 private static TypeReferenceExpression
Clone(TypeReferenceExpression expression)
126 private static UnaryExpression
Clone(UnaryExpression expression)
131 private static VariableReferenceExpression
Clone(VariableReferenceExpression expression)
133 var vre =
new VariableReferenceExpression(expression.
Name);
135 vre.TypeInference.TargetType = expression.TypeInference.TargetType;
Expression Right
Gets or sets the right expression.
TypeBase TargetType
Gets or sets the type.
Expression Content
Gets or sets the expression.
Describes a binary expression.
List< Expression > Items
Gets or sets the items.
Keyword expression statement like continue; break; discard;
Identifier Member
Gets or sets the member.
Expression used to initliaze an array {...expressions,}
Expression Index
Gets or sets the index.
The clone mixin to clone the current mixins where the clone is emitted.
Expression Left
Gets or sets the left expression.
Expression Left
Gets or sets the left.
An expression surrounded by parenthesis.
UnaryOperator Operator
Gets or sets the operator.
TypeInference TypeInference
Gets or sets the type reference.
Identifier Name
Gets or sets the name.
A reference to a variable.
Expression Right
Gets or sets the right.
Expression Expression
Gets or sets the expression.
Expression Target
Gets or sets the target.
List< Expression > Arguments
Gets or sets the arguments.
Expression Target
Gets or sets the target.
A member reference in the form {this}.{Name}
BinaryOperator Operator
Gets or sets the binary operator.
A reference to a variable.
Expression Condition
Gets or sets the condition.
Expression Target
Gets or sets the this.