aboutsummaryrefslogtreecommitdiffstats
path: root/lib/external/lmdb.ml
blob: 7b0812d2cabe185c49132fb31fb870b866636d67 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
open Ctypes
open PosixTypes
open Foreign

type mdb_result = (unit, int) Result.t

let mdb_result_of_int = function
  | 0 -> Ok ()
  | x -> Error x

let int_of_mdb_result = function
  | Ok _ -> 0
  | Error x -> x

let mdb_mode_t = mode_t

let mdb_result = view ~read:mdb_result_of_int ~write:int_of_mdb_result int

let mdb_env = ptr Void

let mdb_env_create = foreign "mdb_env_create" (ptr mdb_env @-> returning mdb_result)

let mdb_env_open = foreign "mdb_env_open" (ptr mdb_env @-> string @-> uint @-> mdb_mode_t @-> returning mdb_result)
let mdb_env_close = foreign "mdb_env_close" (ptr mdb_env @-> returning Void)