|
/// Public domain code by Christopher Diggins
/// http://www.cat-language.com
using System;
using System.Collections.Generic;
using System.Text;
namespace Cat
{
/// <summary>
/// Used in the executor to implement the main stack and auxiliary stack.
/// </summary>
public class CatStack : BaseCatStack<object>
{
}
/// <summary>
/// More of a Dequeue than a Stack data type, but it doesn't hurt anyone.
/// This class might get significantly overhauled in the future.
/// </summary>
public class BaseCatStack<T> : List<T>
{
private List<T> GetBase()
{
return this;
}
public T Peek()
{
return this[0];
}
public new T this[int index]
{
get
{
return GetBase()[(Count - 1) - index];
}
set
{
GetBase()[(Count - 1) - index] = value;
}
}
public T Push(T x)
{
Add(x);
return Peek();
}
public T PushFront(T x)
{
Insert(0, x);
return x;
}
public T Pop()
{
T x = Peek();
RemoveAt(Count - 1);
return x;
}
public T PopFront()
{
T x = this[0];
RemoveAt(0);
return x;
}
public bool IsEmpty()
{
return Count == 0;
}
}
}
|
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.