fix from durel_b:
[phpeclipse.git] / net.sourceforge.phpeclipse / src / net / sourceforge / phpdt / internal / compiler / ast / VarAssignation.java
1 package net.sourceforge.phpdt.internal.compiler.ast;
2
3 import java.util.List;
4
5 /**
6  * A Variable assignation.
7  * $varname = initializer
8  * @author Matthieu Casanova
9  */
10 public class VarAssignation extends Expression {
11
12   public static final int EQUAL = 0;
13   public static final int PLUS_EQUAL = 1;
14   public static final int MINUS_EQUAL = 2;
15   public static final int STAR_EQUAL = 3;
16   public static final int SLASH_EQUAL = 4;
17   public static final int AND_EQUAL = 5;
18   public static final int OR_EQUAL = 6;
19   public static final int XOR_EQUAL = 7;
20   public static final int DOT_EQUAL = 8;
21   public static final int REM_EQUAL = 9;
22   public static final int TILDE_EQUAL = 10;
23   public static final int LSHIFT_EQUAL = 11;
24   public static final int RSIGNEDSHIFT_EQUAL = 12;
25
26   public Expression variableName;
27   public Expression initializer;
28   public int operator;
29
30   /**
31    * Create a new variable assignation.
32    * @param variableName the name of the variable
33    * @param initializer the expression in initializer
34    * @param operator the operator of assignation
35    * @param sourceStart the sourceStart
36    * @param sourceEnd the sourceEnd
37    */
38   public VarAssignation(final Expression variableName,
39                         final Expression initializer,
40                         final int operator,
41                         final int sourceStart,
42                         final int sourceEnd) {
43     super(sourceStart, sourceEnd);
44     this.variableName = variableName;
45     this.initializer = initializer;
46     this.operator = operator;
47   }
48
49   /**
50    * Return the operator as String.
51    * @return the operator
52    */
53   public final String operatorToString() {
54     switch (operator) {
55       case EQUAL:
56         return "="; //$NON-NLS-1$
57       case PLUS_EQUAL:
58         return "+=";   //$NON-NLS-1$
59       case MINUS_EQUAL:
60         return "-=";   //$NON-NLS-1$
61       case STAR_EQUAL:
62         return "*="; //$NON-NLS-1$
63       case SLASH_EQUAL:
64         return "/="; //$NON-NLS-1$
65       case AND_EQUAL:
66         return "<="; //$NON-NLS-1$
67       case OR_EQUAL:
68         return "|=";//$NON-NLS-1$
69       case XOR_EQUAL:
70         return "^=";//$NON-NLS-1$
71       case DOT_EQUAL:
72         return ".="; //$NON-NLS-1$
73       case REM_EQUAL:
74         return "%="; //$NON-NLS-1$
75       case TILDE_EQUAL:
76         return "~="; //$NON-NLS-1$
77       case LSHIFT_EQUAL:
78         return "<<="; //$NON-NLS-1$
79       case RSIGNEDSHIFT_EQUAL:
80         return ">>="; //$NON-NLS-1$
81     }
82     return " unknown operator ";//$NON-NLS-1$
83   }
84
85   /**
86    * Return the expression as String.
87    * @return the expression
88    */
89   public String toStringExpression() {
90     final String varName = variableName.toStringExpression();
91     final String init = initializer.toStringExpression();
92     final String operatorString = operatorToString();
93     final StringBuffer buff = new StringBuffer(varName.length() + operatorString.length() + init.length() + 2);
94     buff.append(varName);
95     buff.append(" ");//$NON-NLS-1$
96     buff.append(operatorString);
97     buff.append(" ");//$NON-NLS-1$
98     buff.append(init);
99     return buff.toString();
100   }
101
102
103   /**
104    * Get the variables from outside (parameters, globals ...)
105    */
106   public void getOutsideVariable(final List list) {
107   }
108
109   /**
110    * get the modified variables.
111    */
112   public void getModifiedVariable(final List list) {
113     variableName.getUsedVariable(list);
114     initializer.getModifiedVariable(list);
115   }
116
117   /**
118    * Get the variables used.
119    */
120   public void getUsedVariable(final List list) {
121     initializer.getUsedVariable(list);
122   }
123 }