home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 7 / 07.iso / c / c161 / 1.ddi / H / D4BASE.H < prev    next >
Encoding:
C/C++ Source or Header  |  1992-02-19  |  9.0 KB  |  284 lines

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