using System.Collections.Generic; using Gum.Pooling.Collections; #if GUM_DEBUG using Gum.Pooling.Diagnostics; #endif namespace Gum.Pooling { internal sealed class ListPool { private readonly Stack> _pool = new Stack>(); public static readonly ListPool Shared = new ListPool(); public void Put(PooledList list) { if (!_pool.Contains(list)) { _pool.Push(list); #if GUM_DEBUG PoolMonitor.UnreleasedPooledLists.Remove(list); #endif } } public PooledList Get() { PooledList pooledList = _pool.Count > 0 ? _pool.Pop() : new PooledList(); #if GUM_DEBUG PoolMonitor.UnreleasedPooledLists.Add(pooledList, new System.Diagnostics.StackTrace().ToString()); #endif return pooledList; } } }