Remove `Bag<K, V>`

This commit is contained in:
YoshiRulz 2024-08-23 00:58:54 +10:00
parent ba4c406a36
commit 633216be14
No known key found for this signature in database
GPG Key ID: C4DE31C245353FB7
2 changed files with 3 additions and 32 deletions

View File

@ -1,42 +1,12 @@
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics.CodeAnalysis;
using System.Linq;
using System.Runtime.Serialization;
using BizHawk.Common.CollectionExtensions;
namespace BizHawk.Common
{
/// <summary>Wrapper over <see cref="WorkingDictionary{TKey, TValue}">WorkingDictionary</see>&lt;<typeparamref name="TKey"/>, <see cref="List{T}">List</see>&lt;<typeparamref name="TValue"/>>>.</summary>
[Serializable]
public class Bag<TKey, TValue> : IEnumerable<TValue> where TKey : notnull
{
private readonly WorkingDictionary<TKey, List<TValue>> dictionary = new WorkingDictionary<TKey, List<TValue>>();
public IList<TKey> Keys => dictionary.Keys.ToList();
public List<TValue> this[TKey key]
{
#pragma warning disable CS8603 // the only call to the index setter of `dictionary` is this index setter, which only takes non-null `List<TValue>`s
get => dictionary[key];
#pragma warning restore CS8603
set => dictionary[key] = value;
}
public void Add(TKey key, IEnumerable<TValue> val) => this[key].AddRange(val);
public void Add(TKey key, TValue val) => this[key].Add(val);
public bool ContainsKey(TKey key) => dictionary.ContainsKey(key);
IEnumerator IEnumerable.GetEnumerator() => GetEnumerator();
public IEnumerator<TValue> GetEnumerator() => dictionary.Values.SelectMany(lv => lv).GetEnumerator();
public IEnumerator<KeyValuePair<TKey, List<TValue>>> GetKVPEnumerator() => dictionary.GetEnumerator();
}
public class SortedList<T> : ICollection<T>
where T : IComparable<T>
{

View File

@ -4,6 +4,7 @@ using System.IO;
using System.Xml;
using System.Threading;
using BizHawk.Common;
using BizHawk.Common.CollectionExtensions;
using BizHawk.Common.StringExtensions;
namespace BizHawk.Emulation.Cores.Nintendo.NES
@ -17,7 +18,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
private readonly bool validate = true;
private readonly Bag<string, CartInfo> _sha1Table = new Bag<string, CartInfo>();
private readonly Dictionary<string, List<CartInfo>> _sha1Table = new();
private static BootGodDb instance;
@ -124,7 +125,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
case 4:
if (xmlReader.NodeType == XmlNodeType.EndElement && xmlReader.Name == "cartridge")
{
_sha1Table[currCart.Sha1].Add(currCart);
_sha1Table.GetValueOrPutNew(currCart.Sha1).Add(currCart);
currCart = null;
state = 5;
}