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; int err = NOERR;
*this = rec;
_nuovo = FALSE; _nuovo = FALSE;
if (op == _isequal) if (op == _isequal)
{ {
TRectype r(rec); TRectype r(*this);
err = TRectype::read(f, op, lockop); err = TRectype::read(f, op, lockop);
if (err != NOERR) if (err != NOERR)
@ -257,6 +254,26 @@ void TMultiple_rectype::enable_autoload(int logicnum,bool on)
_autoload[index] = on; _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) bool TMultiple_rectype::autoload_enabled(int logicnum)
{ {
return _autoload[log2ind(logicnum)]; return _autoload[log2ind(logicnum)];
@ -265,10 +282,10 @@ bool TMultiple_rectype::autoload_enabled(int logicnum)
// @cmember Aggiunge il corpo lgicnum // @cmember Aggiunge il corpo lgicnum
void TMultiple_rectype::add_file(int logicnum, const char * numfield) void TMultiple_rectype::add_file(int logicnum, const char * numfield)
{ {
CHECK(_nfiles < maxfiles, "Too many files added"); CHECK(_nfiles < maxfiles, "Too many files added");
_logicnums[_nfiles] = logicnum; _logicnums[_nfiles] = logicnum;
_autoload[_nfiles] = FALSE; _autoload[_nfiles] = FALSE;
_numfields.add(numfield, _nfiles++); _numfields.add(numfield, _nfiles++);
} }
TMultiple_rectype::TMultiple_rectype(const TBaseisamfile* file) TMultiple_rectype::TMultiple_rectype(const TBaseisamfile* file)

View File

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