XDLL / xBase DLL-oriented branch — XBASE.H

Read-only archive view · 1996-07-25 · 4,312 bytes · SHA-256 476D6D7742ED16FF93E94793C8AAF5B2B2CC262468CA139CADE97CD72C93F8B5

Back to source browser · Open byte-preserved text

#include <windows.h>

/* main dbf file functions */



#pragma pack(1)

/* system definitions */

#define AMIGADOS 0 

#define IBMPCDOS 1

/* dbase constants */      

#define TRUE 1 

#define FALSE 0 

#define block_size 32  

#define end_of_field "/r"

#define max_recs 1000     /* 4000 chars or 128 fields */

#define max_fields 128

#define max_numeric 19

#define max_index 5   

#define max_area 25     

#define date_size 8

#define fld_nam_len 11

#define header_terminator_byte 0x0D                          

#define is_deleted 0x2A

#define not_deleted 0x20



/* dbase type definitions */

typedef char update[3];   

typedef char dbfile[12];      

typedef char order_type[3];

typedef order_type order_array_type[max_fields] ;  

typedef char field_name[fld_nam_len];            





typedef struct header_rec

{

   char version ;                  /* 0x03 for DBIII */

   update last_updated ;

   long num_of_recs ;

   short data_start ;              /* offset of actual data */

   short cpr ;                     /* chars per rec */

   char reserved[20] ;

}  header_rec ;					   /* 32 bytes */	



typedef struct field_rec           /* 32 bytes for each field */

{

   char field_name[11] ; 

   char field_type ; 

   long field_data_address ;

   char field_length ;

   char decimal_places ;

   short  multiuser1 ;

   char workid ;

   short  multiuser2 ;

   char flag ;

   char reserved[8] ;

}  field_rec ;    



typedef struct field_rec field_array[max_fields];         

              

typedef struct index

{                 

   char       idx; 

   ENTRY      *pe;

   IX_DESC    *pix;             

}  index;	  



typedef struct select_rec

{  

   char        a;               /* area used for this file */

   FILE       *fp;              /* file pointer */   

   char        fok;             /* file status */

   header_rec *hr;              /* header info */

   field_rec  *fr[max_fields];  /* field info */

   char *      fd[max_fields];  /* make a char * for each field in a rec */

   short       num_of_fields;

   long        crn;             /* current record number */

   char       *rd;              /* record data buffer */    

   char        del;             /* delete status of current record */

   char        ord;             /* current index order */ 

/* index fields for bplus */ 

   index       i[max_index];  

}  select_rec ;



#pragma pack()

   

/* Prototypes */    

   

/* misc functions */

#ifdef AMIGADOS       

   void swab(char *int1, char *int2, int no_bytes) ; 

#endif   

        

char   FAR PASCAL _export wait(char ch);       

void   FAR PASCAL _export charproc(char *field, char length, long sub) ;

char * FAR PASCAL _export dateproc(int length, int sub, int sub2) ;

char   FAR PASCAL _export logiproc(int sub, int sub2) ;

char * FAR PASCAL _export memoproc(int sub,int sub2) ;

char * FAR PASCAL _export nmbrproc(int length, int sub, int sub2) ;

char * FAR PASCAL _export dbname(char *tmpstr) ;

char * FAR PASCAL _export dxname(char *tmpstr) ;  

char * FAR PASCAL _export rstr(char *tmpstr, int newlen);

char * FAR PASCAL _export lstr(char *tmpstr, int newlen);

void   FAR PASCAL _export rtrim(char *tmpfld);   

int    FAR PASCAL _export strnicmps(char *str1,char *str2) ;  

int    FAR PASCAL _export memchk(char *buff,char *function,char variable[],unsigned long mem);



/* file functions */    

int  FAR PASCAL _export initbase(); 

int  FAR PASCAL _export read_rec(char area);

int  FAR PASCAL _export write_rec(char area);

int  FAR PASCAL _export add_rec(char area);

int  FAR PASCAL _export goto_rec(long recnum); 

int  FAR PASCAL _export del_rec(char area);

void FAR PASCAL _export pack(char area);

int  FAR PASCAL _export read_header(char area);  

int  FAR PASCAL _export open_file(dbfile filename, char area);

int  FAR PASCAL _export close_file(char area);

void FAR PASCAL _export read_fields(char area);

int  FAR PASCAL _export import(dbfile infile, dbfile outfile);

void FAR PASCAL _export export(dbfile infile, dbfile outfile);    

void FAR PASCAL _export swabdbf(dbfile infile);   

int  FAR PASCAL _export copyfile(char *cp[]);  

int  FAR PASCAL _export create_dbf(dbfile outfile,field_array fields,int num_of_fields);

int  FAR PASCAL _export copy_stru(dbfile outfile);