Class SubPlan
- java.lang.Object
-
- org.eclipse.viatra.query.runtime.matchers.planning.SubPlan
-
public class SubPlan extends java.lang.Object
A plan representing a subset of (or possibly all the) constraints evaluated. A SubPlan instance is responsible for representing a state of the plan; but after it is initialized it is expected be immutable (exception: inferred constraints, seeinferConstraint(PConstraint)
).A SubPlan is constructed by applying a
POperation
on zero or more parent SubPlans. Important maintained information:- set of variables whose values are known when the runtime evaluation is at this stage,
- set of constraints that are known to hold true at this point.
Recommended to instantiate via a
SubPlanFactory
or subclasses, so that query planners can subclass SubPlan if needed.
-
-
Constructor Summary
Constructors Constructor Description SubPlan(PBody body, POperation operation, java.util.List<? extends SubPlan> parentPlans)
A SubPlan is constructed by applying aPOperation
on zero or more parent SubPlans.SubPlan(PBody body, POperation operation, SubPlan... parentPlans)
A SubPlan is constructed by applying aPOperation
on zero or more parent SubPlans.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description boolean
equals(java.lang.Object obj)
java.util.Set<PVariable>
getAllDeducedVariables()
Variables which have been assigned a value; includes visible variables (seegetVisibleVariables()
) and additionally any variables hidden by a projection (seePProject
).java.util.Set<PConstraint>
getAllEnforcedConstraints()
All constraints that are known to hold at this pointjava.util.Set<TypeJudgement>
getAllImpliedTypeJudgements(IQueryMetaContext context)
The closure of all type judgments of enforced constraints at this point.PBody
getBody()
java.util.Set<PConstraint>
getDeltaEnforcedConstraints()
The new constraints enforced at this stage of plan, that aren't yet enforced at parents (results are also included ingetAllEnforcedConstraints()
)java.util.Set<PVariable>
getIntroducedVariables()
Delta compared to first parent: variables that are visible here but were not visible at the first parent.POperation
getOperation()
java.util.List<? extends SubPlan>
getParentPlans()
java.util.Set<PVariable>
getVisibleVariables()
Variables which are assigned a value at this point (results are also included ingetAllDeducedVariables()
)int
hashCode()
void
inferConstraint(PConstraint constraint)
Indicate that a given constraint was found to be automatically satisfied at this point without additional operations.java.lang.String
toLongString()
java.lang.String
toShortString()
java.lang.String
toString()
-
-
-
Constructor Detail
-
SubPlan
public SubPlan(PBody body, POperation operation, SubPlan... parentPlans)
A SubPlan is constructed by applying aPOperation
on zero or more parent SubPlans.
-
SubPlan
public SubPlan(PBody body, POperation operation, java.util.List<? extends SubPlan> parentPlans)
A SubPlan is constructed by applying aPOperation
on zero or more parent SubPlans.
-
-
Method Detail
-
toString
public java.lang.String toString()
- Overrides:
toString
in classjava.lang.Object
-
toShortString
public java.lang.String toShortString()
-
toLongString
public java.lang.String toLongString()
-
getAllEnforcedConstraints
public java.util.Set<PConstraint> getAllEnforcedConstraints()
All constraints that are known to hold at this point
-
getDeltaEnforcedConstraints
public java.util.Set<PConstraint> getDeltaEnforcedConstraints()
The new constraints enforced at this stage of plan, that aren't yet enforced at parents (results are also included ingetAllEnforcedConstraints()
)
-
inferConstraint
public void inferConstraint(PConstraint constraint)
Indicate that a given constraint was found to be automatically satisfied at this point without additional operations. (results are also included ingetDeltaEnforcedConstraints()
)Warning: not propagated automatically to child plans, so best to invoke before constructing further SubPlans.
-
getBody
public PBody getBody()
-
getVisibleVariables
public java.util.Set<PVariable> getVisibleVariables()
Variables which are assigned a value at this point (results are also included ingetAllDeducedVariables()
)
-
getAllDeducedVariables
public java.util.Set<PVariable> getAllDeducedVariables()
Variables which have been assigned a value; includes visible variables (seegetVisibleVariables()
) and additionally any variables hidden by a projection (seePProject
).
-
getIntroducedVariables
public java.util.Set<PVariable> getIntroducedVariables()
Delta compared to first parent: variables that are visible here but were not visible at the first parent.
-
getParentPlans
public java.util.List<? extends SubPlan> getParentPlans()
-
getOperation
public POperation getOperation()
-
getAllImpliedTypeJudgements
public java.util.Set<TypeJudgement> getAllImpliedTypeJudgements(IQueryMetaContext context)
The closure of all type judgments of enforced constraints at this point.No subsumption applied.
-
hashCode
public int hashCode()
- Overrides:
hashCode
in classjava.lang.Object
-
equals
public boolean equals(java.lang.Object obj)
- Overrides:
equals
in classjava.lang.Object
-
-