package net.sourceforge.phpdt.internal.compiler.ast;
+import java.util.List;
+
/**
* Any class access.
* @author Matthieu Casanova
*/
-public class ClassAccess extends AbstractSuffixExpression {
+public final class ClassAccess extends AbstractVariable {
+ /** a static class access : "::". */
public static final int STATIC = 0;
+
+ /** a normal class access : "->". */
public static final int NORMAL = 1;
- public Expression prefix;
- public Expression suffix;
- public int type;
+ private final Expression prefix;
+
+ /** the suffix. */
+ private final Expression suffix;
- public ClassAccess(Expression prefix,
- Expression suffix,
- int type) {
+ /** the type of access. */
+ private final int type;
+
+ /**
+ * Create a new class access.
+ * @param prefix
+ * @param suffix
+ * @param type the type of access {@link #STATIC} or {@link #NORMAL}
+ */
+ public ClassAccess(final Expression prefix,
+ final Expression suffix,
+ final int type) {
super(prefix.sourceStart, suffix.sourceEnd);
this.prefix = prefix;
this.suffix = suffix;
this.type = type;
}
- public String toStringOperator() {
+ private String toStringOperator() {
switch (type) {
case STATIC : return "::"; //$NON-NLS-1$
case NORMAL : return "->"; //$NON-NLS-1$
* @return the expression
*/
public String toStringExpression() {
- final StringBuffer buff = new StringBuffer();
- buff.append(prefix);
- buff.append(toStringOperator());
- buff.append(suffix.toStringExpression());
+ final String prefixString = prefix.toStringExpression();
+ final String operatorString = toStringOperator();
+ final String suffixString = suffix.toStringExpression();
+ final StringBuffer buff = new StringBuffer(prefixString.length() +
+ operatorString.length() +
+ suffixString.length());
+ buff.append(prefixString);
+ buff.append(operatorString);
+ buff.append(suffixString);
return buff.toString();
}
+
+ /**
+ * todo: find a better way to handle this
+ * @return the name of the variable
+ */
+ public String getName() {
+ if (prefix instanceof AbstractVariable) {
+ return ((AbstractVariable)prefix).getName();
+ }
+ return prefix.toStringExpression();
+ }
+
+ /**
+ * Get the variables from outside (parameters, globals ...)
+ *
+ * @param list the list where we will put variables
+ */
+ public void getOutsideVariable(final List list) {}
+
+ /**
+ * get the modified variables.
+ *
+ * @param list the list where we will put variables
+ */
+ public void getModifiedVariable(final List list) {}
+
+ /**
+ * Get the variables used.
+ *
+ * @param list the list where we will put variables
+ */
+ public void getUsedVariable(final List list) {
+ prefix.getUsedVariable(list);
+ suffix.getUsedVariable(list);
+ }
}