/*
* Copyright 2013 Guidewire Software, Inc.
*/
package gw.lang.ir.statement;
import gw.lang.ir.IRStatement;
import gw.lang.UnstableAPI;
import java.util.List;
import java.util.Arrays;
import java.util.ArrayList;
@UnstableAPI
public class IRStatementList extends IRStatement {
private List<IRStatement> _statements;
private boolean _hasScope = true;
public IRStatementList(boolean hasScope, IRStatement... statements) {
_hasScope = hasScope;
_statements = new ArrayList<IRStatement>();
_statements.addAll(Arrays.asList(statements));
for (IRStatement statement : statements) {
statement.setParent( this );
}
}
public IRStatementList(boolean hasScope, List<IRStatement> statements) {
_hasScope = hasScope;
_statements = statements;
for (IRStatement statement : statements) {
if (statement != null) {
statement.setParent( this );
}
}
}
public void addStatement(IRStatement statement) {
_statements.add(statement);
statement.setParent( this );
}
public List<IRStatement> getStatements() {
return _statements;
}
@Override
public IRTerminalStatement getLeastSignificantTerminalStatement()
{
for( int i = 0; i < _statements.size(); i++ )
{
if (_statements.get(i) != null) {
IRTerminalStatement terminalStmt = _statements.get(i).getLeastSignificantTerminalStatement();
if( terminalStmt != null )
{
return terminalStmt;
}
}
}
return null;
}
public void mergeStatements( IRStatement irStatement )
{
if( irStatement instanceof IRStatementList )
{
for( IRStatement statement : ((IRStatementList)irStatement).getStatements() )
{
addStatement( statement );
}
}
else
{
addStatement( irStatement );
}
}
public boolean hasScope()
{
return _hasScope;
}
}