From 5e3950f072c5ed5a7eb35b39a4a13563d19a15fd Mon Sep 17 00:00:00 2001 From: angelo Date: Tue, 30 Jan 1996 15:59:31 +0000 Subject: [PATCH] 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 --- include/relation.cpp | 79 ++++++++++++++++++++++---------------------- 1 file changed, 40 insertions(+), 39 deletions(-) diff --git a/include/relation.cpp b/include/relation.cpp index f36a9c6c1..149442607 100755 --- a/include/relation.cpp +++ b/include/relation.cpp @@ -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 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 ) { @@ -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): -// FILE->NAME[FROM,TO] +// 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

// // @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

non esiste viene creata - // @flag FALSE | Se la riga

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

non esiste viene creata + // @flag FALSE | Se la riga

non esiste non viene creata // @comm Nel caso

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];