10 instantiations of ImmutableSegmentedDictionary
Microsoft.CodeAnalysis.CodeStyle (10)
ImmutableSegmentedDictionary`2.cs (6)
73
public static readonly ImmutableSegmentedDictionary<TKey, TValue> Empty =
new
(new SegmentedDictionary<TKey, TValue>());
152
return new
ImmutableSegmentedDictionary
<TKey, TValue>(dictionary);
179
return new
ImmutableSegmentedDictionary
<TKey, TValue>(dictionary);
216
return new
ImmutableSegmentedDictionary
<TKey, TValue>(dictionary);
239
return new
ImmutableSegmentedDictionary
<TKey, TValue>(dictionary);
295
return new
ImmutableSegmentedDictionary
<TKey, TValue>(new SegmentedDictionary<TKey, TValue>(keyComparer));
ImmutableSegmentedDictionary`2+Builder.cs (1)
217
_dictionary = new
ImmutableSegmentedDictionary
<TKey, TValue>(ReadOnlyDictionary);
ImmutableSegmentedDictionary`2+PrivateInterlocked.cs (3)
23
return new
ImmutableSegmentedDictionary
<TKey, TValue>(dictionary);
32
return new
ImmutableSegmentedDictionary
<TKey, TValue>(dictionary);
41
return new
ImmutableSegmentedDictionary
<TKey, TValue>(dictionary);
145 references to ImmutableSegmentedDictionary
Microsoft.CodeAnalysis.CodeStyle (145)
ImmutableSegmentedDictionary.cs (21)
17
public static
ImmutableSegmentedDictionary
<TKey, TValue> Create<TKey, TValue>()
19
=>
ImmutableSegmentedDictionary
<TKey, TValue>.Empty;
21
public static
ImmutableSegmentedDictionary
<TKey, TValue> Create<TKey, TValue>(IEqualityComparer<TKey>? keyComparer)
23
=>
ImmutableSegmentedDictionary
<TKey, TValue>.Empty.WithComparer(keyComparer);
25
public static
ImmutableSegmentedDictionary
<TKey, TValue>.Builder CreateBuilder<TKey, TValue>()
29
public static
ImmutableSegmentedDictionary
<TKey, TValue>.Builder CreateBuilder<TKey, TValue>(IEqualityComparer<TKey>? keyComparer)
33
public static
ImmutableSegmentedDictionary
<TKey, TValue> CreateRange<TKey, TValue>(IEnumerable<KeyValuePair<TKey, TValue>> items)
35
=>
ImmutableSegmentedDictionary
<TKey, TValue>.Empty.AddRange(items);
37
public static
ImmutableSegmentedDictionary
<TKey, TValue> CreateRange<TKey, TValue>(IEqualityComparer<TKey>? keyComparer, IEnumerable<KeyValuePair<TKey, TValue>> items)
39
=>
ImmutableSegmentedDictionary
<TKey, TValue>.Empty.WithComparer(keyComparer).AddRange(items);
41
public static
ImmutableSegmentedDictionary
<TKey, TValue> ToImmutableSegmentedDictionary<TKey, TValue>(this IEnumerable<KeyValuePair<TKey, TValue>> items)
45
public static
ImmutableSegmentedDictionary
<TKey, TValue> ToImmutableSegmentedDictionary<TKey, TValue>(this
ImmutableSegmentedDictionary
<TKey, TValue>.Builder builder)
54
public static
ImmutableSegmentedDictionary
<TKey, TValue> ToImmutableSegmentedDictionary<TKey, TValue>(this IEnumerable<KeyValuePair<TKey, TValue>> items, IEqualityComparer<TKey>? keyComparer)
60
if (items is
ImmutableSegmentedDictionary
<TKey, TValue> existingDictionary)
63
return
ImmutableSegmentedDictionary
<TKey, TValue>.Empty.WithComparer(keyComparer).AddRange(items);
66
public static
ImmutableSegmentedDictionary
<TKey, TValue> ToImmutableSegmentedDictionary<TSource, TKey, TValue>(this IEnumerable<TSource> source, Func<TSource, TKey> keySelector, Func<TSource, TValue> elementSelector)
70
public static
ImmutableSegmentedDictionary
<TKey, TValue> ToImmutableSegmentedDictionary<TSource, TKey, TValue>(this IEnumerable<TSource> source, Func<TSource, TKey> keySelector, Func<TSource, TValue> elementSelector, IEqualityComparer<TKey>? keyComparer)
80
return
ImmutableSegmentedDictionary
<TKey, TValue>.Empty.WithComparer(keyComparer)
84
public static
ImmutableSegmentedDictionary
<TKey, TSource> ToImmutableSegmentedDictionary<TSource, TKey>(this IEnumerable<TSource> source, Func<TSource, TKey> keySelector)
88
public static
ImmutableSegmentedDictionary
<TKey, TSource> ToImmutableSegmentedDictionary<TSource, TKey>(this IEnumerable<TSource> source, Func<TSource, TKey> keySelector, IEqualityComparer<TKey>? keyComparer)
ImmutableSegmentedDictionary`2.cs (35)
17
/// <para>There are different scenarios best for <see cref="
ImmutableSegmentedDictionary
{TKey, TValue}"/> and others
20
/// <para>In general, <see cref="
ImmutableSegmentedDictionary
{TKey, TValue}"/> is applicable in scenarios most like
26
/// <see cref="
ImmutableSegmentedDictionary
{TKey, TValue}"/>:</para>
31
/// <description><see cref="
ImmutableSegmentedDictionary
{TKey, TValue}"/> Complexity</description>
70
internal readonly partial struct ImmutableSegmentedDictionary<TKey, TValue> : IImmutableDictionary<TKey, TValue>, IDictionary<TKey, TValue>, IReadOnlyDictionary<TKey, TValue>, IDictionary, IEquatable<
ImmutableSegmentedDictionary
<TKey, TValue>>
73
public static readonly
ImmutableSegmentedDictionary
<TKey, TValue> Empty = new(new SegmentedDictionary<TKey, TValue>());
132
public static bool operator ==(
ImmutableSegmentedDictionary
<TKey, TValue> left,
ImmutableSegmentedDictionary
<TKey, TValue> right)
135
public static bool operator !=(
ImmutableSegmentedDictionary
<TKey, TValue> left,
ImmutableSegmentedDictionary
<TKey, TValue> right)
138
public static bool operator ==(
ImmutableSegmentedDictionary
<TKey, TValue>? left,
ImmutableSegmentedDictionary
<TKey, TValue>? right)
141
public static bool operator !=(
ImmutableSegmentedDictionary
<TKey, TValue>? left,
ImmutableSegmentedDictionary
<TKey, TValue>? right)
144
public
ImmutableSegmentedDictionary
<TKey, TValue> Add(TKey key, TValue value)
146
var
self = this;
155
public
ImmutableSegmentedDictionary
<TKey, TValue> AddRange(IEnumerable<KeyValuePair<TKey, TValue>> pairs)
157
var
self = this;
160
if (self.IsEmpty && TryCastToImmutableSegmentedDictionary(pairs, out
var
other) && self.KeyComparer == other.KeyComparer)
182
public
ImmutableSegmentedDictionary
<TKey, TValue> Clear()
184
var
self = this;
208
public
ImmutableSegmentedDictionary
<TKey, TValue> Remove(TKey key)
210
var
self = this;
219
public
ImmutableSegmentedDictionary
<TKey, TValue> RemoveRange(IEnumerable<TKey> keys)
229
public
ImmutableSegmentedDictionary
<TKey, TValue> SetItem(TKey key, TValue value)
231
var
self = this;
242
public
ImmutableSegmentedDictionary
<TKey, TValue> SetItems(IEnumerable<KeyValuePair<TKey, TValue>> items)
258
var
self = this;
277
public
ImmutableSegmentedDictionary
<TKey, TValue> WithComparer(IEqualityComparer<TKey>? keyComparer)
281
var
self = this;
312
return obj is
ImmutableSegmentedDictionary
<TKey, TValue> other
316
public bool Equals(
ImmutableSegmentedDictionary
<TKey, TValue> other)
381
private static bool TryCastToImmutableSegmentedDictionary(IEnumerable<KeyValuePair<TKey, TValue>> pairs, out
ImmutableSegmentedDictionary
<TKey, TValue> other)
383
if (pairs is
ImmutableSegmentedDictionary
<TKey, TValue> dictionary)
389
if (pairs is
ImmutableSegmentedDictionary
<TKey, TValue>.Builder builder)
ImmutableSegmentedDictionary`2+Builder.cs (3)
19
private
ImmutableSegmentedDictionary
<TKey, TValue> _dictionary;
27
internal Builder(
ImmutableSegmentedDictionary
<TKey, TValue> dictionary)
215
public
ImmutableSegmentedDictionary
<TKey, TValue> ToImmutable()
ImmutableSegmentedDictionary`2+Builder+KeyCollection.cs (3)
18
private readonly
ImmutableSegmentedDictionary
<TKey, TValue>.Builder _dictionary;
20
internal KeyCollection(
ImmutableSegmentedDictionary
<TKey, TValue>.Builder dictionary)
46
public
ImmutableSegmentedDictionary
<TKey, TValue>.KeyCollection.Enumerator GetEnumerator()
ImmutableSegmentedDictionary`2+Builder+ValueCollection.cs (3)
18
private readonly
ImmutableSegmentedDictionary
<TKey, TValue>.Builder _dictionary;
20
internal ValueCollection(
ImmutableSegmentedDictionary
<TKey, TValue>.Builder dictionary)
46
public
ImmutableSegmentedDictionary
<TKey, TValue>.ValueCollection.Enumerator GetEnumerator()
ImmutableSegmentedDictionary`2+Enumerator.cs (1)
38
/// <see cref="
ImmutableSegmentedDictionary
{TKey, TValue}"/>.
ImmutableSegmentedDictionary`2+KeyCollection.cs (2)
15
private readonly
ImmutableSegmentedDictionary
<TKey, TValue> _dictionary;
17
internal KeyCollection(
ImmutableSegmentedDictionary
<TKey, TValue> dictionary)
ImmutableSegmentedDictionary`2+KeyCollection+Enumerator.cs (2)
16
private
ImmutableSegmentedDictionary
<TKey, TValue>.Enumerator _enumerator;
18
internal Enumerator(
ImmutableSegmentedDictionary
<TKey, TValue>.Enumerator enumerator)
ImmutableSegmentedDictionary`2+PrivateInterlocked.cs (9)
17
internal static
ImmutableSegmentedDictionary
<TKey, TValue> VolatileRead(in
ImmutableSegmentedDictionary
<TKey, TValue> location)
26
internal static
ImmutableSegmentedDictionary
<TKey, TValue> InterlockedExchange(ref
ImmutableSegmentedDictionary
<TKey, TValue> location,
ImmutableSegmentedDictionary
<TKey, TValue> value)
35
internal static
ImmutableSegmentedDictionary
<TKey, TValue> InterlockedCompareExchange(ref
ImmutableSegmentedDictionary
<TKey, TValue> location,
ImmutableSegmentedDictionary
<TKey, TValue> value,
ImmutableSegmentedDictionary
<TKey, TValue> comparand)
ImmutableSegmentedDictionary`2+ValueCollection.cs (2)
15
private readonly
ImmutableSegmentedDictionary
<TKey, TValue> _dictionary;
17
internal ValueCollection(
ImmutableSegmentedDictionary
<TKey, TValue> dictionary)
ImmutableSegmentedDictionary`2+ValueCollection+Enumerator.cs (2)
16
private
ImmutableSegmentedDictionary
<TKey, TValue>.Enumerator _enumerator;
18
internal Enumerator(
ImmutableSegmentedDictionary
<TKey, TValue>.Enumerator enumerator)
RoslynImmutableInterlocked.cs (62)
273
public static bool Update<TKey, TValue>(ref
ImmutableSegmentedDictionary
<TKey, TValue> location, Func<
ImmutableSegmentedDictionary
<TKey, TValue>,
ImmutableSegmentedDictionary
<TKey, TValue>> transformer)
279
var
oldValue =
ImmutableSegmentedDictionary
<TKey, TValue>.PrivateInterlocked.VolatileRead(in location);
282
var
newValue = transformer(oldValue);
289
var
interlockedResult = InterlockedCompareExchange(ref location, newValue, oldValue);
316
public static bool Update<TKey, TValue, TArg>(ref
ImmutableSegmentedDictionary
<TKey, TValue> location, Func<
ImmutableSegmentedDictionary
<TKey, TValue>, TArg,
ImmutableSegmentedDictionary
<TKey, TValue>> transformer, TArg transformerArgument)
322
var
oldValue =
ImmutableSegmentedDictionary
<TKey, TValue>.PrivateInterlocked.VolatileRead(in location);
325
var
newValue = transformer(oldValue, transformerArgument);
332
var
interlockedResult = InterlockedCompareExchange(ref location, newValue, oldValue);
349
public static
ImmutableSegmentedDictionary
<TKey, TValue> InterlockedExchange<TKey, TValue>(ref
ImmutableSegmentedDictionary
<TKey, TValue> location,
ImmutableSegmentedDictionary
<TKey, TValue> value)
352
return
ImmutableSegmentedDictionary
<TKey, TValue>.PrivateInterlocked.InterlockedExchange(ref location, value);
365
public static
ImmutableSegmentedDictionary
<TKey, TValue> InterlockedCompareExchange<TKey, TValue>(ref
ImmutableSegmentedDictionary
<TKey, TValue> location,
ImmutableSegmentedDictionary
<TKey, TValue> value,
ImmutableSegmentedDictionary
<TKey, TValue> comparand)
368
return
ImmutableSegmentedDictionary
<TKey, TValue>.PrivateInterlocked.InterlockedCompareExchange(ref location, value, comparand);
381
public static bool InterlockedInitialize<TKey, TValue>(ref
ImmutableSegmentedDictionary
<TKey, TValue> location,
ImmutableSegmentedDictionary
<TKey, TValue> value)
384
return InterlockedCompareExchange(ref location, value, default(
ImmutableSegmentedDictionary
<TKey, TValue>)).IsDefault;
388
public static TValue GetOrAdd<TKey, TValue, TArg>(ref
ImmutableSegmentedDictionary
<TKey, TValue> location, TKey key, Func<TKey, TArg, TValue> valueFactory, TArg factoryArgument)
394
var
map =
ImmutableSegmentedDictionary
<TKey, TValue>.PrivateInterlocked.VolatileRead(in location);
408
public static TValue GetOrAdd<TKey, TValue>(ref
ImmutableSegmentedDictionary
<TKey, TValue> location, TKey key, Func<TKey, TValue> valueFactory)
414
var
map =
ImmutableSegmentedDictionary
<TKey, TValue>.PrivateInterlocked.VolatileRead(in location);
428
public static TValue GetOrAdd<TKey, TValue>(ref
ImmutableSegmentedDictionary
<TKey, TValue> location, TKey key, TValue value)
431
var
priorCollection =
ImmutableSegmentedDictionary
<TKey, TValue>.PrivateInterlocked.VolatileRead(in location);
442
var
updatedCollection = priorCollection.Add(key, value);
443
var
interlockedResult = InterlockedCompareExchange(ref location, updatedCollection, priorCollection);
456
public static TValue AddOrUpdate<TKey, TValue>(ref
ImmutableSegmentedDictionary
<TKey, TValue> location, TKey key, Func<TKey, TValue> addValueFactory, Func<TKey, TValue, TValue> updateValueFactory)
465
var
priorCollection =
ImmutableSegmentedDictionary
<TKey, TValue>.PrivateInterlocked.VolatileRead(in location);
480
var
updatedCollection = priorCollection.SetItem(key, newValue);
481
var
interlockedResult = InterlockedCompareExchange(ref location, updatedCollection, priorCollection);
494
public static TValue AddOrUpdate<TKey, TValue>(ref
ImmutableSegmentedDictionary
<TKey, TValue> location, TKey key, TValue addValue, Func<TKey, TValue, TValue> updateValueFactory)
501
var
priorCollection =
ImmutableSegmentedDictionary
<TKey, TValue>.PrivateInterlocked.VolatileRead(in location);
516
var
updatedCollection = priorCollection.SetItem(key, newValue);
517
var
interlockedResult = InterlockedCompareExchange(ref location, updatedCollection, priorCollection);
530
public static bool TryAdd<TKey, TValue>(ref
ImmutableSegmentedDictionary
<TKey, TValue> location, TKey key, TValue value)
533
var
priorCollection =
ImmutableSegmentedDictionary
<TKey, TValue>.PrivateInterlocked.VolatileRead(in location);
544
var
updatedCollection = priorCollection.Add(key, value);
545
var
interlockedResult = InterlockedCompareExchange(ref location, updatedCollection, priorCollection);
556
public static bool TryUpdate<TKey, TValue>(ref
ImmutableSegmentedDictionary
<TKey, TValue> location, TKey key, TValue newValue, TValue comparisonValue)
560
var
priorCollection =
ImmutableSegmentedDictionary
<TKey, TValue>.PrivateInterlocked.VolatileRead(in location);
572
var
updatedCollection = priorCollection.SetItem(key, newValue);
573
var
interlockedResult = InterlockedCompareExchange(ref location, updatedCollection, priorCollection);
584
public static bool TryRemove<TKey, TValue>(ref
ImmutableSegmentedDictionary
<TKey, TValue> location, TKey key, [MaybeNullWhen(false)] out TValue value)
587
var
priorCollection =
ImmutableSegmentedDictionary
<TKey, TValue>.PrivateInterlocked.VolatileRead(in location);
598
var
updatedCollection = priorCollection.Remove(key);
599
var
interlockedResult = InterlockedCompareExchange(ref location, updatedCollection, priorCollection);