public class TypedReferenceValue extends ReferenceValue
ReferenceValue
represents a partially evaluated reference value.
It has a type and a flag that indicates whether the value could be
null
. If the type is null
, the value is
null
.Modifier and Type | Field and Description |
---|---|
protected boolean |
mayBeExtension |
protected boolean |
mayBeNull |
protected Clazz |
referencedClass |
protected java.lang.String |
type |
ALWAYS, MAYBE, NEVER, TYPE_DOUBLE, TYPE_FLOAT, TYPE_INSTRUCTION_OFFSET, TYPE_INTEGER, TYPE_LONG, TYPE_REFERENCE, TYPE_TOP, TYPE_UNKNOWN
Constructor and Description |
---|
TypedReferenceValue(java.lang.String type,
Clazz referencedClass,
boolean mayBeExtension,
boolean mayBeNull)
Creates a new TypedReferenceValue.
|
Modifier and Type | Method and Description |
---|---|
static boolean |
allowsIncompleteClassHierarchy()
Returns whether incomplete class hierarchies are allowed.
|
void |
arrayStore(IntegerValue indexValue,
Value value)
Stores the given value at the given index in the given array, assuming
this type is an array.
|
ReferenceValue |
cast(java.lang.String type,
Clazz referencedClass,
ValueFactory valueFactory,
boolean alwaysCast)
Returns this ReferenceValue, cast to the given type.
|
DoubleValue |
doubleArrayLoad(IntegerValue indexValue,
ValueFactory valueFactory)
Returns the value of the array at the given index, assuming this type
is an double array.
|
int |
equal(ReferenceValue other)
Returns whether this ReferenceValue is equal to the given other
ReferenceValue.
|
int |
equal(TypedReferenceValue other)
Returns whether this ReferenceValue is equal to the given other
TypedReferenceValue.
|
boolean |
equals(java.lang.Object object) |
FloatValue |
floatArrayLoad(IntegerValue indexValue,
ValueFactory valueFactory)
Returns the value of the array at the given index, assuming this type
is an float array.
|
ReferenceValue |
generalize(ReferenceValue other)
Returns the generalization of this ReferenceValue and the given other
ReferenceValue.
|
ReferenceValue |
generalize(TypedReferenceValue other)
Returns the generalization of this ReferenceValue and the given other
TypedReferenceValue.
|
ReferenceValue |
generalizeMayBeNull(boolean mayBeNull) |
Clazz |
getReferencedClass()
Returns the class that is referenced by the type.
|
java.lang.String |
getType()
Returns the type.
|
int |
hashCode() |
int |
instanceOf(java.lang.String otherType,
Clazz otherReferencedClass)
Returns whether the type is an instance of the given type.
|
IntegerValue |
integerArrayLoad(IntegerValue indexValue,
ValueFactory valueFactory)
Returns the value of the array at the given index, assuming this type
is an integer array.
|
java.lang.String |
internalType()
Returns the internal type of this Value.
|
int |
isNull()
Returns whether this ReferenceValue is
null . |
boolean |
isParticular()
Returns whether this Value represents a single particular (known)
value.
|
LongValue |
longArrayLoad(IntegerValue indexValue,
ValueFactory valueFactory)
Returns the value of the array at the given index, assuming this type
is an long array.
|
boolean |
mayBeExtension()
Returns whether the actual type of this ReferenceValue may be an
extension of its type.
|
ReferenceValue |
referenceArrayLoad(IntegerValue indexValue,
ValueFactory valueFactory)
Returns the value of the array at the given index, assuming this type
is a reference array.
|
java.lang.String |
toString() |
arrayLength, computationalType, equal, equal, equal, equal, equal, equal, equal, equal, generalize, generalize, generalize, generalize, generalize, generalize, generalize, generalize, generalize, isNotNull, notEqual, referenceValue, value
category1Value, isCategory2
category2Value, copyIfMutable, doubleValue, floatValue, instructionOffsetValue, integerValue, isSpecific, longValue
protected final java.lang.String type
protected final Clazz referencedClass
protected final boolean mayBeExtension
protected final boolean mayBeNull
public TypedReferenceValue(java.lang.String type, Clazz referencedClass, boolean mayBeExtension, boolean mayBeNull)
public java.lang.String getType()
ReferenceValue
getType
in class ReferenceValue
public Clazz getReferencedClass()
ReferenceValue
getReferencedClass
in class ReferenceValue
public boolean mayBeExtension()
ReferenceValue
mayBeExtension
in class ReferenceValue
public int isNull()
ReferenceValue
null
.isNull
in class ReferenceValue
NEVER
, MAYBE
, or ALWAYS
.public int instanceOf(java.lang.String otherType, Clazz otherReferencedClass)
ReferenceValue
instanceOf
in class ReferenceValue
public ReferenceValue cast(java.lang.String type, Clazz referencedClass, ValueFactory valueFactory, boolean alwaysCast)
ReferenceValue
cast
in class ReferenceValue
public ReferenceValue generalizeMayBeNull(boolean mayBeNull)
public ReferenceValue referenceArrayLoad(IntegerValue indexValue, ValueFactory valueFactory)
ReferenceValue
referenceArrayLoad
in class ReferenceValue
public ReferenceValue generalize(ReferenceValue other)
ReferenceValue
generalize
in class ReferenceValue
public int equal(ReferenceValue other)
ReferenceValue
equal
in class ReferenceValue
NEVER
, MAYBE
, or ALWAYS
.public ReferenceValue generalize(TypedReferenceValue other)
ReferenceValue
generalize
in class ReferenceValue
public static boolean allowsIncompleteClassHierarchy()
public DoubleValue doubleArrayLoad(IntegerValue indexValue, ValueFactory valueFactory)
ReferenceValue
doubleArrayLoad
in class ReferenceValue
public IntegerValue integerArrayLoad(IntegerValue indexValue, ValueFactory valueFactory)
ReferenceValue
integerArrayLoad
in class ReferenceValue
public LongValue longArrayLoad(IntegerValue indexValue, ValueFactory valueFactory)
ReferenceValue
longArrayLoad
in class ReferenceValue
public FloatValue floatArrayLoad(IntegerValue indexValue, ValueFactory valueFactory)
ReferenceValue
floatArrayLoad
in class ReferenceValue
public void arrayStore(IntegerValue indexValue, Value value)
ReferenceValue
arrayStore
in class ReferenceValue
public int equal(TypedReferenceValue other)
ReferenceValue
equal
in class ReferenceValue
NEVER
, MAYBE
, or ALWAYS
.public boolean isParticular()
Value
isParticular
in class Value
public final java.lang.String internalType()
Value
internalType
in class Value
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).public boolean equals(java.lang.Object object)
equals
in class ReferenceValue
public int hashCode()
hashCode
in class ReferenceValue
public java.lang.String toString()
toString
in class ReferenceValue