package net.iplantevin.ql.ast.statements;
import net.iplantevin.ql.ast.LineInfo;
import net.iplantevin.ql.ast.visitors.IStatementVisitor;
import java.util.List;
/**
* Block: a list of statements.
*
* @author Ivan
*/
public class Block extends Statement {
private final List<Statement> statements;
public Block(List<Statement> statements, LineInfo lineInfo) {
super(lineInfo);
this.statements = statements;
}
public List<Statement> getStatements() {
return statements;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Block block = (Block) o;
if (!statements.equals(block.statements)) return false;
return true;
}
@Override
public int hashCode() {
return statements.hashCode();
}
@Override
public String toString() {
String block = "\n{\n";
for (Statement statement : statements) {
block += statement.toString();
}
block += "}\n";
return block;
}
@Override
public <T> T accept(IStatementVisitor<T> visitor) {
return visitor.visit(this);
}
}