Aggiunto metodo per rel.app. in cui cambiano le chiavi a run-time

git-svn-id: svn://10.65.10.50/trunk@1868 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
gianluca 1995-09-20 16:56:10 +00:00
parent 3d01b209f6
commit 1b80643ca2
4 changed files with 23 additions and 2 deletions

View File

@ -432,6 +432,16 @@ word TMask_field::last_key() const
return (word)u;
}
// Certified 90%
void TMask_field::reset_key(byte key)
{
CHECK(key>0, "Can't reset key 0");
_keys.reset(long(key));
if (last_key()==0) _keys.reset(0L);
}
void TMask_field::set_dirty(bool d)
{
if (_flags.dirty == 3 && d == FALSE)

View File

@ -317,6 +317,8 @@ public:
// @cmember Setta il campo alla chiave <p key>
void set_key(byte key)
{ _keys.set(long(key)); _keys.set(0L);}
// @cmember Rimuove il campo dalla chiave <p key>
void reset_key(byte key);
// @cmember Ritorna l'ultima chiave di appartenenza del campo
word last_key() const;

View File

@ -1,4 +1,4 @@
// $Id: relapp.cpp,v 1.65 1995-08-29 09:17:39 gianluca Exp $
// $Id: relapp.cpp,v 1.66 1995-09-20 16:56:01 gianluca Exp $
#include <mailbox.h>
#include <sheet.h>
#include <urldefid.h>
@ -519,7 +519,13 @@ bool TRelation_application::test_key(byte k, bool err)
// Guy: doesn't change fields
bool TRelation_application::find(byte k)
{
{
if (changing_keys())
{
delete _maskeys;
_maskeys= new TKey_array(_mask);
}
const byte numkeys = _maskeys->items();
if (k == 0)

View File

@ -74,6 +74,9 @@ protected:
// la futura get_mask ritornera' una maschera diversa dalla corrente.
virtual bool changing_mask(int mode) pure;
virtual TMask* get_mask(int mode) pure; // Richiede la maschera da usare
// metodo per far forzare la rigenerazione della lista interna di chiavi ad ogni find()
virtual bool changing_keys() const { return FALSE; }
virtual TRelation* get_relation() const pure; // Relazione da modificare
virtual int read(TMask& m); // Legge dalla relazione i valori nella maschera