/**
* @see IType#getSuperInterfaceTypeSignatures()
* @since 3.0
*/
public String[] getSuperInterfaceTypeSignatures() throws JavaModelException {
IBinaryType info = (IBinaryType) getElementInfo();
char[] genericSignature = info.getGenericSignature();
if (genericSignature != null) {
ArrayList interfaces = new ArrayList();
int signatureLength = genericSignature.length;
// skip type parameters
int index = 0;
if (genericSignature[0] == '<') {
int count = 1;
while (count > 0 && ++index < signatureLength) {
switch (genericSignature[index]) {
case '<':
count++;
break;
case '>':
count--;
break;
}
}
index++;
}
// skip superclass
index = org.eclipse.jdt.internal.compiler.util.Util.scanClassTypeSignature(genericSignature, index) + 1;
while (index < signatureLength) {
int start = index;
index = org.eclipse.jdt.internal.compiler.util.Util.scanClassTypeSignature(genericSignature, start) + 1;
char[] interfaceSig = CharOperation.subarray(genericSignature, start, index);
interfaces.add(new String(ClassFile.translatedName(interfaceSig)));
}
int size = interfaces.size();
String[] result = new String[size];
interfaces.toArray(result);
return result;
} else {
char[][] names= info.getInterfaceNames();
int length;
if (names == null || (length = names.length) == 0) {
return CharOperation.NO_STRINGS;
}
names= ClassFile.translatedNames(names);