summaryrefslogtreecommitdiff
path: root/otherlibs/dbm/dbm.mli
blob: a228b28d160c6347969e9a78e25b890eb2066844 (plain)
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
(***********************************************************************)
(*                                                                     *)
(*                           Objective Caml                            *)
(*                                                                     *)
(*          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.         *)
(*                                                                     *)
(***********************************************************************)

(* $Id$ *)

(* Module [Dbm]: 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 [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"
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. *)