java.lang.Object
kala.compress.harmony.unpack200.IcTuple

public class IcTuple extends Object
An IcTuple is the set of information that describes an inner class. C is the fully qualified class name
F is the flags
C2 is the outer class name, or null if it can be inferred from C
N is the inner class name, or null if it can be inferred from C
  • Field Details

    • EMPTY_STRING_ARRAY

      private static final String[] EMPTY_STRING_ARRAY
    • NESTED_CLASS_FLAG

      public static final int NESTED_CLASS_FLAG
      See Also:
    • EMPTY_ARRAY

      static final IcTuple[] EMPTY_ARRAY
    • cIndex

      private final int cIndex
    • c2Index

      private final int c2Index
    • nIndex

      private final int nIndex
    • tIndex

      private final int tIndex
    • C

      protected String C
    • F

      protected int F
    • C2

      protected String C2
    • N

      protected String N
    • predictSimple

      private boolean predictSimple
    • predictOuter

      private boolean predictOuter
    • cachedOuterClassString

      private String cachedOuterClassString
    • cachedSimpleClassName

      private String cachedSimpleClassName
    • initialized

      private boolean initialized
    • anonymous

      private boolean anonymous
    • outerIsAnonymous

      private boolean outerIsAnonymous
    • member

      private boolean member
    • cachedOuterClassIndex

      private int cachedOuterClassIndex
    • cachedSimpleClassNameIndex

      private int cachedSimpleClassNameIndex
    • hashCodeComputed

      private boolean hashCodeComputed
    • cachedHashCode

      private int cachedHashCode
  • Constructor Details

    • IcTuple

      public IcTuple(String C, int F, String C2, String N, int cIndex, int c2Index, int nIndex, int tIndex)
      Parameters:
      C - TODO
      F - TODO
      C2 - TODO
      N - TODO
      cIndex - the index of C in cpClass
      c2Index - the index of C2 in cpClass, or -1 if C2 is null
      nIndex - the index of N in cpUTF8, or -1 if N is null
      tIndex - TODO
  • Method Details

    • computeOuterIsAnonymous

      private boolean computeOuterIsAnonymous()
    • equals

      public boolean equals(Object object)
      Overrides:
      equals in class Object
    • generateHashCode

      private void generateHashCode()
    • getC

      public String getC()
    • getC2

      public String getC2()
    • getF

      public int getF()
    • getN

      public String getN()
    • getTupleIndex

      public int getTupleIndex()
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class Object
    • initializeClassStrings

      private void initializeClassStrings()
    • innerBreakAtDollar

      public String[] innerBreakAtDollar(String className)
      Break the receiver into components at $ boundaries.
      Parameters:
      className - TODO
      Returns:
      TODO
    • isAllDigits

      private boolean isAllDigits(String nameString)
    • isAnonymous

      public boolean isAnonymous()
    • isMember

      public boolean isMember()
    • nestedExplicitFlagSet

      public boolean nestedExplicitFlagSet()
      Answer true if the receiver's bit 16 is set (indicating that explicit outer class and name fields are set).
      Returns:
      boolean
    • nullSafeEquals

      public boolean nullSafeEquals(String stringOne, String stringTwo)
    • outerClassIndex

      public int outerClassIndex()
    • outerClassString

      public String outerClassString()
      Answer the outer class name for the receiver. This may either be specified or inferred from inner class name.
      Returns:
      String name of outer class
    • outerIsAnonymous

      public boolean outerIsAnonymous()
    • predicted

      public boolean predicted()
      Answer true if the receiver is predicted; answer false if the receiver is specified explicitly in the outer and name fields.
      Returns:
      true if the receiver is predicted; answer false if the receiver is specified explicitly in the outer and name fields.
    • simpleClassName

      public String simpleClassName()
      Answer the inner class name for the receiver.
      Returns:
      String name of inner class
    • simpleClassNameIndex

      public int simpleClassNameIndex()
    • thisClassIndex

      public int thisClassIndex()
    • thisClassString

      public String thisClassString()
      Answer the full name of the inner class represented by this tuple (including its outer component)
      Returns:
      String full name of inner class
    • toString

      public String toString()
      Overrides:
      toString in class Object