My Project  UNKNOWN_GIT_VERSION
ndbm.h
Go to the documentation of this file.
1 #ifndef NDBM_H
2 #define NDBM_H
3 /****************************************
4 * Computer Algebra System SINGULAR *
5 ****************************************/
6 /*
7 * ABSTRACT: DBM
8 */
9 
10 /*
11  * Copyright (c) 1983 Regents of the University of California.
12  * All rights reserved. The Berkeley software License Agreement
13  * specifies the terms and conditions for redistribution.
14  *
15  *
16  *
17  * Redistribution and use in source and binary forms, with or without
18  * modification, are permitted provided that the following conditions
19  * are met:
20  * 1. Redistributions of source code must retain the above copyright
21  * notice, this list of conditions and the following disclaimer.
22  * 2. Redistributions in binary form must reproduce the above copyright
23  * notice, this list of conditions and the following disclaimer in the
24  * documentation and/or other materials provided with the distribution.
25  * 4. Neither the name of the University nor the names of its contributors
26  * may be used to endorse or promote products derived from this software
27  * without specific prior written permission.
28  *
29  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
30  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
31  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
32  * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
33  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
34  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
35  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
36  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
37  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
38  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
39  * SUCH DAMAGE.
40  *
41  * @(#)ndbm.h 5.1 (Berkeley) 5/30/85
42  *
43  * Par. 3 removed due to a license change (1999)
44  * see ftp://ftp.cs.berkeley.edu/pub/4bsd/README.Impt.License.Change
45  */
46 
47 /*
48  * Hashed key data base library.
49  */
50 #define PBLKSIZ 1024
51 
52 #define DBLKSIZ 4096
53 
54 typedef struct {
55  int dbm_dirf; /* open directory file */
56  int dbm_pagf; /* open page file */
57  int dbm_flags; /* flags, see below */
58  long dbm_maxbno; /* last ``bit'' in dir file */
59  long dbm_bitno; /* current bit number */
60  long dbm_hmask; /* hash mask */
61  long dbm_blkptr; /* current block for dbm_nextkey */
62  int dbm_keyptr; /* current key for dbm_nextkey */
63  long dbm_blkno; /* current page to read/write */
64  long dbm_pagbno; /* current page in pagbuf */
65  char dbm_pagbuf[PBLKSIZ]; /* page file block buffer */
66  long dbm_dirbno; /* current block in dirbuf */
67  char dbm_dirbuf[DBLKSIZ]; /* directory file block buffer */
68 } DBM;
69 
70 #define _DBM_RDONLY 0x01 /* data base open read-only */
71 #define _DBM_IOERR 0x02 /* data base I/O error */
72 
73 #define dbm_rdonly(db) ((db)->dbm_flags & _DBM_RDONLY)
74 
75 #define dbm_error(db) ((db)->dbm_flags & _DBM_IOERR)
76  /* use this one at your own risk! */
77 #define dbm_clearerr(db) ((db)->dbm_flags &= ~_DBM_IOERR)
78 
79 /* for flock(2) and fstat(2) */
80 #define dbm_dirfno(db) ((db)->dbm_dirf)
81 #define dbm_pagfno(db) ((db)->dbm_pagf)
82 
83 typedef struct {
84  char *dptr;
85  int dsize;
86 } datum;
87 
88 /*
89  * flags to dbm_store()
90  */
91 #define DBM_INSERT 0
92 #define DBM_REPLACE 1
93 
94 DBM *dbm_open(char *file, int flags, int mode);
95 void dbm_close(DBM *db);
96 datum dbm_fetch(DBM *db, datum key);
98 datum dbm_nextkey(DBM *db);
99 long dbm_forder(DBM *db, datum key);
100 int dbm_delete(DBM *db, datum key);
101 int dbm_store(DBM *db, datum key, datum dat, int replace);
102 
103 #endif /* NDBM_H */
DBM::dbm_hmask
long dbm_hmask
Definition: ndbm.h:60
DBM::dbm_blkptr
long dbm_blkptr
Definition: ndbm.h:61
DBM
Definition: ndbm.h:54
DBM::dbm_dirf
int dbm_dirf
Definition: ndbm.h:55
dbm_delete
int dbm_delete(DBM *db, datum key)
Definition: ndbm.cc:139
DBM::dbm_bitno
long dbm_bitno
Definition: ndbm.h:59
DBLKSIZ
#define DBLKSIZ
Definition: ndbm.h:52
flags
int status int void size_t count int const void size_t count const char int flags
Definition: si_signals.h:73
DBM::dbm_keyptr
int dbm_keyptr
Definition: ndbm.h:62
datum
Definition: ndbm.h:83
dbm_open
DBM * dbm_open(char *file, int flags, int mode)
Definition: ndbm.cc:59
dbm_fetch
datum dbm_fetch(DBM *db, datum key)
Definition: ndbm.cc:119
dbm_close
void dbm_close(DBM *db)
Definition: ndbm.cc:97
DBM::dbm_flags
int dbm_flags
Definition: ndbm.h:57
PBLKSIZ
#define PBLKSIZ
Definition: ndbm.h:50
dbm_firstkey
datum dbm_firstkey(DBM *db)
Definition: ndbm.cc:252
DBM::dbm_pagf
int dbm_pagf
Definition: ndbm.h:56
DBM::dbm_pagbno
long dbm_pagbno
Definition: ndbm.h:64
datum::dptr
char * dptr
Definition: ndbm.h:84
dbm_store
int dbm_store(DBM *db, datum key, datum dat, int replace)
Definition: ndbm.cc:167
dbm_nextkey
datum dbm_nextkey(DBM *db)
Definition: ndbm.cc:260
DBM::dbm_maxbno
long dbm_maxbno
Definition: ndbm.h:58
dbm_forder
long dbm_forder(DBM *db, datum key)
Definition: ndbm.cc:104
DBM::dbm_dirbno
long dbm_dirbno
Definition: ndbm.h:66
DBM::dbm_blkno
long dbm_blkno
Definition: ndbm.h:63
datum::dsize
int dsize
Definition: ndbm.h:85