Open-source multiplayer game server compatible with the RuneScape client
https://www.openrs2.org/
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
72 lines
1.6 KiB
72 lines
1.6 KiB
package dev.openrs2.asm.classpath;
|
|
|
|
import com.google.common.collect.ImmutableList;
|
|
import dev.openrs2.asm.MemberDesc;
|
|
import org.objectweb.asm.Opcodes;
|
|
import org.objectweb.asm.tree.ClassNode;
|
|
|
|
public final class AsmClassMetadata extends ClassMetadata {
|
|
private final ClassPath classPath;
|
|
private final ClassNode clazz;
|
|
private final boolean dependency;
|
|
|
|
public AsmClassMetadata(ClassPath classPath, ClassNode clazz, boolean dependency) {
|
|
this.classPath = classPath;
|
|
this.clazz = clazz;
|
|
this.dependency = dependency;
|
|
}
|
|
|
|
@Override
|
|
public String getName() {
|
|
return clazz.name;
|
|
}
|
|
|
|
@Override
|
|
public boolean isDependency() {
|
|
return dependency;
|
|
}
|
|
|
|
@Override
|
|
public boolean isInterface() {
|
|
return (clazz.access & Opcodes.ACC_INTERFACE) != 0;
|
|
}
|
|
|
|
@Override
|
|
public ClassMetadata getSuperClass() {
|
|
if (clazz.superName != null) {
|
|
return classPath.get(clazz.superName);
|
|
}
|
|
return null;
|
|
}
|
|
|
|
@Override
|
|
public ImmutableList<ClassMetadata> getSuperInterfaces() {
|
|
return clazz.interfaces.stream()
|
|
.map(classPath::get)
|
|
.collect(ImmutableList.toImmutableList());
|
|
}
|
|
|
|
@Override
|
|
public ImmutableList<MemberDesc> getFields() {
|
|
return clazz.fields.stream()
|
|
.map(MemberDesc::new)
|
|
.collect(ImmutableList.toImmutableList());
|
|
}
|
|
|
|
@Override
|
|
public ImmutableList<MemberDesc> getMethods() {
|
|
return clazz.methods.stream()
|
|
.map(MemberDesc::new)
|
|
.collect(ImmutableList.toImmutableList());
|
|
}
|
|
|
|
@Override
|
|
public boolean isNative(MemberDesc method) {
|
|
for (var m : clazz.methods) {
|
|
if (m.name.equals(method.getName()) && m.desc.equals(method.getDesc())) {
|
|
return (m.access & Opcodes.ACC_NATIVE) != 0;
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
}
|
|
|