campo-sirio/include/prefix.h
guy 2c2d972216 prefix.* Migliorata gestione handles dei file aperti
progind.cpp  Corretta gestione messaggi multiriga per XI_R4
progind.h    Trasformate da void a bool i metodi setstatus e addstatus
rectypes.h   Aggiunti due nuovi TDirtype _studir e extdir
relapp.cpp   Migliorata gestione stringhe fisse
relation.cpp Adeguati i cursori alla nuova gestione handles
relation.h   Tolto _filename dai cursori e messo _indexfirm


git-svn-id: svn://10.65.10.50/trunk@6457 c028cbd2-c16b-5b4b-a496-9718f37d4682
1998-03-30 13:50:30 +00:00

176 lines
4.8 KiB
C++
Executable File

#ifndef __PREFIX_H
#define __PREFIX_H
#ifndef __EXTCTYPE_H
#include <extctype.h>
#endif
#ifndef __RECTYPES_H
#include <rectypes.h>
#endif
#ifndef __ASSOC_H
#include <assoc.h>
#endif
class TFile_info;
class TRecord_info;
class TTrec;
typedef int TIsam_handle;
typedef int TCodeb_handle;
class TFile_manager : public TObject
{
TArray _fileinfo;
TArray _recinfo;
int _open_files, _max_open_files;
protected:
TFile_info& fileinfo(TIsam_handle handle);
TRecord_info& recinfo(int logicnum);
bool close_oldest();
public:
TIsam_handle open(int& logicnum, TFilename& name, bool excl, bool idx);
int close(TIsam_handle& name);
void lock_record(TIsam_handle num, TRecnotype rec);
void unlock_record(TIsam_handle num, TRecnotype rec);
const FileDes& get_filedes(TIsam_handle name);
const RecDes& get_recdes(int logicnum);
const RecDes& update_recdes(int logicnum);
TDirtype get_dirtype(int logicnum);
bool add_recdes(int logicnum, TTrec& rec, TToken_string& keys);
TCodeb_handle get_handle(TIsam_handle name, int key);
int get_reclen(int logicnum);
int close_closeable();
void close_all();
void open_all();
TFile_manager();
virtual ~TFile_manager() { }
};
// @doc EXTERNAL
// @class TPrefix | Classe contenente le informazioni sulla ditta correntemente in uso
//
// @base public | TObject
class TPrefix : public TObject
// @author:(INTERNAL) Alex
{
// @access:(INTERNAL) Private Member
// @cmember:(INTERNAL) Contenuto del file "prefix.txt"
TString _prefix;
// @cmember:(INTERNAL) Livello degli archivi
long _filelevel;
// @cmember:(INTERNAL) Numero di files esitenti
int _items;
TFile_manager _manager;
// @access Protected Member
protected:
// @cmember Verifica l'effettiva esistenza della directory <p s> sotto
// la directory dati
bool test(const char* s) const ;
// @access Public Member
public:
// @cmember Setta la ditta corrente
void set(const char* name = NULL, bool force = FALSE, TFilelock mode = _manulock);
// @cmember Controlla l'esistenza di un codice ditta
bool exist(long codditta) const;
// @cmember Controlla l'esistenza di un codice ditta e che non sia in uso
bool test(long codditta) const;
// @cmember Ritorna il codice della ditta corrente
long get_codditta() const ;
// @cmember Setta il codice della ditta corrente
bool set_codditta(long codditta, bool force = FALSE);
// @cmember Ritorna lo studio corrente
const char* get_studio() const;
// @cmember Setta lo studio corrente
bool set_studio(const char* study, long firm = 0);
// @cmember Ritorna il contenuto della variabile <p _prefix>
const char* name() const
{ return _prefix;}
// @cmember Ritorna il livello degli archivi
long filelevel() const
{return _filelevel;}
// @cmember Ritorna il numero di archivi
int items() const
{ return _items; }
// @cmember Ritorna la descrizione del file passato
const char* description(const char* cod) const;
// @cmember Ritorna la descrizione del file passato
const char* description(int cod) const;
// @cmember Controlla che la ditta attiva sia una ditta (e non es. dati comuni)
bool is_firm() const
{ return _prefix.len() == 6 && (_prefix[5] == 'A' || _prefix[5] == 'a'); }
// @cmember Controlla che siano attivi i dati comuni (e non una ditta)
bool is_com() const
{ return !is_firm();}
// @cmember Crea gli archivi dii una nuova ditta
bool build_firm_data(long codditta, bool flagcom = FALSE);
// @cmember Riapre tutti gli archivi della ditta attiva
void reopen() const ;
TIsam_handle open_isamfile(int& logicnum, TFilename& name, bool excl = FALSE, bool idx = TRUE)
{ return _manager.open(logicnum, name, excl, idx); }
int close_isamfile(TIsam_handle& name)
{ return _manager.close(name); }
void lock_record(TIsam_handle num, TRecnotype rec);
void unlock_record(TIsam_handle num, TRecnotype rec);
int close_closeable_isamfiles()
{ return _manager.close_closeable(); }
TDirtype get_dirtype(TIsam_handle name)
{ return _manager.get_dirtype(name); }
int get_handle(TIsam_handle name, int key = 0)
{ return _manager.get_handle(name, key); }
const RecDes& get_recdes(int logicnum)
{ return _manager.get_recdes(logicnum); }
bool add_recdes(int logicnum, TTrec& rec, TToken_string& keys)
{ return _manager.add_recdes(logicnum, rec, keys); }
const RecDes& update_recdes(int logicnum)
{ return _manager.update_recdes(logicnum); }
int get_reclen(int logicnum)
{ return _manager.get_reclen(logicnum); }
const FileDes& get_filedes(TIsam_handle name)
{ return _manager.get_filedes(name); }
// @cmember Costruttore
TPrefix();
// @cmember Distruttore
virtual ~TPrefix();
};
const char* firm2dir(long codditta);
TPrefix& prefix_init();
TPrefix& prefix();
void prefix_destroy();
#endif // __PREFIX_H