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 ArrayAccessExpr extends Expression {
32cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti
33cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti    private Expression name;
34cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti
35cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti    private Expression index;
36cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti
37cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti    public ArrayAccessExpr() {
38cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti    }
39cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti
40cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti    public ArrayAccessExpr(Expression name, Expression index) {
41cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti        setName(name);
42cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti        setIndex(index);
43cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti    }
44cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti
45cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti    public ArrayAccessExpr(Range range, Expression name, Expression index) {
46cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti        super(range);
47cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti        setName(name);
48cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti        setIndex(index);
49cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti    }
50cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti
51cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti    @Override
52cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti    public <R, A> R accept(GenericVisitor<R, A> v, A arg) {
53cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti        return v.visit(this, arg);
54cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti    }
55cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti
56cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti    @Override
57cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti    public <A> void accept(VoidVisitor<A> v, A arg) {
58cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti        v.visit(this, arg);
59cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti    }
60cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti
61cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti    public Expression getIndex() {
62cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti        return index;
63cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti    }
64cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti
65cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti    public Expression getName() {
66cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti        return name;
67cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti    }
68cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti
69cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti    public ArrayAccessExpr setIndex(Expression index) {
70cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti        this.index = index;
71cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti		setAsParentNodeOf(this.index);
72cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti        return this;
73cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti    }
74cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti
75cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti    public ArrayAccessExpr setName(Expression name) {
76cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti        this.name = name;
77cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti		setAsParentNodeOf(this.name);
78cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti        return this;
79cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti    }
80cf23ae22c824b96a0f0255a749119ac0ca264550Federico Tomassetti}
81