home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 7 / 07.iso / c / c160 / 1.ddi / H / D4BASE.H < prev    next >
Encoding:
C/C++ Source or Header  |  1990-11-21  |  9.2 KB  |  304 lines

  1.  
  2. /*  d4base.h   (c)Copyright Sequiter Software Inc., 1987-1990.  All rights reserved. */
  3.  
  4. #ifdef HC386
  5.    #define NO_HUGE
  6. #endif
  7.  
  8. #ifdef __WATCOMC__
  9.    #define NO_HUGE
  10. #endif
  11.  
  12. #ifdef ZORTECH
  13.    #define NO_HUGE
  14. #endif
  15.  
  16. #ifdef TURBO
  17.    #define NO_HUGE
  18. #endif
  19.  
  20. #ifdef  NO_HUGE
  21.    #define  H_PTR  *
  22. #else
  23.    #define  H_PTR  huge *
  24. #endif
  25.  
  26. typedef struct field_st
  27. {
  28.    char    name[11] ;
  29.    char    type ;
  30.    short   width ;
  31.    short   decimals ;
  32.    short   offset ;
  33. }  FIELD ;
  34.  
  35. typedef struct base_buf_st
  36. {
  37.    int   next,prev ;      
  38.  
  39.    long  start_rec ;   /* -1L means none. */
  40.    long  end_rec ;
  41.    int   changed ;     /* TRUE if the buffer has been modified. */
  42. }  BASE_BUF ;
  43.  
  44.  
  45. /*   BASE */
  46.  
  47. typedef struct base_st
  48. {
  49.    int     next ;            /* -1 flags last file in list */
  50.    int     prev ;            /* -1 flags first file in list */
  51.  
  52.    char    name[64] ;        /* full path file name */
  53.    int     file_hand ;
  54.    long    rec_lock ;        /*  Record Number Locked
  55.                                  0 if no specific record is locked */
  56.    int     file_lock ;       /*  -1 Nothing; 0 Count Bytes; 1 File Locked  */
  57.  
  58.    long    rec_num  ;        /* The record number. */
  59.    int     bof ;             /* Beginning of File; TRUE or FALSE */
  60.    int     eof ;             /* End of File; TRUE or FALSE */
  61.  
  62.    int     memo_file ;       /* Handle for Memo File */
  63.    int     memo_size ;       /* The memo file block size */
  64.  
  65.    /* Buffer Information */
  66.    int     buffer_len ;      /* The first character is the deletion flag */
  67.  
  68.    char   *old_buf ;         /* The original buffer must be kept for
  69.                                 updating index files.  ie  finding the
  70.                                 key which needs to be replaced */
  71.    char   *buffer  ;         /* The new_buf memory is allocated with the
  72.                                 old_buf memory */
  73.    int     buffer_changed;   /* True if the buffer has been changed since  
  74.                                 last written to disk. */
  75.  
  76.    int     num_fields ;      /* The number of data fields in the database */
  77.    FIELD  *fields ;          /* A pointer to the field information */
  78.  
  79.    int     index_ref ;       /* A reference to the last index file opened
  80.                                 for the database */
  81.    int     current_index ;   /* A reference to the index file actively used */
  82.  
  83.    int     filter_ref ;      /* The first filter reference for the database */
  84.    int     relate_ref ;      /* The first relation reference for the database */
  85.  
  86.    int     change_list ;     /* A double linked list of changed buffers. */
  87.    int     buf_may_lend ;    /* True if buffer memory can be temporarily 
  88.                                 released for 'packing', 'reindexing', ... */
  89.    int     buf_status ;      /* 0 No Buffer; 1 Buffer Lent; 2 Buffer Avail. */
  90.    long    rec_tot ;         /* Total number of records in all the buffers.*/
  91.    long    rec_per_buf ;     /* Number of records per buffer. */
  92.    long    bytes_per_buf ;   /* Number of bytes per buffer. */
  93.    int     max_bufs ;         /* The no. of buffer slots allocated for 'bufs'. */
  94.    int     n_bufs ;          /* The no. of buffers currently in use. */
  95.    BASE_BUF   *bufs ;
  96.    char H_PTR  buf_ptr ;     /* Pointer to the start of the data. */
  97.  
  98.    /* Database Header Information */
  99.    char     version ;        /* 83H with .dbt, 03H without */
  100.    char     yy ;             /* Last Update */
  101.    char     mm ;
  102.    char     dd ;
  103.    long     num_recs ;       
  104.    unsigned short header_len;/* Header Length (Indicates # of fields) */
  105.  
  106. }  BASE ;
  107.  
  108. typedef struct key_st
  109. {
  110.    long  file_block ;
  111.    long  rec_num ;
  112.    char  value[ 512 - 3*sizeof(long) ] ;  /* The key size is variable */
  113. }  KEY ;
  114.  
  115. #ifdef CLIPPER
  116.    #define  BLOCK_SIZE     1024
  117.    #define  MAX_KEY_SIZE    338
  118. #else  
  119.    #define  BLOCK_SIZE      512
  120.    #define  NULL_DATE   1.0E100
  121.    #define  MAX_KEY_SIZE    100
  122. #endif
  123.  
  124. #define  LOCK_START   1000000000L
  125.  
  126. int    b4browse( int (*)(void), int (*)(void) ) ;
  127. void   b4call( int (*)(int,int) ) ;
  128. int    b4edit( int (*)(void), int (*)(void) ) ;
  129. void   b4margin(int,int) ;
  130. int    b4quick_browse(void) ;
  131. int    b4quick_edit(void) ;
  132. void   b4verify( int (*)(int) ) ;
  133. double c4atod( char *, int) ;
  134. int    c4atoi( char *, int) ;
  135. long   c4atol( char *, int) ;
  136. char * c4dtoa( double, int, int) ;
  137. int    c4dtok( int, double, char * ) ;
  138. void   c4dt_str( char *, double *) ;
  139. int    c4dt_julian( char *, double *) ;
  140. char * c4dt_format( char *, char *) ;
  141. char * c4dt_unformat( char *, char *) ;
  142. void   c4encode( char *, char *, char *, char *) ;
  143. int    c4julian( int, int, int)       ;
  144. char * c4ltoa( long, char *, int) ;
  145. void   c4trim_n( char *, int ) ;
  146. int    d4append(void) ;
  147. int    d4append_blank(void) ;
  148. void   d4blank(void) ;
  149. int    d4bof(void) ;
  150. int    d4bottom( void ) ;
  151. long   d4buf_init( long, long, long ) ;
  152. int    d4buf_total( long, int, int ) ;
  153. int    d4buf_unit( long ) ;
  154. int    d4create( char *, int, FIELD *, int ) ;
  155. int    d4close( void ) ;
  156. int    d4close_all( void ) ;
  157. int    d4delete( long) ;
  158. int    d4deleted( void ) ;
  159. int    d4eof(void) ;
  160. FIELD *d4fields(void) ;
  161. int    d4flush( int ) ;
  162. int    d4go( long) ;
  163. int    d4init( void ) ;
  164. int    d4init_undo( void ) ;
  165. int    d4initialize( int, int, int, int, long ) ;
  166. int    d4lock( long, int) ;
  167. int    d4lock_all( int, int ) ;
  168. int    d4lock_code( int ) ;
  169. int    d4lock_wait( int ) ;
  170. int    d4locked(long) ;
  171. int    d4lseek( long ) ;
  172. char * d4name(void) ;
  173. int    d4pack( void ) ;
  174. BASE * d4ptr( void ) ;
  175. int    d4recall( long) ;
  176. long   d4recno( void ) ;
  177. long   d4reccount( void ) ;
  178. int    d4ref( char *) ;
  179. int    d4seek( void *) ;
  180. int    d4seek_double( double ) ;
  181. int    d4seek_str( char * ) ;
  182. int    d4select( int ) ;
  183. int    d4skip( long) ;
  184. int    d4top( void ) ;
  185. int    d4unlock( long) ;
  186. int    d4use( char * ) ;
  187. int    d4use_excl( char * ) ;
  188. int    d4write( long) ;
  189. int    d4zap( long, long ) ;
  190. void * e4eval( char *) ;
  191. void * e4exec( char *) ;
  192. int    e4length(void) ;
  193. char * e4string( char * ) ;
  194. char * e4name( char) ;
  195. int    e4parse( char *, char **) ;
  196. char   e4type( void ) ;
  197. char * e4type_str( int) ;
  198. int    e4type_error( char, int, int, int) ;
  199. void * e4vary( char * ) ;
  200. int    f4char( long ) ;
  201. int    f4decimals( long) ;
  202. double f4double( long ) ;
  203. char * f4name( long) ;
  204. int    f4int( long ) ;
  205. long   f4j_ref( int ) ;
  206. long   f4long( long ) ;
  207. int    f4ncpy( long, char *, int ) ;
  208. int    f4num_fields ( void ) ;
  209. char * f4ptr( long) ;
  210. void   f4r_double( long, double ) ;
  211. void   f4r_long( long, long ) ;
  212. void   f4r_int( long, int ) ;
  213. void   f4r_char( long, char ) ;
  214. void   f4r_str( long, char * ) ;
  215. void * f4record( void ) ;
  216. int    f4record_width( void ) ;
  217. long   f4ref( char *) ;
  218. int    f4replace( long, void *) ;
  219. char * f4str( long) ;
  220. int    f4true( long) ;
  221. char   f4type( long) ;
  222. double f4value( long) ;
  223. int    f4width( long) ;
  224. int    i4add( int, char *, long) ;
  225. int    i4bottom( int) ;
  226. long   i4check( int) ;
  227. int    i4close( int) ;
  228. char * i4eval( int) ;
  229. int    i4free( int ) ;
  230. int    i4go( int, char *, long) ;
  231. int    i4index( char *, char *, int, int) ;
  232. int    i4index_filter( char *, char *, int, int, int (*)(void)) ;
  233. KEY *  i4key( int) ;
  234. int    i4lock( int, int) ;
  235. char * i4name( int ) ;
  236. int    i4open( char *) ;
  237. int    i4ref( char *) ;
  238. int    i4reindex( int ) ;
  239. int    i4remove( int, char *, long) ;
  240. int    i4seek( int, void *) ;
  241. int    i4seek_ref( void ) ;
  242. int    i4select( int) ;
  243. long   i4skip( int, long) ;
  244. int    i4top( int) ;
  245. char   i4type( int) ;
  246. int    i4unlock( int) ;
  247. void   i4unselect( void ) ;
  248. long * m4check( long ) ;
  249. int    m4convert( char * ) ;
  250. int    m4edit( long, long, char *, int ) ;
  251. int    m4exist( long ) ;
  252. int    m4read( long, long, char *, int ) ;
  253. int    m4renamed( char * ) ;
  254. int    m4write( long, long, char *, int ) ;
  255. int    m3edit( long, long, char *, int ) ;
  256. int    m3exist( long ) ;
  257. int    m3read( long, long, char *, int ) ;
  258. int    m3write( long, long, char *, int ) ;
  259. int    u4file_first( char *, char * ) ;
  260. int    u4file_next( char * ) ;
  261. int    u4lock( int, long, long, int) ;
  262. int    u4open( char *, int ) ;
  263. int    u4name_char( char ) ;
  264. void   u4name_full( char *, char *, char * ) ;
  265. void   u4name_part( char *, char *, int, int ) ;
  266. void   u4sort() ;
  267. int    u4unlock( int, long, long ) ;
  268. int    x4buffer( long, char *, unsigned int ) ;
  269. void   x4buffer_copy( int, char * ) ;
  270. int    x4blank( void ) ;
  271. int    x4copy( char *, long, int ) ;
  272. int    x4edit( void ) ;
  273. int    x4filter( int (*)(void) ) ;
  274. int    x4filter_pop( void ) ;
  275. void   x4filter_reset( void ) ;
  276. int    x4filter_do( void ) ;
  277. int    x4go( long) ;
  278. int    x4list( void ) ;
  279. int    x4pack( int ) ;
  280. int    x4relate( char *, int, int, long ) ;
  281. int    x4relate_reset( void ) ;
  282. int    x4relate_do( void ) ;
  283. int    x4seek( char *) ;
  284. int    x4seek_double( double ) ;
  285. int    x4seek_str( char * ) ;
  286. int    x4skip( long ) ;
  287. int    x4sort( char *, char *, long, int) ;
  288. int    x4bottom( void ) ;
  289. int    x4top( void ) ;
  290. double x4sum( long ) ;
  291. int    x4insert( long ) ;
  292.  
  293. #ifdef UNIX
  294.    int   u4error() ;
  295.    void  i4filter() ;
  296. #else
  297. #ifdef MSC
  298.    int    cdecl u4error( int, char *, ... ) ;
  299. #else
  300.    int    u4error( int, char *, ... ) ;
  301. #endif
  302.    void   i4filter( int (*)(void) ) ;
  303. #endif
  304.