1cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti/* 2cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti * Copyright (C) 2007-2010 Júlio Vilmar Gesser. 3cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti * Copyright (C) 2011, 2013-2016 The JavaParser Team. 4cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti * 5cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti * This file is part of JavaParser. 6cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti * 7cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti * JavaParser can be used either under the terms of 8cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti * a) the GNU Lesser General Public License as published by 9cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti * the Free Software Foundation, either version 3 of the License, or 10cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti * (at your option) any later version. 11cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti * b) the terms of the Apache License 12cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti * 13cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti * You should have received a copy of both licenses in LICENCE.LGPL and 14cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti * LICENCE.APACHE. Please refer to those files for details. 15cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti * 16cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti * JavaParser is distributed in the hope that it will be useful, 17cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti * but WITHOUT ANY WARRANTY; without even the implied warranty of 18cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 19cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti * GNU Lesser General Public License for more details. 20cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti */ 21cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti 22cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassettipackage com.github.javaparser.ast.expr; 23cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti 24cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassettiimport com.github.javaparser.Range; 25cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassettiimport com.github.javaparser.ast.visitor.GenericVisitor; 26cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassettiimport com.github.javaparser.ast.visitor.VoidVisitor; 27cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti 28cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti/** 29cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti * @author Julio Vilmar Gesser 30cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti */ 31cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassettipublic final class AssignExpr extends Expression { 32cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti 33cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti public enum Operator { 34cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti assign, // = 35cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti plus, // += 36cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti minus, // -= 37cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti star, // *= 38cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti slash, // /= 39cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti and, // &= 40cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti or, // |= 41cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti xor, // ^= 42cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti rem, // %= 43cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti lShift, // <<= 44cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti rSignedShift, // >>= 45cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti rUnsignedShift, // >>>= 46cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti } 47cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti 48cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti private Expression target; 49cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti 50cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti private Expression value; 51cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti 52cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti private Operator op; 53cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti 54cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti public AssignExpr() { 55cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti } 56cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti 57cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti public AssignExpr(Expression target, Expression value, Operator op) { 58cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti setTarget(target); 59cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti setValue(value); 60cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti setOperator(op); 61cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti } 62cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti 63cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti public AssignExpr(Range range, Expression target, Expression value, Operator op) { 64cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti super(range); 65cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti setTarget(target); 66cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti setValue(value); 67cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti setOperator(op); 68cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti } 69cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti 70cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti @Override 71cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti public <R, A> R accept(GenericVisitor<R, A> v, A arg) { 72cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti return v.visit(this, arg); 73cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti } 74cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti 75cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti @Override 76cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti public <A> void accept(VoidVisitor<A> v, A arg) { 77cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti v.visit(this, arg); 78cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti } 79cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti 80cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti public Operator getOperator() { 81cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti return op; 82cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti } 83cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti 84cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti public Expression getTarget() { 85cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti return target; 86cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti } 87cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti 88cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti public Expression getValue() { 89cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti return value; 90cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti } 91cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti 92cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti public AssignExpr setOperator(Operator op) { 93cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti this.op = op; 94cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti return this; 95cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti } 96cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti 97cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti public AssignExpr setTarget(Expression target) { 98cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti this.target = target; 99cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti setAsParentNodeOf(this.target); 100cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti return this; 101cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti } 102cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti 103cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti public AssignExpr setValue(Expression value) { 104cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti this.value = value; 105cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti setAsParentNodeOf(this.value); 106cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti return this; 107cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti } 108cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti} 109