// Copyright (c) Microsoft. All rights reserved.
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
#if !NET_4_6
using System.Collections.Generic;
namespace System.Linq.Expressions.Reimplement
{
///
/// A simple hashset, built on Dictionary{K, V}
///
internal sealed class Set : ICollection
{
private readonly Dictionary _data;
internal Set()
{
_data = new Dictionary();
}
internal Set(IEqualityComparer comparer)
{
_data = new Dictionary(comparer);
}
internal Set(IList list)
{
_data = new Dictionary(list.Count);
foreach (var t in list)
{
Add(t);
}
}
internal Set(IEnumerable list)
{
_data = new Dictionary();
foreach (var t in list)
{
Add(t);
}
}
internal Set(int capacity)
{
_data = new Dictionary(capacity);
}
public void Add(T item)
{
_data[item] = null;
}
public void Clear()
{
_data.Clear();
}
public bool Contains(T item)
{
return _data.ContainsKey(item);
}
public void CopyTo(T[] array, int arrayIndex)
{
_data.Keys.CopyTo(array, arrayIndex);
}
public int Count
{
get { return _data.Count; }
}
public bool IsReadOnly
{
get { return false; }
}
public bool Remove(T item)
{
return _data.Remove(item);
}
public IEnumerator GetEnumerator()
{
return _data.Keys.GetEnumerator();
}
Collections.IEnumerator Collections.IEnumerable.GetEnumerator()
{
return _data.Keys.GetEnumerator();
}
}
}
#endif