Aggiunte di pred e suuc agli array ed ai record_array
git-svn-id: svn://10.65.10.50/trunk@1714 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
b5da2ff050
commit
82d26224e0
@ -286,11 +286,38 @@ void TArray::swap(int i1, int i2)
|
|||||||
if (o2) add(o2, i1);
|
if (o2) add(o2, i1);
|
||||||
}
|
}
|
||||||
|
|
||||||
int TArray::last() const
|
// @mfunc Cerca il prossimo oggetto dell'array
|
||||||
|
int TArray::succ(int i) const
|
||||||
|
// @rdesc Ritorna l'indice del prossimo elemento trovato o size() se non esiste
|
||||||
|
{
|
||||||
|
CHECKD(i >= -1, "Bad array index ", i);
|
||||||
|
for (i++; i < size(); i++)
|
||||||
|
if (_data[i]) break;
|
||||||
|
return i;
|
||||||
|
}
|
||||||
|
|
||||||
|
// @mfunc Cerca il precedente oggetto dell'array
|
||||||
|
int TArray::pred(int i) const
|
||||||
|
// @rdesc Ritorna l'indice dell'elemento precedente o -1 se non esiste
|
||||||
{
|
{
|
||||||
for (int last = size(); --last >= 0; )
|
CHECKD(i <= size(), "Bad array index ", i);
|
||||||
if (_data[last]) break;
|
for (i--; i >= 0; i--)
|
||||||
return last;
|
if (_data[i]) break;
|
||||||
|
return i;
|
||||||
|
}
|
||||||
|
|
||||||
|
// @mfunc Cerca il primo oggetto dell'array
|
||||||
|
int TArray::first() const
|
||||||
|
// @rdesc Ritorna l'indice del primo elemento trovato o size() se l'array e' vuoto
|
||||||
|
{
|
||||||
|
return succ(-1);
|
||||||
|
}
|
||||||
|
|
||||||
|
// @mfunc Cerca l'ultimo oggetto dell'array
|
||||||
|
int TArray::last() const
|
||||||
|
// @rdesc Ritorna l'indice dell'ultimo elemento trovato o -1 se l'array e' vuoto
|
||||||
|
{
|
||||||
|
return pred(size());
|
||||||
}
|
}
|
||||||
|
|
||||||
// @mfunc Rende contigui tutti gli elementi non nulli
|
// @mfunc Rende contigui tutti gli elementi non nulli
|
||||||
|
@ -66,9 +66,16 @@ public:
|
|||||||
// @cmember Ritorna numero di oggetti nell'array
|
// @cmember Ritorna numero di oggetti nell'array
|
||||||
int items() const
|
int items() const
|
||||||
{ return _items; }
|
{ return _items; }
|
||||||
|
|
||||||
|
// @cmember Ritorna l'indice del primo oggetto
|
||||||
|
int first() const;
|
||||||
// @cmember Ritorna l'indice dell'ultimo oggetto
|
// @cmember Ritorna l'indice dell'ultimo oggetto
|
||||||
int last() const;
|
int last() const;
|
||||||
|
// @cmember Ritorna l'indice del primo oggetto dopo i
|
||||||
|
int succ(int i) const;
|
||||||
|
// @cmember Ritorna l'indice del primo oggetto che precede i
|
||||||
|
int pred(int i) const;
|
||||||
|
|
||||||
// @cmember Ritorna l'oggetto puntato da index
|
// @cmember Ritorna l'oggetto puntato da index
|
||||||
TObject& operator[] (int index) const ;
|
TObject& operator[] (int index) const ;
|
||||||
// @cmember Ritorna l'oggetto di posto index
|
// @cmember Ritorna l'oggetto di posto index
|
||||||
|
@ -197,6 +197,7 @@ void TMask::handler(WINDOW win, EVENT* ep)
|
|||||||
void TMask::init_mask()
|
void TMask::init_mask()
|
||||||
{
|
{
|
||||||
_sheets = _pages = 0; // Azzera numero pagine e sheets
|
_sheets = _pages = 0; // Azzera numero pagine e sheets
|
||||||
|
_sheet = NULL; // Non appartiene a nessuno sheet
|
||||||
|
|
||||||
_enabled.set(MAX_PAGES);
|
_enabled.set(MAX_PAGES);
|
||||||
_enabled.set(); // Abilita tutte le pagine
|
_enabled.set(); // Abilita tutte le pagine
|
||||||
@ -240,13 +241,11 @@ void TMask::read_mask(
|
|||||||
_source_file.lower();
|
_source_file.lower();
|
||||||
TScanner scanner(_source_file);
|
TScanner scanner(_source_file);
|
||||||
|
|
||||||
_sheetmask = num > 0;
|
|
||||||
|
|
||||||
long start_t = clock();
|
long start_t = clock();
|
||||||
while (clock() == start_t) continue; // Attende scatto timer
|
while (clock() == start_t) continue; // Attende scatto timer
|
||||||
start_t = clock();
|
start_t = clock();
|
||||||
|
|
||||||
if (!_sheetmask)
|
if (num == 0)
|
||||||
_total_time = _build_time = _init_time = 0;
|
_total_time = _build_time = _init_time = 0;
|
||||||
|
|
||||||
for (int i = 0; i < num; i++)
|
for (int i = 0; i < num; i++)
|
||||||
@ -279,7 +278,7 @@ void TMask::read_mask(
|
|||||||
|
|
||||||
add_buttons();
|
add_buttons();
|
||||||
|
|
||||||
if (!_sheetmask)
|
if (num == 0)
|
||||||
_total_time = clock()-start_t;
|
_total_time = clock()-start_t;
|
||||||
|
|
||||||
main_app().end_wait();
|
main_app().end_wait();
|
||||||
|
@ -9,9 +9,7 @@
|
|||||||
#include <maskfld.h>
|
#include <maskfld.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef __REAL_H
|
class TSheet_field;
|
||||||
#include <real.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// @doc EXTERNAL
|
// @doc EXTERNAL
|
||||||
|
|
||||||
@ -63,8 +61,11 @@ class TMask : public TWindow
|
|||||||
int _focus;
|
int _focus;
|
||||||
// @cmember Controllo che deve ricevere il focus
|
// @cmember Controllo che deve ricevere il focus
|
||||||
int _next_fld;
|
int _next_fld;
|
||||||
// @cmember Numero di sheet
|
|
||||||
|
// @cmember Numero di sheet contenuti nella maschera
|
||||||
int _sheets;
|
int _sheets;
|
||||||
|
// @cmember Puntatore allo sheet che contiene la maschera (puo' essere NULL)
|
||||||
|
TSheet_field* _sheet;
|
||||||
|
|
||||||
// @cmember Handler per gestire i tasti speciali nelle maschere
|
// @cmember Handler per gestire i tasti speciali nelle maschere
|
||||||
MASK_HANDLER _handler;
|
MASK_HANDLER _handler;
|
||||||
@ -79,8 +80,6 @@ class TMask : public TWindow
|
|||||||
|
|
||||||
// @cmember Cambio attuale per i cambi in valuta
|
// @cmember Cambio attuale per i cambi in valuta
|
||||||
real _exchange;
|
real _exchange;
|
||||||
// @cmember Controlla se e' una maschera contenuto in un sheet
|
|
||||||
bool _sheetmask;
|
|
||||||
// @cmember Controlla se la maschera deve fare i controlli iniziali di validita' dei campi
|
// @cmember Controlla se la maschera deve fare i controlli iniziali di validita' dei campi
|
||||||
bool _should_check;
|
bool _should_check;
|
||||||
|
|
||||||
@ -324,9 +323,18 @@ public:
|
|||||||
|
|
||||||
// @cmember Ritorna il primo campo dirty
|
// @cmember Ritorna il primo campo dirty
|
||||||
short dirty() const;
|
short dirty() const;
|
||||||
|
|
||||||
|
// @cmember Setta lo sheet che gestisce la maschera
|
||||||
|
void set_sheet(TSheet_field* s)
|
||||||
|
{ _sheet = s; }
|
||||||
|
|
||||||
|
// @cmember Ritorna lo sheet che gestisce la maschera
|
||||||
|
TSheet_field* get_sheet()
|
||||||
|
{ return _sheet; }
|
||||||
|
|
||||||
// @cmember Ritorna se la maschera e' contenuta in uno sheet (TRUE se contenuta)
|
// @cmember Ritorna se la maschera e' contenuta in uno sheet (TRUE se contenuta)
|
||||||
bool is_sheetmask() const
|
bool is_sheetmask() const
|
||||||
{ return _sheetmask; }
|
{ return _sheet != NULL; }
|
||||||
|
|
||||||
// @cmember Ritorna TRUE se la maschera non ha modalita' di utilizzo (vedi <t TMaskmode>)
|
// @cmember Ritorna TRUE se la maschera non ha modalita' di utilizzo (vedi <t TMaskmode>)
|
||||||
bool no_mode() const
|
bool no_mode() const
|
||||||
|
@ -131,7 +131,7 @@ TSpreadsheet::TSpreadsheet(short x, short y, short dx, short dy,
|
|||||||
const char* maskname, int maskno,
|
const char* maskname, int maskno,
|
||||||
const char* head, WINDOW parent,
|
const char* head, WINDOW parent,
|
||||||
TSheet_field* o)
|
TSheet_field* o)
|
||||||
: _mask(maskname, maskno), _notify(NULL), _edit_field(NULL), /* Matteo */ _getmask( NULL ),
|
: _mask(maskname, maskno), _notify(NULL), _edit_field(NULL), _getmask( NULL ),
|
||||||
_owner(o), _cur_row(0), _cur_col(0), _active(TRUE),
|
_owner(o), _cur_row(0), _cur_col(0), _active(TRUE),
|
||||||
_row_dirty(FALSE), _check_enabled(TRUE), _firstfocus(TRUE),
|
_row_dirty(FALSE), _check_enabled(TRUE), _firstfocus(TRUE),
|
||||||
_needs_update(-1)
|
_needs_update(-1)
|
||||||
@ -142,7 +142,9 @@ TSpreadsheet::TSpreadsheet(short x, short y, short dx, short dy,
|
|||||||
int fixed_columns = 1; // Number of fixed columns
|
int fixed_columns = 1; // Number of fixed columns
|
||||||
|
|
||||||
init();
|
init();
|
||||||
|
|
||||||
|
_mask.set_sheet(o);
|
||||||
|
|
||||||
// Calcolo larghezza massima tabella
|
// Calcolo larghezza massima tabella
|
||||||
|
|
||||||
TToken_string header(head);
|
TToken_string header(head);
|
||||||
@ -608,12 +610,10 @@ void TSpreadsheet::list_handler(XI_EVENT *xiev)
|
|||||||
const int oldrec = _cur_rec;
|
const int oldrec = _cur_rec;
|
||||||
set_pos(xiev->v.select.xi_obj->v.row, xiev->v.select.column);
|
set_pos(xiev->v.select.xi_obj->v.row, xiev->v.select.column);
|
||||||
if (oldrec != _cur_rec)
|
if (oldrec != _cur_rec)
|
||||||
{
|
|
||||||
str2mask(_cur_rec);
|
|
||||||
_row_dirty = FALSE;
|
_row_dirty = FALSE;
|
||||||
}
|
|
||||||
|
str2mask(_cur_rec);
|
||||||
update(_cur_rec);
|
update(_cur_rec); // Forces update delayed by str2mask
|
||||||
|
|
||||||
if (_mask.id2pos(FIRST_FIELD-1) != -1)
|
if (_mask.id2pos(FIRST_FIELD-1) != -1)
|
||||||
{
|
{
|
||||||
@ -966,7 +966,9 @@ TSpreadsheet::TSpreadsheet(short x, short y, short dx, short dy,
|
|||||||
TSheet_field* o)
|
TSheet_field* o)
|
||||||
: TArray_sheet(x, y, dx, dy, maskname, head, 0, parent), _owner(o),
|
: TArray_sheet(x, y, dx, dy, maskname, head, 0, parent), _owner(o),
|
||||||
_mask(maskname, maskno), _notify(NULL), /* Matteo */ _getmask( NULL )
|
_mask(maskname, maskno), _notify(NULL), /* Matteo */ _getmask( NULL )
|
||||||
{}
|
{
|
||||||
|
_mask.set_sheet(o);
|
||||||
|
}
|
||||||
|
|
||||||
bool TSpreadsheet::on_key(KEY k)
|
bool TSpreadsheet::on_key(KEY k)
|
||||||
{
|
{
|
||||||
|
15
include/pagsca.h
Executable file
15
include/pagsca.h
Executable file
@ -0,0 +1,15 @@
|
|||||||
|
#define PAGSCA_NRIGA "NRIGA"
|
||||||
|
#define PAGSCA_NRATA "NRATA"
|
||||||
|
#define PAGSCA_NRIGP "NRIGP"
|
||||||
|
|
||||||
|
#define PAGSCA_IMPORTO "IMPORTO"
|
||||||
|
#define PAGSCA_IMPORTOVAL "IMPORTOVAL"
|
||||||
|
#define PAGSCA_RITENUTE "RITENUTE"
|
||||||
|
#define PAGSCA_ABBUONI "ABBUONI"
|
||||||
|
#define PAGSCA_DIFFCAM "DIFFCAM"
|
||||||
|
|
||||||
|
#define PAGSCA_CODABI "CODABI"
|
||||||
|
#define PAGSCA_CODCAB "CODCAB"
|
||||||
|
#define PAGSCA_CODAG "CODAG"
|
||||||
|
#define PAGSCA_CODABIPR "CODABIPR"
|
||||||
|
#define PAGSCA_CODCABPR "CODCABPR"
|
@ -1,9 +1,14 @@
|
|||||||
#ifndef __PARTITE_H
|
#ifndef __PARTITE_H
|
||||||
#define __PARTITE_H
|
#define __PARTITE_H
|
||||||
|
|
||||||
|
#define PART_TIPOCF "TIPOC"
|
||||||
|
#define PART_GRUPPO "GRUPPO"
|
||||||
|
#define PART_CONTO "CONTO"
|
||||||
|
#define PART_SOTTOCONTO "SOTTOCONTO"
|
||||||
#define PART_ANNO "ANNO"
|
#define PART_ANNO "ANNO"
|
||||||
#define PART_NUMPART "NUMPART"
|
#define PART_NUMPART "NUMPART"
|
||||||
#define PART_NRIGA "NRIGA"
|
#define PART_NRIGA "NRIGA"
|
||||||
|
|
||||||
#define PART_TIPOMOV "TIPOMOV"
|
#define PART_TIPOMOV "TIPOMOV"
|
||||||
#define PART_NREG "NREG"
|
#define PART_NREG "NREG"
|
||||||
#define PART_NUMRIG "NUMRIG"
|
#define PART_NUMRIG "NUMRIG"
|
||||||
@ -14,6 +19,7 @@
|
|||||||
#define PART_REG "REG"
|
#define PART_REG "REG"
|
||||||
#define PART_PROTIVA "PROTIVA"
|
#define PART_PROTIVA "PROTIVA"
|
||||||
#define PART_CODCAUS "CODCAUS"
|
#define PART_CODCAUS "CODCAUS"
|
||||||
|
|
||||||
#define PART_SEZ "SEZ"
|
#define PART_SEZ "SEZ"
|
||||||
#define PART_IMPORTO "IMPORTO"
|
#define PART_IMPORTO "IMPORTO"
|
||||||
#define PART_IMPOSTA "IMPOSTA"
|
#define PART_IMPOSTA "IMPOSTA"
|
||||||
@ -21,26 +27,16 @@
|
|||||||
#define PART_CODPAG "CODPAG"
|
#define PART_CODPAG "CODPAG"
|
||||||
#define PART_CODVAL "CODVAL"
|
#define PART_CODVAL "CODVAL"
|
||||||
#define PART_CAMBIO "CAMBIO"
|
#define PART_CAMBIO "CAMBIO"
|
||||||
#define PART_IMPORTOVAL "IMPORTOVAL"
|
|
||||||
#define PART_DATACAM "DATACAM"
|
#define PART_DATACAM "DATACAM"
|
||||||
#define PART_TIPOCF "TIPOC"
|
#define PART_IMPORTOVAL "IMPORTOVAL"
|
||||||
#define PART_GRUPPO "GRUPPO"
|
|
||||||
#define PART_CONTO "CONTO"
|
|
||||||
#define PART_SOTTOCONTO "SOTTOCONTO"
|
|
||||||
#define PART_CODABI "CODABI"
|
|
||||||
#define PART_CODCAB "CODCAB"
|
|
||||||
#define PART_CODAG "CODAG"
|
|
||||||
#define PART_IMPTOTPAG "IMPTOTPAG"
|
#define PART_IMPTOTPAG "IMPTOTPAG"
|
||||||
#define PART_RITENUTE "RITENUTE"
|
#define PART_RITENUTE "RITENUTE"
|
||||||
#define PART_SALACC "SALACC"
|
#define PART_ABBUONI "ABBUONI"
|
||||||
#define PART_TIPOPAG "TIPOPAG"
|
#define PART_DIFFCAM "DIFFCAM"
|
||||||
|
#define PART_SEZABB "SEZABB"
|
||||||
|
#define PART_SEZDIFCAM "SEZDIFCAM"
|
||||||
|
#define PART_CHIUSA "CHIUSA"
|
||||||
#define PART_DATARIFPAG "DATARIFPAG"
|
#define PART_DATARIFPAG "DATARIFPAG"
|
||||||
#define PART_NUMRIFPAG "NUMRIFPAG"
|
#define PART_NUMRIFPAG "NUMRIFPAG"
|
||||||
#define PART_NRATA "NRATA"
|
|
||||||
#define PART_CHIUSA "CHIUSA"
|
|
||||||
#define PART_CODABIPR "CODABIPR"
|
|
||||||
#define PART_CODCABPR "CODCABPR"
|
|
||||||
#define PART_GRUPPOCL "GRUPPOCL"
|
|
||||||
#define PART_CONTOCL "CONTOCL"
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -1056,9 +1056,29 @@ const TImporto& TImporto::swap_section()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
const TImporto& TImporto::normalize()
|
// Normalizza l'importo al parametro s
|
||||||
{
|
// Valore Azione
|
||||||
if (_valore.sign() < 0)
|
// A Forza la sezione Avere
|
||||||
|
// D Forza la sezione Dare
|
||||||
|
// < 0 Forza il segno negativo
|
||||||
|
// >=0 Forza il segno positivo
|
||||||
|
const TImporto& TImporto::normalize(char s)
|
||||||
|
{
|
||||||
|
bool ex = FALSE;
|
||||||
|
switch (s)
|
||||||
|
{
|
||||||
|
case 'A':
|
||||||
|
case 'D':
|
||||||
|
ex = s != _sezione;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
if (s < 0)
|
||||||
|
ex = _valore.sign() > 0;
|
||||||
|
else
|
||||||
|
ex = _valore.sign() < 0;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (ex)
|
||||||
{
|
{
|
||||||
_valore = -_valore;
|
_valore = -_valore;
|
||||||
swap_section();
|
swap_section();
|
||||||
|
@ -248,6 +248,9 @@ public:
|
|||||||
// @cmember Ritorna il valore dell'importo
|
// @cmember Ritorna il valore dell'importo
|
||||||
const real& valore() const
|
const real& valore() const
|
||||||
{ return _valore; }
|
{ return _valore; }
|
||||||
|
// @cmember Ritorna il valore dell'importo
|
||||||
|
real& valore()
|
||||||
|
{ return _valore; }
|
||||||
|
|
||||||
// @cmember Controlla se l'importo e' 0 (in qualsiasi sezione, TRUE se 0)
|
// @cmember Controlla se l'importo e' 0 (in qualsiasi sezione, TRUE se 0)
|
||||||
bool is_zero() const
|
bool is_zero() const
|
||||||
@ -263,8 +266,8 @@ public:
|
|||||||
const TImporto& operator+=(const TImporto& i);
|
const TImporto& operator+=(const TImporto& i);
|
||||||
// @cmember Sottrae all'importo l'oggetto passato
|
// @cmember Sottrae all'importo l'oggetto passato
|
||||||
const TImporto& operator-=(const TImporto& i);
|
const TImporto& operator-=(const TImporto& i);
|
||||||
// @cmember Inverte la sezione se il valore e' minore di 0
|
// @cmember Normalizza il segno o la sezione in base al parametro s
|
||||||
const TImporto& normalize();
|
const TImporto& normalize(char s = '\0');
|
||||||
// @cmember Inverte la sezione dell'importo
|
// @cmember Inverte la sezione dell'importo
|
||||||
const TImporto& swap_section();
|
const TImporto& swap_section();
|
||||||
|
|
||||||
|
@ -54,7 +54,6 @@ protected:
|
|||||||
TLocalisamfile& file() const { return get_relation()->lfile(); } // File principale della relazione
|
TLocalisamfile& file() const { return get_relation()->lfile(); } // File principale della relazione
|
||||||
TRecnotype first() const { return _first;}
|
TRecnotype first() const { return _first;}
|
||||||
TRecnotype last() const { return _first;}
|
TRecnotype last() const { return _first;}
|
||||||
TMask& curr_mask() const { return *_mask; }
|
|
||||||
const TString& autoins_caller() const { return _autoins_caller;}
|
const TString& autoins_caller() const { return _autoins_caller;}
|
||||||
|
|
||||||
virtual bool menu(MENU_TAG m);
|
virtual bool menu(MENU_TAG m);
|
||||||
@ -106,12 +105,14 @@ protected:
|
|||||||
void set_search_field(short id) { _search_id = id;} // Impone il campo da utilizzare col bottone Ricerca
|
void set_search_field(short id) { _search_id = id;} // Impone il campo da utilizzare col bottone Ricerca
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
TMask& curr_mask() const { return *_mask; }
|
||||||
|
|
||||||
TRelation_application();
|
|
||||||
virtual ~TRelation_application();
|
|
||||||
bool filtered() const { return _fixed.not_empty(); }
|
bool filtered() const { return _fixed.not_empty(); }
|
||||||
bool find(byte key = 0);
|
bool find(byte key = 0);
|
||||||
void set_link(TMask & m, const char * keyexpr);
|
void set_link(TMask & m, const char * keyexpr);
|
||||||
|
|
||||||
|
TRelation_application();
|
||||||
|
virtual ~TRelation_application();
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
// $Id: relation.cpp,v 1.56 1995-08-09 09:54:30 guy Exp $
|
// $Id: relation.cpp,v 1.57 1995-08-21 07:47:12 guy Exp $
|
||||||
// relation.cpp
|
// relation.cpp
|
||||||
// fv 12/8/93
|
// fv 12/8/93
|
||||||
// relation class for isam files
|
// relation class for isam files
|
||||||
@ -1623,14 +1623,14 @@ bool TRecord_array::exist(int n) const
|
|||||||
|
|
||||||
TRectype& TRecord_array::row(int n, bool create)
|
TRectype& TRecord_array::row(int n, bool create)
|
||||||
{
|
{
|
||||||
const int i = n > 0 ? n - _offset : -1;
|
const int i = n >= 0 ? n - _offset : -1;
|
||||||
TRectype* r = (TRectype*)objptr(i);
|
TRectype* r = (TRectype*)objptr(i);
|
||||||
if (r == NULL && create)
|
if (r == NULL && create)
|
||||||
{
|
{
|
||||||
r = (TRectype*)key().dup(); // Crea nuovo record copiando la chiave
|
r = (TRectype*)key().dup(); // Crea nuovo record copiando la chiave
|
||||||
n = add(r, i) + _offset; // Riassegna n se era negativo!
|
n = add(r, i) + _offset; // Riassegna n se era negativo!
|
||||||
r->put(_num, n); // Aggiorna campo numero riga
|
r->put(_num, n); // Aggiorna campo numero riga
|
||||||
}
|
}
|
||||||
CHECKD(r && n > 0, "Bad record number ", n);
|
CHECKD(r && n > 0, "Bad record number ", n);
|
||||||
return *r;
|
return *r;
|
||||||
}
|
}
|
||||||
@ -1646,8 +1646,9 @@ bool TRecord_array::renum_key(const char* field, const TString& num)
|
|||||||
for (int i = last(); i >= 0; i--)
|
for (int i = last(); i >= 0; i--)
|
||||||
{
|
{
|
||||||
TRectype* r = (TRectype*)objptr(i);
|
TRectype* r = (TRectype*)objptr(i);
|
||||||
if (r != NULL) r->put(field, num);
|
if (r == NULL)
|
||||||
}
|
r->put(field, num);
|
||||||
|
}
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
@ -1662,7 +1663,7 @@ bool TRecord_array::renum_key(const char* field, long num)
|
|||||||
|
|
||||||
int TRecord_array::rec2row(const TRectype& r) const
|
int TRecord_array::rec2row(const TRectype& r) const
|
||||||
{
|
{
|
||||||
CHECK(r == key(), "Incompatible record");
|
CHECK(r.num() == key().num(), "Incompatible record");
|
||||||
const int n = atoi(r.get(_num)) - _offset; // Non e' detto che sia un int!
|
const int n = atoi(r.get(_num)) - _offset; // Non e' detto che sia un int!
|
||||||
CHECKD(n >= 0 && n < 30000, "Bad line number in record ", n + _offset);
|
CHECKD(n >= 0 && n < 30000, "Bad line number in record ", n + _offset);
|
||||||
return n;
|
return n;
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* $Id: relation.h,v 1.24 1995-08-09 09:54:34 guy Exp $ */
|
/* $Id: relation.h,v 1.25 1995-08-21 07:47:18 guy Exp $ */
|
||||||
// join.h
|
// join.h
|
||||||
// fv 12/8/93
|
// fv 12/8/93
|
||||||
// join class for isam files
|
// join class for isam files
|
||||||
@ -142,8 +142,11 @@ protected:
|
|||||||
public:
|
public:
|
||||||
const TRectype& key() const;
|
const TRectype& key() const;
|
||||||
int rows() const { return items()-1; } // Numero di righe presenti
|
int rows() const { return items()-1; } // Numero di righe presenti
|
||||||
|
|
||||||
|
int succ_row(int r) const { return succ(r - _offset) + _offset; }
|
||||||
|
int pred_row(int r) const { return pred(r - _offset) + _offset; };
|
||||||
int last_row() const { return last() + _offset; } // Ultima riga
|
int last_row() const { return last() + _offset; } // Ultima riga
|
||||||
int first_row() const { return 1 + _offset ; } // Prima riga
|
int first_row() const { return succ_row(0); } // Prima riga
|
||||||
|
|
||||||
const TRectype& row(int r) const // Riga r costante
|
const TRectype& row(int r) const // Riga r costante
|
||||||
{ CHECKD(r > _offset, "Bad record number ", r); return (const TRectype&)operator[](r - _offset); }
|
{ CHECKD(r > _offset, "Bad record number ", r); return (const TRectype&)operator[](r - _offset); }
|
||||||
|
Loading…
x
Reference in New Issue
Block a user