pascalabcnet/TreeConverter/Collections/stack.cs
2015-06-01 21:15:17 +02:00

65 lines
1.6 KiB
C#

// Copyright (c) Ivan Bondarev, Stanislav Mihalkovich (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.Linq;
namespace PascalABCCompiler.Collections
{
[Serializable]
public class stack<T>
{
protected System.Collections.Generic.Stack<T> internal_stack = new System.Collections.Generic.Stack<T>();
public void push(T element)
{
internal_stack.Push(element);
}
public T pop()
{
return internal_stack.Pop();
}
public T top()
{
if (internal_stack.Count == 0)
return default(T);
//T t = internal_stack.Pop();
//internal_stack.Push(t);
return internal_stack.Peek();
}
public T first()
{
if (internal_stack.Count == 0)
return default(T);
return internal_stack.ToArray()[internal_stack.Count-1];
}
public int size
{
get
{
return internal_stack.Count;
}
}
public bool Empty
{
get
{
return internal_stack.Count == 0;
}
}
public void clear()
{
internal_stack.Clear();
}
public System.Collections.Generic.Stack<T> CloneInternalStack()
{
return new System.Collections.Generic.Stack<T>(internal_stack.Reverse());
}
}
}