#ifndef __LVLIB2_H
#define __LVLIB2_H

#ifndef __RECSET_H
#include <recset.h>
#endif

#ifndef __TABMOD_H
#include <tabmod.h>
#endif

                            /////////////////////////
                            ////    TLVANAMAG    ////
                            /////////////////////////

//Classe TLVanamag
class TLVanamag : public TRectype
{
private:
  bool read(const char* chiave);

public:
  TLVanamag & operator =(const TLVanamag& ris) { TRectype::operator =(ris); return *this; }
  TLVanamag & operator =(const TRectype& ris)  { TRectype::operator =(ris); return *this; }

  //metodi get
  const TString& chiave() const;
  const int      riempi_c_xs()     const;
  const int      riempi_c_m()      const;
  const int      riempi_c_xl()     const;
  const int      normale_xs()      const;
  const int      normale_m()       const;
  const int      normale_xl()      const;
  const int      riempi_s_xs()     const;
  const int      riempi_s_m()      const;
  const int      riempi_s_xl()     const;
  const int      precedenza()      const;
  const int      tipo_articolo()   const;
  const TString& descr_etichette() const;

  //metodi set
  void set_chiave(const char* chiave);
  void set_riempi_c_xs(const int qta);
  void set_riempi_c_m(const int qta);
  void set_riempi_c_xl(const int qta);
  void set_normale_xs(const int qta);
  void set_normale_m(const int qta);
  void set_normale_xl(const int qta);
  void set_riempi_s_xs(const int qta);
  void set_riempi_s_m(const int qta);
  void set_riempi_s_xl(const int qta);
  void set_precedenza(const int qta);
  void set_tipo_articolo(const int qta);
  void set_descr_etichette(const char* descr);

  bool rewrite_write();

  //costruttore
  TLVanamag(const TRectype& r);
  TLVanamag(const char* chiave);
  TLVanamag(const TLVanamag& r);
  TLVanamag();

  virtual ~TLVanamag() {}  
};

                            ////////////////////////
                            ////    TLVCLIFO    ////
                            ////////////////////////

//Classe TLVclifo
class TLVclifo : public TRectype
{
private:
  bool read(const char* chiave);

public:
  TLVclifo & operator =(const TLVclifo& ris) { TRectype::operator =(ris); return *this; }
  TLVclifo & operator =(const TRectype& ris) { TRectype::operator =(ris); return *this; }

  //metodi get
  const TString& chiave()       const;
  const char     tipocf()       const;
  const long     codcf()        const;
  const char     tipo_imballo() const;
  const TString& dimensioni()   const;
  const char     riempimento()  const;
  const char     art_sep()      const;
  
  //metodi set
  void set_chiave(const char tipocf, const long codcf);
  void set_tipo_imballo(const char c);
  void set_dimensioni(const char* dim);
  void set_riempimento(const char c);
  void set_art_sep(const bool b);
  
  bool rewrite_write();

  //costruttore
  TLVclifo(const TRectype& r);
  TLVclifo(const char* chiave);
  TLVclifo(const TLVclifo& r);
  TLVclifo(const char tipocf, const long codcf);
  TLVclifo();

  virtual ~TLVclifo() {}  
};

#endif