The methods to get variables do not instantiate ArrayList each time, only one is...
[phpeclipse.git] / net.sourceforge.phpeclipse / src / net / sourceforge / phpdt / internal / compiler / ast / VarAssignation.java
index cd32d4b..17879e5 100644 (file)
@@ -1,6 +1,13 @@
 package net.sourceforge.phpdt.internal.compiler.ast;
 
+import net.sourceforge.phpeclipse.PHPeclipsePlugin;
+
+import java.util.List;
+import java.util.ArrayList;
+
 /**
+ * A Variable assignation.
+ * $varname = initializer
  * @author Matthieu Casanova
  */
 public class VarAssignation extends Expression {
@@ -19,23 +26,34 @@ public class VarAssignation extends Expression {
   public static final int LSHIFT_EQUAL = 11;
   public static final int RSIGNEDSHIFT_EQUAL = 12;
 
-  public char[] variable;
-  public Expression expression;
+  public Expression variableName;
+  public Expression initializer;
   public int operator;
 
-
-  public VarAssignation(char[] variable,
-                        Expression expression,
-                        int operator,
-                        int sourceStart,
-                        int sourceEnd) {
+  /**
+   * Create a new variable assignation.
+   * @param variableName the name of the variable
+   * @param initializer the expression in initializer
+   * @param operator the operator of assignation
+   * @param sourceStart the sourceStart
+   * @param sourceEnd the sourceEnd
+   */
+  public VarAssignation(final Expression variableName,
+                        final Expression initializer,
+                        final int operator,
+                        final int sourceStart,
+                        final int sourceEnd) {
     super(sourceStart, sourceEnd);
-    this.variable = variable;
-    this.expression = expression;
+    this.variableName = variableName;
+    this.initializer = initializer;
     this.operator = operator;
   }
 
-  public String operatorToString() {
+  /**
+   * Return the operator as String.
+   * @return the operator
+   */
+  public final String operatorToString() {
     switch (operator) {
       case EQUAL:
         return "="; //$NON-NLS-1$
@@ -58,13 +76,13 @@ public class VarAssignation extends Expression {
       case REM_EQUAL:
         return "%="; //$NON-NLS-1$
       case TILDE_EQUAL:
-        return " ="; //$NON-NLS-1$
+        return "~="; //$NON-NLS-1$
       case LSHIFT_EQUAL:
         return "<<="; //$NON-NLS-1$
       case RSIGNEDSHIFT_EQUAL:
         return ">>="; //$NON-NLS-1$
     }
-    return " unknown operator ";
+    return " unknown operator ";//$NON-NLS-1$
   }
 
   /**
@@ -72,12 +90,37 @@ public class VarAssignation extends Expression {
    * @return the expression
    */
   public String toStringExpression() {
-    final StringBuffer buff = new StringBuffer();
-    buff.append(variable);
-    buff.append(' ');
-    buff.append(operatorToString());
-    buff.append(' ');
-    buff.append(expression.toStringExpression());
+    final String varName = variableName.toStringExpression();
+    final String init = initializer.toStringExpression();
+    final String operatorString = operatorToString();
+    final StringBuffer buff = new StringBuffer(varName.length() + operatorString.length() + init.length() + 2);
+    buff.append(varName);
+    buff.append(" ");//$NON-NLS-1$
+    buff.append(operatorString);
+    buff.append(" ");//$NON-NLS-1$
+    buff.append(init);
     return buff.toString();
   }
+
+
+  /**
+   * Get the variables from outside (parameters, globals ...)
+   */
+  public void getOutsideVariable(final List list) {
+  }
+
+  /**
+   * get the modified variables.
+   */
+  public void getModifiedVariable(final List list) {
+    variableName.getUsedVariable(list);
+    initializer.getModifiedVariable(list);
+  }
+
+  /**
+   * Get the variables used.
+   */
+  public void getUsedVariable(final List list) {
+    initializer.getUsedVariable(list);
+  }
 }