Files
sbox-public/engine/Sandbox.Engine/Utility/UniqueQueue.cs
s&box team 71f266059a Open source release
This commit imports the C# engine code and game files, excluding C++ source code.

[Source-Commit: ceb3d758046e50faa6258bc3b658a30c97743268]
2025-11-24 09:05:18 +00:00

52 lines
778 B
C#

namespace Sandbox.Utility;
internal class UniqueQueue<T> : IEnumerable<T>
{
private readonly HashSet<T> set;
private readonly Queue<T> queue;
public UniqueQueue()
{
set = new HashSet<T>();
queue = new Queue<T>();
}
public int Count => queue.Count;
public void Enqueue( T item )
{
if ( set.Add( item ) )
{
queue.Enqueue( item );
}
}
public T Dequeue()
{
T item = queue.Dequeue();
set.Remove( item );
return item;
}
public bool Contains( T item )
{
return set.Contains( item );
}
public void Clear()
{
set.Clear();
queue.Clear();
}
public IEnumerator<T> GetEnumerator()
{
return queue.GetEnumerator();
}
System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
{
return queue.GetEnumerator();
}
}