IntelliJ reformat of the code

This commit is contained in:
Katelyn Baker 2017-06-23 09:02:00 +01:00
parent b356220da1
commit 28b7610e47
2 changed files with 63 additions and 62 deletions

View File

@ -78,8 +78,8 @@ class ClassCarpenter {
fun fieldsIncludingSuperclasses(): Map<String, Class<out Any?>> = (superclass?.fieldsIncludingSuperclasses() ?: emptyMap()) + LinkedHashMap(fields)
fun descriptorsIncludingSuperclasses(): Map<String, String> = (superclass?.descriptorsIncludingSuperclasses() ?: emptyMap()) + LinkedHashMap(descriptors)
val jvmName : String
get() = name.replace (".", "/")
val jvmName: String
get() = name.replace(".", "/")
}
private val String.jvm: String get() = replace(".", "/")
@ -89,14 +89,14 @@ class ClassCarpenter {
fields: Map<String, Class<out Any?>>,
superclass: Schema? = null,
interfaces: List<Class<*>> = emptyList()
) : Schema (name, fields, superclass, interfaces)
) : Schema(name, fields, superclass, interfaces)
class InterfaceSchema(
name: String,
fields: Map<String, Class<out Any?>>,
superclass: Schema? = null,
interfaces: List<Class<*>> = emptyList()
) : Schema (name, fields, superclass, interfaces)
) : Schema(name, fields, superclass, interfaces)
class DuplicateName : RuntimeException("An attempt was made to register two classes with the same name within the same ClassCarpenter namespace.")
class InterfaceMismatch(msg: String) : RuntimeException(msg)
@ -104,6 +104,7 @@ class ClassCarpenter {
private class CarpenterClassLoader : ClassLoader(Thread.currentThread().contextClassLoader) {
fun load(name: String, bytes: ByteArray) = defineClass(name, bytes, 0, bytes.size)
}
private val classloader = CarpenterClassLoader()
private val _loaded = HashMap<String, Class<*>>()
@ -139,11 +140,11 @@ class ClassCarpenter {
return _loaded[schema.name]!!
}
private fun generateInterface (schema: Schema): Class<*> {
return generate (schema) { cw, schema ->
private fun generateInterface(schema: Schema): Class<*> {
return generate(schema) { cw, schema ->
val interfaces = schema.interfaces.map { it.name.jvm }.toTypedArray()
with (cw) {
with(cw) {
visit(V1_8, ACC_PUBLIC + ACC_ABSTRACT + ACC_INTERFACE, schema.jvmName, null, "java/lang/Object", interfaces)
generateAbstractGetters(schema)
@ -153,12 +154,12 @@ class ClassCarpenter {
}
}
private fun generateClass (schema: Schema): Class<*> {
return generate (schema) { cw, schema ->
private fun generateClass(schema: Schema): Class<*> {
return generate(schema) { cw, schema ->
val superName = schema.superclass?.jvmName ?: "java/lang/Object"
val interfaces = arrayOf(SimpleFieldAccess::class.java.name.jvm) + schema.interfaces.map { it.name.jvm }
with (cw) {
with(cw) {
visit(V1_8, ACC_PUBLIC + ACC_SUPER, schema.jvmName, null, superName, interfaces)
generateFields(schema)
@ -173,11 +174,11 @@ class ClassCarpenter {
}
}
private fun generate(schema: Schema, generator : (ClassWriter, Schema) -> Unit): Class<*> {
private fun generate(schema: Schema, generator: (ClassWriter, Schema) -> Unit): Class<*> {
// Lazy: we could compute max locals/max stack ourselves, it'd be faster.
val cw = ClassWriter (ClassWriter.COMPUTE_FRAMES or ClassWriter.COMPUTE_MAXS)
val cw = ClassWriter(ClassWriter.COMPUTE_FRAMES or ClassWriter.COMPUTE_MAXS)
generator (cw, schema)
generator(cw, schema)
val clazz = classloader.load(schema.name, cw.toByteArray())
_loaded[schema.name] = clazz
@ -253,7 +254,7 @@ class ClassCarpenter {
for ((name, _) in schema.fields) {
val descriptor = schema.descriptors[name]
val opcodes = ACC_ABSTRACT + ACC_PUBLIC
with (visitMethod(opcodes, "get" + name.capitalize(), "()" + descriptor, null, null)) {
with(visitMethod(opcodes, "get" + name.capitalize(), "()" + descriptor, null, null)) {
// abstract method doesn't have any implementation so just end
visitEnd()
}