72 instantiations of SegmentedHashSet
Microsoft.CodeAnalysis (6)
ImmutableSegmentedHashSet`1.cs (3)
16public static readonly ImmutableSegmentedHashSet<T> Empty = new(new SegmentedHashSet<T>()); 61var set = new SegmentedHashSet<T>(self.KeyComparer) { value }; 263return new ImmutableSegmentedHashSet<T>(new SegmentedHashSet<T>(self._set, equalityComparer));
ImmutableSegmentedHashSet`1+Builder.cs (3)
47_mutableSet = new SegmentedHashSet<T>(ReadOnlySet, value ?? EqualityComparer<T>.Default); 67_mutableSet = new SegmentedHashSet<T>(originalSet._set, originalSet.KeyComparer); 89_mutableSet = new SegmentedHashSet<T>(KeyComparer);
Microsoft.CodeAnalysis.UnitTests (66)
Collections\HashSet\SegmentedHashSet_Generic_Tests.cs (8)
60return new SegmentedHashSet<int>(new WrapStructural_Int()); 84return new SegmentedHashSet<SimpleInt>(new WrapStructural_SimpleInt()); 98return new SegmentedHashSet<EquatableBackwardsOrder>(); 117return new SegmentedHashSet<int>(new Comparer_SameAsDefaultComparer()); 136return new SegmentedHashSet<int>(new Comparer_HashCodeAlwaysReturnsZero()); 160return new SegmentedHashSet<int>(new Comparer_ModOfInt(15000)); 179return new SegmentedHashSet<int>(new Comparer_AbsOfInt()); 198return new SegmentedHashSet<int>(new BadIntEqualityComparer());
Collections\HashSet\SegmentedHashSet_Generic_Tests`1.cs (56)
36return new SegmentedHashSet<T>(); 56SegmentedHashSet<T> set = new SegmentedHashSet<T>(); 64SegmentedHashSet<T> set = new SegmentedHashSet<T>(comparer); 75SegmentedHashSet<T> set = new SegmentedHashSet<T>(comparer); 89SegmentedHashSet<T> set = new SegmentedHashSet<T>(enumerable); 98SegmentedHashSet<T> hashSetFromDuplicates = new SegmentedHashSet<T>(Enumerable.Range(0, 40).SelectMany(i => items).ToArray()); 99SegmentedHashSet<T> hashSetFromNoDuplicates = new SegmentedHashSet<T>(items); 112SegmentedHashSet<T> set = new SegmentedHashSet<T>(source, GetIEqualityComparer()); 119Assert.Throws<ArgumentNullException>(() => new SegmentedHashSet<T>((IEnumerable<T>)null!)); 120Assert.Throws<ArgumentNullException>(() => new SegmentedHashSet<T>((IEnumerable<T>)null!, EqualityComparer<T>.Default)); 131SegmentedHashSet<T> set = new SegmentedHashSet<T>(enumerable, GetIEqualityComparer()); 163SegmentedHashSet<object> set = new SegmentedHashSet<object>(); 294var set = new SegmentedHashSet<SegmentedHashSet<T>>() 296new SegmentedHashSet<T> { objects[0], objects[1], objects[2] }, 297new SegmentedHashSet<T> { objects[3], objects[4], objects[5] } 300var noComparerSet = new SegmentedHashSet<SegmentedHashSet<T>>() 302new SegmentedHashSet<T> { objects[0], objects[1], objects[2] }, 303new SegmentedHashSet<T> { objects[3], objects[4], objects[5] } 306var comparerSet1 = new SegmentedHashSet<SegmentedHashSet<T>>(SegmentedHashSet<T>.CreateSetComparer()) 308new SegmentedHashSet<T> { objects[0], objects[1], objects[2] }, 309new SegmentedHashSet<T> { objects[3], objects[4], objects[5] } 312var comparerSet2 = new SegmentedHashSet<SegmentedHashSet<T>>(SegmentedHashSet<T>.CreateSetComparer()) 314new SegmentedHashSet<T> { objects[3], objects[4], objects[5] }, 315new SegmentedHashSet<T> { objects[0], objects[1], objects[2] } 328var set = new SegmentedHashSet<SegmentedHashSet<T>>() 330new SegmentedHashSet<T> { objects[0], objects[1], objects[2] }, 331new SegmentedHashSet<T> { objects[3], objects[4], objects[5] } 334var noComparerSet = new SegmentedHashSet<SegmentedHashSet<T>>() 336new SegmentedHashSet<T> { objects[0], objects[1], objects[2] }, 337new SegmentedHashSet<T> { objects[3], objects[4], objects[5] } 340var comparerSet = new SegmentedHashSet<SegmentedHashSet<T>>(SegmentedHashSet<T>.CreateSetComparer()) 342new SegmentedHashSet<T> { objects[0], objects[1], objects[2] }, 343new SegmentedHashSet<T> { objects[3], objects[4], objects[5] } 356SegmentedHashSet<T> set = new SegmentedHashSet<T>(); 365SegmentedHashSet<T> set = new SegmentedHashSet<T>(capacity); 373SegmentedHashSet<T> set = new SegmentedHashSet<T>(capacity); 387var set = new SegmentedHashSet<T>(Capacity); 397Assert.Throws<ArgumentOutOfRangeException>("capacity", () => new SegmentedHashSet<T>(-1)); 398Assert.Throws<ArgumentOutOfRangeException>("capacity", () => new SegmentedHashSet<T>(int.MinValue)); 406SegmentedHashSet<T> set = new SegmentedHashSet<T>(capacity, comparer); 419SegmentedHashSet<T> set = new SegmentedHashSet<T>(capacity, comparer); 432Assert.Throws<ArgumentOutOfRangeException>("capacity", () => new SegmentedHashSet<T>(-1, comparer)); 433Assert.Throws<ArgumentOutOfRangeException>("capacity", () => new SegmentedHashSet<T>(int.MinValue, comparer)); 442SegmentedHashSet<T> set = new SegmentedHashSet<T> { value }; 456SegmentedHashSet<T> set = new SegmentedHashSet<T> { value }; 473SegmentedHashSet<T> set = new SegmentedHashSet<T> { value }; 483SegmentedHashSet<T> set = new SegmentedHashSet<T> { value }; 517var set = new SegmentedHashSet<T>(); 524var set = new SegmentedHashSet<T>(); 535var set = new SegmentedHashSet<T>(); 549set = new SegmentedHashSet<T>(currentCapacity); 559var set = new SegmentedHashSet<T>(capacity); 616var set = new SegmentedHashSet<T>(); 619set = new SegmentedHashSet<T>(); 622set = new SegmentedHashSet<T>(); 652var set = new SegmentedHashSet<T>(capacity, c);
Collections\HashSet\SegmentedHashSet_IEnumerable_NonGeneric_Tests.cs (1)
22var set = new SegmentedHashSet<string>();
Collections\List\TestBase.Generic.cs (1)
227SegmentedHashSet<T> set = new SegmentedHashSet<T>(GetIEqualityComparer());
157 references to SegmentedHashSet
Microsoft.CodeAnalysis (73)
ImmutableSegmentedHashSet`1.cs (3)
18private readonly SegmentedHashSet<T> _set; 20private ImmutableSegmentedHashSet(SegmentedHashSet<T> set) 61var set = new SegmentedHashSet<T>(self.KeyComparer) { value };
ImmutableSegmentedHashSet`1+Builder.cs (5)
26private SegmentedHashSet<T>? _mutableSet; 55private SegmentedHashSet<T> ReadOnlySet => _mutableSet ?? _set._set; 59private SegmentedHashSet<T> GetOrCreateMutableSet() 142SegmentedHashSet<T>? mutableSet = null; 238SegmentedHashSet<T>? mutableSet = null;
ImmutableSegmentedHashSet`1+Enumerator.cs (3)
16private readonly SegmentedHashSet<T> _set; 17private SegmentedHashSet<T>.Enumerator _enumerator; 19internal Enumerator(SegmentedHashSet<T> set)
ImmutableSegmentedHashSet`1+PrivateInterlocked.cs (3)
19var set = Volatile.Read(ref Unsafe.AsRef(in location._set)); 28var set = Interlocked.Exchange(ref Unsafe.AsRef(in location._set), value._set); 37var set = Interlocked.CompareExchange(ref Unsafe.AsRef(in location._set), value._set, comparand._set);
SegmentedHashSet`1.cs (54)
95if (collection is SegmentedHashSet<T> otherAsHashSet && EqualityComparersAreEqual(this, otherAsHashSet)) 135private void ConstructFrom(SegmentedHashSet<T> source) 181/// <summary>Removes all elements from the <see cref="SegmentedHashSet{T}"/> object.</summary> 198/// <summary>Determines whether the <see cref="SegmentedHashSet{T}"/> contains the specified element.</summary> 199/// <param name="item">The element to locate in the <see cref="SegmentedHashSet{T}"/> object.</param> 200/// <returns>true if the <see cref="SegmentedHashSet{T}"/> object contains the specified element; otherwise, false.</returns> 376/// <summary>Adds the specified element to the <see cref="SegmentedHashSet{T}"/>.</summary> 378/// <returns>true if the element is added to the <see cref="SegmentedHashSet{T}"/> object; false if the element is already present.</returns> 407/// <summary>Modifies the current <see cref="SegmentedHashSet{T}"/> object to contain all elements that are present in itself, the specified collection, or both.</summary> 408/// <param name="other">The collection to compare to the current <see cref="SegmentedHashSet{T}"/> object.</param> 422/// <summary>Modifies the current <see cref="SegmentedHashSet{T}"/> object to contain only elements that are present in that object and in the specified collection.</summary> 423/// <param name="other">The collection to compare to the current <see cref="SegmentedHashSet{T}"/> object.</param> 449if (other is SegmentedHashSet<T> otherAsSet && EqualityComparersAreEqual(this, otherAsSet)) 459/// <summary>Removes all elements in the specified collection from the current <see cref="SegmentedHashSet{T}"/> object.</summary> 460/// <param name="other">The collection to compare to the current <see cref="SegmentedHashSet{T}"/> object.</param> 488/// <summary>Modifies the current <see cref="SegmentedHashSet{T}"/> object to contain only elements that are present either in that object or in the specified collection, but not both.</summary> 489/// <param name="other">The collection to compare to the current <see cref="SegmentedHashSet{T}"/> object.</param> 516if (other is SegmentedHashSet<T> otherAsSet && EqualityComparersAreEqual(this, otherAsSet)) 526/// <summary>Determines whether a <see cref="SegmentedHashSet{T}"/> object is a subset of the specified collection.</summary> 527/// <param name="other">The collection to compare to the current <see cref="SegmentedHashSet{T}"/> object.</param> 528/// <returns>true if the <see cref="SegmentedHashSet{T}"/> object is a subset of <paramref name="other"/>; otherwise, false.</returns> 545if (other is SegmentedHashSet<T> otherAsSet && EqualityComparersAreEqual(this, otherAsSet)) 562/// <summary>Determines whether a <see cref="SegmentedHashSet{T}"/> object is a proper subset of the specified collection.</summary> 563/// <param name="other">The collection to compare to the current <see cref="SegmentedHashSet{T}"/> object.</param> 564/// <returns>true if the <see cref="SegmentedHashSet{T}"/> object is a proper subset of <paramref name="other"/>; otherwise, false.</returns> 593if (other is SegmentedHashSet<T> otherAsSet && EqualityComparersAreEqual(this, otherAsSet)) 610/// <summary>Determines whether a <see cref="SegmentedHashSet{T}"/> object is a proper superset of the specified collection.</summary> 611/// <param name="other">The collection to compare to the current <see cref="SegmentedHashSet{T}"/> object.</param> 612/// <returns>true if the <see cref="SegmentedHashSet{T}"/> object is a superset of <paramref name="other"/>; otherwise, false.</returns> 636if (other is SegmentedHashSet<T> otherAsSet && 647/// <summary>Determines whether a <see cref="SegmentedHashSet{T}"/> object is a proper superset of the specified collection.</summary> 648/// <param name="other">The collection to compare to the current <see cref="SegmentedHashSet{T}"/> object.</param> 649/// <returns>true if the <see cref="SegmentedHashSet{T}"/> object is a proper superset of <paramref name="other"/>; otherwise, false.</returns> 673if (other is SegmentedHashSet<T> otherAsSet && EqualityComparersAreEqual(this, otherAsSet)) 690/// <summary>Determines whether the current <see cref="SegmentedHashSet{T}"/> object and a specified collection share common elements.</summary> 691/// <param name="other">The collection to compare to the current <see cref="SegmentedHashSet{T}"/> object.</param> 692/// <returns>true if the <see cref="SegmentedHashSet{T}"/> object and <paramref name="other"/> share at least one common element; otherwise, false.</returns> 722/// <summary>Determines whether a <see cref="SegmentedHashSet{T}"/> object and the specified collection contain the same elements.</summary> 723/// <param name="other">The collection to compare to the current <see cref="SegmentedHashSet{T}"/> object.</param> 724/// <returns>true if the <see cref="SegmentedHashSet{T}"/> object is equal to <paramref name="other"/>; otherwise, false.</returns> 739if (other is SegmentedHashSet<T> otherAsSet && EqualityComparersAreEqual(this, otherAsSet)) 769/// <summary>Copies the elements of a <see cref="SegmentedHashSet{T}"/> object to an array, starting at the specified array index.</summary> 813/// <summary>Removes all elements that match the conditions defined by the specified predicate from a <see cref="SegmentedHashSet{T}"/> collection.</summary> 907/// Sets the capacity of a <see cref="SegmentedHashSet{T}"/> object to the actual number of elements it contains, 949/// <summary>Returns an <see cref="IEqualityComparer"/> object that can be used for equality testing of a <see cref="SegmentedHashSet{T}"/> object.</summary> 950public static IEqualityComparer<SegmentedHashSet<T>> CreateSetComparer() => new SegmentedHashSetEqualityComparer<T>(); 974/// <returns>true if the element is added to the <see cref="SegmentedHashSet{T}"/> object; false if the element is already present.</returns> 1128internal bool IsSubsetOfHashSetWithSameComparer(SegmentedHashSet<T> other) 1145private void IntersectWithHashSetWithSameComparer(SegmentedHashSet<T> other) 1212private void SymmetricExceptWithUniqueHashSet(SegmentedHashSet<T> other) 1370internal static bool EqualityComparersAreEqual(SegmentedHashSet<T> set1, SegmentedHashSet<T> set2) => set1.Comparer.Equals(set2.Comparer); 1388private readonly SegmentedHashSet<T> _hashSet; 1393internal Enumerator(SegmentedHashSet<T> hashSet)
SegmentedHashSetEqualityComparer`1.cs (5)
16internal sealed class SegmentedHashSetEqualityComparer<T> : IEqualityComparer<SegmentedHashSet<T>?> 18public bool Equals(SegmentedHashSet<T>? x, SegmentedHashSet<T>? y) 36if (SegmentedHashSet<T>.EqualityComparersAreEqual(x, y)) 64public int GetHashCode(SegmentedHashSet<T>? obj)
Microsoft.CodeAnalysis.UnitTests (84)
Collections\HashSet\SegmentedHashSet_Generic_Tests`1.cs (79)
56SegmentedHashSet<T> set = new SegmentedHashSet<T>(); 64SegmentedHashSet<T> set = new SegmentedHashSet<T>(comparer); 75SegmentedHashSet<T> set = new SegmentedHashSet<T>(comparer); 89SegmentedHashSet<T> set = new SegmentedHashSet<T>(enumerable); 98SegmentedHashSet<T> hashSetFromDuplicates = new SegmentedHashSet<T>(Enumerable.Range(0, 40).SelectMany(i => items).ToArray()); 99SegmentedHashSet<T> hashSetFromNoDuplicates = new SegmentedHashSet<T>(items); 107SegmentedHashSet<T> source = (SegmentedHashSet<T>)CreateEnumerable(EnumerableType.SegmentedHashSet, null, count, 0, 0); 112SegmentedHashSet<T> set = new SegmentedHashSet<T>(source, GetIEqualityComparer()); 131SegmentedHashSet<T> set = new SegmentedHashSet<T>(enumerable, GetIEqualityComparer()); 143SegmentedHashSet<T> set = (SegmentedHashSet<T>)GenericISetFactory(setLength); 152SegmentedHashSet<T> set = (SegmentedHashSet<T>)GenericISetFactory(setLength); 163SegmentedHashSet<object> set = new SegmentedHashSet<object>(); 176SegmentedHashSet<T> set = (SegmentedHashSet<T>)GenericISetFactory(setLength); 188SegmentedHashSet<T> set = (SegmentedHashSet<T>)GenericISetFactory(setLength); 196SegmentedHashSet<T> set = (SegmentedHashSet<T>)GenericISetFactory(setLength); 210SegmentedHashSet<T> set = (SegmentedHashSet<T>)GenericISetFactory(setLength); 229SegmentedHashSet<T> set = (SegmentedHashSet<T>)GenericISetFactory(setLength); 247SegmentedHashSet<T> set = (SegmentedHashSet<T>)GenericISetFactory(setLength); 267SegmentedHashSet<T> set = (SegmentedHashSet<T>)GenericISetFactory(count); 277SegmentedHashSet<T> set = (SegmentedHashSet<T>)GenericISetFactory(count); 294var set = new SegmentedHashSet<SegmentedHashSet<T>>() 300var noComparerSet = new SegmentedHashSet<SegmentedHashSet<T>>() 306var comparerSet1 = new SegmentedHashSet<SegmentedHashSet<T>>(SegmentedHashSet<T>.CreateSetComparer()) 312var comparerSet2 = new SegmentedHashSet<SegmentedHashSet<T>>(SegmentedHashSet<T>.CreateSetComparer()) 328var set = new SegmentedHashSet<SegmentedHashSet<T>>() 334var noComparerSet = new SegmentedHashSet<SegmentedHashSet<T>>() 340var comparerSet = new SegmentedHashSet<SegmentedHashSet<T>>(SegmentedHashSet<T>.CreateSetComparer()) 347Assert.True(noComparerSet.SequenceEqual(set, SegmentedHashSet<T>.CreateSetComparer())); 356SegmentedHashSet<T> set = new SegmentedHashSet<T>(); 365SegmentedHashSet<T> set = new SegmentedHashSet<T>(capacity); 373SegmentedHashSet<T> set = new SegmentedHashSet<T>(capacity); 387var set = new SegmentedHashSet<T>(Capacity); 406SegmentedHashSet<T> set = new SegmentedHashSet<T>(capacity, comparer); 419SegmentedHashSet<T> set = new SegmentedHashSet<T>(capacity, comparer); 442SegmentedHashSet<T> set = new SegmentedHashSet<T> { value }; 456SegmentedHashSet<T> set = new SegmentedHashSet<T> { value }; 473SegmentedHashSet<T> set = new SegmentedHashSet<T> { value }; 483SegmentedHashSet<T> set = new SegmentedHashSet<T> { value }; 500SegmentedHashSet<T> set = (SegmentedHashSet<T>)(GenericISetFactory(setLength)); 517var set = new SegmentedHashSet<T>(); 524var set = new SegmentedHashSet<T>(); 535var set = new SegmentedHashSet<T>(); 544SegmentedHashSet<T> set; 559var set = new SegmentedHashSet<T>(capacity); 562set = (SegmentedHashSet<T>)GenericISetFactory(capacity); 574SegmentedHashSet<T> set = (SegmentedHashSet<T>)GenericISetFactory(setLength); 578set = (SegmentedHashSet<T>)GenericISetFactory(setLength); 582set = (SegmentedHashSet<T>)GenericISetFactory(setLength); 594SegmentedHashSet<T> set = (SegmentedHashSet<T>)GenericISetFactory(setLength); 603SegmentedHashSet<T> set = (SegmentedHashSet<T>)GenericISetFactory(setLength); 616var set = new SegmentedHashSet<T>(); 631SegmentedHashSet<T> set = (SegmentedHashSet<T>)GenericISetFactory(setLength); 652var set = new SegmentedHashSet<T>(capacity, c);
Collections\HashSet\SegmentedHashSet_IEnumerable_NonGeneric_Tests.cs (4)
22var set = new SegmentedHashSet<string>(); 44SegmentedHashSet<string> casted = ((SegmentedHashSet<string>)enumerable); 55private protected static string CreateT(SegmentedHashSet<string> set, int seed)
Collections\List\TestBase.Generic.cs (1)
227SegmentedHashSet<T> set = new SegmentedHashSet<T>(GetIEqualityComparer());