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);
|
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]);
|
((TMultiple_rectype *) this)->load_rows_file(_logicnums[index]);
|
||||||
return (TRecord_array &) _files[index];
|
return (TRecord_array &) _files[index];
|
||||||
}
|
}
|
||||||
@ -184,6 +184,15 @@ void TMultiple_rectype::zero(char c)
|
|||||||
((TRecord_array &)_files[i]).destroy_rows();
|
((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)
|
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
|
else
|
||||||
err = TRectype::read(f, op, lockop);
|
err = TRectype::read(f, op, lockop);
|
||||||
|
synchronize_bodies();
|
||||||
|
return err;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void TMultiple_rectype::synchronize_bodies()
|
||||||
|
{
|
||||||
for (int i = _nfiles - 1; i >= 0 ; i--)
|
for (int i = _nfiles - 1; i >= 0 ; i--)
|
||||||
{
|
{
|
||||||
if (_nuovo)
|
if (_nuovo)
|
||||||
@ -226,9 +242,10 @@ int TMultiple_rectype::read(TBaseisamfile & f, word op, word lockop)
|
|||||||
_changed[i] = TRUE;
|
_changed[i] = TRUE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return err;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
int TMultiple_rectype::remove(TBaseisamfile & f) const
|
int TMultiple_rectype::remove(TBaseisamfile & f) const
|
||||||
{
|
{
|
||||||
int err = NOERR;
|
int err = NOERR;
|
||||||
|
@ -60,6 +60,8 @@ protected:
|
|||||||
|
|
||||||
// @cmember Associa un file a quello principale
|
// @cmember Associa un file a quello principale
|
||||||
void add_file(int logicnum, const char * numfield);
|
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:
|
public:
|
||||||
//***********************
|
//***********************
|
||||||
// struttura
|
// struttura
|
||||||
@ -90,9 +92,9 @@ public:
|
|||||||
TRectype & new_row(int logicnum = 0);
|
TRectype & new_row(int logicnum = 0);
|
||||||
|
|
||||||
// @cmember Abilita il caricamento del corpo <par lognum> insieme alla testata
|
// @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
|
// @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
|
// 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(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); }
|
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);
|
int read(TBaseisamfile & f, word op = _isequal, word lockop = _nolock);
|
||||||
|
|
||||||
virtual int write(TBaseisamfile& f) const { return write_rewrite(f);}
|
virtual int write(TBaseisamfile& f) const { return write_rewrite(f);}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user