Files correlati : agalib Ricompilazione Demo : [ ] Commento : Aggiunto supporto per firma digitale git-svn-id: svn://10.65.10.50/trunk@18571 c028cbd2-c16b-5b4b-a496-9718f37d4682
		
			
				
	
	
		
			245 lines
		
	
	
		
			6.9 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			245 lines
		
	
	
		
			6.9 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;
 | |
| 
 | |
| class TFile_manager : public TObject
 | |
| {
 | |
|   TArray _fileinfo;
 | |
|   TArray _recinfo;   
 | |
|   int _open_files, _max_open_files;
 | |
| 
 | |
| protected:
 | |
|   TFile_info& fileinfo(TIsam_handle handle) const;
 | |
|   TRecord_info& recinfo(int logicnum) const;
 | |
| 
 | |
|   bool close_oldest();
 | |
| 
 | |
| public:
 | |
|   TIsam_handle open(int& logicnum, TFilename& name, bool excl, bool idx);
 | |
|   int close(TIsam_handle& name);
 | |
| 	void destroy_info(int logicnum);
 | |
| 
 | |
|   void lock_record(TIsam_handle num, TRecnotype rec);
 | |
|   void unlock_record(TIsam_handle num, TRecnotype rec);
 | |
| 
 | |
|   const TFilename& get_filename(TIsam_handle num) const;
 | |
|   const FileDes& get_filedes(TIsam_handle num) const;
 | |
|   TToken_string & get_relation(int fromlogic, int tologic) const;
 | |
|   const RecDes& get_recdes(int logicnum) const;
 | |
|   TIsam_handle get_handle(TFilename& name);
 | |
|   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);
 | |
| 
 | |
|   void notify_change(TIsam_handle name);
 | |
|   long last_change(TIsam_handle name) const;
 | |
| 
 | |
|   int close_closeable();
 | |
|   void close_all();
 | |
|   void open_all();
 | |
| 
 | |
|   TFile_manager();
 | |
|   virtual ~TFile_manager() { }
 | |
| };
 | |
| 
 | |
| // @doc EXTERNAL
 | |
| 
 | |
| // @class TFirm | Classe contenente le informazioni sulla ditta correntemente in uso
 | |
| //
 | |
| // @base public | TObject     
 | |
| class TFirm : public TAssoc_array
 | |
| { 
 | |
| public:
 | |
|   bool read(long code);
 | |
|   TFirm& operator=(long code) { read(code); return *this; }
 | |
|   
 | |
|   const TString& get(const char* attr) const;
 | |
|   long get_long(const char* attr) const;
 | |
| 
 | |
|   long codice() const;
 | |
|   const TString& codice_valuta() const;
 | |
|   const TString& ragione_sociale() const;
 | |
|   
 | |
|   virtual bool ok() const { return codice() > 0L; }
 | |
| 
 | |
|   TFirm(long code = -1L);
 | |
|   virtual ~TFirm() { }
 | |
| };
 | |
| 
 | |
| // @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
 | |
|   unsigned int _filelevel, _stdlevel;
 | |
|   // @cmember:(INTERNAL) Numero di files esitenti
 | |
|   int _items;
 | |
| 
 | |
|   TFile_manager _manager;
 | |
| 
 | |
|   TFirm* _firm;
 | |
|   
 | |
|   
 | |
| // @access Private Member
 | |
| private:        
 | |
|   int closeall(bool changestudy, TBit_array& excl, TBit_array& toclose) const;
 | |
|   void openall(bool changestudy, TBit_array& excl, int oldmax, TBit_array& toopen) const;
 | |
|   
 | |
|   // @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
 | |
|   unsigned int filelevel() const 
 | |
|   {return _filelevel;} 
 | |
| 
 | |
|   // @cmember Ritorna il livello standard degli archivi
 | |
|   unsigned int get_stdlevel() const { return _stdlevel; } 
 | |
|   void set_stdlevel(unsigned int sl) { _stdlevel = sl; } 
 | |
|   
 | |
|   // @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); }
 | |
| 
 | |
|   TIsam_handle get_handle(TFilename& name)
 | |
|   { return _manager.get_handle(name); }
 | |
| 
 | |
|   const RecDes& get_recdes(int logicnum) const
 | |
|   { return _manager.get_recdes(logicnum); }
 | |
| 
 | |
|  TToken_string & get_relation(int fromlogic, int tologic) const
 | |
|   { return _manager.get_relation(fromlogic, tologic); }
 | |
| 
 | |
|   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) const
 | |
|   { return _manager.get_filedes(name); }
 | |
|  
 | |
|   const TFilename& get_filename(TIsam_handle name) const
 | |
|   { return _manager.get_filename(name); }
 | |
| 
 | |
|   void notify_change(TIsam_handle name)
 | |
|   { _manager.notify_change(name); }
 | |
| 
 | |
|   long last_change(TIsam_handle name) const
 | |
|   { return _manager.last_change(name); }
 | |
| 
 | |
| 	void destroy_info(int logicnum)
 | |
|   { _manager.destroy_info(logicnum); }
 | |
| 
 | |
|   const TFirm& firm();
 | |
|   static int firms(TString_array& codes);
 | |
|   static int firms(TPointer_array& codes); // calls above method!
 | |
|   static int firms(TArray& data);          // calls above method!
 | |
| 
 | |
|   // @cmember Costruttore
 | |
|   TPrefix();
 | |
|   // @cmember Distruttore
 | |
|   virtual ~TPrefix();
 | |
| };
 | |
| 
 | |
| 
 | |
| const char* firm2dir(long codditta);
 | |
| int safely_close_closeable_isamfiles();
 | |
| 
 | |
| TPrefix& prefix_init(); 
 | |
| bool prefix_valid();
 | |
| TPrefix& prefix();
 | |
| void prefix_destroy();
 | |
| 
 | |
| const TString& logic2table(int logic_num);
 | |
| int table2logic(const TString& name);
 | |
| 
 | |
| #endif // __PREFIX_H
 | |
| 
 |