public class CombinedChildContentExpCreator extends java.lang.Object implements ExpressionVisitorVoid
For example, when the current expression is
then the combined child expression is..(A).. ..(B).. .....(C).. ....
and elements of concern and its attribute-pruned content models are..(A').. ..(B').. ..(C')..
Modifier and Type | Class and Description |
---|---|
static class |
CombinedChildContentExpCreator.ExpressionPair |
Modifier and Type | Field and Description |
---|---|
private boolean |
checkTagName |
private Expression |
content |
private Expression |
continuation |
private boolean |
foundConcur
a flag that indicates that we have 'concur' element to combine
elements of concern.
|
private int |
numElements |
protected ExpressionPool |
pool |
private ElementExp[] |
result
matched elements.
|
private StartTagInfo |
tagInfo |
Modifier | Constructor and Description |
---|---|
protected |
CombinedChildContentExpCreator(ExpressionPool pool) |
Modifier and Type | Method and Description |
---|---|
CombinedChildContentExpCreator.ExpressionPair |
continueGet(Expression combinedPattern,
StartTagInfo info,
boolean checkTagName) |
CombinedChildContentExpCreator.ExpressionPair |
get(Expression combinedPattern,
StartTagInfo info)
computes a combined child content pattern and (,if possible,) its continuation.
|
CombinedChildContentExpCreator.ExpressionPair |
get(Expression combinedPattern,
StartTagInfo info,
boolean checkTagName)
computes a combined child content pattern and its continuation, with error recovery.
|
ElementExp[] |
getMatchedElements()
obtains matched elements.
|
boolean |
isComplex()
checks if the result of 'get' method is not the union of all
elements of concern.
|
int |
numMatchedElements()
gets the number of matched elements.
|
void |
onAnyString() |
void |
onAttribute(AttributeExp exp) |
void |
onChoice(ChoiceExp exp) |
void |
onConcur(ConcurExp exp) |
void |
onData(DataExp exp) |
void |
onElement(ElementExp exp) |
void |
onEpsilon() |
void |
onInterleave(InterleaveExp exp) |
void |
onList(ListExp exp) |
void |
onMixed(MixedExp exp) |
void |
onNullSet() |
void |
onOneOrMore(OneOrMoreExp exp) |
void |
onOther(OtherExp exp) |
void |
onRef(ReferenceExp exp) |
void |
onSequence(SequenceExp exp) |
void |
onValue(ValueExp exp) |
protected final ExpressionPool pool
private StartTagInfo tagInfo
private ElementExp[] result
numElements
,
but only first numElements
items are valid result.private int numElements
private boolean checkTagName
private Expression content
private Expression continuation
private boolean foundConcur
protected CombinedChildContentExpCreator(ExpressionPool pool)
public CombinedChildContentExpCreator.ExpressionPair get(Expression combinedPattern, StartTagInfo info, boolean checkTagName)
feedAttributes
- if this flag is false, Attribute feeding & pruning are skipped and
AttributeExps are fully remained in the resulting expression.checkTagName
- if this flag is false, tag name check is skipped.public final CombinedChildContentExpCreator.ExpressionPair continueGet(Expression combinedPattern, StartTagInfo info, boolean checkTagName)
public CombinedChildContentExpCreator.ExpressionPair get(Expression combinedPattern, StartTagInfo info)
public final ElementExp[] getMatchedElements()
The extra care should be taken not to hold reference to the result longer than necessary. The contents of the result is valid only until the next invocation. Because OwnerAndContent objects are reused.
Apparently this is a bad design, but this design gives us better performance.
public final int numMatchedElements()
public void onConcur(ConcurExp exp)
onConcur
in interface ExpressionVisitorVoid
public void onInterleave(InterleaveExp exp)
onInterleave
in interface ExpressionVisitorVoid
public final boolean isComplex()
public void onElement(ElementExp exp)
onElement
in interface ExpressionVisitorVoid
public void onOneOrMore(OneOrMoreExp exp)
onOneOrMore
in interface ExpressionVisitorVoid
public void onMixed(MixedExp exp)
onMixed
in interface ExpressionVisitorVoid
public void onAttribute(AttributeExp exp)
onAttribute
in interface ExpressionVisitorVoid
public void onEpsilon()
onEpsilon
in interface ExpressionVisitorVoid
public void onNullSet()
onNullSet
in interface ExpressionVisitorVoid
public void onAnyString()
onAnyString
in interface ExpressionVisitorVoid
public void onData(DataExp exp)
onData
in interface ExpressionVisitorVoid
public void onValue(ValueExp exp)
onValue
in interface ExpressionVisitorVoid
public void onList(ListExp exp)
onList
in interface ExpressionVisitorVoid
public void onRef(ReferenceExp exp)
onRef
in interface ExpressionVisitorVoid
public void onOther(OtherExp exp)
onOther
in interface ExpressionVisitorVoid
public void onChoice(ChoiceExp exp)
onChoice
in interface ExpressionVisitorVoid
public void onSequence(SequenceExp exp)
onSequence
in interface ExpressionVisitorVoid