Class Value

java.lang.Object
proguard.evaluation.value.Value
Direct Known Subclasses:
Category1Value, Category2Value, TracingValue, UnknownValue

public abstract class Value extends Object
This abstract class represents a partially evaluated value.
  • Field Details

  • Constructor Details

    • Value

      public Value()
  • Method Details

    • category1Value

      public Category1Value category1Value()
      Returns this Value as a Category1Value.
    • category2Value

      public Category2Value category2Value()
      Returns this Value as a Category2Value.
    • integerValue

      public IntegerValue integerValue()
      Returns this Value as an IntegerValue.
    • longValue

      public LongValue longValue()
      Returns this Value as a LongValue.
    • floatValue

      public FloatValue floatValue()
      Returns this Value as a FloatValue.
    • doubleValue

      public DoubleValue doubleValue()
      Returns this Value as a DoubleValue.
    • referenceValue

      public ReferenceValue referenceValue()
      Returns this Value as a ReferenceValue.
    • instructionOffsetValue

      public InstructionOffsetValue instructionOffsetValue()
      Returns this Value as an InstructionOffsetValue.
    • isSpecific

      public boolean isSpecific()
      Returns whether this Value represents a single specific (but possibly unknown) value.
    • isParticular

      public boolean isParticular()
      Returns whether this Value represents a single particular (known) value.
    • generalize

      public abstract Value generalize(Value other)
      Returns the generalization of this Value and the given other Value.
    • isCategory2

      public abstract boolean isCategory2()
      Returns whether the computational type of this Value is a category 2 type. This means that it takes up the space of two category 1 types on the stack, for instance.
    • computationalType

      public abstract int computationalType()
      Returns the computational type of this Value.
      Returns:
      TYPE_INTEGER, TYPE_LONG, TYPE_FLOAT, TYPE_DOUBLE, TYPE_REFERENCE, or TYPE_INSTRUCTION_OFFSET.
    • internalType

      public abstract String internalType()
      Returns the internal type of this Value.
      Returns:
      TypeConstants.BOOLEAN, TypeConstants.BYTE, TypeConstants.CHAR, TypeConstants.SHORT, TypeConstants.INT , TypeConstants.LONG, TypeConstants.FLOAT, TypeConstants.DOUBLE, TypeConstants.CLASS_START ... TypeConstants.CLASS_END , or an array type containing any of these types (always as String).
    • copyIfMutable

      public Value copyIfMutable()
      Returns a deep copy of the value if it mutable, returns the value itself otherwise.