sig
type 'a ops = {
descr : string;
serialize : [ `Fast of 'a -> Bencode.t | `Slow of 'a -> Bencode.t Lwt.t ];
unserialize : Bencode.t -> 'a Maki.or_error;
}
val make :
serialize:[ `Fast of 'a -> Bencode.t | `Slow of 'a -> Bencode.t Lwt.t ] ->
unserialize:(Bencode.t -> 'a Maki.or_error) ->
string -> 'a Maki.Value.ops
val make_fast :
serialize:('a -> Bencode.t) ->
unserialize:(Bencode.t -> 'a Maki.or_error) ->
string -> 'a Maki.Value.ops
val make_slow :
serialize:('a -> Bencode.t Lwt.t) ->
unserialize:(Bencode.t -> 'a Maki.or_error) ->
string -> 'a Maki.Value.ops
val serialize : 'a Maki.Value.ops -> 'a -> Bencode.t Lwt.t
val unserialize : 'a Maki.Value.ops -> Bencode.t -> 'a Maki.or_error
val to_string : 'a Maki.Value.ops -> 'a -> string Lwt.t
val of_string : 'a Maki.Value.ops -> string -> 'a Maki.or_error
val int : int Maki.Value.ops
val string : string Maki.Value.ops
val bool : bool Maki.Value.ops
val float : float Maki.Value.ops
val list : 'a Maki.Value.ops -> 'a list Maki.Value.ops
val assoc : 'a Maki.Value.ops -> (string * 'a) list Maki.Value.ops
val map :
?descr:string ->
('a -> 'b) -> ('b -> 'a) -> 'b Maki.Value.ops -> 'a Maki.Value.ops
val file : Maki.path Maki.Value.ops
val program : Maki.program Maki.Value.ops
val set : 'a Maki.Value.ops -> 'a list Maki.Value.ops
val marshal : string -> 'a Maki.Value.ops
val pair :
'a Maki.Value.ops -> 'b Maki.Value.ops -> ('a * 'b) Maki.Value.ops
val triple :
'a Maki.Value.ops ->
'b Maki.Value.ops -> 'c Maki.Value.ops -> ('a * 'b * 'c) Maki.Value.ops
val quad :
'a Maki.Value.ops ->
'b Maki.Value.ops ->
'c Maki.Value.ops ->
'd Maki.Value.ops -> ('a * 'b * 'c * 'd) Maki.Value.ops
type t = Value : 'a Maki.Value.ops * 'a -> Maki.Value.t
val argv0 : Maki.Value.t
val pack : 'a Maki.Value.ops -> 'a -> Maki.Value.t
val pack_int : int -> Maki.Value.t
val pack_string : string -> Maki.Value.t
val pack_bool : bool -> Maki.Value.t
val pack_file : Maki.path -> Maki.Value.t
val pack_list : 'a Maki.Value.ops -> 'a list -> Maki.Value.t
val pack_program : Maki.program -> Maki.Value.t
val pack_set : 'a Maki.Value.ops -> 'a list -> Maki.Value.t
val pack_assoc : 'a Maki.Value.ops -> (string * 'a) list -> Maki.Value.t
end