static SyntaxKind ToSyntaxKind(this AssignmentKind kind) { switch (kind) { case AssignmentKind.Set: return(SyntaxKind.SimpleAssignmentExpression); case AssignmentKind.Add: return(SyntaxKind.AddAssignmentExpression); case AssignmentKind.Subtract: return(SyntaxKind.SubtractAssignmentExpression); case AssignmentKind.Multiply: return(SyntaxKind.MultiplyAssignmentExpression); case AssignmentKind.Divide: return(SyntaxKind.DivideAssignmentExpression); case AssignmentKind.Modulo: return(SyntaxKind.ModuloAssignmentExpression); case AssignmentKind.And: return(SyntaxKind.ModuloAssignmentExpression); case AssignmentKind.ExclusiveOr: return(SyntaxKind.ExclusiveOrAssignmentExpression); case AssignmentKind.Or: return(SyntaxKind.OrAssignmentExpression); case AssignmentKind.LeftShift: return(SyntaxKind.LeftShiftAssignmentExpression); case AssignmentKind.RightShift: return(SyntaxKind.RightShiftAssignmentExpression); default: throw new ArgumentOutOfRangeException(nameof(kind), kind, null); } }
public static string AssignmentType(AssignmentKind kind) { switch (kind) { case AssignmentKind.AddEquals: return("+="); case AssignmentKind.BitwiseAndEquals: return("&="); case AssignmentKind.BitwiseOrEquals: return("|="); case AssignmentKind.BitwiseXorEquals: return("^="); case AssignmentKind.DivideEquals: return("/="); case AssignmentKind.Equals: return("="); case AssignmentKind.ModEquals: return("%="); case AssignmentKind.MultiplyEquals: return("*="); case AssignmentKind.SubtractEquals: return("-="); default: throw new GraphViewException("Invalid assignment kind."); } }
public static string AssignmentType(AssignmentKind kind) { switch (kind) { case AssignmentKind.AddEquals: return "+="; case AssignmentKind.BitwiseAndEquals: return "&="; case AssignmentKind.BitwiseOrEquals: return "|="; case AssignmentKind.BitwiseXorEquals: return "^="; case AssignmentKind.DivideEquals: return "/="; case AssignmentKind.Equals: return "="; case AssignmentKind.ModEquals: return "%="; case AssignmentKind.MultiplyEquals: return "*="; case AssignmentKind.SubtractEquals: return "-="; default: throw new GraphViewException("Invalid assignment kind."); } }
public static AssignmentSetClause AssignmentSetClause(AssignmentKind kind, ColumnReferenceExpression column, ScalarExpression newValue) { var fragment = new AssignmentSetClause(); fragment.AssignmentKind = kind; fragment.Column = column; fragment.NewValue = newValue; return(fragment); }
public static SyntaxNode SetProperty(RoslynTranslator translator, AssignmentKind kind, IPortModel instancePortModel, IPortModel valuePortModel, params string[] members) { ExpressionSyntax instance = instancePortModel.Connected ? translator.BuildPort(instancePortModel).FirstOrDefault() as ExpressionSyntax : SyntaxFactory.ThisExpression(); ExpressionSyntax value = translator.BuildPort(valuePortModel).FirstOrDefault() as ExpressionSyntax; return(SetProperty(kind, instance, value, members)); }
public static SyntaxNode SetProperty(AssignmentKind kind, ExpressionSyntax instance, ExpressionSyntax value, params string[] members) { instance = members.Aggregate(instance, (current, t) => SyntaxFactory.MemberAccessExpression( SyntaxKind.SimpleMemberAccessExpression, current, SyntaxFactory.IdentifierName(t))); return(SyntaxFactory.ExpressionStatement( SyntaxFactory.AssignmentExpression( kind.ToSyntaxKind(), instance, value)) .NormalizeWhitespace()); }
public static object Evaluate(AssignmentKind kind, object current, object value) { // TODO: use switch expression, expression bodied member switch (kind) { case AssignmentKind.Equals: return(value); case AssignmentKind.AddEquals: // TODO: handle numeric conversions properly // TODO: and how do nulls work? if (current == null || value == null) { return(current ?? value); } if (current is int i && value is int j) { return(i + j); } return((decimal)current + (decimal)value); case AssignmentKind.SubtractEquals: return((decimal)current - (decimal)value); case AssignmentKind.MultiplyEquals: return((decimal)current * (decimal)value); case AssignmentKind.DivideEquals: return((decimal)current / (decimal)value); case AssignmentKind.ModEquals: return((decimal)current % (decimal)value); case AssignmentKind.BitwiseAndEquals: return((int)current & (int)value); case AssignmentKind.BitwiseOrEquals: return((int)current | (int)value); case AssignmentKind.BitwiseXorEquals: return((int)current ^ (int)value); default: throw FeatureNotSupportedException.Value(kind); } }
public StatementAssign(AssignmentKind op, Token var, Expression value) { this.op = op; this.var = var; this.value = value; }