ocaml/otherlibs/dbm/dbm.mli

65 lines
3.5 KiB
OCaml

(***********************************************************************)
(* *)
(* Objective Caml *)
(* *)
(* Francois Rouaix, projet Cristal, INRIA Rocquencourt *)
(* *)
(* Copyright 1996 Institut National de Recherche en Informatique et *)
(* Automatique. Distributed only by permission. *)
(* *)
(***********************************************************************)
(* $Id$ *)
(* Module [Dbm]: interface to the NDBM databases *)
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. *)
external opendbm : string -> open_flag list -> int -> t
= "caml_dbm_open"
(* 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. *)