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)
QualifierHierarchy
subtype
is a subtype of supertype
.isSubtype
in interface QualifierHierarchy<QualParams<Q>>
public QualParams<Q> leastUpperBound(QualParams<Q> a, QualParams<Q> b)
QualifierHierarchy
leastUpperBound
in interface QualifierHierarchy<QualParams<Q>>
public QualParams<Q> greatestLowerBound(QualParams<Q> a, QualParams<Q> b)
QualifierHierarchy
greatestLowerBound
in interface QualifierHierarchy<QualParams<Q>>
public QualParams<Q> getBottom()
QualifierHierarchy
getBottom
in interface QualifierHierarchy<QualParams<Q>>
public QualParams<Q> getTop()
QualifierHierarchy
getTop
in interface QualifierHierarchy<QualParams<Q>>