public class LocalVariableDiscriminator
extends java.lang.Object
ModifyVariableInjector and its associated injection points.| Modifier and Type | Class and Description |
|---|---|
static class |
LocalVariableDiscriminator.Context
Discriminator context information, wraps all relevant information about
a target location for use when performing discrimination
|
| Constructor and Description |
|---|
LocalVariableDiscriminator(boolean argsOnly,
int ordinal,
int index,
java.util.Set<java.lang.String> names,
boolean print) |
| Modifier and Type | Method and Description |
|---|---|
int |
findLocal(LocalVariableDiscriminator.Context context)
Find a local variable for the specified context
|
int |
findLocal(org.objectweb.asm.Type returnType,
boolean argsOnly,
Target target,
org.objectweb.asm.tree.AbstractInsnNode node)
Find a matching local variable in the specified target
|
int |
getIndex()
Get the local variable absolute index
|
java.util.Set<java.lang.String> |
getNames()
Get valid names for consideration
|
int |
getOrdinal()
Get the local variable ordinal (nth variable of type)
|
boolean |
hasNames()
Returns true if names is not empty
|
boolean |
isArgsOnly()
True if this discriminator will examine only the target method args and
won't consider the rest of the LVT at the target location
|
protected boolean |
isImplicit(LocalVariableDiscriminator.Context context)
If the user specifies no values for ordinal, index or
names then we are considered to be operating in "implicit mode"
where only a single local variable of the specified type is expected to
exist.
|
static LocalVariableDiscriminator |
parse(org.objectweb.asm.tree.AnnotationNode annotation)
Parse a local variable discriminator from the supplied annotation
|
boolean |
printLVT()
True if the injector should print the LVT
|
public LocalVariableDiscriminator(boolean argsOnly,
int ordinal,
int index,
java.util.Set<java.lang.String> names,
boolean print)
argsOnly - true to only search within the method argumentsordinal - target variable ordinalindex - target variable indexnames - target variable namesprint - true to print lvtpublic boolean isArgsOnly()
public int getOrdinal()
public int getIndex()
public java.util.Set<java.lang.String> getNames()
public boolean hasNames()
public boolean printLVT()
protected boolean isImplicit(LocalVariableDiscriminator.Context context)
context - Target contextpublic int findLocal(org.objectweb.asm.Type returnType,
boolean argsOnly,
Target target,
org.objectweb.asm.tree.AbstractInsnNode node)
returnType - variable tyoeargsOnly - only match in the method argstarget - target methodnode - current instructionpublic int findLocal(LocalVariableDiscriminator.Context context)
context - search contextpublic static LocalVariableDiscriminator parse(org.objectweb.asm.tree.AnnotationNode annotation)
annotation - annotation to parse