Convert AsmClassMetadata to Kotlin

pull/48/head
Graham 4 years ago
parent e5af454815
commit 3ee6d57ba9
  1. 72
      asm/src/main/java/dev/openrs2/asm/classpath/AsmClassMetadata.java
  2. 34
      asm/src/main/java/dev/openrs2/asm/classpath/AsmClassMetadata.kt

@ -1,72 +0,0 @@
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 getDependency() {
return dependency;
}
@Override
public boolean getInterface() {
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;
}
}

@ -0,0 +1,34 @@
package dev.openrs2.asm.classpath
import dev.openrs2.asm.MemberDesc
import org.objectweb.asm.Opcodes
import org.objectweb.asm.tree.ClassNode
class AsmClassMetadata(
private val classPath: ClassPath,
private val clazz: ClassNode,
override val dependency: Boolean
) : ClassMetadata() {
override val name: String
get() = clazz.name
override val `interface`
get() = clazz.access and Opcodes.ACC_INTERFACE != 0
override val superClass
get() = if (clazz.superName != null) classPath[clazz.superName] else null
override val superInterfaces
get() = clazz.interfaces.map { classPath[it] }.toList()
override val fields
get() = clazz.fields.map { MemberDesc(it) }.toList()
override val methods
get() = clazz.methods.map { MemberDesc(it) }.toList()
override fun isNative(method: MemberDesc): Boolean {
val m = clazz.methods.find { it.name == method.name && it.desc == method.desc } ?: return false
return m.access and Opcodes.ACC_NATIVE != 0
}
}
Loading…
Cancel
Save