137f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti/*
237f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti * Copyright (C) 2007-2010 Júlio Vilmar Gesser.
337f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti * Copyright (C) 2011, 2013-2015 The JavaParser Team.
437f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti *
537f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti * This file is part of JavaParser.
637f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti *
737f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti * JavaParser can be used either under the terms of
837f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti * a) the GNU Lesser General Public License as published by
937f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti *     the Free Software Foundation, either version 3 of the License, or
1037f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti *     (at your option) any later version.
1137f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti * b) the terms of the Apache License
1237f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti *
1337f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti * You should have received a copy of both licenses in LICENCE.LGPL and
1437f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti * LICENCE.APACHE. Please refer to those files for details.
1537f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti *
1637f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti * JavaParser is distributed in the hope that it will be useful,
1737f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti * but WITHOUT ANY WARRANTY; without even the implied warranty of
1837f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
1937f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti * GNU Lesser General Public License for more details.
2037f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti */
2137f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti
2237f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassettipackage com.github.javaparser.ast.expr;
2337f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti
2437f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassettiimport com.github.javaparser.ast.visitor.GenericVisitor;
2537f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassettiimport com.github.javaparser.ast.visitor.VoidVisitor;
2637f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti
2737f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti/**
2837f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti * @author Julio Vilmar Gesser
2937f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti */
3037f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassettipublic final class AssignExpr extends Expression {
3137f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti
3237f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti    public static enum Operator {
3337f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti        assign, // =
3437f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti        plus, // +=
3537f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti        minus, // -=
3637f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti        star, // *=
3737f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti        slash, // /=
3837f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti        and, // &=
3937f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti        or, // |=
4037f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti        xor, // ^=
4137f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti        rem, // %=
4237f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti        lShift, // <<=
4337f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti        rSignedShift, // >>=
4437f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti        rUnsignedShift, // >>>=
4537f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti    }
4637f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti
4737f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti    private Expression target;
4837f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti
4937f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti    private Expression value;
5037f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti
5137f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti    private Operator op;
5237f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti
5337f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti    public AssignExpr() {
5437f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti    }
5537f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti
5637f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti    public AssignExpr(Expression target, Expression value, Operator op) {
5737f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti        setTarget(target);
5837f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti        setValue(value);
5937f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti        setOperator(op);
6037f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti    }
6137f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti
6237f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti    public AssignExpr(int beginLine, int beginColumn, int endLine, int endColumn, Expression target, Expression value, Operator op) {
6337f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti        super(beginLine, beginColumn, endLine, endColumn);
6437f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti        setTarget(target);
6537f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti        setValue(value);
6637f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti        setOperator(op);
6737f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti    }
6837f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti
6937f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti    @Override
7037f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti    public <R, A> R accept(GenericVisitor<R, A> v, A arg) {
7137f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti        return v.visit(this, arg);
7237f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti    }
7337f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti
7437f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti    @Override
7537f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti    public <A> void accept(VoidVisitor<A> v, A arg) {
7637f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti        v.visit(this, arg);
7737f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti    }
7837f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti
7937f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti    public Operator getOperator() {
8037f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti        return op;
8137f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti    }
8237f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti
8337f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti    public Expression getTarget() {
8437f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti        return target;
8537f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti    }
8637f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti
8737f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti    public Expression getValue() {
8837f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti        return value;
8937f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti    }
9037f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti
9137f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti    public void setOperator(Operator op) {
9237f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti        this.op = op;
9337f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti    }
9437f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti
9537f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti    public void setTarget(Expression target) {
9637f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti        this.target = target;
9737f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti		setAsParentNodeOf(this.target);
9837f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti    }
9937f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti
10037f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti    public void setValue(Expression value) {
10137f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti        this.value = value;
10237f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti		setAsParentNodeOf(this.value);
10337f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti    }
10437f93be6476b00be051173d0cde614fc8a3677e5Federico Tomassetti}
105