StackEx.cs 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. namespace PixiEditor.Models.DataHolders
  7. {
  8. public class StackEx<T>
  9. {
  10. public int Count
  11. {
  12. get { return items.Count; }
  13. }
  14. public T First
  15. {
  16. get { return items[0]; }
  17. }
  18. private List<T> items = new List<T>();
  19. public void Clear()
  20. {
  21. items.Clear();
  22. }
  23. /// <summary>
  24. /// Returns top object without deleting it.
  25. /// </summary>
  26. /// <returns>Returns n - 1 item from stack.</returns>
  27. public T Peek()
  28. {
  29. return items[items.Count - 1];
  30. }
  31. public void Push(T item)
  32. {
  33. items.Add(item);
  34. }
  35. public T Pop()
  36. {
  37. if (items.Count > 0)
  38. {
  39. T temp = items[items.Count - 1];
  40. items.RemoveAt(items.Count - 1);
  41. return temp;
  42. }
  43. else
  44. return default;
  45. }
  46. public void PushToBottom(T item)
  47. {
  48. items.Insert(0, item);
  49. }
  50. public void Remove(int itemAtPosition)
  51. {
  52. items.RemoveAt(itemAtPosition);
  53. }
  54. }
  55. }