//Magazzino: magaz.h
#ifndef CAPI_H
#include "capo.h"
#endif
#ifndef ATTRLIST_H
#include "attrlist.h"
#endif
#ifndef MENU_H
#include "menu.h"
#endif
#ifndef MAGAZ_H
#define MAGAZ_H

class Magazzino {
  Capo *cont;                               // La lista dei capi contenuti nel magazzino
public:
  Magazzino () { cont = 0; };               // Il costruttore imposta la lista a 'vuoto'
  ~Magazzino () { if (cont) delete cont; }; // Il distruttore elimina la lista, se c'e'
  void Add (Capo *cont);                    // Metodo che inserice una lista di capi in magazzino
  Capo *Select (AttrList *criteri);         // Metodo che estrae capi dal magazzino, secondo criteri
  void Inventario ();                       // Metodo che stampa l'inventario
};

/* Solita classe per il menu' 'inventario',
 * unica voce di menu' gestita da 'magazziono'
 * Al solito, solo costruttore con parametro e 'action'
 * che in questo caso chiamera' la funzione di 'magazzino' per l'inventario */
class MenuInventario : public menu {
protected:
  virtual void action (void *par);
public:
  MenuInventario (TPtr &base,char *n) : menu (base,n) {};
};

#endif