TechTrader Bytecode Toolkit

com.techtrader.modules.tools.bytecode
Class InnerClassesAttribute

java.lang.Object
  |
  +--com.techtrader.modules.tools.bytecode.BCEntity
        |
        +--com.techtrader.modules.tools.bytecode.Attribute
              |
              +--com.techtrader.modules.tools.bytecode.InnerClassesAttribute

public class InnerClassesAttribute
extends Attribute

Attribute describing the inner classes of a .class file. Note: for methods that take in the name of the inner class, this refers to the short name it is referred to be within the owning class, not the full name. For anonymous inner classes, use the empty String. TODO: Import and copy methods are broken.

Author:
Abe White

Fields inherited from class com.techtrader.modules.tools.bytecode.Attribute
_nameIndex, _owner
 
Constructor Summary
InnerClassesAttribute(int nameIndex, BCEntity owner)
          Protected constructor.
 
Method Summary
 void acceptVisit(BCVisitor visit)
          Accept a visit from a BCVisitor, calling the appropriate methods to notify the visitor that it has entered this entity, and to provide it with the proper callbacks for each sub-entity owned by this object.
 InnerClass addInnerClass()
          Add an inner class.
 InnerClass addInnerClass(String name)
          Add an inner class with the given name.
 void clearInnerClasses()
          Clear all inner classes from this entity.
protected  void copy(Attribute other)
          Copy the information from the given attribute to this one.
 InnerClass getInnerClass(String name)
          Return the inner class with the given name.
 InnerClass[] getInnerClasses()
          Get all the inner classes owned by this entity.
 InnerClass[] getInnerClasses(String name)
          Returns all inner classes with the given name.
 int getLength()
          Return the length of the .class representation of this attribute, in bytes.
 InnerClass importInnerClass(InnerClass inner)
          Import an inner class from another entity, or make a copy of one on this entity.
 void importInnerClasses(InnerClassesAttribute other)
          Import all inner classes from another entity.
protected  void readData(DataInput in, int length)
          Should be overridden by subclasses to read their internal data from the given stream, up to length bytes, excluding the name index.
 boolean removeInnerClass(InnerClass innerClass)
          Remove the given inner class.
 boolean removeInnerClass(String name)
          Remove all inner classes with the given name from the list.
protected  void writeData(DataOutput out, int length)
          Should be overridden by subclasses to write their internal data to the given stream, up to length bytes, excluding the name index.
 
Methods inherited from class com.techtrader.modules.tools.bytecode.Attribute
createAttribute, getName, getNameIndex, getOwner, getPool, invalidate
 
Methods inherited from class com.techtrader.modules.tools.bytecode.BCEntity
addAttribute, clearAttributes, getAttribute, getAttributes, getAttributes, importAttribute, importAttributes, readAttributes, removeAttribute, removeAttribute, visitAttributes, writeAttributes
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

InnerClassesAttribute

public InnerClassesAttribute(int nameIndex,
                             BCEntity owner)
Protected constructor.
Method Detail

getInnerClasses

public InnerClass[] getInnerClasses()
Get all the inner classes owned by this entity.
Returns:
all owned inner classes, or empty array if none

getInnerClass

public InnerClass getInnerClass(String name)
Return the inner class with the given name. If multiple inner classes share the name, which is returned is undefined.

getInnerClasses

public InnerClass[] getInnerClasses(String name)
Returns all inner classes with the given name.
Returns:
the matching inner classes, or empty array if none

importInnerClass

public InnerClass importInnerClass(InnerClass inner)
Import an inner class from another entity, or make a copy of one on this entity.

importInnerClasses

public void importInnerClasses(InnerClassesAttribute other)
Import all inner classes from another entity.

addInnerClass

public InnerClass addInnerClass()
Add an inner class.

addInnerClass

public InnerClass addInnerClass(String name)
Add an inner class with the given name.

clearInnerClasses

public void clearInnerClasses()
Clear all inner classes from this entity.

removeInnerClass

public boolean removeInnerClass(String name)
Remove all inner classes with the given name from the list.
Returns:
true if an inner class was removed, false otherwise

removeInnerClass

public boolean removeInnerClass(InnerClass innerClass)
Remove the given inner class. After being removed, the given InnerClass is invalid, and the result of any operations on it are undefined.
Returns:
true if the inner class was removed, false otherwise

getLength

public int getLength()
Description copied from class: Attribute
Return the length of the .class representation of this attribute, in bytes.
Overrides:
getLength in class Attribute

copy

protected void copy(Attribute other)
Description copied from class: Attribute
Copy the information from the given attribute to this one.
Overrides:
copy in class Attribute

readData

protected void readData(DataInput in,
                        int length)
                 throws IOException
Description copied from class: Attribute
Should be overridden by subclasses to read their internal data from the given stream, up to length bytes, excluding the name index.
Overrides:
readData in class Attribute

writeData

protected void writeData(DataOutput out,
                         int length)
                  throws IOException
Description copied from class: Attribute
Should be overridden by subclasses to write their internal data to the given stream, up to length bytes, excluding the name index.
Overrides:
writeData in class Attribute

acceptVisit

public void acceptVisit(BCVisitor visit)
Description copied from interface: VisitAcceptor
Accept a visit from a BCVisitor, calling the appropriate methods to notify the visitor that it has entered this entity, and to provide it with the proper callbacks for each sub-entity owned by this object.

TechTrader Bytecode Toolkit