Source file binary_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
open Type_core
open Staging
module Types = struct
type 'a encoder = 'a -> (string -> unit) -> unit
type 'a decoder = string -> int ref -> 'a
type 'a sizer = 'a Size.Sizer.t
end
open Types
module type S = sig
type t
val encode : t encoder
val decode : t decoder
val sizer : t sizer
end
module type S_with_length = sig
type t
val encode : len -> t encoder staged
val decode : len -> t decoder staged
val sizer : len -> t sizer
end
module type S1 = sig
type 'a t
val encode : 'a encoder -> 'a t encoder
val decode : 'a decoder -> 'a t decoder
val sizer : 'a sizer -> 'a t sizer
end
module type S1_with_length = sig
type 'a t
val encode : len -> 'a encoder -> 'a t encoder staged
val decode : len -> 'a decoder -> 'a t decoder staged
val sizer : len -> 'a sizer -> 'a t sizer
end
module type S2 = sig
type ('a, 'b) t
val encode : 'a encoder -> 'b encoder -> ('a, 'b) t encoder
val decode : 'a decoder -> 'b decoder -> ('a, 'b) t decoder
val sizer : 'a sizer -> 'b sizer -> ('a, 'b) t sizer
end
module type S3 = sig
type ('a, 'b, 'c) t
val encode : 'a encoder -> 'b encoder -> 'c encoder -> ('a, 'b, 'c) t encoder
val decode : 'a decoder -> 'b decoder -> 'c decoder -> ('a, 'b, 'c) t decoder
val sizer : 'a sizer -> 'b sizer -> 'c sizer -> ('a, 'b, 'c) t sizer
end
module type S4 = sig
type ('a, 'b, 'c, 'd) t
val encode :
'a encoder ->
'b encoder ->
'c encoder ->
'd encoder ->
('a, 'b, 'c, 'd) t encoder
val decode :
'a decoder ->
'b decoder ->
'c decoder ->
'd decoder ->
('a, 'b, 'c, 'd) t decoder
val sizer :
'a sizer -> 'b sizer -> 'c sizer -> 'd sizer -> ('a, 'b, 'c, 'd) t sizer
end
module type Intf = sig
include module type of Types
module type S = S
module type S1 = S1
module type S2 = S2
module type S3 = S3
module type S4 = S4
module Unit : S with type t := unit
module Bool : S with type t := bool
module Char : S with type t := char
module Varint : S with type t := int
module Varint_int63 : S with type t := Optint.Int63.t
module Int16 : S with type t := int
module Int32 : S with type t := int32
module Int64 : S with type t := int64
module Float : S with type t := float
module String : S_with_length with type t := string
module String_unboxed : S_with_length with type t := string
module Bytes : S_with_length with type t := bytes
module Bytes_unboxed : S_with_length with type t := bytes
module List : S1_with_length with type 'a t := 'a list
module Array : S1_with_length with type 'a t := 'a array
module Option : S1 with type 'a t := 'a option
module Pair : S2 with type ('a, 'b) t := 'a * 'b
module Triple : S3 with type ('a, 'b, 'c) t := 'a * 'b * 'c
module Quad : S4 with type ('a, 'b, 'c, 'd) t := 'a * 'b * 'c * 'd
end