public abstract class PolyQual<Q> extends Object
Q
. A PolyQual<Q>
represents either a
qualifier from the original system (GroundQual
, which simply wraps a
Q
), a qualifier variable that ranges over ground qualifiers (QualVar
), or a combination of two or more qualifiers using a CombiningOperation
(Combined
).Modifier and Type | Class and Description |
---|---|
static class |
PolyQual.Combined<Q>
A combination of several qualifiers and qualifier variables, using a
combining function.
|
static class |
PolyQual.GroundQual<Q>
A wrapped qualifier from the underlying system.
|
static class |
PolyQual.QualVar<Q>
A qualifier variable.
|
Constructor and Description |
---|
PolyQual() |
Modifier and Type | Method and Description |
---|---|
abstract PolyQual.Combined<Q> |
asCombined(CombiningOperation<Q> op)
Convert this qualifier to an equivalent
PolyQual.Combined qualifier
using the given CombiningOperation . |
PolyQual<Q> |
combineWith(PolyQual<Q> other,
CombiningOperation<Q> op)
Combine this qualifier with another using the given
CombiningOperation . |
abstract Q |
getMaximum()
Get the least upper bound of the possible types of this qualifier under
all valid assignments to qualifier variables.
|
abstract Q |
getMinimum()
Get the greatest lower bound of the possible types of this qualifier
under all valid assignments to qualifier variables.
|
abstract PolyQual<Q> |
substitute(Map<String,PolyQual<Q>> substs)
Substitute qualifiers for qualifier variables.
|
public abstract Q getMinimum()
pq.getMinimum()
is a subtype of pq
.public abstract Q getMaximum()
public abstract PolyQual<Q> substitute(Map<String,PolyQual<Q>> substs)
public abstract PolyQual.Combined<Q> asCombined(CombiningOperation<Q> op)
PolyQual.Combined
qualifier
using the given CombiningOperation
.public PolyQual<Q> combineWith(PolyQual<Q> other, CombiningOperation<Q> op)
CombiningOperation
.