Class StoreInjectionPointSelector
- java.lang.Object
-
- org.stianloader.micromixin.transform.api.InjectionPointSelector
-
- org.stianloader.micromixin.transform.internal.selectors.inject.StoreInjectionPointSelector
-
- All Implemented Interfaces:
InjectionPointSelectorFactory.InjectionPointSelectorProvider
public class StoreInjectionPointSelector extends InjectionPointSelector implements InjectionPointSelectorFactory.InjectionPointSelectorProvider
-
-
Field Summary
Fields Modifier and Type Field Description static StoreInjectionPointSelectorINSTANCE-
Fields inherited from class org.stianloader.micromixin.transform.api.InjectionPointSelector
allNames, fullyQualifiedName
-
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description InjectionPointSelectorcreate(java.util.List<java.lang.String> args, InjectionPointConstraint[] constraints)Create anInjectionPointSelectorthat selects the instructions with the provided constraints.java.util.Set<java.lang.String>getAllNames()org.objectweb.asm.tree.AbstractInsnNodegetFirstInsn(org.objectweb.asm.tree.MethodNode method, SlicedInjectionPointSelector from, SlicedInjectionPointSelector to, SimpleRemapper remapper, java.lang.StringBuilder sharedBuilder)Obtains the firstAbstractInsnNodethat corresponds to the first applicable entrypoint within the provided method as defined by thisInjectionPointSelector.java.lang.StringgetFullyQualifiedName()java.util.Collection<? extends org.objectweb.asm.tree.AbstractInsnNode>getMatchedInstructions(org.objectweb.asm.tree.MethodNode method, SlicedInjectionPointSelector from, SlicedInjectionPointSelector to, SimpleRemapper remapper, java.lang.StringBuilder sharedBuilder)Obtains theAbstractInsnNodesthat correspond to every applicable entrypoint within the provided method as defined by thisInjectionPointSelector.booleansupportsRedirect()WARNING WARNING WARNING The method was deprecated for removal in the 0.6.X lifecycle and will get removed at an unspecified point in time (this might fall within the 0.7.X lifecycle!).
-
-
-
Field Detail
-
INSTANCE
@NotNull public static final StoreInjectionPointSelector INSTANCE
-
-
Method Detail
-
getFirstInsn
@Nullable public org.objectweb.asm.tree.AbstractInsnNode getFirstInsn(@NotNull org.objectweb.asm.tree.MethodNode method, @Nullable SlicedInjectionPointSelector from, @Nullable SlicedInjectionPointSelector to, @NotNull SimpleRemapper remapper, @NotNull java.lang.StringBuilder sharedBuilder)Description copied from class:InjectionPointSelectorObtains the firstAbstractInsnNodethat corresponds to the first applicable entrypoint within the provided method as defined by thisInjectionPointSelector. TheAbstractInsnNodemay not be virtual, that is it may not have anopcodevalue of -1.Implementations of this method are trusted to not go out of bounds when it comes to the slices. Failure to do so could have nasty consequences for user behaviour as micromixin-transformer or any other caller is not guaranteed to verify the location of the matched instruction (but inversely it is not guaranteed that such as check won't be introduced in the future).
- Specified by:
getFirstInsnin classInjectionPointSelector- Parameters:
method- The method to find the entrypoints in.from- TheInjectionPointSelectorthat represents the start of the slice where the injection point should be selected from. May be null to represent HEAD (start of method).to- TheInjectionPointSelectorthat represents the end of the slice where the injection point should be selected from. May be null to represent TAIL (end of method).remapper- The remapper instance to make use of. This is used to remap any references of the mixin class to the target class when applying injection point constraints.sharedBuilder- SharedStringBuilderinstance to reduceStringBuilderallocations.- Returns:
- The first matched instruction, or null if no instructions match.
-
getMatchedInstructions
@NotNull public java.util.Collection<? extends org.objectweb.asm.tree.AbstractInsnNode> getMatchedInstructions(@NotNull org.objectweb.asm.tree.MethodNode method, @Nullable SlicedInjectionPointSelector from, @Nullable SlicedInjectionPointSelector to, @NotNull SimpleRemapper remapper, @NotNull java.lang.StringBuilder sharedBuilder)Description copied from class:InjectionPointSelectorObtains theAbstractInsnNodesthat correspond to every applicable entrypoint within the provided method as defined by thisInjectionPointSelector.Implementations of this method are trusted to not go out of bounds when it comes to the slices. Failure to do so could have nasty consequences for user behaviour as micromixin-transformer or any other caller is not guaranteed to verify the location of the matched instructions (but inversely it is not guaranteed that such as check won't be introduced in the future).
- Specified by:
getMatchedInstructionsin classInjectionPointSelector- Parameters:
method- The method to find the entrypoints in.from- TheInjectionPointSelectorthat represents the start of the slice where the injection point should be selected from. May be null to represent HEAD (start of method).to- TheInjectionPointSelectorthat represents the end of the slice where the injection point should be selected from. May be null to represent TAIL (end of method).remapper- The remapper instance to make use of. This is used to remap any references of the mixin class to the target class when applying injection point constraints.sharedBuilder- SharedStringBuilderinstance to reduceStringBuilderallocations.- Returns:
- The selected instruction nodes that correspond to this entry point.
-
supportsRedirect
public boolean supportsRedirect()
Description copied from class:InjectionPointSelectorWARNING WARNING WARNING The method was deprecated for removal in the 0.6.X lifecycle and will get removed at an unspecified point in time (this might fall within the 0.7.X lifecycle!). This method is no longer considered to be part of the public API.Checks whether the injection point can be used in conjunction with the Redirect-annotation. Generally should only be true if this injection point selector can select method instruction nodes.
- Overrides:
supportsRedirectin classInjectionPointSelector- Returns:
- True if usable in redirects, false otherwise.
-
getFullyQualifiedName
@NotNull public java.lang.String getFullyQualifiedName()
- Specified by:
getFullyQualifiedNamein interfaceInjectionPointSelectorFactory.InjectionPointSelectorProvider
-
getAllNames
@NotNull public java.util.Set<java.lang.String> getAllNames()
- Specified by:
getAllNamesin interfaceInjectionPointSelectorFactory.InjectionPointSelectorProvider
-
create
@NotNull @AvailableSince("0.7.0-a20241008") @Contract(pure=true) public InjectionPointSelector create(@Nullable java.util.List<java.lang.String> args, @NotNull InjectionPointConstraint[] constraints)Description copied from interface:InjectionPointSelectorFactory.InjectionPointSelectorProviderCreate anInjectionPointSelectorthat selects the instructions with the provided constraints. The selector is optionally further constrained by the arguments defined in the@Atannotation.- Specified by:
createin interfaceInjectionPointSelectorFactory.InjectionPointSelectorProvider- Parameters:
args- The arguments defined in the@Atannotation, null if no arguments were defined. May be empty.constraints- The constraints defined in the@Atannotation. Any instruction matched by the selector must match all constraints. These constraints can limit the selected opcodes, constrain onMethodInsnNode.nameand more.- Returns:
- The selector using the requested semantics.
-
-