You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucenenet.apache.org by sy...@apache.org on 2014/11/07 06:39:14 UTC

[3/6] lucenenet git commit: Cannot reference "this" in ctor redirects

Cannot reference "this" in ctor redirects


Project: http://git-wip-us.apache.org/repos/asf/lucenenet/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucenenet/commit/f6387ca3
Tree: http://git-wip-us.apache.org/repos/asf/lucenenet/tree/f6387ca3
Diff: http://git-wip-us.apache.org/repos/asf/lucenenet/diff/f6387ca3

Branch: refs/heads/master
Commit: f6387ca3443cee7aa09c88245c32d616ec1b2cc8
Parents: 4c20661
Author: Itamar Syn-Hershko <it...@code972.com>
Authored: Fri Nov 7 07:34:56 2014 +0200
Committer: Itamar Syn-Hershko <it...@code972.com>
Committed: Fri Nov 7 07:34:56 2014 +0200

----------------------------------------------------------------------
 src/Lucene.Net.Queries/TermsFilter.cs | 26 ++++++++++++--------------
 1 file changed, 12 insertions(+), 14 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucenenet/blob/f6387ca3/src/Lucene.Net.Queries/TermsFilter.cs
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.Queries/TermsFilter.cs b/src/Lucene.Net.Queries/TermsFilter.cs
index 1585cdd..5731ec1 100644
--- a/src/Lucene.Net.Queries/TermsFilter.cs
+++ b/src/Lucene.Net.Queries/TermsFilter.cs
@@ -57,19 +57,16 @@ namespace Lucene.Net.Queries
         /// can contain duplicate terms and multiple fields.
         /// </summary>
         public TermsFilter(List<Term> terms)
-            : this(new FieldAndTermEnumAnonymousInnerClassHelper(this, terms), terms.Count)
+            : this(new FieldAndTermEnumAnonymousInnerClassHelper(terms), terms.Count)
         {
         }
 
         private class FieldAndTermEnumAnonymousInnerClassHelper : FieldAndTermEnum
-        {
-            private readonly TermsFilter outerInstance;
-
+        {            
             private IList<Term> terms;
 
-            public FieldAndTermEnumAnonymousInnerClassHelper(TermsFilter outerInstance, List<Term> terms)
+            public FieldAndTermEnumAnonymousInnerClassHelper(List<Term> terms)
             {
-                this.outerInstance = outerInstance;
                 this.terms = terms;
                 terms.Sort();
                 iter = terms.GetEnumerator();
@@ -94,20 +91,17 @@ namespace Lucene.Net.Queries
         /// a single field.
         /// </summary>
         public TermsFilter(string field, List<BytesRef> terms)
-            : this(new FieldAndTermEnumAnonymousInnerClassHelper2(this, field, terms), terms.Count)
+            : this(new FieldAndTermEnumAnonymousInnerClassHelper2(field, terms), terms.Count)
         {
         }
 
         private class FieldAndTermEnumAnonymousInnerClassHelper2 : FieldAndTermEnum
         {
-            private readonly TermsFilter outerInstance;
-
             private IList<BytesRef> terms;
 
-            public FieldAndTermEnumAnonymousInnerClassHelper2(TermsFilter outerInstance, string field, List<BytesRef> terms)
+            public FieldAndTermEnumAnonymousInnerClassHelper2(string field, List<BytesRef> terms)
                 : base(field)
             {
-                this.outerInstance = outerInstance;
                 this.terms = terms;
                 terms.Sort();
                 iter = terms.GetEnumerator();
@@ -147,6 +141,8 @@ namespace Lucene.Net.Queries
 
         private TermsFilter(FieldAndTermEnum iter, int length)
         {
+            iter.OuterInstance = this; // .NET specific, since "this" can't be used in ctor redirection
+
             // TODO: maybe use oal.index.PrefixCodedTerms instead?
             // If number of terms is more than a few hundred it
             // should be a win
@@ -382,15 +378,17 @@ namespace Lucene.Net.Queries
 
         private abstract class FieldAndTermEnum
         {
-            protected internal string field;
+            public TermsFilter OuterInstance { get; internal set; }
+
+            protected string field;
 
             public abstract BytesRef Next();
 
-            public FieldAndTermEnum()
+            protected FieldAndTermEnum()
             {
             }
 
-            public FieldAndTermEnum(string field)
+            protected FieldAndTermEnum(string field)
             {
                 this.field = field;
             }