#ifndef __EF0301_H
#define __EF0301_H

#ifndef __EF0101_H
#include "ef0101.h"
#endif

///////////////////////////////////////////////////////////////
// Definizione dell'oggetto Distinta con la classe TDistinta // 
///////////////////////////////////////////////////////////////

class TDistinta:public TObject
{
  //array che contiene puntatori agli effetti nella distinta
  TArray _righe_dist;
public:  
  //ritorna un riferimento all'array degli effetti nella distinta
  TArray& righe(){ return _righe_dist;}  
  //ritorna il numero degli effetti nella distinta (nell'array)          
  const int items() const{ return _righe_dist.items(); }
  //elimina tutti gli effetti nella distinta (appartenti all'array)
  int reset(){ return _righe_dist.destroy() == NOERR; }
  //legge la distinta del tipo e numero passati 
  int read(const char tipo, const long numero); 
  //legge il record passato 
  int read(const TRectype& rec);
  //scrive la distinta utilizzando la rewrite degli effetti
  int write(bool force = FALSE, TToken_string* dati_dist = NULL);
  //riscrive la distinta
  int rewrite(TToken_string* dati_dist){ return write(TRUE, dati_dist); }
  //rimuove la distinta del tipo e numero passati 
  int remove(char tipodist, long ndist);           
  //restituisce il tipo di distinta 
  const char tipodist() const { return ((TRectype&)_righe_dist[0]).get_char(EFF_TIPODIST); }
  //restituisce il numero di distinta 
  const long ndist() const { return ((TRectype&)_righe_dist[0]).get_long(EFF_NDIST); }
  //costruttore di default
  TDistinta() {};  
  //costruttore distinta del tipo e numero passato
  TDistinta(const char tipo, const long numero);
  //costruttore distinta utilizzando il record passato
  TDistinta(const TRectype& rec);    
  //distruttore di default
  virtual ~TDistinta() {}
};

#endif//__EF0301_H