File: yojson_conv.mli

package info (click to toggle)
ppx-yojson-conv-lib 0.17.0-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 128 kB
  • sloc: ml: 458; makefile: 14
file content (273 lines) | stat: -rw-r--r-- 10,732 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
(** Utility Module for Yojson Conversions *)

(** {6 Conversion of OCaml-values to Yojsons} *)

(** [yojson_of_unit ()] converts a value of type [unit] to an Yojson. *)
val yojson_of_unit : unit -> Yojson.Safe.t

(** [yojson_of_bool b] converts the value [b] of type [bool] to an
    Yojson. *)
val yojson_of_bool : bool -> Yojson.Safe.t

(** [yojson_of_string str] converts the value [str] of type [string] to an
    Yojson. *)
val yojson_of_string : string -> Yojson.Safe.t

(** [yojson_of_bytes str] converts the value [str] of type [bytes] to an
    Yojson. *)
val yojson_of_bytes : bytes -> Yojson.Safe.t

(** [yojson_of_char c] converts the value [c] of type [char] to an
    Yojson. *)
val yojson_of_char : char -> Yojson.Safe.t

(** [yojson_of_int n] converts the value [n] of type [int] to an
    Yojson. *)
val yojson_of_int : int -> Yojson.Safe.t

(** [yojson_of_float n] converts the value [n] of type [float] to an
    Yojson. *)
val yojson_of_float : float -> Yojson.Safe.t

(** [yojson_of_int32 n] converts the value [n] of type [int32] to an
    Yojson. *)
val yojson_of_int32 : int32 -> Yojson.Safe.t

(** [yojson_of_int64 n] converts the value [n] of type [int64] to an
    Yojson. *)
val yojson_of_int64 : int64 -> Yojson.Safe.t

(** [yojson_of_nativeint n] converts the value [n] of type [nativeint] to an
    Yojson. *)
val yojson_of_nativeint : nativeint -> Yojson.Safe.t

