FileDocCategorySizeDatePackage
LocalVariableTable.javaAPI DocJava SE 5 API7096Fri Aug 26 14:55:18 BST 2005com.sun.org.apache.bcel.internal.classfile

LocalVariableTable

public class LocalVariableTable extends Attribute
This class represents colection of local variables in a method. This attribute is contained in the Code attribute.
version
$Id: LocalVariableTable.java,v 1.1.1.1 2001/10/29 20:00:02 jvanzyl Exp $
author
M. Dahm
see
Code
see
LocalVariable

Fields Summary
private int
local_variable_table_length
private LocalVariable[]
local_variable_table
Constructors Summary
public LocalVariableTable(LocalVariableTable c)
Initialize from another object. Note that both objects use the same references (shallow copy). Use copy() for a physical copy.

    this(c.getNameIndex(), c.getLength(), c.getLocalVariableTable(),
	 c.getConstantPool());
  
public LocalVariableTable(int name_index, int length, LocalVariable[] local_variable_table, ConstantPool constant_pool)

param
name_index Index in constant pool to `LocalVariableTable'
param
length Content length in bytes
param
local_variable_table Table of local variables
param
constant_pool Array of constants

    super(Constants.ATTR_LOCAL_VARIABLE_TABLE, name_index, length, constant_pool);
    setLocalVariableTable(local_variable_table);
  
LocalVariableTable(int name_index, int length, DataInputStream file, ConstantPool constant_pool)
Construct object from file stream.

param
name_index Index in constant pool
param
length Content length in bytes
param
file Input stream
param
constant_pool Array of constants
throw
IOException

    this(name_index, length, (LocalVariable[])null, constant_pool);

    local_variable_table_length = (file.readUnsignedShort());
    local_variable_table = new LocalVariable[local_variable_table_length];

    for(int i=0; i < local_variable_table_length; i++)
      local_variable_table[i] = new LocalVariable(file, constant_pool);
  
Methods Summary
public voidaccept(com.sun.org.apache.bcel.internal.classfile.Visitor v)
Called by objects that are traversing the nodes of the tree implicitely defined by the contents of a Java class. I.e., the hierarchy of methods, fields, attributes, etc. spawns a tree of objects.

param
v Visitor object

    v.visitLocalVariableTable(this);
  
public com.sun.org.apache.bcel.internal.classfile.Attributecopy(com.sun.org.apache.bcel.internal.classfile.ConstantPool constant_pool)

return
deep copy of this attribute

    LocalVariableTable c = (LocalVariableTable)clone();

    c.local_variable_table = new LocalVariable[local_variable_table_length];
    for(int i=0; i < local_variable_table_length; i++)
      c.local_variable_table[i] = local_variable_table[i].copy();

    c.constant_pool = constant_pool;
    return c;
  
public final voiddump(java.io.DataOutputStream file)
Dump local variable table attribute to file stream in binary format.

param
file Output file stream
throw
IOException

    super.dump(file);
    file.writeShort(local_variable_table_length);
    for(int i=0; i < local_variable_table_length; i++)
      local_variable_table[i].dump(file);
  
public final com.sun.org.apache.bcel.internal.classfile.LocalVariablegetLocalVariable(int index)

return
first matching variable using index

    for(int i=0; i < local_variable_table_length; i++)
      if(local_variable_table[i].getIndex() == index)
	return local_variable_table[i];

    return null;
  
public final com.sun.org.apache.bcel.internal.classfile.LocalVariable[]getLocalVariableTable()

return
Array of local variables of method.

    return local_variable_table;
  
public final intgetTableLength()

 return local_variable_table_length; 
public final voidsetLocalVariableTable(com.sun.org.apache.bcel.internal.classfile.LocalVariable[] local_variable_table)

    this.local_variable_table = local_variable_table;
    local_variable_table_length = (local_variable_table == null)? 0 :
      local_variable_table.length;
  
public final java.lang.StringtoString()

return
String representation.

    StringBuffer buf = new StringBuffer("");

    for(int i=0; i < local_variable_table_length; i++) {
      buf.append(local_variable_table[i].toString());

      if(i < local_variable_table_length - 1)
	buf.append('\n");
    }

    return buf.toString();