saffron.opt
Class AbstractConverter.ExpandConversionRule
java.lang.Object
|
+--saffron.opt.Rule
|
+--saffron.opt.AbstractConverter.ExpandConversionRule
- Enclosing class:
- AbstractConverter
- static class AbstractConverter.ExpandConversionRule
- extends Rule
Rule which converts an AbstractConverter
into a chain of
converters from the source relation to the target calling convention.
The chain produced is mimimal: we have previously built the
transitive closure of the graph of conversions, so we choose the shortest
chain.
Unlike the AbstractConverter
they are replacing, these
converters are guaranteed to be able to convert any relation
of their calling convention. Furthermore, because they introduce subsets
of other calling conventions along the way, these subsets may spawn
more efficient conversions which are not generally applicable.
AbstractConverters can be messy, so they restrain themselves: they
don't fire if the target subset already has an implementation (with less
than infinite cost).
Method Summary |
void |
onMatch(RuleCall call)
This method is called every time the rule matches. |
AbstractConverter.ExpandConversionRule
public AbstractConverter.ExpandConversionRule()
onMatch
public void onMatch(RuleCall call)
- Description copied from class:
Rule
- This method is called every time the rule matches. At the time that this
method is called,
call.rels
holds the set of
relational expressions which match the operands to the rule;
call.rels[0]
is the root expression.
Typically a rule would check that the nodes are valid matches,
creates a new expression, then calls back RuleCall.transformTo(saffron.rel.Rel)
to
register the expression.
- Specified by:
onMatch
in class Rule