2007-04-18  Atsushi Enomoto <atsushi@ximian.com>

	* RdpPatterns.cs : inside elements, reset oneOrMore[Group] flags in
	  CheckConstraints().

2006-02-02  Atsushi Enomoto <atsushi@ximian.com>

	* RdpPatterns.cs : After profiling in depth, finally I found the
	  source of the worst perf. problem in the code - return x for 
	  (choice x x).
	  It now validates 5MB of OpenDocument specification content.xml,
	  which only Jing could do.

2006-01-16  Atsushi Enomoto <atsushi@ximian.com>

	* RdpObjects.cs : fixed warnings.

2006-01-16  Atsushi Enomoto <atsushi@ximian.com>

	* RdpPatterns.cs : RdpOneOrMore.EmptyTextDeriv() should be "override".
	  RdpList.EmptyTextDeriv() (which was also virtual incorrectly) was 
	  removed since the code was in wrong assumption.
	* Util.cs : debug string now contains data and dataExcept info.

2006-01-15  Atsushi Enomoto <atsushi@ximian.com>

	* RdpPatterns.cs : lazy evaluate Group branches. If left hand is
	  notAllowed, the returned value is always NotAllowed, no need to
	  compute another branch.

2006-01-13  Atsushi Enomoto <atsushi@ximian.com>

	* RdpObjects.cs, RdpPatterns.cs : introduced "IsContextDependent"
	  optimization; when a pattern is (namespace) context independent
	  (almost all cases except for QName validation), new TextDeriv()
	  overload that takes MemoizationStore memoizes TextDeriv results.

2006-01-12  Atsushi Enomoto <atsushi@ximian.com>

	* RdpPattern.cs :
	  Introduced EmptyTextDeriv() so that the results could be memoized.

2006-01-10  Atsushi Enomoto <atsushi@ximian.com>

	* RdpPatterns.cs :
	  - Added StartAttDeriv(), EndAttDeriv() and IsTextValueDependent.
	    (See corresponding changes in RelaxngValidatingReader.cs).
	  - Added a bunch of derivative method overloads to receive 
	    MemoizationStore and memoize results efficiently.

2006-01-05  Atsushi Enomoto <atsushi@ximian.com>

	* RdpPatterns.cs :
	  - Fixed RdpPattern.TextDeriv() and MixedTextDeriv() to not allow 
	    whitespaces incorrectly.
	  - Fixed MixedTextDeriv() to not require string argument.
	  - Erased commented code.
	  - in listDerivInternal(), skip empty strings.
	  - ValueMatch() should allow whitespaces if the pattern is nullable
	    (as defined in derivative).
	  - Replaced MakeChoice()/MakeGroup()/MakeInterleave()/MakeAfter()
	    in TextOnlyDeriv() and MixedTextDeriv(). They should not be
	    constructions but should be functions (thus, member methods).
	  - Fixed Nullable in RdpData and RdpValue to conform to the
	    derivative algorithm (it incorrectly extended to return false
	    for RELAX NG predefined datatypes).

2006-01-04  Atsushi Enomoto <atsushi@ximian.com>

	* RdpPattern.cs :
	  - Implemented textOnlyDeriv and mixedTextDeriv of "memoization".
	    Details are described in the "derivative" algorithm:
	    http://www.thaiopensource.com/relaxng/derivative.html#Memoization
	  - Added MakeChoiceLeaf() to implement "choice-leaves":
	    http://www.thaiopensource.com/relaxng/derivative.html#Avoiding_exponential_blowup
	  - To intern effectively, reorder choice and interleave contents by
	    hash code.
	  - Avoid extra pattern creation with related to empty and notAllowed
	    as one hand of binary branches.

2006-01-03  Atsushi Enomoto <atsushi@ximian.com>

	* RdpPattern.cs : reduced RdpFlip instantiation. Share patternPool
	  only when it does not exist.

2006-01-03  Atsushi Enomoto <atsushi@ximian.com>

	* Util.cs, RdpPatterns.cs : optimization. Removed extraneous
	  delegate instantiation. Avoid using enum for HashTable keys.

2005-12-27  Atsushi Enomoto <atsushi@ximian.com>

	* Util.cs RdpObjects.cs RdpContentType.cs RdpNameClasses.cs
	  RdpPatterns.cs :

	  ... and svn:eol-style as well, since there is exactly no one else
	  who develops this assembly and messes no one else.

2005-12-27  Atsushi Enomoto <atsushi@ximian.com>

	* Util.cs RdpObjects.cs RdpContentType.cs RdpNameClasses.cs
	  RdpPatterns.cs :

	  Ugh, seems like svn server shows different diffs than that of
	  client. Anyways here I fixed all mixed line endings.

2005-12-27  Atsushi Enomoto <atsushi@ximian.com>

	* RdpPatterns.cs : in ValueMatch() it should not strip whitespaces
	  which could be validated. This fixes test #256/2.i.xml.

