package net.sourceforge.phpdt.internal.compiler.ast; import java.util.List; /** * Any class access. * @author Matthieu Casanova */ public 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; /** the suffix. */ public Expression suffix; /** the type of access. */ public 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() { switch (type) { case STATIC : return "::"; //$NON-NLS-1$ case NORMAL : return "->"; //$NON-NLS-1$ } return "unknown operator"; //$NON-NLS-1$ } /** * Return the expression as String. * @return the expression */ public String toStringExpression() { final StringBuffer buff = new StringBuffer(); buff.append(prefix.toStringExpression()); buff.append(toStringOperator()); buff.append(suffix.toStringExpression()); return buff.toString(); } /** * todo: find a better way to handle this * @return */ public String getName() { if (prefix instanceof AbstractVariable) { return ((AbstractVariable)prefix).getName(); } return prefix.toStringExpression(); } /** * Get the variables from outside (parameters, globals ...) */ public void getOutsideVariable(final List list) { } /** * get the modified variables. */ public void getModifiedVariable(final List list) { } /** * Get the variables used. */ public void getUsedVariable(final List list) { prefix.getUsedVariable(list); suffix.getUsedVariable(list); } }