Page
Library
Module
Module type
Parameter
Class
Class type
Source
Lmdb.Conv
SourceConverters to and from the internal representation of keys and values. A converter contains serialising and deserialising functions as well as the flags applied when the converter is used in a map.
Bigstrings are used to transfer the raw serialised data into and out of the database. They may point directly to a memory-mapped region of the database file.
Flags describing the (sorting) properties of keys and values of a map.
val make :
?flags:Flags.t ->
serialise:((int -> bigstring) -> 'a -> bigstring) ->
deserialise:(bigstring -> 'a) ->
unit ->
'a t
make ~serialise ~deserialise
creates a converter from a serialising and a deserialising function
If serialise
calls alloc
the library may utilise the MDB_RESERVE
interface when appropriate to avoid calls to malloc
and memcpy
.
Depending on the use of a converter as key or value Map.create
and Map.open_existing
will select the correct set of flags: _key
flags will be used for keys and _dup
flags will be used for values on maps supporting duplicates.
The bigstring
converter returns bigstrings as returned by the lmdb backend. These bigstrings point into the environment memory-map and are therefore only guaranteed to be valid until the transaction ends. If you need longer-lived values then use the string
converter, make a copy or write a custom converter.
The string
converter simply copies the raw database content from / to OCaml strings.
The integer converters will make use of Flags.t
as appropriate so that integers are sorted in ascending order irrespective of machine endianness.
For convenience, the _as_int
converters convert the internal integer representation to and from int
.