80f1887d225d9797e15c854d97897ac798d2be71
[phpeclipse.git] / net.sourceforge.phpeclipse / src / net / sourceforge / phpdt / internal / compiler / ast / ListExpression.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  * A list expression.
10  * it could be list($v1,$v2), list(,$v2) ...
11  * @author Matthieu Casanova
12  */
13 public class ListExpression extends Expression {
14
15   public String[] vars;
16   public Expression expression;
17
18   public ListExpression(final String[] vars,
19                         final Expression expression,
20                         final int sourceStart,
21                         final int sourceEnd) {
22     super(sourceStart, sourceEnd);
23     this.vars = vars;
24     this.expression = expression;
25   }
26
27   public ListExpression(final String[] vars,
28                         final int sourceStart,
29                         final int sourceEnd) {
30     super(sourceStart, sourceEnd);
31     this.vars = vars;
32   }
33
34   /**
35    * Return the expression as String.
36    * @return the expression
37    */
38   public String toStringExpression() {
39     final StringBuffer buff = new StringBuffer("list(");
40     for (int i = 0; i < vars.length; i++) {
41       final String var = vars[i];
42       if (i != 0) {
43         buff.append(", ");
44       }
45       if (var != null) {
46         buff.append(var);
47       }
48     }
49     if (expression != null) {
50       buff.append(" = ");
51       buff.append(expression.toStringExpression());
52     }
53     return buff.toString();
54   }
55
56            /**
57    * Get the variables from outside (parameters, globals ...)
58    * @return the variables from outside
59    */
60   public List getOutsideVariable() {
61     return new ArrayList();
62   }
63
64   /**
65    * get the modified variables.
66    * @return the variables from we change value
67    */
68   public List getModifiedVariable() {
69     final ArrayList list = new ArrayList();
70     for (int i = 0; i < vars.length; i++) {
71       list.add(new VariableUsage(vars[i],sourceStart));
72     }
73     if (expression != null) {
74       list.addAll(expression.getModifiedVariable());
75     }
76     return list;
77   }
78
79   /**
80    * Get the variables used.
81    * @return the variables used
82    */
83   public List getUsedVariable() {
84     final ArrayList list = new ArrayList();
85     if (expression != null) {
86       list.addAll(expression.getUsedVariable());
87     }
88     return list;
89   }
90 }