Class ElementNode<TNode>
- java.lang.Object
-
- org.spongepowered.asm.mixin.injection.selectors.ElementNode<TNode>
-
- Type Parameters:
TNode- node type
public abstract class ElementNode<TNode> extends java.lang.ObjectWrapper for all node types supported bytarget selectors(FieldNode,MethodNode,FieldInsnNode,MethodInsnNodeandInvokeDynamicInsnNode) which allows access to common properties of things which are basically "arbitrary node with owner, name and descriptor"
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classElementNode.NodeTypeElement node type, returned by getType so consumers don't need to do instanceof checks, and allows switching on element type in a more expressive way
-
Constructor Summary
Constructors Constructor Description ElementNode()
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description static java.lang.Iterable<ElementNode<org.objectweb.asm.tree.AbstractInsnNode>>dynamicInsnList(org.objectweb.asm.tree.InsnList insns)Get a wrapped version of the supplied insn list which returns element nodes for every INVOKEDYNAMIC instruction onlystatic java.util.List<ElementNode<org.objectweb.asm.tree.FieldNode>>fieldList(org.objectweb.asm.tree.ClassNode owner)Get a list of wrapped ElementNodes for the fields of the supplied owner classabstract TNodeget()Returns the node with horrible duck typingjava.lang.StringgetDelegateDesc()For INVOKEDYNAMIC elements, returns original descriptor of the delegate.abstract java.lang.StringgetDesc()Get the element descriptor.org.objectweb.asm.tree.FieldNodegetField()Get theFieldNodeif this member is a field, otherwise returns nulljava.lang.StringgetImplDesc()For INVOKEDYNAMIC elements, returns specialised descriptor of the delegate (lambda descriptor without prepended captures), can be the same as the delegate descriptor or more specialised.org.objectweb.asm.tree.AbstractInsnNodegetInsn()Get theinstructionif this member is an insn, otherwise returns nullorg.objectweb.asm.tree.MethodNodegetMethod()Get theMethodNodeif this member is a method, otherwise returns nullabstract java.lang.StringgetName()Get the element nameabstract java.lang.StringgetOwner()Get the element owner's name, if this element has an owner, otherwise returns nullabstract java.lang.StringgetSignature()Get the element signature, can be nulljava.lang.StringgetSyntheticName()Get the synthetic element name.abstract ElementNode.NodeTypegetType()Get the type of this ElementNode, the return value can be used to determine which accessor (getMethod(),getField()static java.lang.Iterable<ElementNode<org.objectweb.asm.tree.AbstractInsnNode>>insnList(org.objectweb.asm.tree.InsnList insns)Get a wrapped version of the supplied insn list which returns element nodes for each (supported) instruction (FieldInsnNode, MethodInsnNode and InvokeDynamicInsnNode).booleanisField()Get whether this element is a field type and the descriptor is a bare type descriptor without arguments.static <TNode> java.util.List<ElementNode<TNode>>listOf(org.objectweb.asm.tree.ClassNode owner, java.util.List<TNode> list)Convert the supplied list of nodes to a list of wrapped ElementNodesstatic java.util.List<ElementNode<org.objectweb.asm.tree.MethodNode>>methodList(org.objectweb.asm.tree.ClassNode owner)Get a list of wrapped ElementNodes for the methods of the supplied owner classstatic ElementNode<org.objectweb.asm.tree.FieldNode>of(org.objectweb.asm.tree.ClassNode owner, org.objectweb.asm.tree.FieldNode field)Create an ElementNode wrapper for the supplied field nodestatic ElementNode<org.objectweb.asm.tree.MethodNode>of(org.objectweb.asm.tree.ClassNode owner, org.objectweb.asm.tree.MethodNode method)Create an ElementNode wrapper for the supplied method nodestatic <TNode> ElementNode<TNode>of(org.objectweb.asm.tree.ClassNode owner, TNode node)Create an ElementNode wrapper for the supplied node objectstatic <TNode extends org.objectweb.asm.tree.AbstractInsnNode>
ElementNode<TNode>of(TNode node)Create an ElementNode wrapper for the supplied node objectjava.lang.StringtoString()
-
-
-
Method Detail
-
isField
public boolean isField()
Get whether this element is a field type and the descriptor is a bare type descriptor without arguments. Otherwise assumes the descriptor is a method descriptor.
-
getType
public abstract ElementNode.NodeType getType()
Get the type of this ElementNode, the return value can be used to determine which accessor (getMethod(),getField()
-
getMethod
public org.objectweb.asm.tree.MethodNode getMethod()
Get theMethodNodeif this member is a method, otherwise returns null
-
getField
public org.objectweb.asm.tree.FieldNode getField()
Get theFieldNodeif this member is a field, otherwise returns null
-
getInsn
public org.objectweb.asm.tree.AbstractInsnNode getInsn()
Get theinstructionif this member is an insn, otherwise returns null
-
getOwner
public abstract java.lang.String getOwner()
Get the element owner's name, if this element has an owner, otherwise returns null
-
getName
public abstract java.lang.String getName()
Get the element name
-
getSyntheticName
public java.lang.String getSyntheticName()
Get the synthetic element name. For INVOKEDYNAMIC elements this is the real name of the lambda method implementing the delegate.
-
getDesc
public abstract java.lang.String getDesc()
Get the element descriptor. For INVOKEDYNAMIC this is the full descriptor of the lambda (including prepended captures).
-
getDelegateDesc
public java.lang.String getDelegateDesc()
For INVOKEDYNAMIC elements, returns original descriptor of the delegate.
-
getImplDesc
public java.lang.String getImplDesc()
For INVOKEDYNAMIC elements, returns specialised descriptor of the delegate (lambda descriptor without prepended captures), can be the same as the delegate descriptor or more specialised.
-
getSignature
public abstract java.lang.String getSignature()
Get the element signature, can be null
-
get
public abstract TNode get()
Returns the node with horrible duck typing
-
toString
public java.lang.String toString()
- Overrides:
toStringin classjava.lang.Object
-
of
public static ElementNode<org.objectweb.asm.tree.MethodNode> of(org.objectweb.asm.tree.ClassNode owner, org.objectweb.asm.tree.MethodNode method)
Create an ElementNode wrapper for the supplied method node- Parameters:
owner- class which owns the method or nullmethod- Method node to wrap- Returns:
- ElementNode
-
of
public static ElementNode<org.objectweb.asm.tree.FieldNode> of(org.objectweb.asm.tree.ClassNode owner, org.objectweb.asm.tree.FieldNode field)
Create an ElementNode wrapper for the supplied field node- Parameters:
owner- class which owns the field or nullfield- Field node to wrap- Returns:
- ElementNode
-
of
public static <TNode> ElementNode<TNode> of(org.objectweb.asm.tree.ClassNode owner, TNode node)
Create an ElementNode wrapper for the supplied node object- Type Parameters:
TNode- Node type- Parameters:
owner- class which owns the node or nullnode- Node to wrap- Returns:
- ElementNode
- Throws:
java.lang.IllegalArgumentException- if the supplied argument is not aMethodNodeorFieldNode
-
of
public static <TNode extends org.objectweb.asm.tree.AbstractInsnNode> ElementNode<TNode> of(TNode node)
Create an ElementNode wrapper for the supplied node object- Type Parameters:
TNode- Node type- Parameters:
node- Node to wrap- Returns:
- ElementNode
- Throws:
java.lang.IllegalArgumentException- if the supplied argument is not aMethodNodeorFieldNode
-
listOf
public static <TNode> java.util.List<ElementNode<TNode>> listOf(org.objectweb.asm.tree.ClassNode owner, java.util.List<TNode> list)
Convert the supplied list of nodes to a list of wrapped ElementNodes- Type Parameters:
TNode- Node type- Parameters:
owner- Owner of the supplied nodes, can be nulllist- List of nodes- Returns:
- List of wrapped nodes
-
fieldList
public static java.util.List<ElementNode<org.objectweb.asm.tree.FieldNode>> fieldList(org.objectweb.asm.tree.ClassNode owner)
Get a list of wrapped ElementNodes for the fields of the supplied owner class- Parameters:
owner- Class to get fields, must not be null- Returns:
- List of wrapped nodes
-
methodList
public static java.util.List<ElementNode<org.objectweb.asm.tree.MethodNode>> methodList(org.objectweb.asm.tree.ClassNode owner)
Get a list of wrapped ElementNodes for the methods of the supplied owner class- Parameters:
owner- Class to get methods, must not be null- Returns:
- List of wrapped nodes
-
insnList
public static java.lang.Iterable<ElementNode<org.objectweb.asm.tree.AbstractInsnNode>> insnList(org.objectweb.asm.tree.InsnList insns)
Get a wrapped version of the supplied insn list which returns element nodes for each (supported) instruction (FieldInsnNode, MethodInsnNode and InvokeDynamicInsnNode).- Parameters:
insns- Insn list to wrap- Returns:
- Wrapper for insn list
-
dynamicInsnList
public static java.lang.Iterable<ElementNode<org.objectweb.asm.tree.AbstractInsnNode>> dynamicInsnList(org.objectweb.asm.tree.InsnList insns)
Get a wrapped version of the supplied insn list which returns element nodes for every INVOKEDYNAMIC instruction only- Parameters:
insns- Insn list to wrap- Returns:
- Wrapper for insn list
-
-