sig
exception ConversionFailure of string
type 'a sequence = ('a -> unit) -> unit
val report_error : ('a, Buffer.t, unit, 'b) Pervasives.format4 -> 'a
module Encode :
sig
type 'a output = {
unit : 'a;
bool : bool -> 'a;
float : float -> 'a;
char : char -> 'a;
int : int -> 'a;
nativeint : nativeint -> 'a;
int32 : int32 -> 'a;
int64 : int64 -> 'a;
string : string -> 'a;
list : 'a list -> 'a;
option : 'a option -> 'a;
record : (string * 'a) list -> 'a;
tuple : 'a list -> 'a;
sum : string -> 'a list -> 'a;
}
val string_target : string CConv.Encode.output
type 'src encoder = {
emit : 'into. 'into CConv.Encode.output -> 'src -> 'into;
}
val unit : unit CConv.Encode.encoder
val bool : bool CConv.Encode.encoder
val float : float CConv.Encode.encoder
val char : char CConv.Encode.encoder
val int : int CConv.Encode.encoder
val nativeint : nativeint CConv.Encode.encoder
val int32 : int32 CConv.Encode.encoder
val int64 : int64 CConv.Encode.encoder
val string : string CConv.Encode.encoder
val list : 'a CConv.Encode.encoder -> 'a list CConv.Encode.encoder
val map :
('a -> 'b) -> 'b CConv.Encode.encoder -> 'a CConv.Encode.encoder
val array : 'a CConv.Encode.encoder -> 'a array CConv.Encode.encoder
val sequence :
'a CConv.Encode.encoder -> 'a CConv.sequence CConv.Encode.encoder
val apply :
'into CConv.Encode.output ->
'src CConv.Encode.encoder -> 'src -> 'into
type 'r record_encoder = {
record_emit :
'into. 'into CConv.Encode.output -> 'r -> (string * 'into) list;
}
val record : 'r CConv.Encode.record_encoder -> 'r CConv.Encode.encoder
val record_fix :
('r CConv.Encode.encoder -> 'r CConv.Encode.record_encoder) ->
'r CConv.Encode.encoder
type 't tuple_encoder = {
tuple_emit : 'into. 'into CConv.Encode.output -> 't -> 'into list;
}
val tuple : 'a CConv.Encode.tuple_encoder -> 'a CConv.Encode.encoder
val pair :
'a CConv.Encode.encoder ->
'b CConv.Encode.encoder -> ('a * 'b) CConv.Encode.encoder
val triple :
'a CConv.Encode.encoder ->
'b CConv.Encode.encoder ->
'c CConv.Encode.encoder -> ('a * 'b * 'c) CConv.Encode.encoder
val quad :
'a CConv.Encode.encoder ->
'b CConv.Encode.encoder ->
'c CConv.Encode.encoder ->
'd CConv.Encode.encoder -> ('a * 'b * 'c * 'd) CConv.Encode.encoder
type 's sum_encoder = {
sum_emit :
'into. 'into CConv.Encode.output -> 's -> string * 'into list;
}
val sum : 'a CConv.Encode.sum_encoder -> 'a CConv.Encode.encoder
val sum0 : ('a -> string) -> 'a CConv.Encode.encoder
val sum_fix :
('a CConv.Encode.encoder -> 'a CConv.Encode.sum_encoder) ->
'a CConv.Encode.encoder
val option : 'a CConv.Encode.encoder -> 'a option CConv.Encode.encoder
end
module Decode :
sig
type 'src source = {
emit : 'a. ('src, 'a) CConv.Decode.inner_decoder -> 'src -> 'a;
}
and ('src, 'into) inner_decoder = {
accept_unit : 'src CConv.Decode.source -> unit -> 'into;
accept_bool : 'src CConv.Decode.source -> bool -> 'into;
accept_float : 'src CConv.Decode.source -> float -> 'into;
accept_int : 'src CConv.Decode.source -> int -> 'into;
accept_int32 : 'src CConv.Decode.source -> int32 -> 'into;
accept_int64 : 'src CConv.Decode.source -> int64 -> 'into;
accept_nativeint : 'src CConv.Decode.source -> nativeint -> 'into;
accept_char : 'src CConv.Decode.source -> char -> 'into;
accept_string : 'src CConv.Decode.source -> string -> 'into;
accept_list : 'src CConv.Decode.source -> 'src list -> 'into;
accept_option : 'src CConv.Decode.source -> 'src option -> 'into;
accept_record :
'src CConv.Decode.source -> (string * 'src) list -> 'into;
accept_tuple : 'src CConv.Decode.source -> 'src list -> 'into;
accept_sum : 'src CConv.Decode.source -> string -> 'src list -> 'into;
}
type 'into decoder = {
dec : 'src. ('src, 'into) CConv.Decode.inner_decoder;
}
val apply :
'src CConv.Decode.source ->
'into CConv.Decode.decoder -> 'src -> 'into
val int : int CConv.Decode.decoder
val char : char CConv.Decode.decoder
val int32 : int32 CConv.Decode.decoder
val int64 : int64 CConv.Decode.decoder
val nativeint : nativeint CConv.Decode.decoder
val float : float CConv.Decode.decoder
val bool : bool CConv.Decode.decoder
val unit : unit CConv.Decode.decoder
val string : string CConv.Decode.decoder
val list : 'a CConv.Decode.decoder -> 'a list CConv.Decode.decoder
val array : 'a CConv.Decode.decoder -> 'a array CConv.Decode.decoder
val sequence :
'a CConv.Decode.decoder -> 'a CConv.sequence CConv.Decode.decoder
val map :
('a -> 'b) -> 'a CConv.Decode.decoder -> 'b CConv.Decode.decoder
val arg0 : 'src list -> unit
val arg1 :
'a CConv.Decode.decoder ->
'src CConv.Decode.source -> 'src list -> 'a
val arg2 :
'a CConv.Decode.decoder ->
'b CConv.Decode.decoder ->
'src CConv.Decode.source -> 'src list -> 'a * 'b
val arg3 :
'a CConv.Decode.decoder ->
'b CConv.Decode.decoder ->
'c CConv.Decode.decoder ->
'src CConv.Decode.source -> 'src list -> 'a * 'b * 'c
val option : 'a CConv.Decode.decoder -> 'a option CConv.Decode.decoder
val pair :
'a CConv.Decode.decoder ->
'b CConv.Decode.decoder -> ('a * 'b) CConv.Decode.decoder
val triple :
'a CConv.Decode.decoder ->
'b CConv.Decode.decoder ->
'c CConv.Decode.decoder -> ('a * 'b * 'c) CConv.Decode.decoder
val record_get :
string ->
'into CConv.Decode.decoder ->
'src CConv.Decode.source -> (string * 'src) list -> 'into
val record_get_opt :
string ->
'into CConv.Decode.decoder ->
'src CConv.Decode.source -> (string * 'src) list -> 'into option
type 'into record_decoder = {
record_accept :
'src. 'src CConv.Decode.source -> (string * 'src) list -> 'into;
}
val record :
'into CConv.Decode.record_decoder -> 'into CConv.Decode.decoder
val record_fix :
('into CConv.Decode.decoder -> 'into CConv.Decode.record_decoder) ->
'into CConv.Decode.decoder
type 'into sum_decoder = {
sum_accept :
'src. 'src CConv.Decode.source -> string -> 'src list -> 'into;
}
val sum : 'into CConv.Decode.sum_decoder -> 'into CConv.Decode.decoder
val sum_fix :
('into CConv.Decode.decoder -> 'into CConv.Decode.sum_decoder) ->
'into CConv.Decode.decoder
type 'into tuple_decoder = {
tuple_accept : 'src. 'src CConv.Decode.source -> 'src list -> 'into;
}
val tuple :
'into CConv.Decode.tuple_decoder -> 'into CConv.Decode.decoder
end
type 'a or_error = [ `Error of string | `Ok of 'a ]
val encode :
'src CConv.Encode.encoder -> 'into CConv.Encode.output -> 'src -> 'into
val to_string : 'src CConv.Encode.encoder -> 'src -> string
val decode_exn :
'src CConv.Decode.source -> 'into CConv.Decode.decoder -> 'src -> 'into
val decode :
'src CConv.Decode.source ->
'into CConv.Decode.decoder -> 'src -> 'into CConv.or_error
end