213 lines
7.2 KiB
C++
Executable File

#ifndef __FILES_H
#define __FILES_H
#ifndef __EXTCTYPE_H
#include <extctype.h>
#endif
#ifndef __RECTYPES_H
#include <rectypes.h>
#endif
#ifndef __CONFIG_H
class TConfig;
#endif
#define DESCPAR "FieldDescr"
#define DESCTAB "TabDescr"
#define DESCDIR "recdesc"
// @doc EXTERNAL
// @class TDir | Classe per la gestione del file "dir.gen"
//
// @base public | TObject
class TDir : public TObject
// @author:(INTERNAL) Alessandro
// @access:(INTERNAL) Private Member
{
// @cmember:(INTERNAL) Descrittore del file
FileDes _dir;
// @cmember:(INTERNAL) Numero di file presenti
int _num;
// @cmember:(INTERNAL) Appartenenza al direttorio comune (TRUE) o a quello della ditta
bool _com;
// @access Public Member
public:
// @cmember Aggiorna l'oggetto TDir con i paramtri del file indicato
void get(int nfile, TReclock lock = _nolock, TDirtype dirtype = _nordir, TDirop op = _nordirop);
// @cmember Aggiorna il file indicato con i parametri passati
void put(int nfile, TDirtype dirtype = _nordir, TDirop op = _nordirop);
// @cmember load external isamfile info
void get_ext(int nfile);
// @cmember Azzera i parametri del file selezionato
void zero();
// @cmember Setta il nome del file
void set_name (const char * name);
// @cmember Setta l'EOX del file
void set_eox(const RecNoType eox);
void reset_eox();
// @cmember Setta l'EOD del file
void set_eod(const RecNoType eod);
// @cmember Setta la lunghezza del file
void set_len(const UINT16 len);
void set_flags(const RecNoType f);
// @cmember Setta il file con i parametri passati
void set (const char * name, const RecNoType eod, const RecNoType flag, const char * des, const char * calc);
// @cmember Stampa la descrizione del direttorio sull'output selezionato
virtual void print_on(ostream& out) const;
// @cmember Legge la descrizione del direttorio dall' input selezionato
virtual void read_from(istream& in);
// @cmember Ritorna il nome del file selezionato
const char* name() const;
// @cmember Ritorna il nome dei file dati selezionato
const char* filename() const;
// @cmember Ritorna la descrizione del file selezionato
const char* des() const;
// @cmember Ritorna la descrizione della tabella
static const char* tab_des(const char* tabname);
// @cmember Ritorna l'espressione associata al file selezionato
const char* expr() const;
// @cmember Ritorna l'EOD del file selezionato
TRecnotype eod() const;
// @cmember Ritorna l'EOX del file selezionato
TRecnotype eox() const;
// @cmember Ritorna il flag del file selezionato
long flags() const;
// @cmember Ritorna la lunghezza del tracciato record in bytes
word len() const;
// @cmember Ritorna lo stato d'errore del file
int status(TDirtype dirtype = _nordir) const ;
// @cmember Ritorna il numero di file presenti
int num() const { return _num;}
// @cmember Ritorna il numero di file presenti nella directory <p dirtype>
int items(TDirtype dirtype = _nordir) const;
// @cmember Ritorna il descrittore del file "dir.gen"
//const FileDes& filedesc() const { return _dir; }
//FileDes& filedesc() { return _dir; }
// @cmember Controlla se il file appartiene ai dati comuni. Valido solo se
// la get e' stata effettuata con _sysdirop
bool is_com() const { return _com; }
// @cmember Controlla se il file appartiene alla ditta. Valido solo se
// la get e' stata effettuata con _sysdirop
bool is_firm() const { return !_com; }
// @cmember Controlle se il file e' valido (nome esistente e dimensione
// diversa da 0)
bool is_valid() const { return name()[0] > ' ' && len() > 0; }
// @cmember Controlla se il file e' attivato dalla chiave hardware.
// Valido solo se prefhnd e settato a ""
bool is_active() const;
// @cmember Duplica il tracciato record
virtual TObject* dup() const { return new TDir(*this);}
// @cmember Costruttore di copia
TDir(const TDir & d);
// @cmember Costruttore "sicuro"
TDir(int logicnum);
// @cmember Costruttore
TDir();
// @cmember Distruttore
virtual ~TDir();
};
// @doc EXTERNAL
// @class TTrec | Classe per le gestione dei tracciati record dei file
//
// @base public | TSortable
class TTrec : public TSortable
// @author:(INTERNAL) Alessandro
// @access:(INTERNAL) Private Member
{
// @cmember:(INTERNAL) Descrittore del tracciato record
RecDes _rec;
// @cmember:(INTERNAL) Numero del file di appartenenza
int _num;
// @cmember:(INTERNAL) Puntatore al TConfig delle descrizioni
TConfig* _des;
// @cmember:(INTERNAL) Nome della tabella
TString _tab;
// @access Protected Member
protected:
// @cmember Permette di comparare due oggetti (vedi classe <c TSortable>)
int compare(const TSortable& a) const;
// @access Public Member
public:
// @cmember Assegna all'oggetto TTrec il tracciato record del file indicato
void get(int nfile, TDirtype dirtype = _nordir);
// @cmember Setta il file indicato con il tracciato record dell'oggetto
void put(int nfile, TDirtype dirtype = _nordir);
// @cmember Azzera il tracciato record
void zero();
// @cmember Costruisce i puntatori per la ricerca dei campi
void rehash();
// @cmember Ritorna lo stato di errore del file
int status(TDirtype dirtype = _nordir) const ;
// @cmember Ritorna il numero del file
int num() const
{ return _num;}
// @cmember Cambia il numero del file
void set_num(int num)
{_num = num;}
// @cmember Ritorna il numero del campo <p fieldname>
int field(const char* fieldname) const;
// @cmember Ritorna il descrittore del tracciato record
const RecDes& rec() const { return _rec;}
RecDes& rec() { return _rec;}
// @cmember Assegna un oggetto TTrec
TTrec& operator =(const TTrec& b);
// @cmember Ritorna il numero di campi del tracciato record
int fields() const { return _rec.NFields; }
// @cmember Ritorna il numero di chiavi di ordinamento del tracciato record
int keys() const { return _rec.NKeys; }
// @cmember Assegna il numero di campi del tracciato record
void set_fields(int nfields)
{ _rec.NFields = short(nfields);}
// @cmember Assegna il numero di chiavi di ordinamento del tracciato record
void set_keys(int nkeys)
{ _rec.NKeys = short(nkeys);}
// @cmember Ritorna una token string contenente la descrizione del campo
const char* fielddef(int fld) const;
// @cmember Ritorna una stringa contenente la chiave
const char* keydef(int key) const;
// @cmember Ritorna la lunghezza del record
int len() const;
#ifndef FOXPRO
// @cmember Aggiorna la chiave. <p desc> e' una token string
void update_keydef(int key, TToken_string& desc);
// @cmember Aggiorna il campo. <p desc> e' una token string
void update_fielddef(int nfld, TToken_string& desc);
// @cmember Stampa il tracciato record sull'output selezionato
virtual void print_on(ostream& out) const;
// @cmember Legge il tracciato record da input selezionato
virtual void read_from(istream& in);
void set_des(TConfig* c = NULL, const char* tab = "") { _des = c; _tab = tab;}
#endif
// @cmember Duplica il descrittore di file
virtual TObject* dup() const { return new TTrec(*this);}
// @cmember Costruttore
TTrec(const TTrec & r);
// @cmember Costruttore
TTrec(int logicnum, TDirtype dirtype = _nordir);
TTrec();
// @cmember Distruttore
virtual ~TTrec();
};
#endif // __FILES_H