using System;
using System.Collections.Concurrent;
using System.Collections.Generic;
namespace Ryujinx.HLE.HOS
{
class IdDictionary
private ConcurrentDictionary<int, object> Objs;
public IdDictionary()
Objs = new ConcurrentDictionary<int, object>();
}
public bool Add(int Id, object Data)
return Objs.TryAdd(Id, Data);
public int Add(object Data)
for (int Id = 1; Id < int.MaxValue; Id++)
if (Objs.TryAdd(Id, Data))
return Id;
throw new InvalidOperationException();
public object GetData(int Id)
if (Objs.TryGetValue(Id, out object Data))
return Data;
return null;
public T GetData<T>(int Id)
if (Objs.TryGetValue(Id, out object Data) && Data is T)
return (T)Data;
return default(T);
public object Delete(int Id)
if (Objs.TryRemove(Id, out object Obj))
return Obj;
public ICollection<object> Clear()
ICollection<object> Values = Objs.Values;
Objs.Clear();
return Values;