// Menu : menu.h
#ifndef MENU_H
#define MENU_H
#ifndef LISTC_H
#include "listc.h"
#endif
class menu : public list<menu> {
  char *voce;                          // Nome del menu', viene stampato
protected :
  virtual void action (void *par) = 0; // Azione del menu' - virtuale pura
public:
  menu (TPtr &base,char *n);           // Costruttore
  ~menu ();                            // Distruttore
  int print (int curr);                // Funzione ricorsiva che stampa l'intero menu'
                                       // inseime con un prompt, quindi ritorna la scelta dell'utente
  void doaction (int n,void *par);     // Chiama la 'action' del menu' scelto, passandole 'par' come parametro
};

/* Menu' che termina il programma. Definiti solo il costruttore ed 'action' */
class menuexit : public menu {
protected:
  virtual void action (void *par);
public:
  menuexit (TPtr &base,char *n) : menu (base,n) {};
};

#endif