// Copyright (c) Ben A Adams. All rights reserved. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. namespace DTLib.Ben.Demystifier.Enumerable; public static class EnumerableIList { public static EnumerableIList Create(IList list) { return new(list); } } public struct EnumerableIList : IEnumerableIList, IList { private readonly IList _list; public EnumerableIList(IList list) => _list = list; public EnumeratorIList GetEnumerator() => new(_list); public static implicit operator EnumerableIList(List list) => new(list); public static implicit operator EnumerableIList(T[] array) => new(array); public static EnumerableIList Empty = default; // IList pass through /// public T this[int index] { get => _list[index]; set => _list[index] = value; } /// public int Count => _list.Count; /// public bool IsReadOnly => _list.IsReadOnly; /// public void Add(T item) => _list.Add(item); /// public void Clear() => _list.Clear(); /// public bool Contains(T item) => _list.Contains(item); /// public void CopyTo(T[] array, int arrayIndex) => _list.CopyTo(array, arrayIndex); /// public int IndexOf(T item) => _list.IndexOf(item); /// public void Insert(int index, T item) => _list.Insert(index, item); /// public bool Remove(T item) => _list.Remove(item); /// public void RemoveAt(int index) => _list.RemoveAt(index); IEnumerator IEnumerable.GetEnumerator() { return GetEnumerator(); } IEnumerator IEnumerable.GetEnumerator() { return GetEnumerator(); } }