Corretta read

git-svn-id: svn://10.65.10.50/trunk@4765 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
alex 1997-06-27 09:13:03 +00:00
parent 3ac58423fd
commit 3335e2fb3f
2 changed files with 34 additions and 12 deletions

View File

@ -184,17 +184,14 @@ void TMultiple_rectype::zero(char c)
}
int TMultiple_rectype::read(TRectype & rec, word op, word lockop)
int TMultiple_rectype::read(TBaseisamfile & f, word op, word lockop)
{
TLocalisamfile f(num());
int err = NOERR;
*this = rec;
_nuovo = FALSE;
if (op == _isequal)
{
TRectype r(rec);
TRectype r(*this);
err = TRectype::read(f, op, lockop);
if (err != NOERR)
@ -256,6 +253,26 @@ void TMultiple_rectype::enable_autoload(int logicnum,bool on)
const int index = log2ind(logicnum);
_autoload[index] = on;
}
TRectype & TMultiple_rectype::insert_row(int row, int logicnum)
{
TRectype * r = new_body_record(logicnum);
TRecord_array & b = body(logicnum);
const int index = log2ind(logicnum);
set_body_key(*r);
r->put(_numfields.row(index), row);
b.insert_row(r);
return *r;
}
TRectype & TMultiple_rectype::new_row(int logicnum)
{
TRecord_array & b = body(logicnum);
TRectype & r = b.row(-1, TRUE);
return r;
}
bool TMultiple_rectype::autoload_enabled(int logicnum)
{
@ -265,10 +282,10 @@ bool TMultiple_rectype::autoload_enabled(int logicnum)
// @cmember Aggiunge il corpo lgicnum
void TMultiple_rectype::add_file(int logicnum, const char * numfield)
{
CHECK(_nfiles < maxfiles, "Too many files added");
_logicnums[_nfiles] = logicnum;
_autoload[_nfiles] = FALSE;
_numfields.add(numfield, _nfiles++);
CHECK(_nfiles < maxfiles, "Too many files added");
_logicnums[_nfiles] = logicnum;
_autoload[_nfiles] = FALSE;
_numfields.add(numfield, _nfiles++);
}
TMultiple_rectype::TMultiple_rectype(const TBaseisamfile* file)

View File

@ -84,6 +84,11 @@ public:
// @cmember distrugge tutte le righe del record array del corpo
void destroy_rows(int logicnum = 0) { body(logicnum).destroy_rows(); }
// @cmember inserisce una riga alla posizione <par row> nel record array del corpo <par logicnum>
TRectype & insert_row(int row, int logicnum = 0);
// @cmember inserisce una riga alla posizione <par row> nel record array del corpo <par logicnum>
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);
// @cmember Restituisce il flag di caricamento del corpo <par lognum> insieme alla testata
@ -99,9 +104,9 @@ public:
virtual TRectype & operator =(const char * r);
virtual void zero(char c = '\0');
virtual int read(TRectype & rec, word op = _isequal, word lockop = _nolock);
virtual int read(word op = _isequal, word lockop = _nolock) { return read(*this, op, lockop); }
int read(TBaseisamfile & f, word op = _isequal, word lockop = _nolock) { return read(f.curr(), 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); }
int read(TBaseisamfile & f, word op = _isequal, word lockop = _nolock);
virtual int write(TBaseisamfile& f) const { return write_rewrite(f);}
virtual int rewrite(TBaseisamfile& f) const { return write_rewrite(f, TRUE);}