// for now).
public abstract class RdpPattern
{
+ public static readonly RdpPattern Anything;
+
+ static RdpPattern ()
+ {
+ RdpPattern anyAtts = new RdpList (new RdpAttribute (RdpAnyName.Instance, RdpText.Instance));
+ RdpElement anyElement = new RdpElement (RdpAnyName.Instance, null);
+ Anything = new RdpChoice (RdpEmpty.Instance, new RdpChoice (anyAtts, new RdpChoice (RdpText.Instance, new RdpList (anyElement))));
+ anyElement.Children = Anything;
+ }
+
internal bool nullableComputed;
internal bool isNullable;
Hashtable patternPool;
return p2;
if (p2.PatternType == RelaxngPatternType.NotAllowed)
return p1;
+ if (p1 == p2)
+ return p1;
// choice-leaves support
if (p1.PatternType == RelaxngPatternType.Empty)
return MakeChoiceLeaf (p2);
p : p.Group (this.Choice (RdpEmpty.Instance));
}
- internal virtual RdpPattern EmptyTextDeriv (MemoizationStore memo)
+ internal override RdpPattern EmptyTextDeriv (MemoizationStore memo)
{
RdpPattern p = memo.EmptyTextDeriv (Child);
return p.PatternType == RelaxngPatternType.NotAllowed ?
return RdpNotAllowed.Instance;
}
- internal virtual RdpPattern EmptyTextDeriv (MemoizationStore memo)
- {
- return RdpEmpty.Instance;
- }
-
internal override void CheckConstraints (bool attribute, bool oneOrMore, bool oneOrMoreGroup, bool oneOrMoreInterleave, bool list, bool dataExcept)
{
if (list)
constraintsChecked = true;
if (attribute || list || dataExcept)
throw new RelaxngException ("Not allowed element occurence was specified in the pattern.");
- this.Children.CheckConstraints (false, oneOrMore, oneOrMoreGroup, oneOrMoreInterleave, false, false);
+ this.Children.CheckConstraints (false, false, false, oneOrMoreInterleave, false, false);
}
internal override bool ContainsText()
{
- return children.ContainsText ();
+ return false;
}
}