93 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			93 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
| /* s4sort.h   (c)Copyright Sequiter Software Inc., 1988-1996.  All rights reserved. */
 | |
| 
 | |
| struct RELATE4St ;
 | |
| 
 | |
| 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' */
 | |
|                       /* >= 'spoolBytes' means nothing is on disk. */
 | |
|    int    spoolI ;   /* The spool number of this spool  */
 | |
| } S4SPOOL ;
 | |
| 
 | |
| #ifdef S4CBPP
 | |
| class S4CLASS SORT4
 | |
| {
 | |
| public:
 | |
| #else
 | |
| typedef struct
 | |
| {
 | |
| #endif
 | |
|    CODE4 S4PTR *codeBase ;
 | |
| 
 | |
|    FILE4        file ;
 | |
| /*   char          fileNameBuf[14] ;*/
 | |
|    FILE4SEQ_WRITE   seqwrite ;
 | |
|    char         S4PTR *seqwriteBuffer ;
 | |
|    S4SPOOL S4PTR *spoolPointer ;
 | |
|    unsigned int spoolsN ;      /* The current # of "spools" */
 | |
|    unsigned int spoolsMax ;    /* The # of "spools" memory is allocated for */
 | |
| 
 | |
|    char S4PTR * S4PTR *pointers ;
 | |
|    unsigned int pointersI ;    /* The next pointers to return using 'get'. */
 | |
|    unsigned int pointersUsed ; /* The number of pointers assigned so far. */
 | |
|    unsigned int pointersInit ; /* The number of pointers initialied so far. */
 | |
|    unsigned int pointersMax ;  /* The number of pointers for which memory */
 | |
|                          /* has been allocated. */
 | |
| 
 | |
|    LIST4 pool ;      /* A number of memory pools for sorting */
 | |
|    MEM4 S4PTR *poolMemory ;
 | |
|    unsigned int poolN ;        /* The number of pools */
 | |
|    unsigned int poolEntries ;  /* Number of record entries in each pool */
 | |
|    unsigned int sortLen ;
 | |
| 
 | |
|    long     spoolDiskLen ; /* The # of bytes in each disk spool */
 | |
|    unsigned spoolMemLen ;  /* The # of bytes in each memory spool */
 | |
| 
 | |
|    unsigned int infoOffset ;   /* The spot to put the corresponding info. */
 | |
|    unsigned int infoLen ;
 | |
|    unsigned int totLen ;       /* The total length of each pool entry. */
 | |
| 
 | |
|    long   isMemAvail ;
 | |
|    S4CMP_FUNCTION *cmp ;
 | |
| #ifdef S4CBPP
 | |
| } ;
 | |
| #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
 | |
| 
 | |
| int   s4quick( void S4PTR * S4PTR *, const int, S4CMP_FUNCTION *, const int ) ;
 | |
| void  s4deleteSpoolEntry( SORT4 S4PTR * ) ;
 | |
| int   s4flush( SORT4 S4PTR * ) ;   /* Flushes current entries to disk */
 | |
| int   sort4getPtrPtr( SORT4 S4PTR *, char S4PTR * S4PTR * ) ;
 | |
| void  sort4initPointers( SORT4 S4PTR *, char S4PTR *, unsigned ) ;
 | |
| long  s4needed(SORT4 S4PTR *) ; /* Returns an estimate on the amount of memory needed */
 | |
| int   s4nextSpoolEntry(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 sort4getInit( SORT4 S4PTR * ) ;
 | |
| S4EXPORT int   S4FUNCTION sort4getInitFree( SORT4 *, struct RELATE4St * ) ;
 | |
| S4EXPORT int   S4FUNCTION sort4getMemInit( SORT4 * ) ;
 | |
| S4EXPORT int   S4FUNCTION sort4init( SORT4 S4PTR *, CODE4 S4PTR *, const int, const int ) ;
 | |
| S4EXPORT int   S4FUNCTION sort4initAlloc( SORT4 S4PTR * ) ;
 | |
| S4EXPORT int   S4FUNCTION sort4initFree( SORT4 S4PTR *, CODE4 S4PTR *, const int, const int, struct RELATE4St * ) ;
 | |
| S4EXPORT int   S4FUNCTION sort4initSet( SORT4 S4PTR *, CODE4 S4PTR *, const int, const int ) ;
 | |
| S4EXPORT int   S4FUNCTION sort4put( SORT4 S4PTR *, const long, const void S4PTR *, const void S4PTR * ) ;
 | |
| S4EXPORT int   S4FUNCTION sort4spoolsInit( SORT4 S4PTR *, const int ) ;
 | |
| 
 | |
| #ifdef __cplusplus
 | |
|    }
 | |
| #endif
 |