Introduzione funzione readat e modifica funzione read using:
funzione virtual synchronize_bodies git-svn-id: svn://10.65.10.50/trunk@4951 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
738f340efa
commit
9a0e1c806c
@ -137,7 +137,7 @@ TRecord_array & TMultiple_rectype::body(int logicnum) const
|
||||
{
|
||||
const int index = log2ind(logicnum);
|
||||
|
||||
if (_files.objptr(index) == NULL || _changed[index])
|
||||
if (_files.objptr(index) == NULL || _changed[index])
|
||||
((TMultiple_rectype *) this)->load_rows_file(_logicnums[index]);
|
||||
return (TRecord_array &) _files[index];
|
||||
}
|
||||
@ -184,6 +184,15 @@ void TMultiple_rectype::zero(char c)
|
||||
((TRecord_array &)_files[i]).destroy_rows();
|
||||
}
|
||||
|
||||
int TMultiple_rectype::readat(TBaseisamfile& f, TRecnotype nrec, word lockop)
|
||||
{
|
||||
int err = NOERR;
|
||||
|
||||
_nuovo = FALSE;
|
||||
err = TRectype::readat(f, nrec, lockop);
|
||||
synchronize_bodies();
|
||||
return err;
|
||||
}
|
||||
|
||||
int TMultiple_rectype::read(TBaseisamfile & f, word op, word lockop)
|
||||
{
|
||||
@ -203,6 +212,13 @@ int TMultiple_rectype::read(TBaseisamfile & f, word op, word lockop)
|
||||
}
|
||||
else
|
||||
err = TRectype::read(f, op, lockop);
|
||||
synchronize_bodies();
|
||||
return err;
|
||||
}
|
||||
|
||||
|
||||
void TMultiple_rectype::synchronize_bodies()
|
||||
{
|
||||
for (int i = _nfiles - 1; i >= 0 ; i--)
|
||||
{
|
||||
if (_nuovo)
|
||||
@ -226,9 +242,10 @@ int TMultiple_rectype::read(TBaseisamfile & f, word op, word lockop)
|
||||
_changed[i] = TRUE;
|
||||
}
|
||||
}
|
||||
return err;
|
||||
}
|
||||
|
||||
|
||||
|
||||
int TMultiple_rectype::remove(TBaseisamfile & f) const
|
||||
{
|
||||
int err = NOERR;
|
||||
|
@ -60,6 +60,8 @@ protected:
|
||||
|
||||
// @cmember Associa un file a quello principale
|
||||
void add_file(int logicnum, const char * numfield);
|
||||
// @cmember sincronizza tutti i body (li legge, se necessario) in seguito ad una lettura della testata
|
||||
virtual void synchronize_bodies();
|
||||
public:
|
||||
//***********************
|
||||
// struttura
|
||||
@ -90,9 +92,9 @@ public:
|
||||
TRectype & new_row(int logicnum = 0);
|
||||
|
||||
// @cmember Abilita il caricamento del corpo <par lognum> insieme alla testata
|
||||
void enable_autoload(int lognum,bool on =TRUE);
|
||||
void enable_autoload(int lognum = 0 ,bool on =TRUE);
|
||||
// @cmember Restituisce il flag di caricamento del corpo <par lognum> insieme alla testata
|
||||
bool autoload_enabled(int lognum);
|
||||
bool autoload_enabled(int lognum =0 );
|
||||
|
||||
//***********************
|
||||
// record e I/O
|
||||
@ -106,6 +108,8 @@ public:
|
||||
|
||||
virtual int read(TRectype & rec, word op = _isequal, word lockop = _nolock) {TLocalisamfile f(num()); *this = rec; return read(f, op, lockop); }
|
||||
virtual int read(word op = _isequal, word lockop = _nolock) { TLocalisamfile f(num()); return read(f, op, lockop); }
|
||||
// @cmember Legge il file <p f> con il tipo di record alla posizione desiderata
|
||||
virtual int readat(TBaseisamfile& f, TRecnotype nrec, word lockop = _nolock);
|
||||
int read(TBaseisamfile & f, word op = _isequal, word lockop = _nolock);
|
||||
|
||||
virtual int write(TBaseisamfile& f) const { return write_rewrite(f);}
|
||||
|
Loading…
x
Reference in New Issue
Block a user