d32038adf5ad6552afeec47dd2588c0874c15570
[phpeclipse.git] / net.sourceforge.phpeclipse / src / net / sourceforge / phpdt / internal / compiler / ast / ForeachStatement.java
1 package net.sourceforge.phpdt.internal.compiler.ast;
2
3 import java.util.List;
4
5 /**
6  * @author Matthieu Casanova
7  */
8 public final class ForeachStatement extends Statement {
9
10   private final Expression expression;
11   private final Expression variable;
12   private final Statement statement;
13
14   public ForeachStatement(final Expression expression,
15                           final Expression variable,
16                           final Statement statement,
17                           final int sourceStart,
18                           final int sourceEnd) {
19     super(sourceStart, sourceEnd);
20     this.expression = expression;
21     this.variable = variable;
22     this.statement = statement;
23   }
24
25   /**
26    * Return the object into String.
27    * 
28    * @param tab how many tabs (not used here
29    * @return a String
30    */
31   public String toString(final int tab) {
32     final String expressionString = expression.toStringExpression();
33     final String variableString = variable.toStringExpression();
34     final String statementString = statement.toString(tab + 1);
35     final StringBuffer buff = new StringBuffer(tab +
36                                                expressionString.length() +
37                                                variableString.length() +
38                                                statementString.length() + 18);
39     buff.append(tabString(tab));
40     buff.append("foreach (");
41     buff.append(expressionString);
42     buff.append(" as ");
43     buff.append(variableString);
44     buff.append(" {\n");
45     buff.append(statementString);
46     buff.append("\n}");
47     return buff.toString();
48   }
49
50   /**
51    * Get the variables from outside (parameters, globals ...)
52    * 
53    * @param list the list where we will put variables
54    */
55   public void getOutsideVariable(final List list) {
56     expression.getOutsideVariable(list);
57     variable.getOutsideVariable(list);
58     statement.getOutsideVariable(list);
59   }
60
61   /**
62    * get the modified variables.
63    * 
64    * @param list the list where we will put variables
65    */
66   public void getModifiedVariable(final List list) {
67     expression.getModifiedVariable(list);
68     variable.getUsedVariable(list);
69     statement.getModifiedVariable(list);
70   }
71
72   /**
73    * Get the variables used.
74    * 
75    * @param list the list where we will put variables
76    */
77   public void getUsedVariable(final List list) {
78     expression.getUsedVariable(list);
79     statement.getUsedVariable(list);
80   }
81 }