From 663631f0456fcc245dd835889f86541d75161c53 Mon Sep 17 00:00:00 2001 From: Roman Shevchenko Date: Thu, 28 Aug 2014 20:52:43 +0400 Subject: java-decompiler: post-import cleanup (classes moved) --- .../attr/StructBootstrapMethodsAttribute.java | 62 ++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 src/org/jetbrains/java/decompiler/struct/attr/StructBootstrapMethodsAttribute.java (limited to 'src/org/jetbrains/java/decompiler/struct/attr/StructBootstrapMethodsAttribute.java') diff --git a/src/org/jetbrains/java/decompiler/struct/attr/StructBootstrapMethodsAttribute.java b/src/org/jetbrains/java/decompiler/struct/attr/StructBootstrapMethodsAttribute.java new file mode 100644 index 0000000..ac51027 --- /dev/null +++ b/src/org/jetbrains/java/decompiler/struct/attr/StructBootstrapMethodsAttribute.java @@ -0,0 +1,62 @@ +package org.jetbrains.java.decompiler.struct.attr; + +import java.io.ByteArrayInputStream; +import java.io.DataInputStream; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +import org.jetbrains.java.decompiler.struct.consts.ConstantPool; +import org.jetbrains.java.decompiler.struct.consts.LinkConstant; +import org.jetbrains.java.decompiler.struct.consts.PooledConstant; + +public class StructBootstrapMethodsAttribute extends StructGeneralAttribute { + + private List method_refs = new ArrayList(); + private List> method_arguments = new ArrayList>(); + + public void initContent(ConstantPool pool) { + + name = ATTRIBUTE_BOOTSTRAP_METHODS; + + try { + + DataInputStream data = new DataInputStream(new ByteArrayInputStream(info, 0, info.length)); + + int method_number = data.readUnsignedShort(); + + for(int i = 0; i < method_number; ++i) { + int bootstrap_method_ref = data.readUnsignedShort(); + int num_bootstrap_arguments = data.readUnsignedShort(); + + List list_arguments = new ArrayList(); + + for(int j = 0; j < num_bootstrap_arguments; ++j) { + int bootstrap_argument_ref = data.readUnsignedShort(); + + list_arguments.add(pool.getConstant(bootstrap_argument_ref)); + } + + method_refs.add(pool.getLinkConstant(bootstrap_method_ref)); + method_arguments.add(list_arguments); + } + + } catch(IOException ex) { + throw new RuntimeException(ex); + } + + } + + public int getMethodsNumber() { + return method_refs.size(); + } + + public LinkConstant getMethodReference(int index) { + return method_refs.get(index); + } + + public List getMethodArguments(int index) { + return method_arguments.get(index); + } + +} -- cgit v1.2.3