Page
Library
Module
Module type
Parameter
Class
Class type
Source
Lmdb.ConvSourceConverters 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 tmake ~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.