using System;

namespace XELF.Sphynx {
	static class Program {
		/// <summary>
		/// The main entry point for the application.
		/// </summary>
		static void Main(string[] args) {
			using (SphynxGame game = new SphynxGame()) {
				/*
				var poo = Poo.Create();
				poo.Dispose();
				var poo2 = Poo.Create();
				poo2.Dispose();
				if (poo == poo2) {
					Console.WriteLine("pooled");
				}
				*/
				game.Run();
			}
		}
		/*
		class Poolable<T> : IDisposable
	where T : Poolable<T>, new() {
			static private readonly Stack<Poolable<T>> items = new Stack<Poolable<T>>();

			public bool Disposed { get; private set; }

			protected Poolable() { }

			public static Poolable<T> Create() {
				Poolable<T> item;
				if (items.Count > 0) {
					item = items.Pop();
					item.Disposed = false;
					return item;
				}
				return new T();
			}
			public virtual void Dispose() {
				Disposed = true;
				items.Push(this);
			}
		}
		class Poo : Poolable<Poo> {
		}
*/
	}
}

