#include <iostream>
#include <cstdlib>

#include "Pila.hpp"

Pila::Pila(void)
{
	apt= 0;
}

void Pila::tamano(int mx)
{	
	pila= new int[mx+1];
	max= mx;
}

bool Pila::vacia(void)
{
	return apt==0;
}

void Pila::mete(int x)
{
	if (apt==max) {
		std::cerr << "Pila llena\n";
		exit(EXIT_FAILURE);
	}
	else
		pila[apt++]= x;
}

int Pila::saca(void)
{
	if (apt==0) {
		std::cerr << "Pila vacia\n";
		exit(EXIT_FAILURE);
	}
	else
		return pila[--apt];
}

int Pila::tope(void) 
{
	return pila[apt-1];
}

std::ostream& Pila::print(std::ostream& out) const
{
	out << "# ";
	for (int k=0; k<apt; ++k)
		out << pila[k] << " ";
	return out;
}

std::ostream& operator << (std::ostream& out, const Pila& p)
{
	return p.print(out);
}
