Package com.saxonica.ee.trans
Class PatternOptimizer
- java.lang.Object
-
- com.saxonica.ee.trans.PatternOptimizer
-
- Direct Known Subclasses:
AncestorPatternOptimizer,ContainsTokenPatternOptimizer,EqualityPatternOptimizer,GeneralPatternOptimizer,IntEqualityPatternOptimizer
public abstract class PatternOptimizer extends java.lang.ObjectA PatternOptimizer is an agent responsible for optimizing a particular class of patterns. It has two parts: a meta-pattern which determines which kinds of pattern it recognizes, and an action part which extracts characteristics and preconditions whose evaluation can be shared by all the rules in a rule chain
-
-
Constructor Summary
Constructors Constructor Description PatternOptimizer()
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description protected voidaddPrecondition(RuleEE rule, java.util.Map<Precondition,java.util.List<RuleEE>> preconditions, Precondition p)protected CharacteristicallocateCharacteristic(java.util.Map<Characteristic,Characteristic> characteristics, Characteristic newChic)Allocate a new characteristic, that is, a property of nodes or other items that may potentially be used in evaluating the preconditions of more than one pattern.abstract booleanappliesTo(Pattern pattern)Ask whether this pattern optimizer is applicable to a particular patternabstract voidprocess(RuleEE rule, Pattern pattern, java.util.Map<Precondition,java.util.List<RuleEE>> preconditions, java.util.Map<Characteristic,Characteristic> characteristics)Process a particular pattern, potentially adding to the list of preconditions and characteristics maintained when processing a set of rules
-
-
-
Method Detail
-
appliesTo
public abstract boolean appliesTo(Pattern pattern)
Ask whether this pattern optimizer is applicable to a particular pattern- Parameters:
pattern- the pattern in question- Returns:
- true if this pattern optimizer is applicable to this pattern
-
process
public abstract void process(RuleEE rule, Pattern pattern, java.util.Map<Precondition,java.util.List<RuleEE>> preconditions, java.util.Map<Characteristic,Characteristic> characteristics)
Process a particular pattern, potentially adding to the list of preconditions and characteristics maintained when processing a set of rules- Parameters:
rule- the rule to be processedpattern- the pattern used by this rulepreconditions- a collection of preconditions maintained for a set of rulescharacteristics- a collection of characteristics maintained for a set of rules. This is maintained as a map from characteristics to characteristics in which the key and the value are always the same; the reason for this curious structure is that when an equivalent characteristic is already present in the map, we want to return the existing characteristic to replace the new one; a JavaSetdoes not have any (efficient) operation to "find the existing value in the set that is equal to X".
-
allocateCharacteristic
protected Characteristic allocateCharacteristic(java.util.Map<Characteristic,Characteristic> characteristics, Characteristic newChic)
Allocate a new characteristic, that is, a property of nodes or other items that may potentially be used in evaluating the preconditions of more than one pattern.- Parameters:
characteristics- The set of characteristics to be added to. This maintained as a map from characteristics to characteristics for reasons explained atprocess(RuleEE, Pattern, Map, Map).newChic- a new characteristic to be added to the set.- Returns:
- the supplied characteristic unless there was already an equivalent characteristic in the set, in which case an equivalent characteristic that should be used in place of the new one.
-
addPrecondition
protected void addPrecondition(RuleEE rule, java.util.Map<Precondition,java.util.List<RuleEE>> preconditions, Precondition p)
-
-