-
Notifications
You must be signed in to change notification settings - Fork 11
/
dbm.mli
79 lines (63 loc) · 3.4 KB
/
dbm.mli
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
(***********************************************************************)
(* *)
(* CamlDBM *)
(* *)
(* Francois Rouaix, projet Cristal, INRIA Rocquencourt *)
(* *)
(* Copyright 1996 Institut National de Recherche en Informatique et *)
(* en Automatique. All rights reserved. This file is distributed *)
(* under the terms of the GNU Library General Public License, with *)
(* the special exception on linking described in file ../../LICENSE. *)
(* *)
(***********************************************************************)
(* $Id: dbm.mli 11156 2011-07-27 14:17:02Z doligez $ *)
(** Interface to the NDBM database. *)
type t
(** The type of file descriptors opened on NDBM databases. *)
type open_flag =
Dbm_rdonly
| Dbm_wronly
| Dbm_rdwr
| Dbm_create
(** Flags for opening a database (see {!Dbm.opendbm}). *)
exception Dbm_error of string
(** Raised by the following functions when an error is encountered. *)
val opendbm : string -> open_flag list -> int -> t
(** Open a descriptor on an NDBM database. The first argument is
the name of the database (without the [.dir] and [.pag] suffixes).
The second argument is a list of flags: [Dbm_rdonly] opens
the database for reading only, [Dbm_wronly] for writing only,
[Dbm_rdwr] for reading and writing; [Dbm_create] causes the
database to be created if it does not already exist.
The third argument is the permissions to give to the database
files, if the database is created. *)
external close : t -> unit = "caml_dbm_close"
(** Close the given descriptor. *)
external find : t -> string -> string = "caml_dbm_fetch"
(** [find db key] returns the data associated with the given
[key] in the database opened for the descriptor [db].
Raise [Not_found] if the [key] has no associated data. *)
external add : t -> string -> string -> unit = "caml_dbm_insert"
(** [add db key data] inserts the pair ([key], [data]) in
the database [db]. If the database already contains data
associated with [key], raise [Dbm_error "Entry already exists"]. *)
external replace : t -> string -> string -> unit = "caml_dbm_replace"
(** [replace db key data] inserts the pair ([key], [data]) in
the database [db]. If the database already contains data
associated with [key], that data is discarded and silently
replaced by the new [data]. *)
external remove : t -> string -> unit = "caml_dbm_delete"
(** [remove db key data] removes the data associated with [key]
in [db]. If [key] has no associated data, raise
[Dbm_error "dbm_delete"]. *)
external firstkey : t -> string = "caml_dbm_firstkey"
(** See {!Dbm.nextkey}.*)
external nextkey : t -> string = "caml_dbm_nextkey"
(** Enumerate all keys in the given database, in an unspecified order.
[firstkey db] returns the first key, and repeated calls
to [nextkey db] return the remaining keys. [Not_found] is raised
when all keys have been enumerated. *)
val iter : (string -> string -> 'a) -> t -> unit
(** [iter f db] applies [f] to each ([key], [data]) pair in
the database [db]. [f] receives [key] as first argument
and [data] as second argument. *)