Package proguard.evaluation.value
Class MultiTypedReferenceValue
- java.lang.Object
-
- proguard.evaluation.value.Value
-
- proguard.evaluation.value.Category1Value
-
- proguard.evaluation.value.ReferenceValue
-
- proguard.evaluation.value.MultiTypedReferenceValue
-
public class MultiTypedReferenceValue extends ReferenceValue
ThisTypedReferenceValuecan have multiple potential types during runtime. E.g. when evaluatingSuperClass s = someFlag ? new A() : new B(), s may be of type LA; or LB;.
-
-
Field Summary
Fields Modifier and Type Field Description booleanmayBeUnknown-
Fields inherited from class proguard.evaluation.value.Value
ALWAYS, MAYBE, NEVER, TYPE_DOUBLE, TYPE_FLOAT, TYPE_INSTRUCTION_OFFSET, TYPE_INTEGER, TYPE_LONG, TYPE_REFERENCE, TYPE_TOP, TYPE_UNKNOWN
-
-
Constructor Summary
Constructors Constructor Description MultiTypedReferenceValue(java.util.Set<TypedReferenceValue> potentialTypes, boolean mayBeUnknown)MultiTypedReferenceValue(TypedReferenceValue type, boolean mayBeUnknown)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description ReferenceValuecast(java.lang.String type, Clazz referencedClass, ValueFactory valueFactory, boolean alwaysCast)Returns this ReferenceValue, cast to the given type.intequal(MultiTypedReferenceValue other)Returns whether thisReferenceValueis equal to the given otherMultiTypedReferenceValue.intequal(ReferenceValue other)Returns whether this ReferenceValue is equal to the given other ReferenceValue.booleanequals(java.lang.Object o)TypedReferenceValuegeneralize(java.util.Set<TypedReferenceValue> potentialTypes)ReferenceValuegeneralize(MultiTypedReferenceValue other)Returns the generalization of thisReferenceValueand the given otherMultiTypedReferenceValue.ReferenceValuegeneralize(ReferenceValue other)Returns the generalization of this ReferenceValue and the given other ReferenceValue.ReferenceValuegeneralize(TypedReferenceValue other)Returns the generalization of this ReferenceValue and the given other TypedReferenceValue.ReferenceValuegeneralize(UnknownReferenceValue other)Returns the generalization of this ReferenceValue and the given other UnknownReferenceValue.TypedReferenceValuegetGeneralizedType()java.util.Set<TypedReferenceValue>getPotentialTypes()ClazzgetReferencedClass()Returns the class that is referenced by the type.java.lang.StringgetType()Returns the type.inthashCode()intinstanceOf(java.lang.String otherType, Clazz otherReferencedClass)Returns whether the type is an instance of the given type.java.lang.StringinternalType()Returns the internal type of this Value.intisNull()Returns whether this ReferenceValue isnull.booleanmayBeExtension()Returns whether the actual type of this ReferenceValue may be an extension of its type.ReferenceValuereferenceArrayLoad(IntegerValue indexValue, ValueFactory valueFactory)Returns the value of the array at the given index, assuming this type is a reference array.java.lang.StringtoString()-
Methods inherited from class proguard.evaluation.value.ReferenceValue
arrayLength, arrayStore, computationalType, doubleArrayLoad, equal, equal, equal, equal, equal, equal, equal, equal, floatArrayLoad, generalize, generalize, generalize, generalize, generalize, generalize, generalize, getValue, integerArrayLoad, isNotNull, longArrayLoad, notEqual, referenceValue, value
-
Methods inherited from class proguard.evaluation.value.Category1Value
category1Value, isCategory2
-
Methods inherited from class proguard.evaluation.value.Value
category2Value, copyIfMutable, doubleValue, floatValue, instructionOffsetValue, integerValue, isParticular, isSpecific, longValue
-
-
-
-
Constructor Detail
-
MultiTypedReferenceValue
public MultiTypedReferenceValue(java.util.Set<TypedReferenceValue> potentialTypes, boolean mayBeUnknown)
-
MultiTypedReferenceValue
public MultiTypedReferenceValue(TypedReferenceValue type, boolean mayBeUnknown)
-
-
Method Detail
-
generalize
public TypedReferenceValue generalize(java.util.Set<TypedReferenceValue> potentialTypes)
-
getPotentialTypes
public java.util.Set<TypedReferenceValue> getPotentialTypes()
-
getGeneralizedType
public TypedReferenceValue getGeneralizedType()
-
getType
public java.lang.String getType()
Description copied from class:ReferenceValueReturns the type.- Specified by:
getTypein classReferenceValue
-
getReferencedClass
public Clazz getReferencedClass()
Description copied from class:ReferenceValueReturns the class that is referenced by the type.- Specified by:
getReferencedClassin classReferenceValue
-
mayBeExtension
public boolean mayBeExtension()
Description copied from class:ReferenceValueReturns whether the actual type of this ReferenceValue may be an extension of its type.- Specified by:
mayBeExtensionin classReferenceValue
-
isNull
public int isNull()
Description copied from class:ReferenceValueReturns whether this ReferenceValue isnull.- Specified by:
isNullin classReferenceValue- Returns:
NEVER,MAYBE, orALWAYS.
-
instanceOf
public int instanceOf(java.lang.String otherType, Clazz otherReferencedClass)Description copied from class:ReferenceValueReturns whether the type is an instance of the given type.- Specified by:
instanceOfin classReferenceValue
-
cast
public ReferenceValue cast(java.lang.String type, Clazz referencedClass, ValueFactory valueFactory, boolean alwaysCast)
Description copied from class:ReferenceValueReturns this ReferenceValue, cast to the given type.- Specified by:
castin classReferenceValue
-
referenceArrayLoad
public ReferenceValue referenceArrayLoad(IntegerValue indexValue, ValueFactory valueFactory)
Description copied from class:ReferenceValueReturns the value of the array at the given index, assuming this type is a reference array.- Overrides:
referenceArrayLoadin classReferenceValue
-
generalize
public ReferenceValue generalize(ReferenceValue other)
Description copied from class:ReferenceValueReturns the generalization of this ReferenceValue and the given other ReferenceValue.- Specified by:
generalizein classReferenceValue
-
generalize
public ReferenceValue generalize(TypedReferenceValue other)
Description copied from class:ReferenceValueReturns the generalization of this ReferenceValue and the given other TypedReferenceValue.- Overrides:
generalizein classReferenceValue
-
generalize
public ReferenceValue generalize(UnknownReferenceValue other)
Description copied from class:ReferenceValueReturns the generalization of this ReferenceValue and the given other UnknownReferenceValue.- Overrides:
generalizein classReferenceValue
-
generalize
public ReferenceValue generalize(MultiTypedReferenceValue other)
Description copied from class:ReferenceValueReturns the generalization of thisReferenceValueand the given otherMultiTypedReferenceValue.- Overrides:
generalizein classReferenceValue
-
equal
public int equal(ReferenceValue other)
Description copied from class:ReferenceValueReturns whether this ReferenceValue is equal to the given other ReferenceValue.- Specified by:
equalin classReferenceValue- Returns:
NEVER,MAYBE, orALWAYS.
-
equal
public int equal(MultiTypedReferenceValue other)
Description copied from class:ReferenceValueReturns whether thisReferenceValueis equal to the given otherMultiTypedReferenceValue.- Overrides:
equalin classReferenceValue- Returns:
NEVER,MAYBE, orALWAYS.
-
internalType
public java.lang.String internalType()
Description copied from class:ValueReturns the internal type of this Value.- Specified by:
internalTypein classValue- 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).
-
equals
public boolean equals(java.lang.Object o)
- Overrides:
equalsin classReferenceValue
-
hashCode
public int hashCode()
- Overrides:
hashCodein classReferenceValue
-
toString
public java.lang.String toString()
- Overrides:
toStringin classReferenceValue
-
-