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.