package net.sourceforge.phpdt.internal.compiler.ast;
+import java.util.List;
+import java.util.ArrayList;
+
/**
+ * This is a if statement.
+ * if (condition)
+ * statement
+ * (elseif statement)*
+ * else statement
* @author Matthieu Casanova
*/
public class IfStatement extends Statement {
public Else els;
/**
- * Create a new If statement
+ * Create a new If statement.
* @param condition the condition
* @param statement a statement or a block of statements
* @param elseifs the elseifs
* @param sourceStart the starting position
* @param sourceEnd the ending offset
*/
- public IfStatement(Expression condition,
- Statement statement,
- ElseIf[] elseifs,
- Else els,
- int sourceStart,
- int sourceEnd) {
+ public IfStatement(final Expression condition,
+ final Statement statement,
+ final ElseIf[] elseifs,
+ final Else els,
+ final int sourceStart,
+ final int sourceEnd) {
super(sourceStart, sourceEnd);
this.condition = condition;
this.statement = statement;
* @param tab how many tabs (not used here
* @return a String
*/
- public String toString(int tab) {
+ public String toString(final int tab) {
final StringBuffer buff = new StringBuffer(tabString(tab));
- buff.append("if (");
- buff.append(condition.toStringExpression()).append(") ");
+ buff.append("if (");//$NON-NLS-1$
+ buff.append(condition.toStringExpression()).append(") ");//$NON-NLS-1$
+ if (statement != null) {
+ buff.append(statement.toString(tab + 1));
+ }
for (int i = 0; i < elseifs.length; i++) {
- ElseIf elseif = elseifs[i];
- buff.append(elseif.toString(tab+1));
- buff.append('\n');
+ buff.append(elseifs[i].toString(tab + 1));
+ buff.append("\n");//$NON-NLS-1$
}
if (els != null) {
- buff.append(els.toString(tab+1));
- buff.append('\n');
+ buff.append(els.toString(tab + 1));
+ buff.append("\n");//$NON-NLS-1$
}
return buff.toString();
}
+
+ /**
+ * Get the variables from outside (parameters, globals ...)
+ * @return the variables from outside
+ */
+ public List getOutsideVariable() {
+ final ArrayList list = new ArrayList();
+ list.addAll(condition.getOutsideVariable()); // todo: check if unuseful
+ if (statement != null) {
+ list.addAll(statement.getOutsideVariable());
+ }
+ for (int i = 0; i < elseifs.length; i++) {
+ list.addAll(elseifs[i].getOutsideVariable());
+ }
+ if (els != null) {
+ list.addAll(els.getOutsideVariable());
+ }
+ return list;
+ }
+
+ /**
+ * get the modified variables.
+ * @return the variables from we change value
+ */
+ public List getModifiedVariable() {
+ final ArrayList list = new ArrayList();
+ list.addAll(condition.getModifiedVariable());
+ if (statement != null) {
+ list.addAll(statement.getModifiedVariable());
+ }
+ for (int i = 0; i < elseifs.length; i++) {
+ list.addAll(elseifs[i].getModifiedVariable());
+ }
+ if (els != null) {
+ list.addAll(els.getModifiedVariable());
+ }
+ return list;
+ }
+
+ /**
+ * Get the variables used.
+ * @return the variables used
+ */
+ public List getUsedVariable() {
+ final ArrayList list = new ArrayList();
+ list.addAll(condition.getUsedVariable());
+ if (statement != null) {
+ list.addAll(statement.getUsedVariable());
+ }
+ for (int i = 0; i < elseifs.length; i++) {
+ list.addAll(elseifs[i].getUsedVariable());
+ }
+ if (els != null) {
+ list.addAll(els.getUsedVariable());
+ }
+ return list;
+ }
}