package net.sourceforge.phpdt.internal.compiler.ast;
+import java.util.List;
+
/**
* @author Matthieu Casanova
*/
-public class ForeachStatement extends Statement {
+public final class ForeachStatement extends Statement {
- public Expression expression;
- public Expression variable;
- public Statement statement;
+ private final Expression expression;
+ private final Expression variable;
+ private final Statement statement;
- public ForeachStatement(Expression expression,
- Expression variable,
- Statement statement,
- int sourceStart,
- int sourceEnd) {
+ public ForeachStatement(final Expression expression,
+ final Expression variable,
+ final Statement statement,
+ final int sourceStart,
+ final int sourceEnd) {
super(sourceStart, sourceEnd);
this.expression = expression;
this.variable = variable;
/**
* Return the object into String.
+ *
* @param tab how many tabs (not used here
* @return a String
*/
- public String toString(int tab) {
- final StringBuffer buff = new StringBuffer(tabString(tab));
+ public String toString(final int tab) {
+ final String expressionString = expression.toStringExpression();
+ final String variableString = variable.toStringExpression();
+ final String statementString = statement.toString(tab + 1);
+ final StringBuffer buff = new StringBuffer(tab +
+ expressionString.length() +
+ variableString.length() +
+ statementString.length() + 18);
+ buff.append(tabString(tab));
buff.append("foreach (");
- buff.append(expression.toStringExpression());
+ buff.append(expressionString);
buff.append(" as ");
- buff.append(variable.toStringExpression());
+ buff.append(variableString);
buff.append(" {\n");
- buff.append(statement.toString(tab+1));
+ buff.append(statementString);
buff.append("\n}");
return buff.toString();
}
+
+ /**
+ * Get the variables from outside (parameters, globals ...)
+ *
+ * @param list the list where we will put variables
+ */
+ public void getOutsideVariable(final List list) {
+ expression.getOutsideVariable(list);
+ variable.getOutsideVariable(list);
+ statement.getOutsideVariable(list);
+ }
+
+ /**
+ * get the modified variables.
+ *
+ * @param list the list where we will put variables
+ */
+ public void getModifiedVariable(final List list) {
+ expression.getModifiedVariable(list);
+ variable.getUsedVariable(list);
+ statement.getModifiedVariable(list);
+ }
+
+ /**
+ * Get the variables used.
+ *
+ * @param list the list where we will put variables
+ */
+ public void getUsedVariable(final List list) {
+ expression.getUsedVariable(list);
+ statement.getUsedVariable(list);
+ }
}