+2006-05-30 Gert Driesen <drieseng@users.sourceforge.net>
+
+ * CaptureCollection.cs: Removed virtual keyword to fix API mismatches.
+ * MatchCollection.cs: Removed virtual keyword to fix API mismatches.
+ * GroupCollection.cs: Removed virtual keyword to fix API mismatches.
+
+2006-05-08 Raja R Harinath <rharinath@novell.com>
+
+ Fix #78278
+ Remove 65535-limit on number of repetitions matched by a pattern.
+ We still have a 65535 limit on the length of a pattern and the
+ number of groups in a pattern.
+ * compiler.cs (PatternCompiler.EmitCount): New. Emits an int as
+ two ushorts into the program stream.
+ (EmitInfo, EmitRepeat, EmitFastRepeat): Use it to emit integers
+ rather than shorts.
+ * interpreter.cs (Intepreter.ReadProgramCount): Read an int
+ emitted into the program stream.
+ (Interpreter): Use it. Update counts.
+ (Interpreter.Eval) [OpCode.Repeat, OpCode.FastRepeat]: Likewise.
+ * parser.cs (ParseGroup): Pass 0x7ffffff as the max value for '*'
+ and '+' repetition patterns.
+ * arch.cs (Info, Repeat, FastRepeat): Update description.
+
+2006-04-18 Raja R Harinath <rharinath@novell.com>
+
+ Treat fixed repetitions of simple regexes as simple too.
+ * syntax.cs (Expression.IsComplex): Make abstract.
+ (Group.IsComplex, Alternation.IsComplex): Move ...
+ (CompositeExpression.IsComplex): ... here.
+ (Group.GetAnchorInfo): Reduce allocations. Avoid creating another
+ ArrayList, and use a StringBuilder to build up the string.
+ (Repetition.GetAnchorInfo): Use a StringBuilder to build up the string.
+ (ExpressionAssertion.IsComplex): Override.
+
+2006-04-17 Florian Gross <flgr@ccan.de>
+ Raja R Harinath <rharinath@novell.com>
+
+ * syntax.cs (CharacterClass.Compile): Emit categories after the
+ character intervals so that the evaluator can pick up the
+ 'IgnoreCase' flag.
+
+2006-04-07 Raja R Harinath <rharinath@novell.com>
+
+ Fix #78007
+ * interpreter.cs (Interpreter.Eval) [Anchor, Position.StartOfString]:
+ Don't reset 'ptr' to 0 during forward scan.
+
+ Fix #76345
+ * interpreter.cs (Interpreter.FastEval) [FastRepeat]: If the first
+ tail operation has a 'negate' flag, avoid the "match next char"
+ optimization.
+
+ Fix #69269
+ * arch.cs (OpCode.NotCategory): New. Stands for matching a
+ character _not_ from the given category.
+ * debug.cs (DisassembleBlock): Handle it.
+ * compiler.cs (ICompiler.EmitNotCategory): New.
+ (Compiler.EmitNotCategory): New. Emit OpCode.NotCategory.
+ * syntax.cs (CharacterClass.Compile): Don't conflate negation of
+ the character class and negation of the category. Use
+ EmitNotCategory.
+ * interpreter.cs (Interpreter.Eval): Pass OpCode.NotCategory to
+ EvalChar.
+ (Interpreter.EvalChar): Handle it.
+
+2006-04-06 Raja R Harinath <rharinath@novell.com>
+
+ Fix #77487
+ * interpreter.cs (Eval) [Until, FastUntil]: Set 'deep' to null
+ when evaluating the tail. Ensure that backtracks don't confuse
+ the recursion vs. iteration detector.
+
+2006-04-03 Raja R Harinath <rharinath@novell.com>
+
+ * interpreter.cs (Eval) [Until, lazy]: Avoid extra evaluation on a
+ degenerate match.
+
+2006-03-30 Raja R Harinath <harinath@gmail.com>
+
+ Fix #77626
+ * parser.cs (Parser.ParseCharacterClass): Don't automatically
+ assume there's a range when we see '-'. Ensure that we have seen
+ at least one other character, and that we aren't already parsing a
+ range. Handle some more errors.
+
+2005-12-19 Kornél Pál <kornelpal@hotmail.com>
+
+ * Regex.cs: Added support for regular expressions compiled to
+ assemblies by compiling the pattern. This solution ignores existing
+ CIL code but provides full support for regular expression classes
+ compiled by MS.NET.
+
+2005-11-21 Sebastien Pouliot <sebastien@ximian.com>
+
+ * CaptureCollection.cs: Fixed length check.
+ * Group.cs: Added missing validation for Synchronized method.
+ * Match.cs: Added missing validation for Synchronized and Result
+ methods.
+ * MatchEvaluator.cs: Added [Serializable] for 2.0 profile.
+ * RegexCompilationInfo.cs: Added missing property validation.
+ * Regex.cs: Implemented UseOptionC and UseOptionR protected methods
+ (now documented). Fixed API for 2.0 profile.
+ * RegexRunner.cs: Stubbed CharInClass for 2.0 profile.
+
+2005-11-17 Sebastien Pouliot <sebastien@ximian.com>
+
+ * Match.cs: Removed the ": base ()" on the private ctor as it is
+ unrequired and cause an extra public ctor to added (bug #76736).
+ * MatchCollection.cs: Add missing virtual to indexer property.
+
+2005-09-23 Raja R Harinath <rharinath@novell.com>
+
+ * interpreter.cs (Interpreter.Eval) [OpCode.Until]: Invert the
+ sense of a test to reflect the code re-organization.
+
+2005-09-22 Raja R Harinath <rharinath@novell.com>
+
+ Fix #72152, #72989.
+ * interpreter.cs (Interpreter.Eval) [OpCode.Until]: Avoid some
+ cases of recursion when dealing with eager quantifiers too. We
+ now avoid recursion when handling the innermost quantifier.
+ (Interpreter.IntStack, Interpreter.stack): New. Stack to help
+ implement backtracking in eager quantifiers.
+
+2005-09-21 Raja R Harinath <rharinath@novell.com>
+
+ * interpreter.cs (Interpreter.Eval) [OpCode.Until]: Avoid some
+ cases of recursion when dealing with the minimum count and lazy
+ quantifiers.
+
+2005-08-23 Raja R Harinath <rharinath@novell.com>
+
+ * regex.cs: Remove. Split into ...
+ * MatchEvaluator.cs, Regex.cs, RegexCompilationInfo.cs,
+ RegexOptions.cs: ... these. Now every publicly exposed type in
+ this namespace has its own file.
+
+2005-07-21 Florian Gross <flgr@ccan.de>
+
+ * Fixed a bug in category.cs that caused ECMAScript \d to fail.
+
+2005-07-13 Raja R Harinath <rharinath@novell.com>
+
+ Make even more lazier.
+ * MatchCollection.cs (TryToGet): Don't generate match i+1 when
+ we're looking for match i. Change post-conditions.
+ (FullList): New helper property. Ensures the list is fully populated.
+ (Count, CopyTo): Use it.
+ (Enumerator.Current): Update to new post-conditions of TryToGet.
+ (Enumerator.MoveNext): Likewise. Don't modify index if we're
+ beyond the end.
+
+2005-07-08 Raja R Harinath <rharinath@novell.com>
+
+ * MatchCollection.cs: Convert to incremental mode.
+ * regex.cs (Regex.Matches): Update. Pass responsibility of
+ generating all matches to MatchCollection.
+
+2005-06-14 Raja R Harinath <harinath@gmail.com>
+
+ * parser.cs (Parser.ConsumeWhitespace): Add bounds check.
+
+ Fix #74753.
+ * Match.cs (Match) [zero-argument variant]: Make private.
+ * GroupCollection (Item) [string variant]: Don't look for the
+ group number in an empty match.
+
+2005-06-10 Raja R Harinath <rharinath@novell.com>
+
+ * interpreter.cs (Interpreter.GenerateMatch): Avoid allocating two
+ intermediate arrays to build the final result.
+ (Interpreter.GetGroupInfo, Interpreter.PopulateGroup): New helper
+ functions.
+ * CaptureCollection.cs (list): Change from ArrayList to list.
+ (SetValue): New internal helper, used by Interpreter.PopulateGroup.
+ (Enumerator): Remove helper class.
+ (IEnumerator.GetEnumerator): Just use list.GetEnumerator.
+ * GroupCollection.cs: Likewise.
+ * Group.cs (Group): Move responsibility of populating 'Captures'
+ to Interpreter.PopulateGroup.
+ * Match.cs (Match): Move responsibility of populating 'Groups' to
+ Interpreter.GenerateMatch.
+
+2005-05-25 Raja R Harinath <rharinath@novell.com>
+
+ * replace.cs (ReplacementEvaluator.Compile): Rewrite to avoid
+ creating several intermediate strings. Simplify internal
+ intermediate representation.
+ (ReplacementEvaluator.EvaluateAppend): New. Version of Evaluate
+ that builds the result directly on a passed-in StringBuilder.
+ (ReplacementEvaluator.Evaluate): Just a wrapper around
+ EvaluateAppend.
+ * regex.cs (MatchAppendEvaluator): New internal delegate.
+ (Regex.Replace): Use MatchAppendEvaluator.
+ (Regex.Adapter): New class used to adapt a MatchEvaluator to a
+ MatchAppendEvaluator.
+
+2005-05-24 Raja R Harinath <rharinath@novell.com>
+
+ * replace.cs (ReplacementEvaluator.CompileTerm): Fix group
+ returned by $+.
+
+2005-05-20 Ben Maurer <bmaurer@ximian.com>
+
+ * regex.cs: Some memory allocation optimizations.
+
+2005-05-20 Raja R Harinath <rharinath@novell.com>
+
+ Fix #74735.
+ * replace.cs (ReplacementEvaluator.Compile): Allow CompileTerm to
+ fail and yet have advanced the pointer. Append the scanned-over
+ portion to the "literal" being built.
+ (ReplacementEvaluator.CompileTerm): Don't throw any exceptions.
+ If a term cannot be recognized, just return null.
+
+ * compiler.cs (InterpreterFactory.GroupCount): Fix. The 0'th
+ index corresponds to Opcode.Info.
+
+ * parser.cs (Parser.Unescape): If the string doesn't contain any
+ '\' character, don't allocate a new string.
+
+ * replace.cs (ReplacementEvalutator.Term.AppendResult): Rename
+ from GetResult. Append to a passed-in StringBuilder rather than
+ return a string.
+ (ReplacementEvaluator.Evaluate): Update.
+
+ * Capture.cs, Group.cs, Match.cs: New files split out of ...
+ * match.cs: ... this. Remove.
+
+2005-02-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
+
+ * parser.cs: stuff inside {} might not be a quantifier. Fixes
+ bug #69193.
+
+2005-01-10 Gonzalo Paniagua Javier <gonzalo@ximian.com>
+
+ * quicksearch.cs: handle IgnoreCase when getting the shift distance.
+ Fixes bug #69065. Patch by mei@work.email.ne.jp.
+
+2005-01-08 Miguel de Icaza <miguel@ximian.com>
+
+ * syntax.cs: Applied patch from mei@work.email.ne.jp to fix bug
+ #71077.
+
+ * parser.cs: Turns out that \digit sequences are octal sequences
+ (no leading zero is needed); And the three octal digit rule
+ applies to the leading zero as well.
+
+ This fixes the Unescape method.
+
2004-11-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
* regex.cs: use NextMatch to move on to the next match. Fixes bug
* replace.cs, parser.cs: Use stringbuilder for allocation sanity.
-2004-10-21 Joerg Rosenkranz <joergr@voelcker.com>\r
-\r
- * regex.cs: Fixed a bug introduced with the last patch which\r
- prevented any replacements when a postive count is given.\r
- This also happens in all overloads without count parameter.
-\r
+2004-10-21 Joerg Rosenkranz <joergr@voelcker.com>
+
+ * regex.cs: Fixed a bug introduced with the last patch which
+ prevented any replacements when a postive count is given.
+ This also happens in all overloads without count parameter.
+
2004-10-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
* regex.cs: in Replace, when count is negative, replacement continues