package net.sourceforge.phpeclipse.obfuscator;

/**
 * @author khartlage
 *
 */
public class PHPIdentifier {

  public final static int CLASS = 1;
  public final static int FUNCTION = 2;
  public final static int METHOD = 4;
  public final static int VARIABLE = 3;
  public final static int DEFINE = 5;
	public final static int CONSTRUCTOR = 6;
  private String fIdentifier;

  private int fType;

  public PHPIdentifier(String identifier, int type) {
    fType = type;
    fIdentifier = identifier;
  }

  /* (non-Javadoc)
   * @see java.lang.Object#equals(java.lang.Object)
   */
  public boolean equals(Object obj) {
    if (!(obj instanceof PHPIdentifier)) {
      return false;
    }
    return ((PHPIdentifier) obj).fType == fType && ((PHPIdentifier) obj).fIdentifier.equals(fIdentifier);
  }

  public String getIdentifier() {
    return fIdentifier;
  }

  public int getType() {
    return fType;
  }

  public boolean isClass() {
    return fType == CLASS;
  }

  public boolean isFunction() {
    return fType == FUNCTION;
  }

  public boolean isVariable() {
    return fType == VARIABLE;
  }

  public boolean isMethod() {
    return fType == METHOD;
  }

  public boolean isDefine() {
    return fType == DEFINE;
  }

	public boolean isConstructor() {
		return fType == CONSTRUCTOR;
	}
	
  public void setIdentifier(String fIdentifier) {
    this.fIdentifier = fIdentifier;
  }

  public void setType(int fType) {
    this.fType = fType;
  }

  /* (non-Javadoc)
   * @see java.lang.Object#toString()
   */
  public String toString() {
    switch (fType) {
      case CLASS :
        return "class - ";
			case CONSTRUCTOR :
				return "constructor - ";
      case DEFINE :
        return "define - ";
      case FUNCTION :
        return "function - ";
      case METHOD :
        return "method - ";
      case VARIABLE :
        return "variable - ";
    }
    return "";
  }

}