Aggiornato metodo renum_key dei TRecord_array

git-svn-id: svn://10.65.10.50/trunk@1256 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
guy 1995-04-18 08:40:52 +00:00
parent 191345de81
commit 9f8e74a226

View File

@ -1,4 +1,4 @@
// $Id: relation.cpp,v 1.35 1995-04-14 12:14:56 guy Exp $ // $Id: relation.cpp,v 1.36 1995-04-18 08:40:52 guy Exp $
// relation.cpp // relation.cpp
// fv 12/8/93 // fv 12/8/93
// relation class for isam files // relation class for isam files
@ -1318,6 +1318,14 @@ TRecord_array::TRecord_array(int logicnum, const char* numfield)
: _file(logicnum), _num(numfield) : _file(logicnum), _num(numfield)
{} {}
const TRectype& TRecord_array::key() const
{
TRectype* r = (TRectype*)objptr(0);
CHECK(r, "A TRecord_array lost its key");
return *r;
}
TRectype& TRecord_array::row(int n, bool create) TRectype& TRecord_array::row(int n, bool create)
{ {
TRectype* r = (TRectype*)objptr(n); TRectype* r = (TRectype*)objptr(n);
@ -1333,16 +1341,25 @@ TRectype& TRecord_array::row(int n, bool create)
bool TRecord_array::renum_key(const char* field, const TString& num) bool TRecord_array::renum_key(const char* field, const TString& num)
{ {
CHECKS(!num.blank(), "Blank key value for field: ", field);
TRectype* r = (TRectype*)objptr(0);
if (r == NULL)
{
r = new TRectype(_file);
r->zero();
add(r, 0);
}
const TString& curr = key().get(field); const TString& curr = key().get(field);
CHECKS(!curr.blank() && !num.blank(), "Bad key field for record: ", field);
if (curr == num) if (curr == num)
return FALSE; return FALSE;
for (int i = last(); i >= 0; i--) for (int i = last(); i >= 0; i--)
{ {
TRectype* o = (TRectype*)objptr(i); r = (TRectype*)objptr(i);
if (o) o->put(field, num); if (r) r->put(field, num);
} }
return TRUE; return TRUE;