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