1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162(*
* Copyright (c) 2022 Tarides <contact@tarides.com>
*
* Permission to use, copy, modify, and distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
* copyright notice and this permission notice appear in all copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*)moduletypeS=sigtypettypekeytypevaluevalv:Conf.t->tLwt.t(** [v config] initialises a storage layer, with the configuration [config]. *)valmem:t->key->boolLwt.t(** [mem t k] is true iff [k] is present in [t]. *)valfind:t->key->valueoptionLwt.t(** [find t k] is [Some v] if [k] is associated to [v] in [t] and [None] is
[k] is not present in [t]. *)valkeys:t->keylistLwt.t(** [keys t] it the list of keys in [t]. *)valset:t->key->value->unitLwt.t(** [set t k v] sets the contents of [k] to [v] in [t]. *)valremove:t->key->unitLwt.t(** [remove t k] removes the key [k] in [t]. *)valbatch:t->(t->'aLwt.t)->'aLwt.t(** [batch t f] applies the operations in [f] in a batch. The exact guarantees
depend on the implementation. *)valclear:t->unitLwt.t(** [clear t] clears the storage. This operation is expected to be slow. *)valclose:t->unitLwt.t(** [close t] frees up all the resources associated with [t]. *)endmoduletypeMake=functor(Key:Type.S)(Value:Type.S)->Swithtypekey=Key.tandtypevalue=Value.tmoduletypeSigs=sigmoduletypeS=S(** [S] is a storage layer that can be used to build Irmin stores. *)moduletypeMake=Make(** [Make] parameterizes a storage layer over a key [Key] and a value [Value].
This is the signature to implement when building custom storage for Irmin. *)end