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