#ifndef __FILES_H #define __FILES_H #ifndef __EXTCTYPE_H #include #endif #ifndef __RECTYPES_H #include #endif #ifndef __CONFIG_H #include #endif #define DESCPAR "FieldDescr" #define DESCTAB "TabDescr" #define DESCDIR "recdesc" // @doc EXTERNAL // @class TFile | Classe per la definizione dei metodi che comprendono tutte le // procedure per l'accesso fisico di basso livello ai file. // // @base public | TObject class TFile : public TObject // @author:(INTERNAL) Alex // @access:(INTERNAL) Private Member { // @cmember:(INTERNAL) Descrittore del file SecDef* _file; // @cmember:(INTERNAL) Lunghezza del record int _len; // @cmember:(INTERNAL) Offset iniziale del file in settori int _base; // @access Public Member public: // @cmember Apre il file specificato void open(const char* name, TFilelock lockmode = _manulock); // @cmember Controlla se il file specificato e' corretto (TRUE se non vi sono errori) bool verify(const char* name); // @cmember Crea il file specificato void create(const char* name, TRecnotype nrecord = 10); // @cmember Cambia le dimensioni di un file void chsize(const char* name, TRecnotype nrecord); // @cmember Chiude il file void close(); // @cmember Elimina il file specificato void unlink(const char* name); // @cmember Legge un record dal file void read(char* record, TRecnotype recnum, TReclock lock = _nolock); // @cmember Scrive un record sul file void write(char* record, TRecnotype recnum, TReclock lock = _nolock); // @cmember Ritorna lo stato di errore del file int status() const ; // @cmember Ritorna l'offset di base int& base() { return _base; } // @cmember Ritorna la lunghezza del record int& len() { return _len; } // @cmember Controlla che non vi siano errori nel file aperto (TRUE se tutto normale) bool ok() const { return status() == NOERR; } // @cmember Controlla se vi sono errori nel file aperto (TRUE se non ci sono errori) bool error() const { return status() != NOERR; } // @cmember Costruttore TFile(int lenrec = 0, int base = 0); // @cmember Distruttore virtual ~TFile(); }; // @doc EXTERNAL // @class TDir | Classe per la gestione del file "dir.gen" // // @base public | TObject class TDir : public TObject // @author:(INTERNAL) Sandro // @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 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

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() { 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) Sandro // @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 ) 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

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.

e' una token string void update_keydef(int key, TToken_string& desc); // @cmember Aggiorna il campo.

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