package lmdb
Module Lmdb.ConvSource
Converters 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.
Types
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.
Constructor and accessors
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.
Predefined converters
Strings
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.
Integers
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.