public class QualifierParameterHierarchy<Q> extends Object implements QualifierHierarchy<QualParams<Q>>
QualifierHierarchy implementation for
sets of qualifier parameters. Under this hierarchy, A is a subtype of B iff
the value of each qualifier parameter in A is contained within the value of
the corresponding parameter in B.| Modifier and Type | Field and Description |
|---|---|
QualParams<Q> |
PARAMS_BOTTOM |
QualParams<Q> |
PARAMS_TOP |
| Constructor and Description |
|---|
QualifierParameterHierarchy(QualifierHierarchy<Wildcard<Q>> containmentHierarchy,
QualifierHierarchy<PolyQual<Q>> polyQualHierarchy) |
| Modifier and Type | Method and Description |
|---|---|
static <Q> QualifierParameterHierarchy<Q> |
fromContainment(QualifierHierarchy<Wildcard<Q>> containmentHierarchy,
QualifierHierarchy<PolyQual<Q>> polyQualHierarchy)
Construct an instance from a
ContainmentHierarchy or
equivalent. |
static <Q> QualifierParameterHierarchy<Q> |
fromGround(QualifierHierarchy<Q> groundHierarchy)
Construct an instance from a
QualifierHierarchy<Q>, using the
default PolyQualHierarchy and ContainmentHierarchy
implementations. |
static <Q> QualifierParameterHierarchy<Q> |
fromPolyQual(QualifierHierarchy<PolyQual<Q>> polyQualHierarchy)
Construct an instance from a
PolyQualHierarchy or equivalent,
using the default ContainmentHierarchy implementation. |
QualParams<Q> |
getBottom()
Gets the bottom annotation of the hierarchy.
|
protected QualifierHierarchy<Wildcard<Q>> |
getContaintmentHierarchy()
Get the containment hierarchy that is used to compare wildcards.
|
QualParams<Q> |
getTop()
Gets the top annotation of the hierarchy.
|
QualParams<Q> |
greatestLowerBound(QualParams<Q> a,
QualParams<Q> b)
Gets the greatest lower bound of two qualifiers.
|
boolean |
isSubtype(QualParams<Q> subtype,
QualParams<Q> supertype)
Checks if
subtype is a subtype of supertype. |
QualParams<Q> |
leastUpperBound(QualParams<Q> a,
QualParams<Q> b)
Gets the least upper bound of two qualifiers.
|
void |
setConstraintTarget(List<Pair<Wildcard<Q>,Wildcard<Q>>> constraintTarget)
Set a target for constraint generation.
|
public QualParams<Q> PARAMS_BOTTOM
public QualParams<Q> PARAMS_TOP
public QualifierParameterHierarchy(QualifierHierarchy<Wildcard<Q>> containmentHierarchy, QualifierHierarchy<PolyQual<Q>> polyQualHierarchy)
public static <Q> QualifierParameterHierarchy<Q> fromContainment(QualifierHierarchy<Wildcard<Q>> containmentHierarchy, QualifierHierarchy<PolyQual<Q>> polyQualHierarchy)
ContainmentHierarchy or
equivalent.public static <Q> QualifierParameterHierarchy<Q> fromPolyQual(QualifierHierarchy<PolyQual<Q>> polyQualHierarchy)
PolyQualHierarchy or equivalent,
using the default ContainmentHierarchy implementation.public static <Q> QualifierParameterHierarchy<Q> fromGround(QualifierHierarchy<Q> groundHierarchy)
QualifierHierarchy<Q>, using the
default PolyQualHierarchy and ContainmentHierarchy
implementations.protected QualifierHierarchy<Wildcard<Q>> getContaintmentHierarchy()
public void setConstraintTarget(List<Pair<Wildcard<Q>,Wildcard<Q>>> constraintTarget)
null, all subtyping checks return true and
populate the target with a (subtype, supertype) pair for each
containment check that would normally be made.public boolean isSubtype(QualParams<Q> subtype, QualParams<Q> supertype)
QualifierHierarchysubtype is a subtype of supertype.isSubtype in interface QualifierHierarchy<QualParams<Q>>public QualParams<Q> leastUpperBound(QualParams<Q> a, QualParams<Q> b)
QualifierHierarchyleastUpperBound in interface QualifierHierarchy<QualParams<Q>>public QualParams<Q> greatestLowerBound(QualParams<Q> a, QualParams<Q> b)
QualifierHierarchygreatestLowerBound in interface QualifierHierarchy<QualParams<Q>>public QualParams<Q> getBottom()
QualifierHierarchygetBottom in interface QualifierHierarchy<QualParams<Q>>public QualParams<Q> getTop()
QualifierHierarchygetTop in interface QualifierHierarchy<QualParams<Q>>