home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Interactive Guide / c-cplusplus-interactive-guide.iso / c_ref / csource4 / 263_01 / c_ndx.h < prev    next >
Text File  |  1990-02-15  |  5KB  |  149 lines

  1. /*
  2. *    Copr.  Marietta Systems, Inc   1988, 1989
  3. *    All rights reserved
  4. */
  5.  
  6. typedef long mony; /* 'mony'-type fields have two implied decimal places */
  7.  
  8. #define DBFTREEDEPTH 16
  9. #if defined (__SMALL__) || defined(__MEDIUM__)
  10. #define MAX_ELEM 32
  11. #else
  12. #define MAX_ELEM 64
  13. #endif
  14.  
  15. struct DBFKEYED {
  16.     int fldno;    /* field number of key field (-1 if null) */
  17.     int logic;    /* flag / function code for conversion of field */
  18.     int sublogic; /* sublogic function identifier */
  19.     byte lit1, lit2; /* literal values */
  20.     };
  21.  
  22. struct DBFINDEX {
  23.     long total;   /* total blocks */
  24.     long tree[1 + DBFTREEDEPTH]; /* blocks in current B-Tree (0 is top) */
  25.     long k1;
  26.     int (*makekey)();/* pointer to index field calc function */
  27.     struct DBFKEYED field[8];  /* fields in key */
  28.     int fh;       /* file number of data file, 0 if unused */
  29.     int idepth;   /* number of index levels down the B-tree */
  30.     int keylen;   /* length of key */
  31.     int maxrec;   /* max records per block */
  32.     int reclen;   /* length of key record */
  33.     int nkey;     /* Bool, true if numeric/date key */
  34.     int uniq;     /* Bool, true if unique key */
  35.     int i1;
  36.     };
  37.  
  38. struct DBFRELATE {
  39.     int fh;       /* file being related */
  40.     int fhx;      /* index file  (==0 for hashed access) */
  41.     int pair[10][2]; /* field pairs in relationship (last == -1)
  42.                       * pair is orginating field# then target field# */
  43.     };
  44.  
  45. struct DBFMAP {
  46.     struct DBFRELATE *dbfr; /* pointer to relationship tables */
  47.     int ix[7];    /* index files used by this data file, if ix[0] is zero
  48.                    *  then no index files! */
  49.     int rfh;      /* number of related files */
  50.     };
  51.  
  52. struct CACHEMAP {
  53.     long recno;   /* 1st record number of block in cache memory */
  54.     void *block;  /* pointer to data area */
  55.     int lastused; /* usage increment number last used */
  56.     int write;    /* write flag, set 1 if block in memory changed */
  57.     };
  58.  
  59. struct FNCACHE {
  60.     long recused;  /* record in use */
  61.     long lastrec;  /* last physical record used in file */
  62.     struct CACHEMAP cache[MAX_ELEM]; /* pointer to cache table */
  63.     unsigned last; /* last actual disk read modes */
  64.     unsigned records; /* block size in records (1,2,4,8,etc) */
  65.     int c_elem;    /* number of elements in cache table */
  66.     int lastused;  /* last used counter */
  67.     int free;      /* first free element in cache table, -1 if none free */
  68.     int hardwrite; /* set 1 if all writes forced to disk */
  69.     };
  70.  
  71. /*
  72. * * * * * * * * * * * *
  73. *    Definitions and prototypes for 'mony' type access
  74. *
  75. */
  76. extern int   acptmony (mony*, enum _JUST, enum ATTRIB, unsigned);
  77. extern mony  atom (byte*);
  78. extern int   dispmony (mony, int, int, enum ATTRIB, enum _JUST, unsigned);
  79. extern byte* ftoascii(byte*, double, unsigned);
  80. extern mony  ftom (double);
  81. #ifdef LATTICE
  82. #define itoascii(a, i) stci_d(a, i)
  83. #define ltoascii(a, l) stcl_d(a, l)
  84. #else
  85. #define itoascii(a, i) itoa(i, a, 10)
  86. #define ltoascii(a, l) ltoa(l, a, 10)
  87. #endif
  88. extern mony  monydisc (mony, mony);
  89. extern mony  monydiv (mony, mony);
  90. extern mony  monymarkup (mony, mony);
  91. extern mony  monymult (mony, mony);
  92. extern mony  monypercent (mony, mony);
  93. extern mony  monyratio (mony, double);
  94. extern byte* mtoascii (byte*, mony);
  95. extern double mtof (mony);
  96.  
  97. /* */
  98. extern int   _makekey(int, int, struct DBFINDEX*, char*);
  99. extern int   acptdbf (int, unsigned, enum ATTRIB);
  100. extern int   cacheoff (int);
  101. extern int   dispdbf (int, unsigned, int, int, enum ATTRIB);
  102. extern void  dbfdatein(char*, char*);
  103. extern void  dbfdateout(char*, char*);
  104. extern int   dbffield(int, char*);
  105. extern int   dbffile(int);
  106. extern double* dbfgetf(int, unsigned, double*);
  107. extern long* dbfgetl(int, unsigned, long*);
  108. extern mony* dbfgetm(int, unsigned, mony*);
  109. extern char* dbfgets(int, unsigned, char*);
  110. extern int   dbflist(int, char*, int, unsigned);
  111. extern int   dbfputf(int, unsigned, double);
  112. extern int   dbfputl(int, unsigned, long);
  113. extern int   dbfputm(int, unsigned, mony);
  114. extern int   dbfputs(int, unsigned, char*);
  115. extern int   dbfread(int, enum F_READ);
  116. extern int   dbfrelate(int, int, int, char*);
  117. extern int   dbf_fld(int);
  118. extern int   filelist (char*, char*, unsigned, int, char*);
  119. extern int   filemenu (char*);
  120. extern int   filesave (int);
  121. extern int   hashmake(char*, unsigned, unsigned, long, unsigned, unsigned);
  122. extern long  hashread(int, byte*, int);
  123. extern int   iscache (int);
  124. extern int   isuniqndx (int);
  125. extern int   ndxappend(int);
  126. extern int   ndxcustom(int, char*, int(*)(), int);
  127. extern int   ndxdelete(int);
  128. extern int   ndxexprn(int, char*, struct DBFKEYED*);
  129. extern int   ndxfield (int, unsigned);
  130. extern int   ndxopen(int, char*);
  131. extern int   ndxrdex(int, char*, char*, int(*)(), int);
  132. extern int   ndxread(int, enum F_READ);
  133. extern int   ndxwrite(int);
  134.  
  135. /*
  136. * * * * * * * * * *
  137. *    Prototypes for text display
  138. */
  139. extern int   compress (byte*);
  140. extern int   dispwrap (byte*, int, int, enum ATTRIB, unsigned, unsigned);
  141. extern int   ln_ex (byte*, byte*, unsigned);
  142.  
  143. /* */
  144. extern void  dispdbfi(int, struct DBFINDEX*);
  145. extern void  mapcache(int);
  146. extern void  mapblock(int, struct DBFINDEX*);
  147. extern int   cmrt_fw2(int, long*, unsigned, byte*);
  148. /* end */
  149.