improved parser string handling
[phpeclipse.git] / net.sourceforge.phpeclipse / src / net / sourceforge / phpdt / internal / compiler / ast / ConditionalExpression.java
1 package net.sourceforge.phpdt.internal.compiler.ast;
2
3 import java.util.List;
4
5 /**
6  * A ConditionalExpression is like that : booleanExpression ? trueValue : falseValue;.
7  * @author Matthieu Casanova
8  */
9 public final class ConditionalExpression extends OperatorExpression {
10
11   private final Expression condition;
12   private final Expression valueIfTrue;
13   private final Expression valueIfFalse;
14
15   public ConditionalExpression(final Expression condition,
16                                final Expression valueIfTrue,
17                                final Expression valueIfFalse) {
18     super(-1, condition.sourceStart, valueIfFalse.sourceEnd);
19     this.condition = condition;
20     this.valueIfTrue = valueIfTrue;
21     this.valueIfFalse = valueIfFalse;
22   }
23
24   public String toStringExpression() {
25     final String conditionString = condition.toStringExpression();
26     final String valueIfTrueString = valueIfTrue.toStringExpression();
27     final String valueIfFalse = this.valueIfFalse.toStringExpression();
28     final StringBuffer buff = new StringBuffer(8 +
29                                                conditionString.length() +
30                                                valueIfTrueString.length() +
31                                                valueIfFalse.length());
32     buff.append("(");
33     buff.append(conditionString);
34     buff.append(") ? ");
35     buff.append(valueIfTrueString);
36     buff.append(" : ");
37     buff.append(valueIfFalse);
38     return buff.toString();
39   }
40
41   /**
42    * Get the variables from outside (parameters, globals ...)
43    *
44    * @param list the list where we will put variables
45    */
46   public void getOutsideVariable(final List list) {}
47
48   /**
49    * get the modified variables.
50    *
51    * @param list the list where we will put variables
52    */
53   public void getModifiedVariable(final List list) {
54     condition.getModifiedVariable(list);
55     valueIfTrue.getModifiedVariable(list);
56     valueIfFalse.getModifiedVariable(list);
57   }
58
59   /**
60    * Get the variables used.
61    *
62    * @param list the list where we will put variables
63    */
64   public void getUsedVariable(final List list) {
65     condition.getUsedVariable(list);
66     valueIfTrue.getUsedVariable(list);
67     valueIfFalse.getUsedVariable(list);
68   }
69 }