// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. See License.txt in the project root for license information. #if NO_HASHSET using System; using System.Collections.Generic; namespace System.Reactive { class HashSet { private readonly Dictionary _set; private bool _hasNull; public HashSet(IEqualityComparer comparer) { _set = new Dictionary(comparer); _hasNull = false; } public bool Add(T value) { // // Note: The box instruction in the IL will be erased by the JIT in case T is // a value type. See GroupBy for more information. // if (value == null) { if (_hasNull) return false; _hasNull = true; return true; } else { if (_set.ContainsKey(value)) return false; _set[value] = null; return true; } } } } #endif