public static BaseModifyInPlace Create(VariableName name, YololModifyOp op, bool pre) { return(op switch { YololModifyOp.Increment => (pre ? new PreIncrement(name) : (BaseModifyInPlace) new PostIncrement(name)), YololModifyOp.Decrement => (pre ? new PreDecrement(name) : (BaseModifyInPlace) new PostIncrement(name)), _ => throw new ArgumentException($"Unknown YololModifyOp type `{op}`") });
protected BaseModifyInPlace(VariableName name, YololModifyOp op, bool pre) : base(new Variable(name)) { Name = name; Op = op; PreOp = pre; }
[NotNull] public static BaseModifyInPlace Create([NotNull] VariableName name, YololModifyOp op, bool pre) { switch (op) { case YololModifyOp.Increment: return(pre ? new PreIncrement(name) : (BaseModifyInPlace) new PostIncrement(name)); case YololModifyOp.Decrement: return(pre ? new PreDecrement(name) : (BaseModifyInPlace) new PostIncrement(name)); default: throw new ArgumentException($"Unknown YololModifyOp type `{op}`"); } }