Source file type_class_intf.ml
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
274
275
276
277
278
279
280
281
module Definitions = struct
type 'a writer =
{ size : 'a Size.sizer
; write : 'a Write.writer
}
type 'a reader =
{ read : 'a Read.reader
; vtag_read : (int -> 'a) Read.reader
}
type 'a t =
{ shape : Shape.t
; writer : 'a writer
; reader : 'a reader
}
type 'a writer0 = 'a writer
type 'a reader0 = 'a reader
type 'a t0 = 'a t
module S1 = struct
type ('a, 'b) writer = 'a writer0 -> 'b writer0
type ('a, 'b) reader = 'a reader0 -> 'b reader0
type ('a, 'b) t = 'a t0 -> 'b t0
end
module S2 = struct
type ('a, 'b, 'c) writer = 'a writer0 -> ('b, 'c) S1.writer
type ('a, 'b, 'c) reader = 'a reader0 -> ('b, 'c) S1.reader
type ('a, 'b, 'c) t = 'a t0 -> ('b, 'c) S1.t
end
module S3 = struct
type ('a, 'b, 'c, 'd) writer = 'a writer0 -> ('b, 'c, 'd) S2.writer
type ('a, 'b, 'c, 'd) reader = 'a reader0 -> ('b, 'c, 'd) S2.reader
type ('a, 'b, 'c, 'd) t = 'a t0 -> ('b, 'c, 'd) S2.t
end
end
module type Type_class = sig
(** Sizers, writers, and readers in records *)
open Common
include module type of struct
include Definitions
end
val bin_writer_unit : unit writer
val bin_reader_unit : unit reader
val bin_shape_unit : Shape.t
val bin_unit : unit t
val bin_writer_bool : bool writer
val bin_reader_bool : bool reader
val bin_shape_bool : Shape.t
val bin_bool : bool t
val bin_writer_string : string writer
val bin_reader_string : string reader
val bin_shape_string : Shape.t
val bin_string : string t
val bin_writer_bytes : bytes writer
val bin_reader_bytes : bytes reader
val bin_shape_bytes : Shape.t
val bin_bytes : bytes t
val bin_writer_char : char writer
val bin_reader_char : char reader
val bin_shape_char : Shape.t
val bin_char : char t
val bin_writer_int : int writer
val bin_reader_int : int reader
val bin_shape_int : Shape.t
val bin_int : int t
val bin_writer_float : float writer
val bin_reader_float : float reader
val bin_shape_float : Shape.t
val bin_float : float t
val bin_writer_int32 : int32 writer
val bin_reader_int32 : int32 reader
val bin_shape_int32 : Shape.t
val bin_int32 : int32 t
val bin_writer_int64 : int64 writer
val bin_reader_int64 : int64 reader
val bin_shape_int64 : Shape.t
val bin_int64 : int64 t
val bin_writer_nativeint : nativeint writer
val bin_reader_nativeint : nativeint reader
val bin_shape_nativeint : Shape.t
val bin_nativeint : nativeint t
val bin_writer_nat0 : Nat0.t writer
val bin_reader_nat0 : Nat0.t reader
val bin_shape_nat0 : Shape.t
val bin_nat0 : Nat0.t t
val bin_writer_ref : ('a, 'a ref) S1.writer
val bin_reader_ref : ('a, 'a ref) S1.reader
val bin_shape_ref : Shape.t -> Shape.t
val bin_ref : ('a, 'a ref) S1.t
val bin_writer_lazy : ('a, 'a lazy_t) S1.writer
val bin_reader_lazy : ('a, 'a lazy_t) S1.reader
val bin_shape_lazy : Shape.t -> Shape.t
val bin_lazy : ('a, 'a lazy_t) S1.t
val bin_writer_option : ('a, 'a option) S1.writer
val bin_reader_option : ('a, 'a option) S1.reader
val bin_shape_option : Shape.t -> Shape.t
val bin_option : ('a, 'a option) S1.t
val bin_writer_pair : ('a, 'b, 'a * 'b) S2.writer
val bin_reader_pair : ('a, 'b, 'a * 'b) S2.reader
val bin_pair : ('a, 'b, 'a * 'b) S2.t
val bin_writer_triple : ('a, 'b, 'c, 'a * 'b * 'c) S3.writer
val bin_reader_triple : ('a, 'b, 'c, 'a * 'b * 'c) S3.reader
val bin_triple : ('a, 'b, 'c, 'a * 'b * 'c) S3.t
val bin_writer_list : ('a, 'a list) S1.writer
val bin_reader_list : ('a, 'a list) S1.reader
val bin_shape_list : Shape.t -> Shape.t
val bin_list : ('a, 'a list) S1.t
val bin_writer_array : ('a, 'a array) S1.writer
val bin_reader_array : ('a, 'a array) S1.reader
val bin_shape_array : Shape.t -> Shape.t
val bin_array : ('a, 'a array) S1.t
val bin_writer_hashtbl : ('a, 'b, ('a, 'b) Hashtbl.t) S2.writer
val bin_reader_hashtbl : ('a, 'b, ('a, 'b) Hashtbl.t) S2.reader
val bin_shape_hashtbl : Shape.t -> Shape.t -> Shape.t
val bin_hashtbl : ('a, 'b, ('a, 'b) Hashtbl.t) S2.t
val bin_writer_float32_vec : vec32 writer
val bin_reader_float32_vec : vec32 reader
val bin_shape_float32_vec : Shape.t
val bin_float32_vec : vec32 t
val bin_writer_float64_vec : vec64 writer
val bin_reader_float64_vec : vec64 reader
val bin_shape_float64_vec : Shape.t
val bin_float64_vec : vec64 t
val bin_writer_vec : vec writer
val bin_reader_vec : vec reader
val bin_shape_vec : Shape.t
val bin_vec : vec t
val bin_writer_float32_mat : mat32 writer
val bin_reader_float32_mat : mat32 reader
val bin_shape_float32_mat : Shape.t
val bin_float32_mat : mat32 t
val bin_writer_float64_mat : mat64 writer
val bin_reader_float64_mat : mat64 reader
val bin_shape_float64_mat : Shape.t
val bin_float64_mat : mat64 t
val bin_writer_mat : mat writer
val bin_reader_mat : mat reader
val bin_shape_mat : Shape.t
val bin_mat : mat t
val bin_writer_bigstring : buf writer
val bin_reader_bigstring : buf reader
val bin_shape_bigstring : Shape.t
val bin_bigstring : buf t
val bin_writer_floatarray : floatarray writer
val bin_reader_floatarray : floatarray reader
val bin_shape_floatarray : Shape.t
val bin_floatarray : floatarray t
val bin_writer_variant_int : int writer
val bin_reader_variant_int : int reader
val bin_variant_int : int t
val bin_writer_int_8bit : int writer
val bin_reader_int_8bit : int reader
val bin_shape_int_8bit : Shape.t
val bin_int_8bit : int t
val bin_writer_int_16bit : int writer
val bin_reader_int_16bit : int reader
val bin_shape_int_16bit : Shape.t
val bin_int_16bit : int t
val bin_writer_int_32bit : int writer
val bin_reader_int_32bit : int reader
val bin_shape_int_32bit : Shape.t
val bin_int_32bit : int t
val bin_writer_int_64bit : int writer
val bin_reader_int_64bit : int reader
val bin_shape_int_64bit : Shape.t
val bin_int_64bit : int t
val bin_writer_int64_bits : int64 writer
val bin_reader_int64_bits : int64 reader
val bin_shape_int64_bits : Shape.t
val bin_int64_bits : int64 t
val bin_writer_network16_int : int writer
val bin_reader_network16_int : int reader
val bin_shape_network16_int : Shape.t
val bin_network16_int : int t
val bin_writer_network32_int : int writer
val bin_reader_network32_int : int reader
val bin_shape_network32_int : Shape.t
val bin_network32_int : int t
val bin_writer_network32_int32 : int32 writer
val bin_reader_network32_int32 : int32 reader
val bin_shape_network32_int32 : Shape.t
val bin_network32_int32 : int32 t
val bin_writer_network64_int : int writer
val bin_reader_network64_int : int reader
val bin_shape_network64_int : Shape.t
val bin_network64_int : int t
val bin_writer_network64_int64 : int64 writer
val bin_reader_network64_int64 : int64 reader
val bin_shape_network64_int64 : Shape.t
val bin_network64_int64 : int64 t
(** Conversion of binable types *)
val cnv_writer : ('a -> 'b) -> 'b writer -> 'a writer
val cnv_reader : ('b -> 'a) -> 'b reader -> 'a reader
val cnv : (Shape.t -> Shape.t) -> ('a -> 'b) -> ('b -> 'a) -> 'b t -> 'a t
end