a0f5e0898b
which included commits to RCS files with non-trunk default branches. git-svn-id: svn://10.65.10.50/trunk@976 c028cbd2-c16b-5b4b-a496-9718f37d4682
93 lines
3.6 KiB
C++
Executable File
93 lines
3.6 KiB
C++
Executable File
/* s4sort.h (c)Copyright Sequiter Software Inc., 1990-1994. All rights reserved. */
|
|
|
|
struct RELATE4_ST ;
|
|
|
|
typedef struct
|
|
{
|
|
char S4PTR *ptr ; /* Pointer to the starting memory */
|
|
unsigned pos ; /* The current position withing 'ptr' */
|
|
unsigned len ; /* The current data length pointed to by 'ptr' */
|
|
|
|
long disk ; /* Current Disk Position, Offset from start of 'spool' */
|
|
/* >= 'spool_bytes' means nothing is on disk. */
|
|
int spool_i ; /* The spool number of this spool */
|
|
} S4SPOOL ;
|
|
|
|
#ifdef __cplusplus
|
|
class S4CLASS SORT4
|
|
{
|
|
public:
|
|
#else
|
|
typedef struct
|
|
{
|
|
#endif
|
|
CODE4 S4PTR *code_base ;
|
|
|
|
FILE4 file ;
|
|
char file_name_buf[14] ;
|
|
FILE4SEQ_WRITE seqwrite ;
|
|
char S4PTR *seqwrite_buffer ;
|
|
S4SPOOL S4PTR *spool_pointer ;
|
|
unsigned int spools_n ; /* The current # of "spools" */
|
|
unsigned int spools_max ; /* The # of "spools" memory is allocated for */
|
|
|
|
char S4PTR * S4PTR *pointers ;
|
|
unsigned int pointers_i ; /* The next pointers to return using 'get'. */
|
|
unsigned int pointers_used ; /* The number of pointers assigned so far. */
|
|
unsigned int pointers_init ; /* The number of pointers initialied so far. */
|
|
unsigned int pointers_max ; /* The number of pointers for which memory */
|
|
/* has been allocated. */
|
|
|
|
LIST4 pool ; /* A number of memory pools for sorting */
|
|
MEM4 S4PTR *pool_memory ;
|
|
unsigned int pool_n ; /* The number of pools */
|
|
unsigned int pool_entries ; /* Number of record entries in each pool */
|
|
unsigned int sort_len ;
|
|
|
|
long spool_disk_len ; /* The # of bytes in each disk spool */
|
|
unsigned spool_mem_len ; /* The # of bytes in each memory spool */
|
|
|
|
unsigned int info_offset ; /* The spot to put the corresponding info. */
|
|
unsigned int info_len ;
|
|
unsigned int tot_len ; /* The total length of each pool entry. */
|
|
|
|
long is_mem_avail ;
|
|
S4CMP_FUNCTION *cmp ;
|
|
#ifdef __cplusplus
|
|
} ;
|
|
#else
|
|
} SORT4 ;
|
|
#endif
|
|
|
|
/* The 'len' is passed to the compare function as its third parameter */
|
|
/* The compare function returns '(int) 1' iff 'v1>v2'. */
|
|
/* s4quick also assumes that there is a record number after the sort data */
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
void s4quick( void S4PTR * S4PTR *, int, S4CMP_FUNCTION *, int ) ;
|
|
void s4delete_spool_entry( SORT4 S4PTR * ) ;
|
|
int s4flush( SORT4 S4PTR * ) ; /* Flushes current entries to disk */
|
|
int sort4get_ptr_ptr( SORT4 S4PTR *, char S4PTR * S4PTR * ) ;
|
|
void sort4init_pointers( SORT4 S4PTR *, char S4PTR *, unsigned ) ;
|
|
long s4needed(SORT4 S4PTR *) ; /* Returns an estimate on the amount of memory needed */
|
|
int s4next_spool_entry(SORT4 S4PTR *) ;
|
|
|
|
S4EXPORT int S4FUNCTION sort4free( SORT4 S4PTR * ) ; /* Frees any allocated memory and uninitializes */
|
|
S4EXPORT int S4FUNCTION sort4get( SORT4 S4PTR *, long S4PTR *, void S4PTR * S4PTR *, void S4PTR * S4PTR * ) ;
|
|
S4EXPORT int S4FUNCTION sort4get_init( SORT4 S4PTR * ) ;
|
|
S4EXPORT int S4FUNCTION sort4get_init_free( SORT4 *, struct RELATE4_ST * ) ;
|
|
S4EXPORT void S4FUNCTION sort4get_mem_init( SORT4 * ) ;
|
|
S4EXPORT int S4FUNCTION sort4init( SORT4 S4PTR *, CODE4 S4PTR *, int, int ) ;
|
|
S4EXPORT int S4FUNCTION sort4init_alloc( SORT4 S4PTR * ) ;
|
|
S4EXPORT int S4FUNCTION sort4init_free( SORT4 S4PTR *, CODE4 S4PTR *, int, int, struct RELATE4_ST * ) ;
|
|
S4EXPORT int S4FUNCTION sort4init_set( SORT4 S4PTR *, CODE4 S4PTR *, int, int ) ;
|
|
S4EXPORT int S4FUNCTION sort4put( SORT4 S4PTR *, long, void S4PTR *, void S4PTR * ) ;
|
|
S4EXPORT int S4FUNCTION sort4spools_init( SORT4 S4PTR *, int ) ;
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|