using System.Collections; using System.Diagnostics.CodeAnalysis; namespace Qrakhen.Qamp.Core.Collections; /// /// Dictionary wrapper implementing . /// public class Register : IGetSet, IToArray, IEnumerable> where TKey : notnull { private readonly Dictionary _data = new(); public int Length => _data.Count; public TValue this[TKey key] { get => Get(key); set => Set(key, value); } public TKey Add(TKey key, TValue value) { _data.Add(key, value); return key; } public bool TryGet(TKey key, [MaybeNullWhen(false)] out TValue value) => _data.TryGetValue(key, out value); public TValue Get(TKey key) => _data[key]; public void Set(TKey key, TValue value) => _data[key] = value; public bool Has(TKey key) => _data.ContainsKey(key); public TValue[] ToArray() => _data.Values.ToArray(); public IEnumerator> GetEnumerator() { foreach (var item in _data) yield return item; } IEnumerator IEnumerable.GetEnumerator() { return GetEnumerator(); } }