sig
type ('a, 'b) value_decoder = 'a -> [ `Error of string | `Ok of 'b ]
type ('b, 'a) value_encoder = 'b -> 'a
type ('a, 'b) value_codec =
('a, 'b) Jsonc.value_decoder * ('b, 'a) Jsonc.value_encoder
type loc = (int * int) * (int * int)
type 'a def = Jsonc.loc * 'a
val invalid_loc : Jsonc.loc
val is_invalid_loc : Jsonc.loc -> bool
val invalid_def : 'a -> 'a Jsonc.def
val undef : 'a Jsonc.def -> 'a
type nat_string = Jsonc_codec.nat_string
val nat_string_of_string : string -> Jsonc.nat_string
val nat_string_to_string : Jsonc.nat_string -> string
type soup = Jsonc_codec.soup
type obj
type 'a codec
val default : 'a Jsonc.codec -> 'a
val with_default : 'a -> 'a Jsonc.codec -> 'a Jsonc.codec
val null : [ `Null ] Jsonc.codec
val bool : bool Jsonc.codec
val float : float Jsonc.codec
val int : int Jsonc.codec
val int_strict : int Jsonc.codec
val string : string Jsonc.codec
val nat_string : Jsonc.nat_string Jsonc.codec
val nullable : 'a Jsonc.codec -> 'a option Jsonc.codec
val view :
?default:'b ->
('a, 'b) Jsonc.value_codec -> 'a Jsonc.codec -> 'b Jsonc.codec
val enum : ?default:'a -> (string * 'a) list -> 'a Jsonc.codec
val type_match :
default:'a ->
([ `Array | `Bool | `Float | `Null | `Object | `String ] ->
[ `Error of string | `Ok of 'a Jsonc.codec ]) ->
('a -> 'a Jsonc.codec) -> 'a Jsonc.codec
val soup : Jsonc.soup Jsonc.codec
type json =
[ `A of Jsonc.json list
| `Bool of bool
| `Float of float
| `Null
| `O of (Jsonc.nat_string * Jsonc.json) list
| `String of Jsonc.nat_string ]
val json : Jsonc.json Jsonc.codec
val some : 'a Jsonc.codec -> 'a option Jsonc.codec
val array : 'a Jsonc.codec -> 'a list Jsonc.codec
val array_array : 'a Jsonc.codec -> 'a array Jsonc.codec
type objc
type 'a mem
type 'a anon
val objc : ?kind:string -> unit -> Jsonc.objc
val mem :
?eq:('a -> 'a -> bool) ->
?opt:[ `No | `Yes | `Yes_rem ] ->
Jsonc.objc -> string -> 'a Jsonc.codec -> 'a Jsonc.mem
val mem_opt : Jsonc.objc -> string -> 'a Jsonc.codec -> 'a option Jsonc.mem
val mem_match :
?eq:('b -> 'b -> bool) ->
?opt:[ `No | `Yes | `Yes_rem ] ->
Jsonc.objc ->
'a Jsonc.mem -> string -> ('a -> 'b Jsonc.codec) -> 'b Jsonc.mem
val anon :
?default:(string * 'a) list ->
Jsonc.objc -> 'a Jsonc.codec -> 'a Jsonc.anon
val obj : ?seal:bool -> Jsonc.objc -> Jsonc.obj Jsonc.codec
type memv
val memv : 'a Jsonc.mem -> 'a -> Jsonc.memv
val anonv : 'a Jsonc.anon -> string -> 'a -> Jsonc.memv
val new_obj : Jsonc.obj Jsonc.codec -> Jsonc.memv list -> Jsonc.obj
val get : 'a Jsonc.mem -> Jsonc.obj -> 'a
val set : 'a Jsonc.mem -> Jsonc.obj -> 'a -> Jsonc.obj
val anon_names : 'a Jsonc.anon -> Jsonc.obj -> string list
val find_anon : 'a Jsonc.anon -> string -> Jsonc.obj -> 'a option
val get_anon : 'a Jsonc.anon -> string -> Jsonc.obj -> 'a
val add_anon : 'a Jsonc.anon -> string -> Jsonc.obj -> 'a -> Jsonc.obj
val rem_anon : 'a Jsonc.anon -> string -> Jsonc.obj -> Jsonc.obj
val get_def : 'a Jsonc.mem -> Jsonc.obj -> 'a Jsonc.def
val find_anon_def :
'a Jsonc.anon -> string -> Jsonc.obj -> 'a Jsonc.def option
val get_anon_def : 'a Jsonc.anon -> string -> Jsonc.obj -> 'a Jsonc.def
type error =
[ `Json_decoder of Jsonc_codec.error
| `Member of string * string * [ `Dup | `Miss | `Unknown ]
| `Type of string * string
| `Value_decoder of string ]
val error_to_string : Jsonc.error -> string
type 'a decoder
val decoder :
?loc:bool ->
?dups:[ `Error | `Skip ] ->
?unknown:[ `Error | `Skip ] ->
Jsonc_codec.decoder -> 'a Jsonc.codec -> 'a Jsonc.decoder
val decode :
'a Jsonc.decoder ->
[ `Await | `Error of Jsonc.error Jsonc.def | `Ok of 'a Jsonc.def ]
val decoder_decoder : 'a Jsonc.decoder -> Jsonc_codec.decoder
type encoder
val encoder : Jsonc_codec.encoder -> 'a Jsonc.codec -> 'a -> Jsonc.encoder
val encode : Jsonc.encoder -> [ `Ok | `Partial ]
val encoder_encoder : Jsonc.encoder -> Jsonc_codec.encoder
end