/* @(SH) Header @(C#) PUBBLICHE NOFLDS : massimo numero di chiavi da ordinare @(C$) PRIVATE MOSTMEM : numero massimo di bytes di memoria per il buffer di sort LEASTMEM : numero minimo di bytes di memoria per il buffer di sort @(VG#) PUBBLICHE s_prm : struttura di un sort s_prm.rc_len : lunghezza del record s_prm.s_fld : vettore della struttura dei campi di sort s_prm.s_fld[].f_pos : prima posizione del campo (contando da 1) s_prm.s_fld[].f_len : lunghezza del campo e tipo del campo; se f_len > 0 e' una stringa; se f_len = -1 e' un intero; se f_len = -2 e' un boolean s_prm.s_fld[].ad : a = crescente; d = decrescente @(VG$) PRIVATE bp : struttura di una sequenza in un buffer di merge bp.rc : puntatore al record nel merge buffer bp.rbuf : record rimasti nel buffer in questa sequenza di sort bp.rdsk : record rimasti nel disco in questa sequenza di sort ------------------------------------------------------------------------------- */ #ifndef __CSORT_H #define __CSORT_H #ifndef __CCOMMON_H #include "ccommon.h" #endif #ifndef __CCUSTIO_H #include "ccustio.h" #endif #ifndef __CISAM_H #include "cisam.h" #endif #define NOFLDS 10 #define MOSTMEM 51200 #define LEASTMEM 10240 struct s_prm { int rc_len; struct { int f_pos; int f_len; char ad; } s_fld [NOFLDS]; }; struct bp { char *rc; /* @(!) 2.3.00.112 */ unsigned rbuf; unsigned rdsk; /* @(:) 2.3.00.112 */ }; #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ /*----------------------- FUNZIONI VISIBILI PRIMA PARTE ---------------------*/ int init_sort(struct s_prm *); /* Initialize the sort */ void sort(char *); /* Pass records to Sort */ char *sort_op(void); /* Retrieve sorted records */ void sort_stats(void); /* Display sort statistics */ /*----------------------- FUNZIONI VISIBILI SECONDA PARTE -------------------*/ void initsortfield (void); int addsortfield (isfdptr, FieldName, int, int, char); int finesortfield (isfdptr); /* azzera l'elenco dei campi in base a cui eseguire il sort */ /* ritorna 0 se tutto ok, -1 se chiamata piu' di NOFLDS volte dopo l'ultimo initsortfield */ /* ritorna 0 se tutto ok, -1 se non c'e' sufficiente memoria per procedere */ /*---------------------------------------------------------------------------*/ #ifdef __cplusplus }; #endif /* __cplusplus */ #endif /* __CSORT_H */