home *** CD-ROM | disk | FTP | other *** search
- /* d4base.h (c)Copyright Sequiter Software Inc., 1987, 1988, 1989. All rights reserved. */
-
- /* FIELD */
-
- typedef struct
- {
- char name[11] ;
- char type ;
- short width ;
- short decimals ;
- short offset ;
- } FIELD ;
-
-
- /* BASE */
-
- typedef struct
- {
- int next ; /* -1 flags last file in list */
- int prev ; /* -1 flags first file in list */
-
- char name[64] ; /* full path file name */
- int dos_file ;
- long rec_lock ; /* Record Number Locked
- 0 if no specific record is locked */
- int file_lock ; /* 0 Nothing Locked
- 1 File Locked
- 2 Record Count Bytes Locked */
-
- int memo_file ; /* Handle for Memo File */
- int memo_size ; /* The memo file block size */
-
- /* Buffer Information */
-
- long rec_num ; /* The record number; -1 for EOF */
- int buffer_len ; /* The first character is the deletion flag */
-
- char *old_buf ; /* The original buffer must be kept for
- updating index files. ie finding the
- key which needs to be replaced */
- char *buffer ; /* The new_buf memory is allocated with the
- old_buf memory */
-
- int num_fields ; /* The number of data fields in the database */
- FIELD *fields ; /* A pointer to the field information */
-
- int index_ref ; /* A reference to the last index file opened
- for the database */
- int current_index ; /* A reference to the index file actively used */
-
- int filter_ref ; /* The first filter reference for the database */
- int relate_ref ; /* The first relation reference for the database */
-
- /* Database Header Information */
-
- char version ; /* 83H with .dbt, 03H without */
- char yy ; /* Last Update */
- char mm ;
- char dd ;
- long num_recs ; /* Generally not used by Code Base */
- unsigned short header_len; /* Header Length (Indicates # of fields) */
- } BASE ;
-
-
-
- /* INDEX */
-
- typedef struct
- {
- int next ;
- int prev ;
-
- char name[64] ;
- int dos_file ;
- int lock ;
-
- int base_ref ; /* The corresponding reference number for the
- database */
- char *compile ; /* A pseudo compiled version of the expression */
-
- int block_ref ; /* A reference to the current block of the index file */
-
- int block_first ; /* The first used memory block */
- int block_last ; /* The last used memory block */
- int block_num ; /* The number of blocks in the buffer chain */
- int block_max ; /* The maximum number of blocks in the chain */
-
- char i_type ; /* 'C' - Character; 'N' - Numeric; 'D' -Date */
-
- /* Index File Header Information */
-
- #ifdef CLIPPER
- short old_version ;
- long virtual_eof ; /* The next available file block */
-
- short sign ;
- short version ;
- long root ; /* Root Block */
- long eof ; /* First Free Block Pointer */
- short group_len ; /* Key Length + 2*sizeof(long) */
- short key_len ; /* Key Length */
- short key_dec ; /* Number of Decimals in Key */
- short keys_max ; /* Maximum # of keys per block; <= 100 */
- short keys_half ; /* Maximum # of keys per half block */
- char expression[256];/* The index expression corresponding to the
- database. */
- short unique ; /* TRUE if Unique */
- #else
- long old_version ;
-
- long root ;
- long eof ;
- long version ;
- short key_len ;
- short keys_max ; /* Maximum # of keys per block; <= 100 */
- short int_or_date ; /* TRUE (1) if Numeric or Date Key */
- short group_len ; /* key_len plus 8 increased to a multiple of 2 */
- short dummy ;
- short unique ; /* TRUE if Unique */
- char expression[256];/* The index expression corresponding to the
- database. */
- #endif
- } INDEX ;
-
-
- typedef struct
- {
- long file_block ;
- long rec_num ;
- char value[ 512 - 3*sizeof(long) ] ; /* The key size is variable */
- } KEY ;
-
-
- typedef struct
- {
- int next ;
- int prev ;
-
- int wrt ; /* Must Write the Block */
- long file_block ;
- int key_on ; /* The current key. Starts at 0. -1 means none.
- num_keys+1 for key_on indicates EOF */
-
- /* Index File Block Format:
-
- Number of Keys
-
- Repeat for Each Key in Block -
- Block Pointer (Starting from 0)
- Record Number
- Key
- */
-
- short num_keys ;
-
- #ifdef CLIPPER
- short pointers[511] ;
- #else
- short dummy ;
- KEY key ;
- #endif
-
- } BLOCK ;
-
- #ifdef CLIPPER
- #define BLOCK_SIZE 1024
- #define MAX_KEY_SIZE 338
- #else
- #define BLOCK_SIZE 512
- #define NULL_DATE 1.0E100
- #define MAX_KEY_SIZE 100
- #endif
-
- #define LOCK_START 1000000000L
-
- extern int b4add( int, KEY *) ;
- extern int b4down( int, int) ;
- extern int b4get( int ) ;
- extern KEY * b4key( int) ;
- extern int b4leaf( int) ;
- extern int b4remove( int) ;
- extern int b4search( int, char *) ;
- extern long b4skip( int, long) ;
- extern int b4up( int) ;
- extern int b4write( int, int) ;
- extern double c4atod( char *, int) ;
- extern int c4atoi( char *, int) ;
- extern long c4atol( char *, int) ;
- extern char * c4dtoa( double, int, int) ;
- extern int c4dtok( int, double, char * ) ;
- extern void c4dt_dbf( char *, double *) ;
- extern int c4dt_index( char *, double *) ;
- extern char * c4dt_format( char *, char *) ;
- extern char * c4dt_unformat( char *, char *) ;
- extern void c4encode( char *, char *, char *, char *) ;
- extern int c4julian( int, int, int) ;
- extern void c4key( char *, char *, char ) ;
- extern char * c4ltoa( long, char *, int) ;
- extern void c4trim_n( char *, int ) ;
- extern int d4bottom( void ) ;
- extern int d4create( char *, int, FIELD *, int ) ;
- extern int d4close( void ) ;
- extern int d4close_all( void ) ;
- extern int d4delete( long) ;
- extern int d4deleted( void ) ;
- extern int d4go( long) ;
- extern int d4init( void ) ;
- extern int d4init_memory( int, int, int, int ) ;
- extern int d4lock( long, int) ;
- extern int d4pack( void ) ;
- extern BASE * d4ptr( void ) ;
- extern int d4recall( long) ;
- extern long d4recno( void ) ;
- extern long d4reccount( void ) ;
- extern int d4ref( char *) ;
- extern int d4seek( void *) ;
- extern int d4select( int ) ;
- extern int d4skip( long) ;
- extern int d4top( void ) ;
- extern int d4unlock( long) ;
- extern int d4use( char * ) ;
- extern int d4use_excl( char * ) ;
- extern int d4write( long) ;
- extern int d4zap( long, long ) ;
- extern void * e4eval( char *) ;
- extern void * e4exec( char *) ;
- extern char * e4name( char) ;
- extern int e4parse( char *, char **) ;
- extern int e4priority( char) ;
- extern char e4type( void ) ;
- extern char * e4type_str( int) ;
- extern int e4type_error( char, int, int, int) ;
- extern int f4decimals( long) ;
- extern char * f4name( long) ;
- extern long f4ref( char *) ;
- extern long f4j_ref( int ) ;
- extern int f4num_fields ( void ) ;
- extern char * f4ptr( long) ;
- extern void * f4record( void ) ;
- extern int f4record_width( void ) ;
- extern int f4replace( long, void *) ;
- extern char * f4str( long) ;
- extern int f4true( long) ;
- extern char f4type( long) ;
- extern double f4value( long) ;
- extern int f4width( long) ;
- extern int h4add( char **, int, int, int) ;
- extern char * h4alloc( unsigned int) ;
- extern char * h4alloc_try( unsigned int) ;
- extern int h4create( char **, int, int, int) ;
- extern int h4free( char **, int) ;
- extern void h4free_memory( void * ) ;
- extern void h4free_chain( char **, int ) ;
- extern int h4get( char **, int) ;
- extern int h4remove( char **, int) ;
- extern int i4add( int, char *, long) ;
- extern int i4bottom( int) ;
- extern long i4check( int) ;
- extern int i4close( int) ;
- extern char * i4eval( int) ;
- extern int i4free( int ) ;
- extern int i4go( int, char *, long) ;
- extern int i4index( char *, char *, int, int) ;
- extern int i4keycmp( int, char *, char *) ;
- extern int i4lock( int, int) ;
- extern int i4open( char *) ;
- extern int i4ref( char *) ;
- extern int i4reindex( int ) ;
- extern int i4remove( int, char *, long) ;
- extern int i4seek( int, void *) ;
- extern int i4seek_ref( void ) ;
- extern int i4select( int) ;
- extern long i4skip( int, long) ;
- extern int i4top( int) ;
- extern char i4type( int) ;
- extern int i4unlock( int) ;
- extern void i4unselect( void ) ;
- extern long * m4check( long ) ;
- extern int m4convert( char * ) ;
- extern int m4edit( long, long, char *, int ) ;
- extern int m4exist( long ) ;
- extern int m4read( long, long, char *, int ) ;
- extern int m4renamed( char * ) ;
- extern int m4write( long, long, char *, int ) ;
- extern int m3edit( long, long, char *, int ) ;
- extern int m3exist( long ) ;
- extern int m3read( long, long, char *, int ) ;
- extern int m3write( long, long, char *, int ) ;
- extern int u4file_first( char *, char * ) ;
- extern int u4file_next( char * ) ;
- extern int u4lock( int, long, long, int) ;
- extern int u4open( char *, int ) ;
- extern int u4name_char( char ) ;
- extern void u4name_full( char *, char *, char * ) ;
- extern void u4name_part( char *, char *, int, int ) ;
- extern int u4unlock( int, long, long ) ;
- extern int x4buffer( long, char *, unsigned int ) ;
- extern void x4buffer_copy( int, char * ) ;
- extern int x4blank( void ) ;
- extern int x4edit( void ) ;
- extern int x4filter( int (*)(void) ) ;
- extern int x4filter_pop( void ) ;
- extern void x4filter_reset( void ) ;
- extern int x4filter_do( void ) ;
- extern int x4list( void ) ;
- extern int x4relate( char *, int, int, long ) ;
- extern int x4relate_reset( void ) ;
- extern int x4relate_do( void ) ;
- extern int x4go( long ) ;
- extern int x4seek( char *) ;
- extern int x4skip( long ) ;
- extern int x4bottom( void ) ;
- extern int x4top( void ) ;
- extern double x4sum( long ) ;
- extern int x4insert( long ) ;
- extern int x4replace( long, long, void * ) ;
-
- #ifdef UNIX
- extern long filelength(int) ;
- extern char *memmove( char *, char *, int ) ;
- extern int strnicmp( char *, char *, int ) ;
- extern char *strupr( char *) ;
- extern char *strlwr( char *) ;
- extern char *ltoa( long, char *, int ) ;
- extern char *itoa( int, char *, int ) ;
- extern int remove( char * ) ;
- extern void u4sort() ;
- #else
- extern void u4sort( void *, ... ) ;
- extern int u4error( int, char *, ... ) ;
- #endif
-
- #ifdef TURBO
- #ifndef _SIZE_T
- #define _SIZE_T
- typedef unsigned size_t ;
- #endif
- #else
- #ifndef _SIZE_T_DEFINED
- #define _SIZE_T_DEFINED
- typedef unsigned size_t ;
- #endif
- #endif
-