Class AnnotationsDirectoryItem

All Implemented Interfaces:
Comparable<OffsettedItem>

public final class AnnotationsDirectoryItem extends OffsettedItem
Per-class directory of annotations.
  • Constructor Details

    • AnnotationsDirectoryItem

      public AnnotationsDirectoryItem()
      Constructs an empty instance.
  • Method Details

    • 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:
    • setClassAnnotations

      public void setClassAnnotations(Annotations annotations, DexFile dexFile)
      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
      dexFile - non-null; dex output
    • addFieldAnnotations

      public void addFieldAnnotations(CstFieldRef field, Annotations annotations, DexFile dexFile)
      Adds a field annotations item to this instance.
      Parameters:
      field - non-null; field in question
      annotations - non-null; associated annotations to add
      dexFile - non-null; dex output
    • addMethodAnnotations

      public void addMethodAnnotations(CstMethodRef method, Annotations annotations, DexFile dexFile)
      Adds a method annotations item to this instance.
      Parameters:
      method - non-null; method in question
      annotations - non-null; associated annotations to add
      dexFile - non-null; dex output
    • addParameterAnnotations

      public void addParameterAnnotations(CstMethodRef method, AnnotationsList list, DexFile dexFile)
      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
      dexFile - non-null; dex output
    • 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