using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace DoubleDeckerbus.Generic { internal class SetGeneric where T : class { private readonly List _places; public int Count => _places.Count; private readonly int _maxCount; public SetGeneric(int count) { _maxCount = count; _places = new List(count); } public int Insert(T bus) { _places.Insert(0, bus); //0 return 0; } public bool Insert(T bus, int position) { if (position < 0 || position >= Count || Count >= _maxCount) { return false; } _places.Insert(position, bus); return true; } public bool Remove(int position) { if (position < 0 || position >= Count) { return false; } _places.RemoveAt(position); return true; } public T? this[int position] { get { if (position < 0 || position >= Count) { return null; } return _places[position]; } set { if (position < 0 || position > Count || Count >= _maxCount) { return; } _places.Insert(position, value); } } public IEnumerable GetBus(int? maxBus = null) { for (int i = 0; i < _places.Count; ++i) { yield return _places[i]; if (maxBus.HasValue && i == maxBus.Value) { yield break; } } } } }