#ifndef __STACK_H
#define __STACK_H

#ifndef __ARRAY_H
#include <array.h>
#endif

// @doc EXTERNAL

// @class TStack | Classe per la gestione dello stack a basso livello
//
// @base public | TArray
class TStack : private TArray

// @author:(INTERNAL) Sandro

// @access:(INTERNAL) Private Member
{
  // @cmember:(INTERNAL) Puntatore alla cima dello stack
  int _sp;

// @access Public Member
public:
  // @cmember Costruttore. Chaima il costruttore di <c TArray>
  TStack(int size);

  // @cmember Ritorna il puntatore allo stack
  int count() const 
  { return _sp; }
  // @cmember Aggiunge un oggetto sullo stack
  void push(const TObject&);
  // @cmember Ritorna il primo oggetto sulla cima dello stack
  TObject& pop();       
};

#endif