Copyright (c) 2000, 2009 IBM Corporation and others.
This program and the accompanying materials
are made available under the terms of the Eclipse Public License 2.0
which accompanies this distribution, and is available at
https://www.eclipse.org/legal/epl-2.0/
SPDX-License-Identifier: EPL-2.0
Contributors:
IBM Corporation - initial API and implementation
/*******************************************************************************
* Copyright (c) 2000, 2009 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.jdt.internal.core;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.jdt.core.Flags;
import org.eclipse.jdt.core.IAnnotation;
import org.eclipse.jdt.core.IField;
import org.eclipse.jdt.core.JavaModelException;
import org.eclipse.jdt.core.Signature;
import org.eclipse.jdt.internal.compiler.env.IBinaryAnnotation;
import org.eclipse.jdt.internal.compiler.env.IBinaryField;
import org.eclipse.jdt.internal.compiler.lookup.Binding;
See Also: - IField
/**
* @see IField
*/
/* package */ class BinaryField extends BinaryMember implements IField {
/*
* Constructs a handle to the field with the given name in the specified type.
*/
protected BinaryField(JavaElement parent, String name) {
super(parent, name);
}
@Override
public boolean equals(Object o) {
if (!(o instanceof BinaryField)) return false;
return super.equals(o);
}
@Override
public IAnnotation[] getAnnotations() throws JavaModelException {
IBinaryField info = (IBinaryField) getElementInfo();
IBinaryAnnotation[] binaryAnnotations = info.getAnnotations();
return getAnnotations(binaryAnnotations, info.getTagBits());
}
/*
* @see IField
*/
@Override
public Object getConstant() throws JavaModelException {
IBinaryField info = (IBinaryField) getElementInfo();
return convertConstant(info.getConstant());
}
/*
* @see IMember
*/
@Override
public int getFlags() throws JavaModelException {
IBinaryField info = (IBinaryField) getElementInfo();
return info.getModifiers();
}
/*
* @see IJavaElement
*/
@Override
public int getElementType() {
return FIELD;
}
/*
* @see JavaElement#getHandleMemento()
*/
@Override
protected char getHandleMementoDelimiter() {
return JavaElement.JEM_FIELD;
}
@Override
public String getKey(boolean forceOpen) throws JavaModelException {
return getKey(this, forceOpen);
}
/*
* @see IField
*/
@Override
public String getTypeSignature() throws JavaModelException {
IBinaryField info = (IBinaryField) getElementInfo();
char[] genericSignature = info.getGenericSignature();
if (genericSignature != null) {
return new String(ClassFile.translatedName(genericSignature));
}
return new String(ClassFile.translatedName(info.getTypeName()));
}
/* (non-Javadoc)
* @see org.eclipse.jdt.core.IField#isEnumConstant()
*/@Override
public boolean isEnumConstant() throws JavaModelException {
return Flags.isEnum(getFlags());
}
@Override
public boolean isResolved() {
return false;
}
@Override
public JavaElement resolved(Binding binding) {
SourceRefElement resolvedHandle = new ResolvedBinaryField(this.parent, this.name, new String(binding.computeUniqueKey()));
resolvedHandle.occurrenceCount = this.occurrenceCount;
return resolvedHandle;
}
/*
* @private Debugging purposes
*/
@Override
protected void toStringInfo(int tab, StringBuffer buffer, Object info, boolean showResolvedInfo) {
buffer.append(tabString(tab));
if (info == null) {
toStringName(buffer);
buffer.append(" (not open)"); //$NON-NLS-1$
} else if (info == NO_INFO) {
toStringName(buffer);
} else {
try {
buffer.append(Signature.toString(getTypeSignature()));
buffer.append(" "); //$NON-NLS-1$
toStringName(buffer);
} catch (JavaModelException e) {
buffer.append("<JavaModelException in toString of " + getElementName()); //$NON-NLS-1$
}
}
}
@Override
public String getAttachedJavadoc(IProgressMonitor monitor) throws JavaModelException {
JavadocContents javadocContents = ((BinaryType) this.getDeclaringType()).getJavadocContents(monitor);
if (javadocContents == null) return null;
return javadocContents.getFieldDoc(this);
}
}