Modificata la funzione len(int) in reset(int)

git-svn-id: svn://10.65.10.50/trunk@490 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
alex 1994-10-31 11:11:19 +00:00
parent 5ca5c84738
commit 7393952fab
2 changed files with 43 additions and 43 deletions

View File

@ -16,37 +16,38 @@
//#include <csort.h> //#include <csort.h>
TSort::TSort(int len) TSort::TSort(int len)
{ {
_sortvar = new s_prm; _sortvar = new s_prm;
_sortvar->rc_len = len; _sortvar->rc_len = len;
nsortkey = 0; nsortkey = 0;
for (int i = 0; i < NOFLDS; i++) for (int i = 0; i < NOFLDS; i++)
{ {
_sortvar->s_fld[i].f_pos = 0; _sortvar->s_fld[i].f_pos = 0;
_sortvar->s_fld[i].f_len = 0; _sortvar->s_fld[i].f_len = 0;
_sortvar->s_fld[i].ad = ' '; _sortvar->s_fld[i].ad = ' ';
} }
} }
TSort::~TSort() TSort::~TSort()
{ {
delete _sortvar; delete _sortvar;
} }
void TSort::init() void TSort::init()
{ {
CHECK(_sortvar->rc_len && nsortkey, "Attempt to initialize undefined sort"); CHECK(_sortvar->rc_len && nsortkey, "Attempt to initialize undefined sort");
while (retrieve() != NULL);
init_sort(_sortvar); init_sort(_sortvar);
} }
void TSort::sort(const char* record) void TSort::sort(const char* record)
{ {
CHECK(record != NULL, "Bad record to sort"); CHECK(record != NULL, "Bad record to sort");
::sort((char*)record); ::sort((char*)record);
@ -54,21 +55,21 @@ void TSort::sort(const char* record)
void TSort::endsort() void TSort::endsort()
{ {
::sort(NULL); ::sort(NULL);
} }
const char* TSort::retrieve() const char* TSort::retrieve()
{ {
return (const char *) sort_op(); return (const char *) sort_op();
} }
void TSort::stats() void TSort::stats()
{ {
sort_stats(); sort_stats();
} }
@ -81,15 +82,16 @@ int TSort::length() const
} }
void TSort::length(int len) void TSort::reset(int len)
{ {
_sortvar->rc_len = len ; _sortvar->rc_len = len ;
nsortkey = 0;
} }
void TSort::addsortkey(int pos, int len, char direction) void TSort::addsortkey(int pos, int len, char direction)
{ {
CHECK(pos >= 0 && pos+len <= _sortvar->rc_len, "Invalid sort key"); CHECK(pos >= 0 && pos+len <= _sortvar->rc_len, "Invalid sort key");
_sortvar->s_fld[nsortkey].f_pos = pos + 1; _sortvar->s_fld[nsortkey].f_pos = pos + 1;
@ -99,13 +101,10 @@ void TSort::addsortkey(int pos, int len, char direction)
void TSort::addsortkey(TRecfield& f, char direction) void TSort::addsortkey(TRecfield& f, char direction)
{ {
CHECK(f.pos() != NULL, "Invalid sort key"); CHECK(f.pos() != NULL, "Invalid sort key");
_sortvar->s_fld[nsortkey].f_pos = (f.pos() - f.record().string()) + 1; _sortvar->s_fld[nsortkey].f_pos = (f.pos() - f.record().string()) + 1;
_sortvar->s_fld[nsortkey].f_len = f.len(); _sortvar->s_fld[nsortkey].f_len = f.len();
_sortvar->s_fld[nsortkey++].ad = direction; _sortvar->s_fld[nsortkey++].ad = direction;
} }

View File

@ -2,22 +2,22 @@
#define __SORT_H #define __SORT_H
#ifndef __OBJECT_H #ifndef __OBJECT_H
#include <object.h> #include <object.h>
#endif #endif
#ifndef __ISAM_H #ifndef __ISAM_H
#include <isam.h> #include <isam.h>
#endif #endif
/* /*
@(SH) Header @(SH) Header
@(C#) PUBBLICHE @(C#) PUBBLICHE
@(C$) PRIVATE @(C$) PRIVATE
@(VG#) PUBBLICHE @(VG#) PUBBLICHE
@(VG$) PRIVATE @(VG$) PRIVATE
*/ */
// @C // @C
// Classe TSort // Classe TSort
@ -25,24 +25,25 @@
class TSort : public TObject class TSort : public TObject
{ {
// @DPRIV // @DPRIV
friend TRecfield; friend TRecfield;
struct s_prm* _sortvar; // Puntatore alla struttura di un sort struct s_prm* _sortvar; // Puntatore alla struttura di un sort
int nsortkey; // Indice nella tabella dei campi della chiave int nsortkey; // Indice nella tabella dei campi della chiave
public: public:
// @FPUB // @FPUB
void init(); // Chiama init_sort void init(); // Chiama init_sort
void sort(const char * record); // Chiama sort (record) void sort(const char * record); // Chiama sort (record)
void endsort(); // Chiama sort (NULL) void endsort(); // Chiama sort (NULL)
const char* retrieve(); // Chiama sort_op() const char* retrieve(); // Chiama sort_op()
void stats(); // Chiama sort_stats void stats(); // Chiama sort_stats
int length() const; // Ritorna la lunghezza del record di sort int length() const; // Ritorna la lunghezza del record di sort
void length(int len); // Imposta la lunghezza del record di sort void reset(int len); // Imposta la lunghezza del record di sort
void addsortkey(int pos, int len, char direction = 'a'); // e inizializza il sort
void addsortkey(TRecfield& f, char direction = 'a'); void addsortkey(int pos, int len, char direction = 'a');
void addsortkey(TRecfield& f, char direction = 'a');
TSort(int reclen = 0); TSort(int reclen = 0);
virtual ~TSort(); virtual ~TSort();
}; };
#endif // __SORT_H #endif // __SORT_H