// ============================================================
//          PileBornee_int
// ============================================================

#include "pile.h"

// ----- implantations ----------------------------------------

// Soit s = taille maximale de la pile à l'initialisation
//
//   elts[  0]   <- dernier = 0 au départ, puis augmente
//   elts[  1]
//   .
//   .
//   .
//   elts[s-1]
//               <- max = s
//
// dernier désigne toujours l'index de la prochaine case de
// elts à utiliser.

PileBornee_int::PileBornee_int(int s)
: elts(new int[s]), dernier(0), max(s)
{};

PileBornee_int::~PileBornee_int() {
  delete [] elts; };

PileBornee_int& PileBornee_int::empiler(int e) {
  if (! est_pleine())
    elts[dernier++] = e;
  return *this; };

PileBornee_int& PileBornee_int::depiler() {
  if (! est_vide()) dernier--;
  return *this; };

int PileBornee_int::sommet() {
  if (dernier)
    return elts[dernier-1]; };

bool PileBornee_int::est_vide() {
  return dernier == 0; };

bool PileBornee_int::est_pleine() {
  return dernier == max; };