2005-12-27  Atsushi Enomoto <atsushi@ximian.com>

	* RdpPatterns.cs : oneOrMore ancestor check for anyName/nsName in
	  section 7.3 was missing. This fixes test #357, #358 and #359.
	* RdpNameClass.cs : added HasInfiniteName property to RdpNameClass.

2005-12-27  Atsushi Enomoto <atsushi@ximian.com>

	* RdpPattern.cs, RdpUtil.cs : reimplemented name class analysis to
	  not create extraneous QName instances. This also fixes some weird
	  bugs (test #362 and #363).

2005-12-27  Atsushi Enomoto <atsushi@ximian.com>

	* RdpPattern.cs : Checking interleave restriction in section 7.4 with
	  PatternType was not insufficient. Now I use ContainsText(). It fixes
	  testcase #371.

2005-12-20  Atsushi Enomoto <atsushi@ximian.com>

	* RdpPattern.cs : cache ContentType and save speed.

2005-09-20  Atsushi Enomoto <atsushi@ximian.com>

	* Util.cs : Added name class analysis support. The algorithm is at
	  http://www.thaiopensource.com/relaxng/nameclass.html .
	* RdpPattern.cs :
	  - added CheckNameOverlap() for group and interleave to do name class
	    analysis (spec 7.3 and 7.4).
	  - Removed CheckAttributeDuplicates(). Now name class analysis is
	    implemented in CheckNameOverlap().
	  - Added additional bool parameter to GetLabels() to collect
	    RdpNameClass instances instead of XmlQualifiedName instances.

2005-07-31  Atsushi Enomoto <atsushi@ximian.com>

	* RdpPattern.cs : GetLabels() for RdpGroup should check attributes
	  when the left branch is not nullable (it works like an interleave).
	  Implemented spec 7.3 attribute check (though not enabled for now).

2005-04-11  Atsushi Enomoto <atsushi@ximian.com>

	* Util.cs : tiny debug string fix.

2005-03-01  Atsushi Enomoto <atsushi@ximian.com>

	* RdpPattern.cs : In "textDeriv(group p1 p2) s", "nullable p1" is
	  incorrectly computed as "nullable p".

2005-02-06  Atsushi Enomoto <atsushi@ximian.com>

	* RdpObjects.cs : provide error type name. removed commented code block.

2005-02-06  Atsushi Enomoto <atsushi@ximian.com>

	* RdpPattern.cs : MakeOneOrMore() did not always set up internal table.

2004-12-06  Atsushi Enomoto <atsushi@ximian.com>

	* Util.cs : trivial debug string fix.
	* RdpPattern.cs : trivial formatting fix.

2004-12-06  Atsushi Enomoto <atsushi@ximian.com>

	* RdpPattern.cs : The last attribute stuff broke usual validation wrt
	  global attributes.

2004-12-06  Atsushi Enomoto <atsushi@ximian.com>

	* RdpPattern.cs : fixed setupTable(). Avoid boxing.

2004-12-05  Atsushi Enomoto <atsushi@ximian.com>

	* RdpPattern.cs : RdpAttribute now omits value check when the argument
	  value is null. It is useful to get labels.

2004-12-05  Atsushi Enomoto <atsushi@ximian.com>

	* RdpPattern.cs : added GetLabels().

2004-06-25  Atsushi Enomoto <atsushi@ximian.com>

	* RdpContentType.cs, RdpNameClass.cs, RdpObjects.cs, RdpPatterns.cs,
	  Util.cs : added novell license term.

2004-06-21  Atsushi Enomoto <atsushi@ximian.com>

	* RdpPatterns.cs : Fixed ExpandRef() that caused incorrect nest error.

2004-06-17  Atsushi Enomoto <atsushi@ximian.com>

	* RdpPatterns.cs : Quick workaround for infinite loop happening in
	  some kind of recursive expansion.

2004-03-12  Atsushi Enomoto <atsushi@ximian.com>

	* RdpPatterns.cs : Fixed TextDeriv() to allow whitespace text nodes
	  except for Data and Value (though they are overridden).

2004-02-25  Atsushi Enomoto <atsushi@ximian.com>

	* Added RdpContextType.cs.
	* RdpNameClasses.cs,
	  RdpObjects.cs,
	  RdpPatterns.cs,
	  Util.cs : radical design change (too many things to write up).

2003-05-19  Atsushi Enomoto <ginga@kit.hi-ho.ne.jp>

	* RdpPattern.cs : Some method name capitalization.
	  Fixed RdpInterleave.StartTagOpenDeriv() which is logically incorrect.

2003-05-05  Atsushi Enomoto <ginga@kit.hi-ho.ne.jp>

	* RdpPattern.cs : added RdpAttribute.expandRef(). UnresolvedRef had
	  remained in attribute patterns.

2003-04-29  Atsushi Enomoto <ginga@kit.hi-ho.ne.jp>

	* Started.
	* added ChangeLog, RdpNameClasses.cs, RdpObjects.cs, RdpPatterns.cs
	  and Util.cs.

