提交 b07696f8 编写于 作者: C Cyrus Najmabadi

Simplify

上级 9a8b8206
// Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System.Collections.Generic;
using System.Collections.Immutable;
using Microsoft.CodeAnalysis.PooledObjects;
namespace Microsoft.CodeAnalysis
{
internal partial struct SymbolKey
{
private ref struct PooledArrayBuilder<T>
{
public readonly ArrayBuilder<T> Builder;
private PooledArrayBuilder(ArrayBuilder<T> builder)
=> Builder = builder;
public int Count => Builder.Count;
public T this[int index] => Builder[index];
public void AddIfNotNull(T value)
{
if (value != null)
{
Builder.Add(value);
}
}
public void Dispose() => Builder.Free();
public ImmutableArray<T> ToImmutable() => Builder.ToImmutable();
public ArrayBuilder<T>.Enumerator GetEnumerator() => Builder.GetEnumerator();
public static PooledArrayBuilder<T> GetInstance()
=> new PooledArrayBuilder<T>(ArrayBuilder<T>.GetInstance());
public static PooledArrayBuilder<T> GetInstance(int capacity)
=> new PooledArrayBuilder<T>(ArrayBuilder<T>.GetInstance(capacity));
public void AddValuesIfNotNull(IEnumerable<T> values)
{
foreach (var value in values)
{
AddIfNotNull(value);
}
}
public void AddValuesIfNotNull(ImmutableArray<T> values)
{
foreach (var value in values)
{
AddIfNotNull(value);
}
}
}
}
}
......@@ -5,7 +5,6 @@
using System.Collections.Immutable;
using System.Diagnostics;
using System.Threading;
using Microsoft.CodeAnalysis.PooledObjects;
using Microsoft.CodeAnalysis.Shared.Utilities;
namespace Microsoft.CodeAnalysis
......@@ -247,52 +246,5 @@ private static string GetName(string metadataName)
return true;
}
private ref struct PooledArrayBuilder<T>
{
public readonly ArrayBuilder<T> Builder;
private PooledArrayBuilder(ArrayBuilder<T> builder)
=> Builder = builder;
public int Count => Builder.Count;
public T this[int index] => Builder[index];
public void AddIfNotNull(T value)
{
if (value != null)
{
Builder.Add(value);
}
}
public void Dispose() => Builder.Free();
public ImmutableArray<T> ToImmutable() => Builder.ToImmutable();
public ArrayBuilder<T>.Enumerator GetEnumerator() => Builder.GetEnumerator();
public static PooledArrayBuilder<T> GetInstance()
=> new PooledArrayBuilder<T>(ArrayBuilder<T>.GetInstance());
public static PooledArrayBuilder<T> GetInstance(int capacity)
=> new PooledArrayBuilder<T>(ArrayBuilder<T>.GetInstance(capacity));
public void AddValuesIfNotNull(IEnumerable<T> values)
{
foreach (var value in values)
{
AddIfNotNull(value);
}
}
public void AddValuesIfNotNull(ImmutableArray<T> values)
{
foreach (var value in values)
{
AddIfNotNull(value);
}
}
}
}
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册