Riportate sul main trunk le modifiche alle funzioni di autosave

git-svn-id: svn://10.65.10.50/trunk@5966 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
augusto 1998-01-19 10:03:43 +00:00
parent 0c0abd6589
commit e0cfd918cb
2 changed files with 13 additions and 12 deletions

View File

@ -137,16 +137,17 @@ void TRecord_text::add(const TString& c, int pos)
_array.add(c, pos);
}
//////////////////////////////////////// TFile_text ////////////////////////////////////////
TTracciato_record* TFile_text::t_rec(const char* type)
TTracciato_record* TFile_text::t_rec(const char* type) const
{
return (TTracciato_record*)_tracciati_record.objptr(type);
}
TTracciato_record* TFile_text::t_rec(int mainfile)
TTracciato_record* TFile_text::t_rec(int mainfile) const
{
TTracciato_record *trrd;
_tracciati_record.restart();
while (trrd=(TTracciato_record *)_tracciati_record.get())
TAssoc_array &tr= ((TFile_text *)this)->_tracciati_record;
tr.restart();
while (trrd=(TTracciato_record *)tr.get())
{
if (trrd->relation() && trrd->relation()->lfile().num()==mainfile)
break;
@ -597,13 +598,13 @@ bool TFile_text::_autoload(TRecord_text& rec, TCursor& cur , TTracciato_record&
return can_write(rec,rel);
}
int TFile_text::autosave(int mainfile, const TRecord_text& rec)
int TFile_text::autosave(const TRecord_text& rec, int mainfile )
{
const TString& type = rec.type();//prendo il tracciato record del tipo del record_text
TTracciato_record* tr = t_rec(type);
if (tr)
if (tr->relation())
if (tr->relation()->lfile().num()==mainfile)
if (mainfile==0 || tr->relation()->lfile().num()==mainfile)
return _autosave(*(tr->relation()),rec, *tr);
return NOERR; // l'assenza del tracciato non significa un errore
}
@ -618,7 +619,7 @@ int TFile_text::autosave(TRelation& rel, const TRecord_text& rec)
int TFile_text::autosave(int mainfile)
{
CHECK(_current,"Record corrente non settato");
return autosave(mainfile,*_current);
return autosave(*_current,mainfile);
}
//Carico la relazione con i dati del record text

View File

@ -95,7 +95,7 @@ public:
// @cmember Restituisce la relazione associata al tracciato
TRelation * relation() const {return _rel;}
// @cmember Setta la relazione associata al tracciato
void set_relation(TRelation * rel) {_rel = rel;}
void set_relation(TRelation * rel) ;
void add(const TTracciato_campo& tc, int pos = -1);//aggiunge tracciato campo all'array
void add(TTracciato_campo* tc, int pos = -1);//aggiunge tracciato campo all'array
TTracciato_campo& get(int n);//ritorna il tracciato campo n dell'array (se non c'e' lo crea)
@ -209,10 +209,10 @@ public:
void set_curr(TRecord_text& rec) {_current = &rec;}//setta il record corrente a rec
void set_curr(TRecord_text* rec) {_current = rec;}//setta il record corrente a rec
// @cmember ritorna il tracciato record del tipo passato
TTracciato_record* t_rec(const char* type);
TTracciato_record* t_rec(const char* type) const ;
// @cmember ritorna il tracciato record relativo alla relazione del file passato
// NB: si assume che ogni tracciato sia relativo ad una relazione diversa
TTracciato_record* t_rec(int mainfile);
TTracciato_record* t_rec(int mainfile) const ;
const int items_tr() const {return _tracciati_record.items();}//ritorna il numero di tracciati record nel file
TAssoc_array& tracciati() {return _tracciati_record;}//ritorna un riferimento all'assoc_array dei tracciati record
// @cmember caricamento automatico del record_text dalla relazione
@ -230,11 +230,11 @@ public:
//caricamento automatico della relazione dal record_text corrente
int autosave(TRelation& rel) {return autosave(rel, *_current); };
//caricamento automatico della relazione definita nel tracciato dal record_text
int autosave(int mainfile, const TRecord_text& rec);
int autosave(const TRecord_text& rec, int mainfile=0);
//caricamento automatico della relazione definita nel tracciato dal record_text
int autosave(int mainfile);
int read(TRecord_text & rec);//legge da file di testo il record_text
int read(){return read(*_current);}//legge da file di testo il record_text corrente
int read() {return read(*_current);}//legge da file di testo il record_text corrente
//carica nel record_text il campo alla posizione <ncampo> con il valore <val> già formattato
void add_field(TRecord_text& rec, const int ncampo, const char* val);
//scarica dal record_text il campo alla posizione <ncampo>