Modifica a TSorted_cursor::buildcursor() per far si' che accetti
anche gli alias. (es. 216@->RAGSOC). git-svn-id: svn://10.65.10.50/trunk@2542 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
826499de7f
commit
5e3950f072
@ -1,4 +1,4 @@
|
||||
// $Id: relation.cpp,v 1.74 1995-12-29 12:09:00 andrea Exp $
|
||||
// $Id: relation.cpp,v 1.75 1996-01-30 15:59:31 angelo Exp $
|
||||
// relation.cpp
|
||||
// fv 12/8/93
|
||||
// relation class for isam files
|
||||
@ -390,15 +390,15 @@ int TRelation::name2ind(
|
||||
// @mfunc Ritorna il descrittore del file
|
||||
//
|
||||
// @rdesc Ritorna il reference ad un <c TLocalisamfile> che indica il descrittore del
|
||||
// file della relazione
|
||||
// file della relazione
|
||||
TLocalisamfile& TRelation::lfile(
|
||||
int logicnum) const // @parm Numero logico del file da ritornare (default 0)
|
||||
// @parm const char* | name | Nome del file da ritornare
|
||||
int logicnum) const // @parm Numero logico del file da ritornare (default 0)
|
||||
// @parm const char* | name | Nome del file da ritornare
|
||||
// @syntax TLocalisamfile& lfile(int logicnum)
|
||||
// @syntax TLocalisamfile& lfile(const char* name)
|
||||
//
|
||||
// @comm E' comodo utilizzare anche l'operatore [] che richiama questa funzione con
|
||||
// la prima sintassi.
|
||||
// la prima sintassi.
|
||||
|
||||
{
|
||||
const int idx = log2ind(logicnum);
|
||||
@ -415,18 +415,18 @@ TLocalisamfile& TRelation::lfile(const char* name) const
|
||||
|
||||
// @mfunc Abilita/disabilita la scrittura sul file
|
||||
void TRelation::write_enable(
|
||||
int logicnum, // @parm Numero logico del file da abilitare/disabilitare (default 0)
|
||||
int logicnum, // @parm Numero logico del file da abilitare/disabilitare (default 0)
|
||||
// @parm cont char* | name | Nome del file da abilitare/disabilitare
|
||||
const bool on) // @parm Indica l'operazione da effettuare sul file:
|
||||
//
|
||||
// @flag TRUE | Abilita la scrittura sul file (default)
|
||||
// @flag FALSE | Disabilita la scrittura sul file
|
||||
const bool on) // @parm Indica l'operazione da effettuare sul file:
|
||||
//
|
||||
// @flag TRUE | Abilita la scrittura sul file (default)
|
||||
// @flag FALSE | Disabilita la scrittura sul file
|
||||
|
||||
// @syntax void write_enable(int logicnum, const bool on)
|
||||
// @syntax void write_enable(const char* name, const bool on)
|
||||
//
|
||||
// @comm Nel caso venga passato un numero logico uguale a 0 vengono abilitati/disabilitati tutti
|
||||
// i file dell relazione
|
||||
// i file dell relazione
|
||||
|
||||
|
||||
{
|
||||
@ -1235,7 +1235,7 @@ TRecnotype TCursor::readrec()
|
||||
// @mfunc Mette un lock sul record
|
||||
//
|
||||
// @rdesc Ritorna il numero di errore che si verifica nel porre il lock (NOERR) se
|
||||
// non si verificano errori
|
||||
// non si verificano errori
|
||||
int TCursor::lock(
|
||||
TReclock l) // @parm Tipo di locke da porre sul record (vedi <t TReclock>)
|
||||
{
|
||||
@ -1377,10 +1377,11 @@ TRecnotype TSorted_cursor::buildcursor(TRecnotype rp)
|
||||
s.cut(s.len()-1);
|
||||
TFieldref f(s,0);
|
||||
// Il controllo del file e' automatico in f.len()
|
||||
int flen = f.len(relation()->curr());
|
||||
int n = f.file();
|
||||
int flen = f.len(n<0 ? relation()->lfile(n).curr() : relation()->curr());
|
||||
_sort->addsortkey(abspos+f.from(),flen,versus);
|
||||
CHECKS(flen!=0,"Field can not have null length: ",(const char *) s);
|
||||
int lf = (f.file()!=0 ? f.file() : file().num());
|
||||
int lf = (relation()->lfile(n).num());
|
||||
TRectype r(lf);
|
||||
abspos+=r.length(f.name());
|
||||
CHECKD(abspos<=512,"Cannot exceed 512 bytes-key %d",abspos);
|
||||
@ -1613,7 +1614,7 @@ TFieldref& TFieldref::operator =(
|
||||
const TString& s) // @parm Stringa da assegnare all'oggetto
|
||||
|
||||
// @comm Un Fildref deve avere il seguente formato (solamente NAME e il mandante):
|
||||
// <nl>FILE->NAME[FROM,TO]
|
||||
// <nl>FILE->NAME[FROM,TO]
|
||||
|
||||
{
|
||||
int pos = s.find("->");
|
||||
@ -1728,7 +1729,7 @@ int TFieldref::len(TRectype &rec) const
|
||||
{
|
||||
if (_to >= 0)
|
||||
return _to - _from;
|
||||
if (_fileid == 0)
|
||||
if (_fileid <= 0)
|
||||
return rec.length(_name) - _from;
|
||||
|
||||
const TRectype r(_fileid);
|
||||
@ -1794,16 +1795,16 @@ bool TRecord_array::exist(int n) const
|
||||
// @mfunc Ritorna la riga <p r>
|
||||
//
|
||||
// @rdesc Ritorna un TRectype alla riga cercata o eventualemete il reference della nuova creata,
|
||||
// NULL nes caso non esista e non venga creata.
|
||||
// NULL nes caso non esista e non venga creata.
|
||||
TRectype& TRecord_array::row(
|
||||
int n, // @parm Numero della riga da creare
|
||||
bool create) // @parm Indica se creare una nuova riga se non esiste:
|
||||
//
|
||||
// @flag TRUE | Se la riga <p n> non esiste viene creata
|
||||
// @flag FALSE | Se la riga <p n> non esiste non viene creata
|
||||
int n, // @parm Numero della riga da creare
|
||||
bool create) // @parm Indica se creare una nuova riga se non esiste:
|
||||
//
|
||||
// @flag TRUE | Se la riga <p n> non esiste viene creata
|
||||
// @flag FALSE | Se la riga <p n> non esiste non viene creata
|
||||
|
||||
// @comm Nel caso <p create> si TRUE e venga richiesta una riga non esistente si crea un nuovo
|
||||
// record copiando la chiave.
|
||||
// record copiando la chiave.
|
||||
{
|
||||
const int i = n >= 0 ? n - _offset : -1;
|
||||
TRectype* r = (TRectype*)objptr(i);
|
||||
@ -1821,9 +1822,9 @@ TRectype& TRecord_array::row(
|
||||
//
|
||||
// @rdesc Ritorna se e' stato rinumerato il campo chiave
|
||||
bool TRecord_array::renum_key(
|
||||
const char* field, // @parm Campo della chiave a cui assegnare un nuovo valore
|
||||
const TString& num) // @parm Nuovo valore da assegnare al campo
|
||||
// @parm long | num | Nuovo valore da assegnare al campo
|
||||
const char* field, // @parm Campo della chiave a cui assegnare un nuovo valore
|
||||
const TString& num) // @parm Nuovo valore da assegnare al campo
|
||||
// @parm long | num | Nuovo valore da assegnare al campo
|
||||
|
||||
// @syntax bool renum_key(const char* field, const TString& num);
|
||||
// @syntax bool renum_key(const char* field, long num);
|
||||
@ -1879,9 +1880,9 @@ int TRecord_array::add_row(TRectype* r)
|
||||
//
|
||||
// @rdesc Ritorna se e' riuscito ad eliminare la riga
|
||||
bool TRecord_array::destroy_row(
|
||||
int r, // @parm Numero della riga da eliminare
|
||||
bool pack) // @parm Indica se compattare gli elementi dell'array (default FALSE)
|
||||
// @parm const TRectype& | r | Record da eliminare
|
||||
int r, // @parm Numero della riga da eliminare
|
||||
bool pack) // @parm Indica se compattare gli elementi dell'array (default FALSE)
|
||||
// @parm const TRectype& | r | Record da eliminare
|
||||
|
||||
// @syntax bool destroy_row(int n, bool pack);
|
||||
// @syntax bool destroy_row(const TRectype& r, bool pack);
|
||||
@ -2141,8 +2142,8 @@ void TRelation_description::read_rel()
|
||||
|
||||
// @mfunc Cambia la relazione descritta
|
||||
void TRelation_description::change_relation(
|
||||
TRelation& r, // @parm Nuova relazione da assegnare
|
||||
TString_array& a) // @parm Array di descrittore dei file
|
||||
TRelation& r, // @parm Nuova relazione da assegnare
|
||||
TString_array& a) // @parm Array di descrittore dei file
|
||||
{
|
||||
_rel = &r;
|
||||
read_rel();
|
||||
@ -2172,10 +2173,10 @@ void TRelation_description::print_on(ostream& out) const
|
||||
// @flag TRUE | E' stato selzionato il file
|
||||
// @flag FALSE | Non e' riuscito a selezionare il file
|
||||
bool TRelation_description::choose_file(
|
||||
int file) // @parm Numero logico del file da selezionare (default 0)
|
||||
int file) // @parm Numero logico del file da selezionare (default 0)
|
||||
|
||||
// @comm Dopo aver scelto un file (occorre che ritorni TRUE) i metodi della classe
|
||||
// permettono di conoscere tutti i dati riguardanti i parametri del file selezionato
|
||||
// permettono di conoscere tutti i dati riguardanti i parametri del file selezionato
|
||||
|
||||
{
|
||||
TArray_sheet sht(-1,-1,0,0,"Selezione archivio", "Codice|Descrizione archivio@70");
|
||||
@ -2225,10 +2226,10 @@ bool TRelation_description::choose_file(
|
||||
// @flag TRUE | E' stato selzionato il campo
|
||||
// @flag FALSE | Non e' riuscito a selezionare il campo
|
||||
bool TRelation_description::choose_field(
|
||||
const char* fld) // @parm Nome del campo da selezionare (defualt "")
|
||||
const char* fld) // @parm Nome del campo da selezionare (defualt "")
|
||||
|
||||
// @comm Occorre sche sia selezioanto un file, diversamente viene considerato
|
||||
// selezionato il promo file
|
||||
// selezionato il promo file
|
||||
{
|
||||
TArray_sheet sht(-1,-1,0,0,"Selezione campo",
|
||||
"Campo@10|Descrizione@50|Tipo@10|Dim.");
|
||||
@ -2262,10 +2263,10 @@ bool TRelation_description::choose_field(
|
||||
//
|
||||
// @rdesc Ritorna solamente FALSE
|
||||
bool TRelation_description::build_menu(
|
||||
const char* title) // @parm Titolo del menu'
|
||||
const char* title) // @parm Titolo del menu'
|
||||
|
||||
// @comm Costruisce un albero di menu' e setta il campo corrente quando viene
|
||||
// selezionato (deve essere popup)
|
||||
// selezionato (deve essere popup)
|
||||
//
|
||||
// @devnote Funzione non implementata.
|
||||
{
|
||||
@ -2332,8 +2333,8 @@ TFieldtypes TRelation_description::field_type()
|
||||
//
|
||||
// @rdesc Ritorna se ha trovato il campo da settare
|
||||
bool TRelation_description::set_field_description(
|
||||
const char* field, // @parm Campo a cui assegnare la descrizione
|
||||
const char* des) // @parm Descrizione da assgnare al campo
|
||||
const char* field, // @parm Campo a cui assegnare la descrizione
|
||||
const char* des) // @parm Descrizione da assgnare al campo
|
||||
{
|
||||
TString_array& fld = (TString_array&)_fields[_cur_file];
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user