package synthesijer.ast.expr;
import java.util.ArrayList;
import synthesijer.ast.Expr;
import synthesijer.ast.Scope;
import synthesijer.ast.Type;
import synthesijer.ast.Variable;
public class ArrayAccess extends Expr{
private Expr indexed, index;
public ArrayAccess(Scope scope){
super(scope);
}
public void setIndexed(Expr expr){
indexed = expr;
}
public void setIndex(Expr expr){
index = expr;
}
public Expr getIndexed(){
return indexed;
}
public Expr getIndex(){
return index;
}
public void accept(SynthesijerExprVisitor v){
v.visitArrayAccess(this);
}
@Override
public boolean isConstant() {
return false;
}
@Override
public boolean isVariable() {
return false;
}
@Override
public Type getType(){
return indexed.getType();
}
@Override
public Variable[] getSrcVariables(){
ArrayList<Variable> list = new ArrayList<>();
for(Variable var: index.getSrcVariables()) list.add(var);
for(Variable var: indexed.getSrcVariables()) list.add(var);
return list.toArray(new Variable[]{});
}
@Override
public Variable[] getDestVariables(){
ArrayList<Variable> list = new ArrayList<>();
for(Variable var: indexed.getSrcVariables()) list.add(var);
return list.toArray(new Variable[]{});
}
@Override
public boolean hasMethodInvocation() {
//return index.hasMethodInvocation() || indexed.hasMethodInvocation();
return true;
}
}