home *** CD-ROM | disk | FTP | other *** search
/ NeXTSTEP 3.0 / NeXTSTEP3.0.iso / NextDeveloper / Headers / db / db.h
Text File  |  1990-08-08  |  5KB  |  135 lines

  1. /*
  2. ** User header file for binary extendible hashing package.
  3. ** Hides implementation details.
  4. **
  5. ** !!!NOTICE!!!
  6. **
  7. ** This file and the functions it prototypes will not be supported
  8. ** after release 2.0.
  9. **
  10. ** Use the BTree package instead of this library 
  11. ** (see /usr/lib/libbtree.a and /NextLibrary/Documentation/Next/RelNotes)
  12. */
  13. #ifndef _DB_INCLUDED_
  14. #define _DB_INCLUDED_
  15.  
  16. #include <stdio.h>
  17.  
  18.     /* datum is a string 's' of 'n' bytes */
  19. typedef struct {
  20.     char *s;
  21.     unsigned short n;
  22. } Datum;
  23.  
  24.     /* data passing buffer (key/content pair) */
  25. typedef struct {
  26.     Datum k, c;
  27. } Data;
  28.  
  29.     /* enumeration of error codes reported */
  30. typedef enum {
  31.     dbErrorNoError,     /* no error: the normal state of affairs */
  32.     dbErrorLockFailed,     /* a lock could not be obtained for database */
  33.     dbErrorReadOnly,     /* write or delete on read only database */
  34.     dbErrorNoKey,         /* the specified key was not found */
  35.     dbErrorNoRoom,         /* database cannot accept the new record */
  36.     dbErrorNoMemory,     /* sufficient memory is not available */
  37.     dbErrorTooLarge,     /* the new record is too large to insert */
  38.     dbErrorTooDeep,     /* the directory cannot expand further */
  39.     dbErrorInternal,     /* an internal inconsistency was found */
  40.     dbErrorSystem = 100    /* base value added to system variable errno */
  41. } dbErrorType; 
  42.     
  43.  
  44. #ifndef _INTERNAL_H_ /* internal code has it's own version */
  45. typedef struct {
  46.     char *name;    /* database name; no extension */
  47.     int flag;    /* directory flags; see defines below */
  48.     int D;        /* file descriptor for directory file */
  49.     int L;        /* file descriptor for leaf file */
  50. } Database;
  51. #endif
  52.  
  53. /* function prototypes */
  54. extern int dbStore(Database *db, Data *d);
  55. extern int dbFetch(Database *db, Data *d);
  56. extern int dbDelete(Database *db, Data *d);
  57. extern int dbFind(Database *db, Data *d);
  58. extern int dbGet(Database *db, Data *d);
  59. extern int dbSetKey(Database *db, Data *d);
  60. extern int dbFirst(Database *db, Data *d);
  61. extern int dbNext(Database *db, Data *d);
  62. extern int dbFlush(Database *db);
  63. extern int dbCompress(Database *db);
  64. extern int dbExpand(Database *db);
  65. extern void dbSetCache(Database *db, unsigned short limit, int private);
  66. extern int dbUnlink(char *name);
  67. extern int dbERXis(char *name);
  68. extern Database *dbOpen(char *name);
  69. extern Data dbData(Datum k, Datum c);
  70. extern Datum StrDatum(char *s);
  71. extern Data StrData(char *k, char *c);
  72. extern int dbPrint(Database *db, char *k, char *c);
  73. extern int dbScan(Database *db, char *k, char *c);
  74. extern int dbWaitLock(Database *db, int count, unsigned int pause);
  75. extern int dbUnlock(Database *db);
  76. extern int dbLock(Database *db);
  77. extern Database *dbInit(char *name);
  78. extern int dbCreate(char *name);
  79. extern int dbClose(Database *db);
  80. extern int dbError(dbErrorType errno, char *fmt, ...);
  81.  
  82. #ifdef NULL
  83. extern void dbPrintKC(FILE *f, Data *d);
  84. extern void dbCat(FILE *f, Database *db, void (*pfunc)(FILE *, Data *));
  85. #endif
  86.  
  87. /* global variables */
  88. extern char *dbDirExtension;    /* default directory file extension */
  89. extern char *dbLeafExtension;    /* default leaf file extension */
  90. extern int dbErrors;        /* if true, errors generate printed messages */
  91. extern dbErrorType dbErrorNo;    /* contains last error code reported */
  92. extern int dbMaxLeafBuf;    /* maximum number of buffers in common cache */
  93. extern int dbLeafSize;        /* leaf size used when database created */
  94. extern int dbMode, dbFlags;    /* flags and mode for dbOpen */
  95. extern FILE *dbMsgs;        /* where to write diagnostic messages */
  96. extern unsigned int *dbSizeTable;    /* pointer to null-terminated table */
  97.                     /* of rounding points for leaf sizes */
  98.  
  99. #define LEAFSIZE 4088        /* default leaf size (block size) */
  100.                 /* provides for 0x001fffff leaves */
  101.  
  102. /* flag bits that may be set by the caller */
  103. #define dbFlagBuffered (1 << 0)        /* output buffered, dbFlush() writes */
  104.  
  105. /* additional, read only flag bits set internally */
  106. #define    dbFlagReadOnly (1 << 8)        /* if set, writes and deletes fail */
  107. #define dbFlagCompressed (1 << 9)    /* database is compressed, read only */
  108. #define dbFlagPrivate (1 << 10)        /* if set, private caching enabled */
  109.  
  110. /* the following are for dbm compatibility */
  111. #define PBLKSIZ LEAFSIZE
  112. #define DBM Database
  113.  
  114. typedef struct { char *dptr; int dsize; } datum;
  115.  
  116. extern int dbminit(char *file);
  117. extern int dbmclose(void);
  118. extern datum fetch(datum key);
  119. extern int store(datum key, datum content);
  120. extern int delete(datum key);
  121. extern datum firstkey(void);
  122. extern datum nextkey(datum key);
  123. extern DBM *dbm_open(char *file, int flags, int mode);
  124. extern int dbm_close(DBM *db);
  125. extern datum dbm_fetch(DBM *dbRXptum key);
  126. extern int dbm_store(DBM *db, datum key, datum content);
  127. extern int dbm_delete(DBM *db, datum key);
  128. extern datum dbm_firstkey(DBM *db);
  129. extern datum dbm_nextkey(DBM *db, datum key);
  130. extern int dbm_error(void);
  131. extern int dbm_clearerr(void);
  132.  
  133. #endif
  134.  
  135.