Class MemberInfo
java.lang.Object
org.spongepowered.asm.mixin.injection.struct.MemberInfo
- All Implemented Interfaces:
ITargetSelector,ITargetSelectorByName,ITargetSelectorConstructor,ITargetSelectorRemappable
public final class MemberInfo extends java.lang.Object implements ITargetSelectorRemappable, ITargetSelectorConstructor
Target selector, also used as a general-purpose information bundle about a
member (method or field) parsed from a String token in another annotation,
this is used where target members need to be specified as Strings in order to
parse the String representation to something useful. See
ITargetSelector for other supported selector types.
Some examples:
// references a method or field called func_1234_a, if there are multiple // members with the same signature, matches the first occurrence func_1234_a // references a method or field called func_1234_a, if there are multiple // members with the same signature, matches all occurrences func_1234_a* // references a method called func_1234_a which takes 3 ints and returns // a bool func_1234_a(III)Z // references a field called field_5678_z which is a String field_5678_z:Ljava/lang/String; // references a ctor which takes a single String argument <init>(Ljava/lang/String;)V // references a method called func_1234_a in class foo.bar.Baz Lfoo/bar/Baz;func_1234_a // references a field called field_5678_z in class com.example.Dave Lcom/example/Dave;field_5678_z // references a method called func_1234_a in class foo.bar.Baz which takes // three doubles and returns void Lfoo/bar/Baz;func_1234_a(DDD)V // alternate syntax for the same foo.bar.Baz.func_1234_a(DDD)V
-
Constructor Summary
Constructors Constructor Description MemberInfo(java.lang.String name, boolean matchAll)ctorMemberInfo(java.lang.String name, java.lang.String owner, boolean matchAll)ctorMemberInfo(java.lang.String name, java.lang.String owner, java.lang.String desc)ctorMemberInfo(java.lang.String name, java.lang.String owner, java.lang.String desc, boolean matchAll)ctorMemberInfo(java.lang.String name, java.lang.String owner, java.lang.String desc, boolean matchAll, java.lang.String unparsed)ctorMemberInfo(org.objectweb.asm.tree.AbstractInsnNode insn)Initialise a MemberInfo using the supplied insn which must be an instance of MethodInsnNode or FieldInsnNode.MemberInfo(IMapping<?> mapping)Initialise a MemberInfo using the supplied mapping object -
Method Summary
Modifier and Type Method Description MappingFieldasFieldMapping()Returns this MemberInfo as a mapping fieldIMapping<?>asMapping()Returns this MemberInfo as aMappingFieldorMappingMethodMappingMethodasMethodMapping()Returns this MemberInfo as a mapping methodITargetSelectorattach(IMixinContext context)Attach this selector to the specified context.ITargetSelectorconfigure(java.lang.String... args)Configure and return a modified version of this selector by consuming the supplied arguments.booleanequals(java.lang.Object obj)static MemberInfofromMapping(IMapping<?> mapping)Return the supplied mapping parsed as a MemberInfojava.lang.StringgetDesc()Get the member descriptor, can be nullintgetMatchCount()Number of candidates which this selector should matchjava.lang.StringgetName()Get the member name, can be nulljava.lang.StringgetOwner()Get the member owner, can be nullinthashCode()booleanisClassInitialiser()Get whether this member represents a class initialiserbooleanisConstructor()Get whether this member represents a constructorbooleanisField()Get whether this MemberInfo is definitely a field, the output of this method is undefined ifisFullyQualified()returns false.booleanisFullyQualified()Get whether this reference is fully qualifiedbooleanisInitialiser()Get whether this member represents a constructor or class initialiserMatchResultmatch(org.objectweb.asm.tree.AbstractInsnNode insn)Test whether this selector matches the supplied instruction node<TNode> MatchResultmatch(ElementNode<TNode> node)Test whether this selector matches the supplied element nodeMatchResultmatches(java.lang.String owner, java.lang.String name, java.lang.String desc)Test whether this selector matches the supplied values.ITargetSelectorRemappablemove(java.lang.String newOwner)Create a new version of this member with a different ownerITargetSelectornext()Get the next target selector in this path (or null if this selector is the last selector in the chain.static MemberInfoparse(java.lang.String input, IReferenceMapper refMapper, java.lang.String className)Parse a MemberInfo from a stringITargetSelectorRemappableremapUsing(MappingMethod srgMethod, boolean setOwner)Create a remapped version of this member using the supplied method datajava.lang.StringtoCtorDesc()Returns the constructor descriptor represented by this MemberInfo, returns null if no descriptor is present.java.lang.StringtoCtorType()Returns the constructor type represented by this MemberInfojava.lang.StringtoDescriptor()Returns this MemberInfo as a java-style descriptorjava.lang.StringtoSrg()Deprecated.use m.asMethodMapping().serialise() insteadjava.lang.StringtoString()ITargetSelectorRemappabletransform(java.lang.String newDesc)Create a new version of this member with a different descriptorMemberInfovalidate()Perform ultra-simple validation of the descriptor, checks that the parts of the descriptor are basically sane.Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
-
Constructor Details
-
MemberInfo
public MemberInfo(java.lang.String name, boolean matchAll)ctor- Parameters:
name- Member name, must not be nullmatchAll- true if this info should match all matching references, or only the first
-
MemberInfo
public MemberInfo(java.lang.String name, java.lang.String owner, boolean matchAll)ctor- Parameters:
name- Member name, must not be nullowner- Member owner, can be null otherwise must be in internal form without L;matchAll- true if this info should match all matching references, or only the first
-
MemberInfo
public MemberInfo(java.lang.String name, java.lang.String owner, java.lang.String desc)ctor- Parameters:
name- Member name, must not be nullowner- Member owner, can be null otherwise must be in internal form without L;desc- Member descriptor, can be null
-
MemberInfo
public MemberInfo(java.lang.String name, java.lang.String owner, java.lang.String desc, boolean matchAll)ctor- Parameters:
name- Member name, must not be nullowner- Member owner, can be null otherwise must be in internal form without L;desc- Member descriptor, can be nullmatchAll- True to match all matching members, not just the first
-
MemberInfo
public MemberInfo(java.lang.String name, java.lang.String owner, java.lang.String desc, boolean matchAll, java.lang.String unparsed)ctor- Parameters:
name- Member name, must not be nullowner- Member owner, can be null otherwise must be in internal form without L;desc- Member descriptor, can be nullmatchAll- True to match all matching members, not just the first
-
MemberInfo
public MemberInfo(org.objectweb.asm.tree.AbstractInsnNode insn)Initialise a MemberInfo using the supplied insn which must be an instance of MethodInsnNode or FieldInsnNode.- Parameters:
insn- instruction node to copy values from
-
MemberInfo
Initialise a MemberInfo using the supplied mapping object- Parameters:
mapping- Mapping object to copy values from
-
-
Method Details
-
next
Description copied from interface:ITargetSelectorGet the next target selector in this path (or null if this selector is the last selector in the chain. Called at recurse points in the subject in order to match against the child subject.- Specified by:
nextin interfaceITargetSelector
-
getOwner
public java.lang.String getOwner()Description copied from interface:ITargetSelectorByNameGet the member owner, can be null- Specified by:
getOwnerin interfaceITargetSelectorByName
-
getName
public java.lang.String getName()Description copied from interface:ITargetSelectorByNameGet the member name, can be null- Specified by:
getNamein interfaceITargetSelectorByName
-
getDesc
public java.lang.String getDesc()Description copied from interface:ITargetSelectorByNameGet the member descriptor, can be null- Specified by:
getDescin interfaceITargetSelectorByName
-
getMatchCount
public int getMatchCount()Description copied from interface:ITargetSelectorNumber of candidates which this selector should match- Specified by:
getMatchCountin interfaceITargetSelector
-
toString
public java.lang.String toString()- Overrides:
toStringin classjava.lang.Object
-
toSrg
@Deprecated public java.lang.String toSrg()Deprecated.use m.asMethodMapping().serialise() insteadReturn this MemberInfo as an SRG mapping- Returns:
- SRG representation of this MemberInfo
-
toDescriptor
public java.lang.String toDescriptor()Returns this MemberInfo as a java-style descriptor- Specified by:
toDescriptorin interfaceITargetSelectorByName
-
toCtorType
public java.lang.String toCtorType()Returns the constructor type represented by this MemberInfo- Specified by:
toCtorTypein interfaceITargetSelectorConstructor
-
toCtorDesc
public java.lang.String toCtorDesc()Returns the constructor descriptor represented by this MemberInfo, returns null if no descriptor is present.- Specified by:
toCtorDescin interfaceITargetSelectorConstructor
-
asMapping
Returns this MemberInfo as aMappingFieldorMappingMethod- Specified by:
asMappingin interfaceITargetSelectorRemappable
-
asMethodMapping
Returns this MemberInfo as a mapping method- Specified by:
asMethodMappingin interfaceITargetSelectorRemappable
-
asFieldMapping
Returns this MemberInfo as a mapping field- Specified by:
asFieldMappingin interfaceITargetSelectorRemappable
-
isFullyQualified
public boolean isFullyQualified()Description copied from interface:ITargetSelectorByNameGet whether this reference is fully qualified- Specified by:
isFullyQualifiedin interfaceITargetSelectorByName- Returns:
- true if all components of this reference are non-null
-
isField
public boolean isField()Get whether this MemberInfo is definitely a field, the output of this method is undefined ifisFullyQualified()returns false.- Specified by:
isFieldin interfaceITargetSelectorByName- Returns:
- true if this is definitely a field
-
isConstructor
public boolean isConstructor()Get whether this member represents a constructor- Specified by:
isConstructorin interfaceITargetSelectorByName- Returns:
- true if member name is <init>
-
isClassInitialiser
public boolean isClassInitialiser()Get whether this member represents a class initialiser- Specified by:
isClassInitialiserin interfaceITargetSelectorByName- Returns:
- true if member name is <clinit>
-
isInitialiser
public boolean isInitialiser()Get whether this member represents a constructor or class initialiser- Specified by:
isInitialiserin interfaceITargetSelectorByName- Returns:
- true if member name is <init> or <clinit>
-
validate
Perform ultra-simple validation of the descriptor, checks that the parts of the descriptor are basically sane.- Specified by:
validatein interfaceITargetSelector- Returns:
- fluent
- Throws:
InvalidMemberDescriptorException- if any validation check fails
-
match
Description copied from interface:ITargetSelectorTest whether this selector matches the supplied element node- Specified by:
matchin interfaceITargetSelector- Type Parameters:
TNode- node type- Parameters:
node- node node to test- Returns:
- true if this selector can match the supplied field
-
match
Description copied from interface:ITargetSelectorTest whether this selector matches the supplied instruction node- Specified by:
matchin interfaceITargetSelector- Parameters:
insn- instruction node to test- Returns:
- true if this selector can match the supplied instruction
-
matches
Description copied from interface:ITargetSelectorByNameTest whether this selector matches the supplied values. Null values are ignored.- Specified by:
matchesin interfaceITargetSelectorByName- Parameters:
owner- Owner to compare with, null to skipname- Name to compare with, null to skipdesc- Signature to compare with, null to skip- Returns:
- true if all non-null values in this reference match non-null arguments supplied to this method
-
equals
public boolean equals(java.lang.Object obj)- Overrides:
equalsin classjava.lang.Object
-
hashCode
public int hashCode()- Overrides:
hashCodein classjava.lang.Object
-
configure
Description copied from interface:ITargetSelectorConfigure and return a modified version of this selector by consuming the supplied arguments. Results from this method should be idempotent in terms of the configuration of the returned object, but do not have to necessarily return the same object if the callee already matches the supplied configuration, though this is generally the case.In other words, calling configure("foo") when this object is already configured according to "foo" may simply return this object, or might return an identically-configured copy.
- Specified by:
configurein interfaceITargetSelector- Parameters:
args- Configuration arguments- Returns:
- Configured selector, may return this selector if the specified condition is already satisfied
-
attach
Description copied from interface:ITargetSelectorAttach this selector to the specified context. Should return this selector unmodified if all is well, or a new selector to be used for further processing of the supplied context. If the supplied context is invalid, anInvalidSelectorExceptionis thrown.- Specified by:
attachin interfaceITargetSelector- Parameters:
context- Context to attach to- Returns:
- Attached selector
- Throws:
InvalidSelectorException
-
move
Create a new version of this member with a different owner- Specified by:
movein interfaceITargetSelectorRemappable- Parameters:
newOwner- New owner for this member
-
transform
Create a new version of this member with a different descriptor- Specified by:
transformin interfaceITargetSelectorRemappable- Parameters:
newDesc- New descriptor for this member
-
remapUsing
Create a remapped version of this member using the supplied method data- Specified by:
remapUsingin interfaceITargetSelectorRemappable- Parameters:
srgMethod- SRG method data to usesetOwner- True to set the owner as well as the name- Returns:
- New MethodInfo with remapped values
-
parse
public static MemberInfo parse(java.lang.String input, IReferenceMapper refMapper, java.lang.String className)Parse a MemberInfo from a string- Parameters:
input- String to parse MemberInfo fromrefMapper- Reference mapper to useclassName- Class context to use for remapping- Returns:
- parsed MemberInfo
-
fromMapping
Return the supplied mapping parsed as a MemberInfo- Parameters:
mapping- mapping to parse- Returns:
- new MemberInfo
-