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