8 instantiations of ImmutableSegmentedHashSet
Microsoft.CodeAnalysis (8)
src\Dependencies\Collections\Segmented\ImmutableSegmentedHashSet`1.cs (3)
69public static readonly ImmutableSegmentedHashSet<T> Empty = new(new SegmentedHashSet<T>()); 115return new ImmutableSegmentedHashSet<T>(set); 313return new ImmutableSegmentedHashSet<T>(new SegmentedHashSet<T>(self._set, equalityComparer));
src\Dependencies\Collections\Segmented\ImmutableSegmentedHashSet`1+PrivateMarshal.cs (4)
26return new ImmutableSegmentedHashSet<T>(set); 35return new ImmutableSegmentedHashSet<T>(set); 44return new ImmutableSegmentedHashSet<T>(set); 49=> set is not null ? new ImmutableSegmentedHashSet<T>(set) : default;
src\Dependencies\Collections\Segmented\ImmutableSegmentedHashSet`1+ValueBuilder.cs (1)
266_set = new ImmutableSegmentedHashSet<T>(ReadOnlySet);
192 references to ImmutableSegmentedHashSet
Microsoft.CodeAnalysis (127)
src\Dependencies\Collections\RoslynImmutableInterlocked.cs (26)
154public static bool Update<T>(ref ImmutableSegmentedHashSet<T> location, Func<ImmutableSegmentedHashSet<T>, ImmutableSegmentedHashSet<T>> transformer) 159var oldValue = ImmutableSegmentedHashSet<T>.PrivateMarshal.VolatileRead(in location); 162var newValue = transformer(oldValue); 169var interlockedResult = InterlockedCompareExchange(ref location, newValue, oldValue); 195public static bool Update<T, TArg>(ref ImmutableSegmentedHashSet<T> location, Func<ImmutableSegmentedHashSet<T>, TArg, ImmutableSegmentedHashSet<T>> transformer, TArg transformerArgument) 200var oldValue = ImmutableSegmentedHashSet<T>.PrivateMarshal.VolatileRead(in location); 203var newValue = transformer(oldValue, transformerArgument); 210var interlockedResult = InterlockedCompareExchange(ref location, newValue, oldValue); 226public static ImmutableSegmentedHashSet<T> InterlockedExchange<T>(ref ImmutableSegmentedHashSet<T> location, ImmutableSegmentedHashSet<T> value) 228return ImmutableSegmentedHashSet<T>.PrivateMarshal.InterlockedExchange(ref location, value); 240public static ImmutableSegmentedHashSet<T> InterlockedCompareExchange<T>(ref ImmutableSegmentedHashSet<T> location, ImmutableSegmentedHashSet<T> value, ImmutableSegmentedHashSet<T> comparand) 242return ImmutableSegmentedHashSet<T>.PrivateMarshal.InterlockedCompareExchange(ref location, value, comparand); 254public static bool InterlockedInitialize<T>(ref ImmutableSegmentedHashSet<T> location, ImmutableSegmentedHashSet<T> value) 256return InterlockedCompareExchange(ref location, value, default(ImmutableSegmentedHashSet<T>)).IsDefault;
src\Dependencies\Collections\Segmented\ImmutableSegmentedHashSet.cs (30)
16public static ImmutableSegmentedHashSet<T> Create<T>() 17=> ImmutableSegmentedHashSet<T>.Empty; 20public static ImmutableSegmentedHashSet<T> Create<T>(T item) 21=> ImmutableSegmentedHashSet<T>.Empty.Add(item); 24public static ImmutableSegmentedHashSet<T> Create<T>(params T[] items) 25=> ImmutableSegmentedHashSet<T>.Empty.Union(items); 28public static ImmutableSegmentedHashSet<T> Create<T>(IEqualityComparer<T>? equalityComparer) 29=> ImmutableSegmentedHashSet<T>.Empty.WithComparer(equalityComparer); 32public static ImmutableSegmentedHashSet<T> Create<T>(IEqualityComparer<T>? equalityComparer, T item) 33=> ImmutableSegmentedHashSet<T>.Empty.WithComparer(equalityComparer).Add(item); 36public static ImmutableSegmentedHashSet<T> Create<T>(IEqualityComparer<T>? equalityComparer, params T[] items) 37=> ImmutableSegmentedHashSet<T>.Empty.WithComparer(equalityComparer).Union(items); 40public static ImmutableSegmentedHashSet<T>.Builder CreateBuilder<T>() 41=> ImmutableSegmentedHashSet<T>.Empty.ToBuilder(); 44public static ImmutableSegmentedHashSet<T>.Builder CreateBuilder<T>(IEqualityComparer<T>? equalityComparer) 45=> ImmutableSegmentedHashSet<T>.Empty.WithComparer(equalityComparer).ToBuilder(); 48public static ImmutableSegmentedHashSet<T> CreateRange<T>(IEnumerable<T> items) 50if (items is ImmutableSegmentedHashSet<T> existingSet) 53return ImmutableSegmentedHashSet<T>.Empty.Union(items); 57public static ImmutableSegmentedHashSet<T> CreateRange<T>(IEqualityComparer<T>? equalityComparer, IEnumerable<T> items) 59if (items is ImmutableSegmentedHashSet<T> existingSet) 62return ImmutableSegmentedHashSet<T>.Empty.WithComparer(equalityComparer).Union(items); 66public static ImmutableSegmentedHashSet<TSource> ToImmutableSegmentedHashSet<TSource>(this IEnumerable<TSource> source) 68if (source is ImmutableSegmentedHashSet<TSource> existingSet) 71return ImmutableSegmentedHashSet<TSource>.Empty.Union(source); 75public static ImmutableSegmentedHashSet<TSource> ToImmutableSegmentedHashSet<TSource>(this IEnumerable<TSource> source, IEqualityComparer<TSource>? equalityComparer) 77if (source is ImmutableSegmentedHashSet<TSource> existingSet) 80return ImmutableSegmentedHashSet<TSource>.Empty.WithComparer(equalityComparer).Union(source); 84public static ImmutableSegmentedHashSet<TSource> ToImmutableSegmentedHashSet<TSource>(this ImmutableSegmentedHashSet<TSource>.Builder builder)
src\Dependencies\Collections\Segmented\ImmutableSegmentedHashSet`1.cs (35)
19/// <para>There are different scenarios best for <see cref="ImmutableSegmentedHashSet{T}"/> and others 23/// <see cref="ImmutableSegmentedHashSet{T}"/>:</para> 28/// <description><see cref="ImmutableSegmentedHashSet{T}"/> Complexity</description> 66internal readonly partial struct ImmutableSegmentedHashSet<T> : IImmutableSet<T>, ISet<T>, ICollection, IEquatable<ImmutableSegmentedHashSet<T>> 69public static readonly ImmutableSegmentedHashSet<T> Empty = new(new SegmentedHashSet<T>()); 95public static bool operator ==(ImmutableSegmentedHashSet<T> left, ImmutableSegmentedHashSet<T> right) 98public static bool operator !=(ImmutableSegmentedHashSet<T> left, ImmutableSegmentedHashSet<T> right) 101public static bool operator ==(ImmutableSegmentedHashSet<T>? left, ImmutableSegmentedHashSet<T>? right) 104public static bool operator !=(ImmutableSegmentedHashSet<T>? left, ImmutableSegmentedHashSet<T>? right) 108public ImmutableSegmentedHashSet<T> Add(T value) 110var self = this; 131public ImmutableSegmentedHashSet<T> Clear() 133var self = this; 148public ImmutableSegmentedHashSet<T> Except(IEnumerable<T> other) 150var self = this; 152if (other is ImmutableSegmentedHashSet<T> { IsEmpty: true }) 180public ImmutableSegmentedHashSet<T> Intersect(IEnumerable<T> other) 182var self = this; 184if (self.IsEmpty || other is ImmutableSegmentedHashSet<T> { IsEmpty: true }) 218public ImmutableSegmentedHashSet<T> Remove(T value) 220var self = this; 240public ImmutableSegmentedHashSet<T> SymmetricExcept(IEnumerable<T> other) 242var self = this; 244if (other is ImmutableSegmentedHashSet<T> otherSet) 279public ImmutableSegmentedHashSet<T> Union(IEnumerable<T> other) 281var self = this; 283if (other is ImmutableSegmentedHashSet<T> otherSet) 305public ImmutableSegmentedHashSet<T> WithComparer(IEqualityComparer<T>? equalityComparer) 307var self = this; 320=> obj is ImmutableSegmentedHashSet<T> other && Equals(other); 322public bool Equals(ImmutableSegmentedHashSet<T> other)
src\Dependencies\Collections\Segmented\ImmutableSegmentedHashSet`1+Builder.cs (2)
23internal Builder(ImmutableSegmentedHashSet<T> set) 114public ImmutableSegmentedHashSet<T> ToImmutable()
src\Dependencies\Collections\Segmented\ImmutableSegmentedHashSet`1+PrivateMarshal.cs (12)
20internal static ImmutableSegmentedHashSet<T> VolatileRead(in ImmutableSegmentedHashSet<T> location) 29internal static ImmutableSegmentedHashSet<T> InterlockedExchange(ref ImmutableSegmentedHashSet<T> location, ImmutableSegmentedHashSet<T> value) 38internal static ImmutableSegmentedHashSet<T> InterlockedCompareExchange(ref ImmutableSegmentedHashSet<T> location, ImmutableSegmentedHashSet<T> value, ImmutableSegmentedHashSet<T> comparand) 48internal static ImmutableSegmentedHashSet<T> AsImmutableSegmentedHashSet(SegmentedHashSet<T>? set) 51/// <inheritdoc cref="SegmentedCollectionsMarshal.AsSegmentedHashSet{T}(ImmutableSegmentedHashSet{T})"/> 52internal static SegmentedHashSet<T>? AsSegmentedHashSet(ImmutableSegmentedHashSet<T> set)
src\Dependencies\Collections\Segmented\ImmutableSegmentedHashSet`1+ValueBuilder.cs (6)
23private ImmutableSegmentedHashSet<T> _set; 31internal ValueBuilder(ImmutableSegmentedHashSet<T> set) 66var originalSet = RoslynImmutableInterlocked.InterlockedExchange(ref _set, default); 127else if (other is ImmutableSegmentedHashSet<T> otherSet) 237if (other is ImmutableSegmentedHashSet<T> { IsEmpty: true }) 264public ImmutableSegmentedHashSet<T> ToImmutable()
src\Dependencies\Collections\Segmented\SegmentedCollectionsMarshal.cs (16)
140/// Gets an <see cref="ImmutableSegmentedHashSet{T}"/> value wrapping the input <see cref="SegmentedHashSet{T}"/>. 143/// <param name="set">The input segmented hash set to wrap in the returned <see cref="ImmutableSegmentedHashSet{T}"/> value.</param> 144/// <returns>An <see cref="ImmutableSegmentedHashSet{T}"/> value wrapping <paramref name="set"/>.</returns> 148/// set, and that it won't be modified once the returned <see cref="ImmutableSegmentedHashSet{T}"/> value starts 150/// <see cref="ImmutableSegmentedHashSet{T}"/> values to change after its creation. 153/// If <paramref name="set"/> is <see langword="null"/>, the returned <see cref="ImmutableSegmentedHashSet{T}"/> 154/// value will be uninitialized (i.e. its <see cref="ImmutableSegmentedHashSet{T}.IsDefault"/> property will be 158public static ImmutableSegmentedHashSet<T> AsImmutableSegmentedHashSet<T>(SegmentedHashSet<T>? set) 159=> ImmutableSegmentedHashSet<T>.PrivateMarshal.AsImmutableSegmentedHashSet(set); 162/// Gets the underlying <see cref="SegmentedHashSet{T}"/> for an input <see cref="ImmutableSegmentedHashSet{T}"/> value. 164/// <typeparam name="T">The type of elements in the input <see cref="ImmutableSegmentedHashSet{T}"/> value.</typeparam> 165/// <param name="set">The input <see cref="ImmutableSegmentedHashSet{T}"/> value to get the underlying <see cref="SegmentedHashSet{T}"/> from.</param> 171/// don't expect the contents of the <see cref="ImmutableSegmentedHashSet{T}"/> value to change. 174/// If <paramref name="set"/> is uninitialized (i.e. its <see cref="ImmutableSegmentedHashSet{T}.IsDefault"/> 178public static SegmentedHashSet<T>? AsSegmentedHashSet<T>(ImmutableSegmentedHashSet<T> set) 179=> ImmutableSegmentedHashSet<T>.PrivateMarshal.AsSegmentedHashSet(set);
Microsoft.CodeAnalysis.CSharp (19)
Compilation\SyntaxAndDeclarationManager.cs (12)
61var lastComputedMemberNamesMap = PooledDictionary<SyntaxTree, OneOrMany<WeakReference<StrongBox<ImmutableSegmentedHashSet<string>>>>>.GetInstance(); 164IDictionary<SyntaxTree, OneOrMany<WeakReference<StrongBox<ImmutableSegmentedHashSet<string>>>>> lastComputedMemberNamesMap, 179lastComputedMemberNames: OneOrMany<WeakReference<StrongBox<ImmutableSegmentedHashSet<string>>>>.Empty, ref declTable); 185lastComputedMemberNamesMap.Add(tree, OneOrMany<WeakReference<StrongBox<ImmutableSegmentedHashSet<string>>>>.Empty); 199IDictionary<SyntaxTree, OneOrMany<WeakReference<StrongBox<ImmutableSegmentedHashSet<string>>>>> lastComputedMemberNamesMap, 296OneOrMany<WeakReference<StrongBox<ImmutableSegmentedHashSet<string>>>> lastComputedMemberNames, 501OneOrMany<WeakReference<StrongBox<ImmutableSegmentedHashSet<string>>>> lastComputedMemberNames = tryGetLastComputedMemberNames( 605static OneOrMany<WeakReference<StrongBox<ImmutableSegmentedHashSet<string>>>> tryGetLastComputedMemberNames( 608ImmutableDictionary<SyntaxTree, OneOrMany<WeakReference<StrongBox<ImmutableSegmentedHashSet<string>>>>>.Builder lastComputedMemberNamesMap) 618var builder = ArrayBuilder<WeakReference<StrongBox<ImmutableSegmentedHashSet<string>>>>.GetInstance(); 642builder.Add(new WeakReference<StrongBox<ImmutableSegmentedHashSet<string>>>(singleType.MemberNames)); 659return OneOrMany<WeakReference<StrongBox<ImmutableSegmentedHashSet<string>>>>.Empty;
Compilation\SyntaxAndDeclarationManager.LazyState.cs (2)
43internal readonly ImmutableDictionary<SyntaxTree, OneOrMany<WeakReference<StrongBox<ImmutableSegmentedHashSet<string>>>>> LastComputedMemberNames; 52ImmutableDictionary<SyntaxTree, OneOrMany<WeakReference<StrongBox<ImmutableSegmentedHashSet<string>>>>> lastComputedMemberNames,
Declarations\DeclarationTreeBuilder.cs (2)
22using BoxedMemberNames = StrongBox<ImmutableSegmentedHashSet<string>>; 39private static readonly BoxedMemberNames s_emptyMemberNames = new BoxedMemberNames(ImmutableSegmentedHashSet<string>.Empty);
Declarations\SingleTypeDeclaration.cs (3)
29private readonly StrongBox<ImmutableSegmentedHashSet<string>> _memberNames; 85StrongBox<ImmutableSegmentedHashSet<string>> memberNames, 134public StrongBox<ImmutableSegmentedHashSet<string>> MemberNames => _memberNames;
Microsoft.CodeAnalysis.UnitTests (46)
Collections\ImmutableSegmentedHashSetBuilderTest.cs (16)
34var builder = ImmutableSegmentedHashSet<int>.Empty.ToBuilder(); 43var set = builder.ToImmutable(); 55var set = ImmutableSegmentedHashSet<int>.Empty.Add(1); 66var set2 = builder.ToImmutable(); 81var builder = ImmutableSegmentedHashSet<int>.Empty.Union(Enumerable.Range(1, 10)).ToBuilder(); 103var collection = ImmutableSegmentedHashSet<int>.Empty.Add(1); 108var newImmutable = builder.ToImmutable(); 123var set = ImmutableSegmentedHashSet.Create(1); 143var set = builder.ToImmutable(); 155var set = builder.ToImmutable(); 168var set = builder.ToImmutable(); 293var builder = ImmutableSegmentedHashSet<string?>.Empty.ToBuilder(); 321ImmutableSegmentedHashSet<int>.Builder builder = ImmutableSegmentedHashSet.CreateBuilder<int>(); 339ImmutableSegmentedHashSet<int>.Builder? nullBuilder = null;
Collections\ImmutableSegmentedHashSetTest.cs (21)
32ImmutableSegmentedHashSet<string>.Empty.WithComparer(StringComparer.Ordinal), 37ImmutableSegmentedHashSet<string>.Empty.WithComparer(StringComparer.OrdinalIgnoreCase), 46var ordinalSet = ImmutableSegmentedHashSet<string>.Empty 53var ignoreCaseSet = ordinalSet.WithComparer(StringComparer.OrdinalIgnoreCase); 61var set = ImmutableSegmentedHashSet<string>.Empty 71var emptySet = EmptyTyped<int>().WithComparer(new BadHasher<int>()); 78var emptySet = EmptyTyped<string>().WithComparer(new BadHasher<string>()); 85var collection = ImmutableSegmentedHashSet.Create<int>().Add(5); 114var set = ImmutableSegmentedHashSet.Create<string?>(); 161var set = ImmutableSegmentedHashSet.Create<int>(new BadHasher<int>(), 5, 6); 163var setAfterRemovingFive = set.Remove(5); 176var set = ImmutableSegmentedHashSet.Create<string>(new BadHasher<string>(), "a", "b"); 178var setAfterRemovingA = set.Remove("a"); 187ImmutableSegmentedHashSet<int> set = ImmutableSegmentedHashSet.Create(1, 2, 3); 205var set = ImmutableSegmentedHashSet.Create<string>("a").WithComparer(StringComparer.OrdinalIgnoreCase); 211var actualSet = set.SymmetricExcept(otherCollection); 217return ImmutableSegmentedHashSet<T>.Empty; 220private protected static ImmutableSegmentedHashSet<T> EmptyTyped<T>() 222return ImmutableSegmentedHashSet<T>.Empty;
Collections\ImmutableSegmentedHashSetTest.nonnetstandard.cs (2)
30TryGetValueTestHelper(ImmutableSegmentedHashSet<string>.Empty.WithComparer(StringComparer.OrdinalIgnoreCase)); 50Assert.True(IsSame(emptySet, ImmutableSegmentedHashSet<T>.Empty));
Collections\ImmutableSetTest.nonnetstandard.cs (2)
66ImmutableSegmentedHashSet<T> => null, 82ImmutableSegmentedHashSet<T> s => s.KeyComparer,
Collections\ImmutablesTestBase.cs (2)
75if (first is ImmutableSegmentedHashSet<T> firstSegmented 76&& second is ImmutableSegmentedHashSet<T> secondSegmented)
Collections\SegmentedCollectionsMarshalTests.cs (3)
566ImmutableSegmentedHashSet<T> immutableHashSet = SegmentedCollectionsMarshal.AsImmutableSegmentedHashSet(set); 614SegmentedHashSet<T>? set = SegmentedCollectionsMarshal.AsSegmentedHashSet(ImmutableSegmentedHashSet<T>.Empty); 637ImmutableSegmentedHashSet<T> immutableHashSet = ImmutableSegmentedHashSet.CreateRange(values);