diff options
Diffstat (limited to 'src/main/java/ftbsc/lll/utils/nodes')
3 files changed, 68 insertions, 0 deletions
diff --git a/src/main/java/ftbsc/lll/utils/nodes/FieldProxyInsnNode.java b/src/main/java/ftbsc/lll/utils/nodes/FieldProxyInsnNode.java new file mode 100644 index 0000000..e809ccd --- /dev/null +++ b/src/main/java/ftbsc/lll/utils/nodes/FieldProxyInsnNode.java @@ -0,0 +1,22 @@ +package ftbsc.lll.utils.nodes; + +import ftbsc.lll.proxies.impl.FieldProxy; +import org.objectweb.asm.tree.FieldInsnNode; + +/** + * Overrides the {@link FieldInsnNode} to add a constructor + * taking in a {@link FieldProxy}. + * @since 0.3.0 + */ +public class FieldProxyInsnNode extends FieldInsnNode { + /** + * Constructs a new {@link FieldInsnNode} starting + * from a {@link FieldProxy}. + * @param opcode the opcode, must be one of GETSTATIC, PUTSTATIC, + * GETFIELD or PUTFIELD + * @param f a {@link FieldProxy} representing the field to call + */ + public FieldProxyInsnNode(int opcode, FieldProxy f) { + super(opcode, f.parent.internalName, f.name, f.descriptor); + } +} diff --git a/src/main/java/ftbsc/lll/utils/nodes/MethodProxyInsnNode.java b/src/main/java/ftbsc/lll/utils/nodes/MethodProxyInsnNode.java new file mode 100644 index 0000000..2e062f4 --- /dev/null +++ b/src/main/java/ftbsc/lll/utils/nodes/MethodProxyInsnNode.java @@ -0,0 +1,23 @@ +package ftbsc.lll.utils.nodes; + +import ftbsc.lll.proxies.impl.MethodProxy; +import org.objectweb.asm.tree.MethodInsnNode; + +/** + * Overrides the {@link MethodInsnNode} to add a constructor + * taking in a {@link MethodProxy}. + * @since 0.3.0 + */ +public class MethodProxyInsnNode extends MethodInsnNode { + + /** + * Constructs a new {@link MethodInsnNode} starting + * from a {@link MethodProxy}. + * @param opcode the opcode, must be one of INVOKEVIRTUAL, + * INVOKESPECIAL, INVOKESTATIC or INVOKEINTERFACE + * @param m a {@link MethodProxy} representing the method to call + */ + public MethodProxyInsnNode(int opcode, MethodProxy m) { + super(opcode, m.parent.internalName, m.name, m.descriptor); + } +} diff --git a/src/main/java/ftbsc/lll/utils/nodes/TypeProxyInsnNode.java b/src/main/java/ftbsc/lll/utils/nodes/TypeProxyInsnNode.java new file mode 100644 index 0000000..3648278 --- /dev/null +++ b/src/main/java/ftbsc/lll/utils/nodes/TypeProxyInsnNode.java @@ -0,0 +1,23 @@ +package ftbsc.lll.utils.nodes; + +import ftbsc.lll.proxies.impl.TypeProxy; +import org.objectweb.asm.tree.TypeInsnNode; + +/** + * Overrides the {@link TypeInsnNode} to add a constructor + * taking in a {@link TypeProxy}. + * @since 0.4.0 + */ +public class TypeProxyInsnNode extends TypeInsnNode { + /** + * Constructs a new {@link TypeInsnNode} starting from a + * {@link TypeProxy}. The user should ensure that the TypeInsnNode + * represents a declared type before calling this. + * @param opcode the opcode, must be one of NEW, ANEWARRAY, + * CHECKCAST or INSTANCEOF + * @param t a {@link TypeProxy} representing the type to call + */ + public TypeProxyInsnNode(int opcode, TypeProxy t) { + super(opcode, t.internalName); + } +} |