Ocsipersist_lib.Polymorphicderiving polymorphic interface from the functorial one
module Functorial : Sigs.FUNCTORIALval table_name : 'value table -> string Lwt.treturns the name of the table
val open_table : string -> 'value table Lwt.tOpen a table (and create it if it does not exist)
val find : 'value table -> string -> 'value Lwt.tfind table key gives the value associated to key. Fails with Not_found if not found.
val add : 'value table -> string -> 'value -> unit Lwt.tadd table key value associates value to key. If the database already contains data associated with key, that data is discarded and silently replaced by the new data.
val replace_if_exists : 'value table -> string -> 'value -> unit Lwt.treplace_if_exists table key value associates value to key only if key is already bound. If the database does not contain any data associated with key, fails with Not_found.
val remove : 'value table -> string -> unit Lwt.tremove table key removes the entry in the table if it exists
val length : 'value table -> int Lwt.tSize of a table.
val iter_step : (string -> 'a -> unit Lwt.t) -> 'a table -> unit Lwt.tImportant warning: this iterator may not iter on all data of the table if another thread is modifying it in the same time. Nonetheless, it should not miss more than a very few data from time to time, except if the table is very old (at least 9 223 372 036 854 775 807 insertions).
val fold_step : (string -> 'a -> 'b -> 'b Lwt.t) -> 'a table -> 'b -> 'b Lwt.tImportant warning: this iterator may not iter on all data of the table if another thread is modifying it in the same time. Nonetheless, it should not miss more than a very few data from time to time, except if the table is very old (at least 9 223 372 036 854 775 807 insertions).
val iter_block : (string -> 'a -> unit) -> 'a table -> unit Lwt.tMAJOR WARNING: Unlike iter_step, this iterator won't miss any entry and will run in one shot. It is therefore more efficient, BUT: it will lock the WHOLE database during its execution, thus preventing ANYBODY from accessing it (including the function f which is iterated). As a consequence: you MUST NOT use any function from ocsipersist in f, otherwise you would lock yourself and everybody else! Be VERY cautious.