com.android.dx.dex.file
Class AnnotationsDirectoryItem

java.lang.Object
  extended by com.android.dx.dex.file.Item
      extended by com.android.dx.dex.file.OffsettedItem
          extended by com.android.dx.dex.file.AnnotationsDirectoryItem
All Implemented Interfaces:
Comparable<OffsettedItem>

public final class AnnotationsDirectoryItem
extends OffsettedItem

Per-class directory of annotations.


Constructor Summary
AnnotationsDirectoryItem()
          Constructs an empty instance.
 
Method Summary
 void addContents(DexFile file)
          Populates a DexFile with items from within this instance.
 void addFieldAnnotations(CstFieldRef field, Annotations annotations)
          Adds a field annotations item to this instance.
 void addMethodAnnotations(CstMethodRef method, Annotations annotations)
          Adds a method annotations item to this instance.
 void addParameterAnnotations(CstMethodRef method, AnnotationsList list)
          Adds a parameter annotations item to this instance.
 int compareTo0(OffsettedItem other)
          Compares this instance to another which is guaranteed to be of the same class.
 Annotations getMethodAnnotations(CstMethodRef method)
          Gets the method annotations for a given method, if any.
 AnnotationsList getParameterAnnotations(CstMethodRef method)
          Gets the parameter annotations for a given method, if any.
 int hashCode()
          
 boolean isEmpty()
          Returns whether this item is empty (has no contents).
 boolean isInternable()
          Returns whether this item is a candidate for interning.
 ItemType itemType()
          Returns the item type for this instance.
protected  void place0(Section addedTo, int offset)
          Does additional work required when placing an instance.
 void setClassAnnotations(Annotations annotations)
          Sets the direct annotations on this instance.
 String toHuman()
          Gets a short human-readable string representing this instance.
protected  void writeTo0(DexFile file, AnnotatedOutput out)
          Performs the actual write of the contents of this instance to the given data section.
 
Methods inherited from class com.android.dx.dex.file.OffsettedItem
compareTo, equals, getAbsoluteOffset, getAbsoluteOffsetOr0, getAlignment, getRelativeOffset, offsetString, place, setWriteSize, writeSize, writeTo
 
Methods inherited from class com.android.dx.dex.file.Item
typeName
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

AnnotationsDirectoryItem

public AnnotationsDirectoryItem()
Constructs an empty instance.

Method Detail

itemType

public ItemType itemType()
Returns the item type for this instance.

Specified by:
itemType in class Item
Returns:
non-null; the item type

isEmpty

public boolean isEmpty()
Returns whether this item is empty (has no contents).

Returns:
true if this item is empty, or false if not

isInternable

public boolean isInternable()
Returns whether this item is a candidate for interning. The only interning candidates are ones that only have a non-null set of class annotations, with no other lists.

Returns:
true if this is an interning candidate, or false if not

hashCode

public int hashCode()

Overrides:
hashCode in class Object

compareTo0

public int compareTo0(OffsettedItem other)
Compares this instance to another which is guaranteed to be of the same class. The default implementation of this method is to throw an exception (unsupported operation). If a particular class needs to actually sort, then it should override this method.

Note:: This throws an exception if this item is not internable.

Overrides:
compareTo0 in class OffsettedItem
Parameters:
other - non-null; instance to compare to
Returns:
-1, 0, or 1, depending on the sort order of this instance and the other
See Also:
isInternable()

setClassAnnotations

public void setClassAnnotations(Annotations annotations)
Sets the direct annotations on this instance. These are annotations made on the class, per se, as opposed to on one of its members. It is only valid to call this method at most once per instance.

Parameters:
annotations - non-null; annotations to set for this class

addFieldAnnotations

public void addFieldAnnotations(CstFieldRef field,
                                Annotations annotations)
Adds a field annotations item to this instance.

Parameters:
field - non-null; field in question
annotations - non-null; associated annotations to add

addMethodAnnotations

public void addMethodAnnotations(CstMethodRef method,
                                 Annotations annotations)
Adds a method annotations item to this instance.

Parameters:
method - non-null; method in question
annotations - non-null; associated annotations to add

addParameterAnnotations

public void addParameterAnnotations(CstMethodRef method,
                                    AnnotationsList list)
Adds a parameter annotations item to this instance.

Parameters:
method - non-null; method in question
list - non-null; associated list of annotation sets to add

getMethodAnnotations

public Annotations getMethodAnnotations(CstMethodRef method)
Gets the method annotations for a given method, if any. This is meant for use by debugging / dumping code.

Parameters:
method - non-null; the method
Returns:
null-ok; the method annotations, if any

getParameterAnnotations

public AnnotationsList getParameterAnnotations(CstMethodRef method)
Gets the parameter annotations for a given method, if any. This is meant for use by debugging / dumping code.

Parameters:
method - non-null; the method
Returns:
null-ok; the parameter annotations, if any

addContents

public void addContents(DexFile file)
Populates a DexFile with items from within this instance. This will not add an item to the file for this instance itself (which should have been done by whatever refers to this instance).

Note: Subclasses must override this to do something appropriate.

Specified by:
addContents in class Item
Parameters:
file - non-null; the file to populate

toHuman

public String toHuman()
Gets a short human-readable string representing this instance.

Specified by:
toHuman in class OffsettedItem
Returns:
non-null; the human form

place0

protected void place0(Section addedTo,
                      int offset)
Does additional work required when placing an instance. The default implementation of this method is a no-op. If a particular class needs to do something special, then it should override this method. In particular, if this instance did not know its write size up-front, then this method is responsible for setting it.

Overrides:
place0 in class OffsettedItem
Parameters:
addedTo - non-null; the section this instance has been added to
offset - >= 0; the offset from the start of the section where this instance was placed

writeTo0

protected void writeTo0(DexFile file,
                        AnnotatedOutput out)
Performs the actual write of the contents of this instance to the given data section. This is called by OffsettedItem.writeTo(com.android.dx.dex.file.DexFile, com.android.dx.util.AnnotatedOutput), which will have taken care of ensuring alignment.

Specified by:
writeTo0 in class OffsettedItem
Parameters:
file - non-null; the file to use for reference
out - non-null; where to write to


Copyright © 2013. All Rights Reserved.