home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD2.mdf / c / library / dos / database / nyisam / idx.h < prev    next >
Encoding:
C/C++ Source or Header  |  1994-05-07  |  2.8 KB  |  114 lines

  1. /*------------------------------------------------------------------------
  2.  FILE IDX.H
  3.  ------------------------------------------------------------------------*/
  4. #ifndef _IDX
  5. #define _IDX
  6.  
  7. #include <stdlib.h>
  8. #include <string.h>
  9. #include <fcntl.h>
  10. #include <sys\stat.h>
  11. #include <io.h>
  12. #include <errno.h>
  13.  
  14. #ifndef _MSC
  15. #include <mem.h>
  16. #include <alloc.h>
  17. #else
  18. #include <memory.h>
  19. #include <malloc.h>
  20. #endif
  21.  
  22. #define IDX_ERR_NOERROR    0
  23. #define IDX_ERR_MAXFILES    1
  24. #define IDX_ERR_CREATERROR    2
  25. #define IDX_ERR_WRITERROR    3
  26. #define IDX_ERR_OPENERROR    4
  27. #define IDX_ERR_READERROR    5
  28. #define IDX_ERR_CLOSERROR    6
  29. #define IDX_ERR_MAXINDEXES    7
  30. #define IDX_ERR_DUPVALUE    8
  31. #define IDX_ERR_KEYNOTFOUND 9
  32. #define IDX_ERR_LASTKEY    10
  33. #define IDX_ERR_INVHDL        11
  34. #define IDX_ERR_MEM        12
  35.  
  36. #define NODESIZE 512  
  37. #define MAXIDX 16     
  38. #define MAXFILES 5   
  39.  
  40. #ifndef ERROR
  41. #define ERROR    -1
  42. #endif
  43.  
  44. #ifndef OK
  45. #define OK     0
  46. #endif
  47.  
  48. #ifndef FALSE
  49. #define FALSE  0
  50. #endif
  51.  
  52. #ifndef TRUE
  53. #define TRUE    !FALSE
  54. #endif
  55.  
  56. typedef struct {
  57.     int idxerr;
  58.     int syserr;
  59.     } _idxerr;
  60.  
  61. extern _idxerr idxerr;
  62.  
  63. typedef struct _IdxInfo {
  64.    long rootnode;      
  65.    short keylength;      
  66.     short start;          
  67.     short max;              
  68.    long leftmost;      
  69.    long rightmost;     
  70.     long currnode;      
  71.     long currkno;   
  72.     short unique;
  73.     short filler;
  74. } IDXINFO;
  75.  
  76. typedef struct _IdxFile {
  77.    long rlsdnode_idx;    
  78.    long endnode_idx;     
  79.     short reclength;      
  80.     short reccount;       
  81.     long filler1;
  82.     long endnode_dat;     
  83.     long filler3; 
  84.     long serial;
  85.     IDXINFO IdxInfo[MAXIDX];
  86.     long filler2;
  87.     short fhdl;         /*    file handle  */         
  88.     } IDXFILE;
  89.  
  90. /*------------------ prototypes --------------*/
  91.  
  92. extern int IdxRecLen( int fptr );
  93. extern int IdxCreate( char * filename, int reclength);
  94. extern int IdxOpen( char * filename);
  95. extern int IdxClose( int fhdl );
  96. extern int IdxAddIdx( int fhdl, int start, int len, int unique );
  97. extern int IdxDelIdx( int fhdl, int idxnum );
  98. extern int IdxGetInfo( int fptr, int idxnum, IDXINFO *IdxInfo );
  99. extern int IdxSetInfo( int fptr, int idxnum, IDXINFO *IdxInfo );
  100. extern int IdxGetDict( int fptr, IDXFILE *IdxFile );
  101. extern int IdxSetDict( int fptr, IDXFILE *IdxFile );
  102. extern int IdxAddKey( int fptr, int idx, char *key, long d_rptr );
  103. extern int IdxDelKey( int fptr, int idx, char *key, long d_rptr);
  104. extern long IdxFirstKey( int fptr, int idx, int length, char *key);
  105. extern long IdxFetchFirst( int fptr, int idx, char *key );
  106. extern long IdxFetchLast(int fptr, int idx, char *key );
  107. extern long IdxFetchNext( int fptr, int idx, char *key );
  108. extern long IdxFetchPrev( int fptr, int idx, char *key );
  109. extern long IdxCurrKey( int fptr, int idx, char *key );
  110. extern void IdxInitFetch( int fptr, int idx );
  111. extern long IdxNextDataRec( int fptr );
  112.  
  113. #endif
  114.