(** [yojson_of_ref conv r] converts the value [r] of type ['a ref] to
    an Yojson.  Uses [conv] to convert values of type ['a] to an
    Yojson. *)
val yojson_of_ref : ('a -> Yojson.Safe.t) -> 'a ref -> Yojson.Safe.t

(** [yojson_of_lazy_t conv l] converts the value [l] of type ['a lazy_t] to
    an Yojson.  Uses [conv] to convert values of type ['a] to an
    Yojson. *)
val yojson_of_lazy_t : ('a -> Yojson.Safe.t) -> 'a lazy_t -> Yojson.Safe.t

(** [yojson_of_option conv opt] converts the value [opt] of type ['a
    option] to an Yojson.  Uses [conv] to convert values of type
    ['a] to an Yojson. *)
val yojson_of_option : ('a -> Yojson.Safe.t) -> 'a option -> Yojson.Safe.t

(** [yojson_of_pair conv1 conv2 pair] converts a pair to an Yojson.
    It uses its first argument to convert the first element of the pair,
    and its second argument to convert the second element of the pair. *)
val yojson_of_pair
  :  ('a -> Yojson.Safe.t)
  -> ('b -> Yojson.Safe.t)
  -> 'a * 'b
  -> Yojson.Safe.t

(** [yojson_of_triple conv1 conv2 conv3 triple] converts a triple to
    an Yojson using [conv1], [conv2], and [conv3] to convert its
    elements. *)
val yojson_of_triple
  :  ('a -> Yojson.Safe.t)
  -> ('b -> Yojson.Safe.t)
  -> ('c -> Yojson.Safe.t)
  -> 'a * 'b * 'c
  -> Yojson.Safe.t

(** [yojson_of_list conv lst] converts the value [lst] of type ['a
    list] to an Yojson.  Uses [conv] to convert values of type
    ['a] to an Yojson. *)
val yojson_of_list : ('a -> Yojson.Safe.t) -> 'a list -> Yojson.Safe.t

(** [yojson_of_array conv ar] converts the value [ar] of type ['a
    array] to an Yojson.  Uses [conv] to convert values of type
    ['a] to an Yojson. *)
val yojson_of_array : ('a -> Yojson.Safe.t) -> 'a array -> Yojson.Safe.t

(** [yojson_of_hashtbl conv_key conv_value htbl] converts the value [htbl]
    of type [('a, 'b) Hashtbl.t] to an Yojson.  Uses [conv_key]
    to convert the hashtable keys of type ['a], and [conv_value] to
    convert hashtable values of type ['b] to Yojsons. *)
val yojson_of_hashtbl
  :  ('a -> Yojson.Safe.t)
  -> ('b -> Yojson.Safe.t)
  -> ('a, 'b) Hashtbl.t
  -> Yojson.Safe.t

(** [yojson_of_opaque x] converts the value [x] of opaque type to an
    Yojson.  This means the user need not provide converters,
    but the result cannot be interpreted. *)
val yojson_of_opaque : 'a -> Yojson.Safe.t

(** [yojson_of_fun f] converts the value [f] of function type to a
    dummy Yojson.  Functions cannot be serialized as Yojsons,
    but at least a placeholder can be generated for pretty-printing. *)
val yojson_of_fun : ('a -> 'b) -> Yojson.Safe.t

(** {6 Conversion of Yojsons to OCaml-values} *)

(** [Of_yojson_error (exn, yojson)] the exception raised when an Yojson
    could not be successfully converted to an OCaml-value. *)
exception Of_yojson_error of exn * Yojson.Safe.t

(** [record_check_extra_fields] checks for extra (= unknown) fields
    in record Yojsons. *)
val record_check_extra_fields : bool ref

(** [of_yojson_error reason yojson] @raise Of_yojson_error (Failure reason, yojson). *)
val of_yojson_error : string -> Yojson.Safe.t -> 'a

(** [of_yojson_error_exn exc yojson] @raise Of_yojson_error (exc, yojson). *)
val of_yojson_error_exn : exn -> Yojson.Safe.t -> 'a

(** [unit_of_yojson yojson] converts Yojson [yojson] to a value of type
    [unit]. *)
val unit_of_yojson : Yojson.Safe.t -> unit

(** [bool_of_yojson yojson] converts Yojson [yojson] to a value of type
    [bool]. *)
val bool_of_yojson : Yojson.Safe.t -> bool

(** [string_of_yojson yojson] converts Yojson [yojson] to a value of type
    [string]. *)
val string_of_yojson : Yojson.Safe.t -> string

(** [bytes_of_yojson yojson] converts Yojson [yojson] to a value of type
    [bytes]. *)
val bytes_of_yojson : Yojson.Safe.t -> bytes

(** [char_of_yojson yojson] converts Yojson [yojson] to a value of type
    [char]. *)
val char_of_yojson : Yojson.Safe.t -> char

(** [int_of_yojson yojson] converts Yojson [yojson] to a value of type
    [int]. *)
val int_of_yojson : Yojson.Safe.t -> int

(** [float_of_yojson yojson] converts Yojson [yojson] to a value of type
    [float]. *)
val float_of_yojson : Yojson.Safe.t -> float

(** [int32_of_yojson yojson] converts Yojson [yojson] to a value of type
    [int32]. *)
val int32_of_yojson : Yojson.Safe.t -> int32

(** [int64_of_yojson yojson] converts Yojson [yojson] to a value of type
    [int64]. *)
val int64_of_yojson : Yojson.Safe.t -> int64

(** [nativeint_of_yojson yojson] converts Yojson [yojson] to a value
    of type [nativeint]. *)
val nativeint_of_yojson : Yojson.Safe.t -> nativeint

(** [ref_of_yojson conv yojson] converts Yojson [yojson] to a value
    of type ['a ref] using conversion function [conv], which converts
    an Yojson to a value of type ['a]. *)
val ref_of_yojson : (Yojson.Safe.t -> 'a) -> Yojson.Safe.t -> 'a ref

(** [lazy_t_of_yojson conv yojson] converts Yojson [yojson] to a value
    of type ['a lazy_t] using conversion function [conv], which converts
    an Yojson to a value of type ['a]. *)
val lazy_t_of_yojson : (Yojson.Safe.t -> 'a) -> Yojson.Safe.t -> 'a lazy_t

(** [option_of_yojson conv yojson] converts Yojson [yojson] to a value
    of type ['a option] using conversion function [conv], which converts
    an Yojson to a value of type ['a]. *)
val option_of_yojson : (Yojson.Safe.t -> 'a) -> Yojson.Safe.t -> 'a option

(** [pair_of_yojson conv1 conv2 yojson] converts Yojson [yojson] to a pair
    of type ['a * 'b] using conversion functions [conv1] and [conv2],
    which convert Yojsons to values of type ['a] and ['b]
    respectively. *)
val pair_of_yojson
  :  (Yojson.Safe.t -> 'a)
  -> (Yojson.Safe.t -> 'b)
  -> Yojson.Safe.t
  -> 'a * 'b

(** [triple_of_yojson conv1 conv2 conv3 yojson] converts Yojson [yojson]
    to a triple of type ['a * 'b * 'c] using conversion functions [conv1],
    [conv2], and [conv3], which convert Yojsons to values of type
    ['a], ['b], and ['c] respectively. *)
val triple_of_yojson
  :  (Yojson.Safe.t -> 'a)
  -> (Yojson.Safe.t -> 'b)
  -> (Yojson.Safe.t -> 'c)
  -> Yojson.Safe.t
  -> 'a * 'b * 'c

(** [list_of_yojson conv yojson] converts Yojson [yojson] to a value
    of type ['a list] using conversion function [conv], which converts
    an Yojson to a value of type ['a]. *)
val list_of_yojson : (Yojson.Safe.t -> 'a) -> Yojson.Safe.t -> 'a list

(** [array_of_yojson conv yojson] converts Yojson [yojson] to a value
    of type ['a array] using conversion function [conv], which converts
    an Yojson to a value of type ['a]. *)
val array_of_yojson : (Yojson.Safe.t -> 'a) -> Yojson.Safe.t -> 'a array

(** [hashtbl_of_yojson conv_key conv_value yojson] converts Yojson
    [yojson] to a value of type [('a, 'b) Hashtbl.t] using conversion
    function [conv_key], which converts an Yojson to hashtable
    key of type ['a], and function [conv_value], which converts an
    Yojson to hashtable value of type ['b]. *)
val hashtbl_of_yojson
  :  (Yojson.Safe.t -> 'a)
  -> (Yojson.Safe.t -> 'b)
  -> Yojson.Safe.t
  -> ('a, 'b) Hashtbl.t

(** [opaque_of_yojson yojson] @raise Of_yojson_error when attempting to
    convert an Yojson to an opaque value. *)
val opaque_of_yojson : Yojson.Safe.t -> 'a

(** [fun_of_yojson yojson] @raise Of_yojson_error when attempting to
    convert an Yojson to a function. *)
val fun_of_yojson : Yojson.Safe.t -> 'a

module Primitives : sig
  val yojson_of_unit : unit -> Yojson.Safe.t
  val yojson_of_bool : bool -> Yojson.Safe.t
  val yojson_of_string : string -> Yojson.Safe.t
  val yojson_of_bytes : bytes -> Yojson.Safe.t
  val yojson_of_char : char -> Yojson.Safe.t
  val yojson_of_int : int -> Yojson.Safe.t
  val yojson_of_float : float -> Yojson.Safe.t
  val yojson_of_int32 : int32 -> Yojson.Safe.t
  val yojson_of_int64 : int64 -> Yojson.Safe.t
  val yojson_of_nativeint : nativeint -> Yojson.Safe.t
  val yojson_of_ref : ('a -> Yojson.Safe.t) -> 'a ref -> Yojson.Safe.t
  val yojson_of_lazy_t : ('a -> Yojson.Safe.t) -> 'a lazy_t -> Yojson.Safe.t
  val yojson_of_option : ('a -> Yojson.Safe.t) -> 'a option -> Yojson.Safe.t
  val yojson_of_list : ('a -> Yojson.Safe.t) -> 'a list -> Yojson.Safe.t
  val yojson_of_array : ('a -> Yojson.Safe.t) -> 'a array -> Yojson.Safe.t

  val yojson_of_hashtbl
    :  ('a -> Yojson.Safe.t)
    -> ('b -> Yojson.Safe.t)
    -> ('a, 'b) Hashtbl.t
    -> Yojson.Safe.t

  val unit_of_yojson : Yojson.Safe.t -> unit
  val bool_of_yojson : Yojson.Safe.t -> bool
  val string_of_yojson : Yojson.Safe.t -> string
  val bytes_of_yojson : Yojson.Safe.t -> bytes
  val char_of_yojson : Yojson.Safe.t -> char
  val int_of_yojson : Yojson.Safe.t -> int
  val float_of_yojson : Yojson.Safe.t -> float
  val int32_of_yojson : Yojson.Safe.t -> int32
  val int64_of_yojson : Yojson.Safe.t -> int64
  val nativeint_of_yojson : Yojson.Safe.t -> nativeint
  val ref_of_yojson : (Yojson.Safe.t -> 'a) -> Yojson.Safe.t -> 'a ref
  val lazy_t_of_yojson : (Yojson.Safe.t -> 'a) -> Yojson.Safe.t -> 'a lazy_t
  val option_of_yojson : (Yojson.Safe.t -> 'a) -> Yojson.Safe.t -> 'a option
  val list_of_yojson : (Yojson.Safe.t -> 'a) -> Yojson.Safe.t -> 'a list
  val array_of_yojson : (Yojson.Safe.t -> 'a) -> Yojson.Safe.t -> 'a array

  val hashtbl_of_yojson
    :  (Yojson.Safe.t -> 'a)
    -> (Yojson.Safe.t -> 'b)
    -> Yojson.Safe.t
    -> ('a, 'b) Hashtbl.t
end