lucenenet-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From nightowl...@apache.org
Subject [20/50] lucenenet git commit: Lucene.Net.Grouping.SearchGroup: Fixed Equals() and GetHashCode() to use Collections.Equals() for the generic type in case it is a collection that needs its values compared
Date Thu, 30 Mar 2017 18:00:15 GMT
Lucene.Net.Grouping.SearchGroup: Fixed Equals() and GetHashCode() to use Collections.Equals()
for the generic type in case it is a collection that needs its values compared


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

Branch: refs/heads/api-work
Commit: 5c512dd5d23692b07d5b310d63f2661964b30e2a
Parents: d747e7a
Author: Shad Storhaug <shad@shadstorhaug.com>
Authored: Thu Mar 30 08:19:47 2017 +0700
Committer: Shad Storhaug <shad@shadstorhaug.com>
Committed: Thu Mar 30 09:12:32 2017 +0700

----------------------------------------------------------------------
 src/Lucene.Net.Grouping/SearchGroup.cs | 24 +++++++++++++++++++++---
 1 file changed, 21 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucenenet/blob/5c512dd5/src/Lucene.Net.Grouping/SearchGroup.cs
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.Grouping/SearchGroup.cs b/src/Lucene.Net.Grouping/SearchGroup.cs
index a5e6cd5..f9772d9 100644
--- a/src/Lucene.Net.Grouping/SearchGroup.cs
+++ b/src/Lucene.Net.Grouping/SearchGroup.cs
@@ -180,9 +180,17 @@ namespace Lucene.Net.Search.Grouping
             }
             private bool inQueue;
 
+            // LUCENENET specific - store whether T is value type
+            // for optimization of GetHashCode() and Equals()
+            private readonly bool groupValueIsValueType;
+
             public MergedGroup(T groupValue)
             {
                 this.groupValue = groupValue;
+
+                // LUCENENET specific - store whether T is value type
+                // for optimization of GetHashCode() and Equals()
+                this.groupValueIsValueType = typeof(T).IsValueType;
             }
 
             // Only for assert
@@ -197,7 +205,13 @@ namespace Lucene.Net.Search.Grouping
                     }
                     else
                     {
-                        Debug.Assert(!groupValue.Equals(otherMergedGroup.groupValue));
+                        
+                        Debug.Assert(!groupValueIsValueType 
+                            ? groupValue.Equals(otherMergedGroup.groupValue)
+
+                            // LUCENENET specific - use Collections.Equals() if we have a
reference type
+                            // to ensure if it is a collection its contents are compared
+                            : Collections.Equals(groupValue, otherMergedGroup.groupValue));
                     }
                 }
                 return true;
@@ -218,7 +232,9 @@ namespace Lucene.Net.Search.Grouping
                     }
                     else
                     {
-                        return groupValue.Equals(otherMergedGroup);
+                        // LUCENENET specific - use Collections.Equals() if we have a reference
type
+                        // to ensure if it is a collection its contents are compared
+                        return groupValueIsValueType ? groupValue.Equals(otherMergedGroup)
: Collections.Equals(groupValue, otherMergedGroup);
                     }
                 }
                 else
@@ -235,7 +251,9 @@ namespace Lucene.Net.Search.Grouping
                 }
                 else
                 {
-                    return groupValue.GetHashCode();
+                    // LUCENENET specific - use Collections.GetHashCode() if we have a reference
type
+                    // to ensure if it is a collection its contents are compared
+                    return groupValueIsValueType ? groupValue.GetHashCode() : Collections.GetHashCode(groupValue);
                 }
             }
         }


Mime
View raw message