a bugfix on variables
[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    * @return the variables from outside
109    */
110   public List getOutsideVariable() {
111     return new ArrayList();
112   }
113
114   /**
115    * get the modified variables.
116    * @return the variables from we change value
117    */
118   public List getModifiedVariable() {
119     final ArrayList list = new ArrayList();
120     list.addAll(variableName.getUsedVariable());
121     list.addAll(initializer.getModifiedVariable());
122     return list;
123   }
124
125   /**
126    * Get the variables used.
127    * @return the variables used
128    */
129   public List getUsedVariable() {
130     final ArrayList list = new ArrayList();
131     list.addAll(initializer.getUsedVariable());
132     return list;
133   }
134 }