My Project
Toggle main menu visibility
Loading...
Searching...
No Matches
Singular
links
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);
97
datum
dbm_firstkey
(
DBM
*db);
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_store
int dbm_store(DBM *db, datum key, datum dat, int replace)
Definition
ndbm.cc:167
datum::dptr
char * dptr
Definition
ndbm.h:84
DBM::dbm_dirbuf
char dbm_dirbuf[DBLKSIZ]
Definition
ndbm.h:67
dbm_fetch
datum dbm_fetch(DBM *db, datum key)
Definition
ndbm.cc:119
dbm_delete
int dbm_delete(DBM *db, datum key)
Definition
ndbm.cc:139
DBM::dbm_keyptr
int dbm_keyptr
Definition
ndbm.h:62
DBM::dbm_pagbno
long dbm_pagbno
Definition
ndbm.h:64
DBM::dbm_hmask
long dbm_hmask
Definition
ndbm.h:60
DBM::dbm_pagf
int dbm_pagf
Definition
ndbm.h:56
dbm_nextkey
datum dbm_nextkey(DBM *db)
Definition
ndbm.cc:260
DBM::dbm_flags
int dbm_flags
Definition
ndbm.h:57
dbm_firstkey
datum dbm_firstkey(DBM *db)
Definition
ndbm.cc:252
datum::dsize
int dsize
Definition
ndbm.h:85
DBM::dbm_maxbno
long dbm_maxbno
Definition
ndbm.h:58
dbm_open
DBM * dbm_open(char *file, int flags, int mode)
Definition
ndbm.cc:59
DBM::dbm_dirbno
long dbm_dirbno
Definition
ndbm.h:66
DBM::dbm_dirf
int dbm_dirf
Definition
ndbm.h:55
dbm_forder
long dbm_forder(DBM *db, datum key)
Definition
ndbm.cc:104
DBM::dbm_blkno
long dbm_blkno
Definition
ndbm.h:63
dbm_close
void dbm_close(DBM *db)
Definition
ndbm.cc:97
PBLKSIZ
#define PBLKSIZ
Definition
ndbm.h:50
DBM::dbm_pagbuf
char dbm_pagbuf[PBLKSIZ]
Definition
ndbm.h:65
DBM::dbm_bitno
long dbm_bitno
Definition
ndbm.h:59
DBLKSIZ
#define DBLKSIZ
Definition
ndbm.h:52
DBM::dbm_blkptr
long dbm_blkptr
Definition
ndbm.h:61
DBM
Definition
ndbm.h:54
datum
Definition
ndbm.h:83
flags
int status int void size_t count const char int flags
Definition
si_signals.h:83
Generated on
for My Project by
doxygen 1.17.0
for
Singular