package org.eclipse.jdt.internal.core.builder.impl; | |
/* | |
* (c) Copyright IBM Corp. 2000, 2001. | |
* All Rights Reserved. | |
*/ | |
import org.eclipse.jdt.internal.core.builder.*; | |
import org.eclipse.jdt.internal.core.Util; | |
public abstract class AbstractMemberHandle extends NonStateSpecificHandleImpl implements IMember{ | |
/** | |
* The owner of the member | |
*/ | |
ClassOrInterfaceHandleImpl fOwner; | |
/** | |
* Member signature | |
*/ | |
String fSignature; | |
/** | |
* Synopsis: Answer a method or constructor signature given | |
* the name (which may be empty) and the parameter types. | |
*/ | |
String computeSignature(String name, IType[] parameterTypes) { | |
if (parameterTypes.length == 0) { | |
return name + "()"/*nonNLS*/; | |
} | |
StringBuffer sb = new StringBuffer(name); | |
sb.append('('); | |
for (int i = 0; i < parameterTypes.length; i++) { | |
try { | |
((TypeImpl)parameterTypes[i]).appendSignature(sb, true); | |
} catch (ClassCastException e) { | |
throw new StateSpecificException("Incompatible parameter types"/*nonNLS*/); | |
} | |
} | |
sb.append(')'); | |
return sb.toString(); | |
} | |
/** | |
* Compares two members | |
*/ | |
public boolean equals(Object o) { | |
if (this == o) return true; | |
if (!(o instanceof AbstractMemberHandle)) return false; | |
AbstractMemberHandle member = (AbstractMemberHandle) o; | |
return member.fSignature.equals(this.fSignature) && member.fOwner.equals(this.fOwner); | |
} | |
/** | |
* Returns the owning class of this member. | |
*/ | |
public IType getDeclaringClass() { | |
return fOwner; | |
} | |
/** | |
* getInternalDC method comment. | |
*/ | |
JavaDevelopmentContextImpl getInternalDC() { | |
return fOwner.getInternalDC(); | |
} | |
/** | |
* Returns the Java language modifiers for the member | |
* represented by this object, as an integer. | |
*/ | |
public int getModifiers() { | |
return ((AbstractMemberHandleSWH)inCurrentState()).getModifiers(); | |
} | |
/** | |
* Returns the simple name of the member represented by this object. | |
* If this Member represents a constructor, this returns | |
* the simple name of its declaring class. | |
* This is a handle-only method. | |
*/ | |
public abstract String getName(); | |
/** | |
* Returns the signature of the member. For fields, this is the field name. | |
* For methods, this is the method name, followed by $(, followed by the | |
* source signatures of the parameter types, followed by $). | |
* For constructors, this is $(, followed by the source signatures of the | |
* parameter types, followed by $). | |
*/ | |
String getSignature() { | |
return fSignature; | |
} | |
/** | |
* Returns a consistent hash code for this object | |
*/ | |
public int hashCode() { | |
return fSignature.hashCode(); | |
} | |
/** | |
* Returns true if this represents a binary member, false otherwise. | |
* A binary member is one for which the declaring class is in .class | |
* file format in the source tree. | |
*/ | |
public boolean isBinary() { | |
return ((IMember)inCurrentState()).isBinary(); | |
} | |
/** | |
* @see IMember | |
*/ | |
public boolean isDeprecated() { | |
return ((AbstractMemberHandleSWH)inCurrentState()).isDeprecated(); | |
} | |
/** | |
* Returns true if the member represented by this object is | |
* synthetic, false otherwise. A synthetic object is one that | |
* was invented by the compiler, but was not declared in the source. | |
* See <em>The Inner Classes Specification</em>. | |
* A synthetic object is not the same as a fictitious object. | |
*/ | |
public boolean isSynthetic() { | |
return ((AbstractMemberHandleSWH)inCurrentState()).isSynthetic(); | |
} | |
/** | |
* kind method comment. | |
*/ | |
public int kind() { | |
return 0; | |
} | |
} |