#ifndef __TABUTIL_H
#define __TABUTIL_H

#ifndef __ISAM_H
#include <isam.h>
#endif 

// @doc EXTERNAL

// @class TTable | Classe per la descrizione delle tabelle
//
// @base public | TLocalisamfile
class TTable : public TLocalisamfile

// @author(:INTERNAL) Sandro

// @access Private Member
{
  // @cmember Nome della tabella
  TString16 _tabname;
  // @cmember Codice della tabella
  TRecfield _cod;

// @access Public Member
public:
  // @cmember Si posiziona sul primo record della tabella
  virtual int first(word lockop = _nolock);
  // @cmember Si posiziona sull'ultimo record della tabella
  virtual int last(word lockop = _nolock);
  // @cmember Si posiziona sul successivo record della tabella
  virtual int next(word lockop = _nolock);
  // @cmember Si posiziona sul precedente record della tabella
  virtual int prev(word lockop = _nolock);
  // @cmember Salta <p nrec> record dalla posizione corrente
  virtual int skip(TRecnotype nrec, word lockop = _nolock);
  // @cmember Legge il record (vedi <t TReclock> e <t TIsamop>)
  virtual int read(word op = _isequal, word lockop = _nolock, TDate& = (TDate&)botime);
  // @cmember Legge il record e lo copia in <p rec> (vedi <t TReclock> e <t TIsamop>)
  virtual int read(TRectype& rec, word op = _isequal, word lockop = _nolock, TDate& = (TDate&)botime);
  // @cmember Legge il record alla posizione  <p nrec> (vedi <t TReclock>)
  virtual int readat(TRecnotype nrec, word lockop = _nolock);
  // @cmember Legge il record alla posizione <p nrec> e lo copia in <p rec> (vedi <t TReclock>)
  virtual int readat(TRectype& rec, TRecnotype nrec, word lockop = _nolock);
  // @cmember Controlla se si tratta di una tabella (ritorna sempre TRUE)
  virtual bool tab() const 
  { return TRUE; }
  // @cmember Ritorna il nome della tabella
  virtual const char* name() const 
  { return _tabname;}

  // @cmember Costruttore
  TTable(const char* tabname, bool linkrecinst = FALSE);
  // @cmember Distruttore
  virtual ~TTable();

  // @cmember Ritorna il numero logico della tabella <p tabname>
  static int name2log(const char* tabname);
};


#endif // __TABUTIL_H
