Package serp.bytecode

# Class Local

java.lang.Object
serp.bytecode.Local

All Implemented Interfaces:
  `BCEntity`, `InstructionPtr`

Direct Known Subclasses:
  `LocalVariable`, `LocalVariableType`

public abstract class Local extends Object implements BCEntity, InstructionPtr
A local variable or local variable type.

Author:
  Abe White, Sakir Murat Cengiz

## Method Summary

Modifier and Type
Method
Description
`ClassLoader`
`getClassLoader()`
Return the class loader to use when loading related classes.
`Code`
`getCode()`
Returns the Code block that owns the Instruction(s) this InstructionPtr points to.
`Instruction`
`getEnd()`
The last `Instruction` for which this local is in scope.
`int`
`getLength()`
Get the number of bytes for which this local has a value in the code byte array.
`int`
`getLocal()`
Get the local variable index of the current frame for this local.
`String`
`getName()`
Return the name of this local, or null if unset.
`int`
`getNameIndex()`
Return the `ConstantPool` index of the `UTF8Entry` that describes the name of this local.
`int`
`getParam()`
Return the parameter that this local corresponds to, or -1 if none.
`ConstantPool`
`getPool()`
Return the constant pool of the current class.
`Project`
`getProject()`
Return the project of the current class.
`Instruction`
`getStart()`
Return the instruction marking the beginning of this local.
`int`
`getStartPc()`
Return the index into the code byte array at which this local starts.
`LocalTable`
`getTable()`
The owning table.
`int`
`getTypeIndex()`
Return the `ConstantPool` index of the `UTF8Entry` that describes this local.
`String`
`getTypeName()`
Return the full name of the local's type, or null if unset.
`boolean`
`isValid()`
Return false if this entity has been removed from its parent; in this case the results of any operations on the entity are undefined.
`void`
`replaceTarget(Instruction oldTarget, Instruction newTarget)`
Replace the given old, likely invalid, target with a new target.
`void`
`setEnd(Instruction end)`
Set the last `Instruction` for which this local is in scope.
`void`
`setLength(int length)`
Set the number of bytes for which this local has a value in the code byte array.
`void`
`setLocal(int index)`
Set the local variable index of the current frame for this local.
`void`
`setName(String name)`
Set the name of this inner local.
`void`
`setNameIndex(int nameIndex)`
Set the `ConstantPool` index of the `UTF8Entry` that describes the name of this local.
`void`
`setParam(int param)`
Set the method parameter that this local corresponds to.
`void`
`setStart(Instruction instruction)`
Set the `Instruction` marking the beginning this local.
`void`
`setStartPc(int startPc)`
Set the index into the code byte array at which this local starts.
`void`
`setType(String type)`
Set the type of this local.
`void`
`setTypeIndex(int index)`
Set the `ConstantPool` index of the `UTF8Entry` that describes this local.
`void`
`updateTargets()`
Use the byte indexes read from the class file to calculate and set references to the target instruction(s) for this ptr.

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Method Details

### getTable

public LocalTable getTable()
The owning table.

### getLocal

public int getLocal()
Get the local variable index of the current frame for this local.

### setLocal

public void setLocal(int index)
Set the local variable index of the current frame for this local.

### getParam

public int getParam()
Return the parameter that this local corresponds to, or -1 if none.

### setParam

public void setParam(int param)
Set the method parameter that this local corresponds to.

### getStartPc

public int getStartPc()
Return the index into the code byte array at which this local starts.

### getStart

public Instruction getStart()
Return the instruction marking the beginning of this local.

### setStartPc

public void setStartPc(int startPc)
Set the index into the code byte array at which this local starts.

### setStart

public void setStart(Instruction instruction)
Set the `Instruction` marking the beginning this local. The instruction must already be a part of the method. WARNING: if this instruction is deleted, the results are undefined.

### getEnd

public Instruction getEnd()
The last `Instruction` for which this local is in scope.

### getLength

public int getLength()
Get the number of bytes for which this local has a value in the code byte array.

### setEnd

public void setEnd(Instruction end)
Set the last `Instruction` for which this local is in scope. The instruction must already be a part of the method. WARNING: if this instruction is deleted, the results are undefined.

### setLength

public void setLength(int length)
Set the number of bytes for which this local has a value in the code byte array.

### updateTargets

public void updateTargets()
Description copied from interface: `InstructionPtr`
Use the byte indexes read from the class file to calculate and set references to the target instruction(s) for this ptr. This method will be called after the byte code has been read in for the first time and before it is written after modification.

Specified by:
  `updateTargets` in interface `InstructionPtr`

### replaceTarget

public void replaceTarget(Instruction oldTarget, Instruction newTarget)
Description copied from interface: `InstructionPtr`
Replace the given old, likely invalid, target with a new target. The new target Instruction is guaranteed to be in the same code block as this InstructionPtr.

Specified by:
  `replaceTarget` in interface `InstructionPtr`

### getNameIndex

public int getNameIndex()
Return the `ConstantPool` index of the `UTF8Entry` that describes the name of this local. Defaults to 0.

### setNameIndex

public void setNameIndex(int nameIndex)
Set the `ConstantPool` index of the `UTF8Entry` that describes the name of this local.

### getName

public String getName()
Return the name of this local, or null if unset.

### setName

public void setName(String name)
Set the name of this inner local.

### getTypeIndex

public int getTypeIndex()
Return the `ConstantPool` index of the `UTF8Entry` that describes this local. Defaults to 0.

### setTypeIndex

public void setTypeIndex(int index)
Set the `ConstantPool` index of the `UTF8Entry` that describes this local.

### getTypeName

public String getTypeName()
Return the full name of the local's type, or null if unset.

### setType

public void setType(String type)
Set the type of this local.

### getProject

public Project getProject()
Description copied from interface: `BCEntity`
Return the project of the current class.

Specified by:
  `getProject` in interface `BCEntity`

### getPool

public ConstantPool getPool()
Description copied from interface: `BCEntity`
Return the constant pool of the current class.

Specified by:
  `getPool` in interface `BCEntity`

### getClassLoader

public ClassLoader getClassLoader()
Description copied from interface: `BCEntity`
Return the class loader to use when loading related classes.

Specified by:
  `getClassLoader` in interface `BCEntity`

### isValid

public boolean isValid()
Description copied from interface: `BCEntity`
Return false if this entity has been removed from its parent; in this case the results of any operations on the entity are undefined.

Specified by:
  `isValid` in interface `BCEntity`

### getCode

public Code getCode()
Description copied from interface: `InstructionPtr`
Returns the Code block that owns the Instruction(s) this InstructionPtr points to.

Specified by:
  `getCode` in interface `InstructionPtr`