Source file ppx_compare_lib_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
(** Runtime support for auto-generated comparators. Users are not intended to use this
module directly. *)
open Basement.Or_null_shim.Export
module Definitions = struct
[%%template
[@@@mode.default l = (global, local)]
type ('a : any) compare = 'a @ l -> 'a @ l -> int
type ('a : any) equal = 'a @ l -> 'a @ l -> bool]
module Comparable = struct
[%%template
[@@@mode.default l = (global, local)]
module type S = sig
type t : any
val compare : (t compare[@mode l]) [@@mode l]
end
module type S1 = sig
type 'a t : any
val compare : ('a compare[@mode l]) -> ('a t compare[@mode l]) [@@mode l]
end
module type S2 = sig
type ('a, 'b) t : any
val compare
: ('a compare[@mode l])
-> ('b compare[@mode l])
-> (('a, 'b) t compare[@mode l])
[@@mode l]
end
module type S3 = sig
type ('a, 'b, 'c) t : any
val compare
: ('a compare[@mode l])
-> ('b compare[@mode l])
-> ('c compare[@mode l])
-> (('a, 'b, 'c) t compare[@mode l])
[@@mode l]
end]
end
module Equal = struct
[%%template
[@@@mode.default l = (global, local)]
module type S = sig
type t : any
val equal : (t equal[@mode l]) [@@mode l]
end
module type S1 = sig
type 'a t : any
val equal : ('a equal[@mode l]) -> ('a t equal[@mode l]) [@@mode l]
end
module type S2 = sig
type ('a, 'b) t : any
val equal
: ('a equal[@mode l])
-> ('b equal[@mode l])
-> (('a, 'b) t equal[@mode l])
[@@mode l]
end
module type S3 = sig
type ('a, 'b, 'c) t : any
val equal
: ('a equal[@mode l])
-> ('b equal[@mode l])
-> ('c equal[@mode l])
-> (('a, 'b, 'c) t equal[@mode l])
[@@mode l]
end]
end
end
module type Ppx_compare_lib = sig @@ portable
include module type of struct
include Definitions
end
(** Raise when fully applied *)
val%template compare_abstract : type_name:string -> (_ compare[@mode local])
val%template equal_abstract : type_name:string -> (_ equal[@mode local])
module Builtin : sig @@ portable
[%%template:
[@@@mode.default l = (global, local)]
val compare_bool : (bool compare[@mode l]) [@@zero_alloc arity 2]
val compare_char : (char compare[@mode l]) [@@zero_alloc arity 2]
val compare_float : (float compare[@mode l]) [@@zero_alloc arity 2]
val compare_int : (int compare[@mode l]) [@@zero_alloc arity 2]
val compare_int32 : (int32 compare[@mode l]) [@@zero_alloc arity 2]
val compare_int64 : (int64 compare[@mode l]) [@@zero_alloc arity 2]
val compare_nativeint : (nativeint compare[@mode l]) [@@zero_alloc arity 2]
val compare_string : (string compare[@mode l]) [@@zero_alloc arity 2]
val compare_bytes : (bytes compare[@mode l]) [@@zero_alloc arity 2]
val compare_unit : (unit compare[@mode l]) [@@zero_alloc arity 2]
val compare_array
: ('a : k mod separable).
('a compare[@mode l]) -> ('a array compare[@mode l])
[@@kind k = base_or_null]
val compare_iarray
: ('a : k mod separable).
('a compare[@mode l]) -> ('a Basement.Stdlib_iarray_labels.t compare[@mode l])
[@@kind k = (base_or_null, value_or_null mod external64)]
val compare_list
: ('a : value_or_null).
('a compare[@mode l]) -> ('a list compare[@mode l])
val compare_option
: ('a : value_or_null).
('a compare[@mode l]) -> ('a option compare[@mode l])
val compare_or_null : ('a compare[@mode l]) -> ('a or_null compare[@mode l])
val compare_ref
: ('a : value_or_null).
('a compare[@mode l]) -> ('a ref compare[@mode l])
val equal_bool : (bool equal[@mode l]) [@@zero_alloc arity 2]
val equal_char : (char equal[@mode l]) [@@zero_alloc arity 2]
val equal_float : (float equal[@mode l]) [@@zero_alloc arity 2]
val equal_int : (int equal[@mode l]) [@@zero_alloc arity 2]
val equal_int32 : (int32 equal[@mode l]) [@@zero_alloc arity 2]
val equal_int64 : (int64 equal[@mode l]) [@@zero_alloc arity 2]
val equal_nativeint : (nativeint equal[@mode l]) [@@zero_alloc arity 2]
val equal_string : (string equal[@mode l]) [@@zero_alloc arity 2]
val equal_bytes : (bytes equal[@mode l]) [@@zero_alloc arity 2]
val equal_unit : (unit equal[@mode l]) [@@zero_alloc arity 2]
val equal_array
: ('a : k mod separable).
('a equal[@mode l]) -> ('a array equal[@mode l])
[@@kind k = base_or_null]
val equal_iarray
: ('a : k mod separable).
('a equal[@mode l]) -> ('a Basement.Stdlib_iarray_labels.t equal[@mode l])
[@@kind k = (base_or_null, value_or_null mod external64)]
val equal_list : ('a : value_or_null). ('a equal[@mode l]) -> ('a list equal[@mode l])
val equal_option
: ('a : value_or_null).
('a equal[@mode l]) -> ('a option equal[@mode l])
val equal_ref : ('a : value_or_null). ('a equal[@mode l]) -> ('a ref equal[@mode l])
(** Unboxed numeric types *)
val compare_float_u : (float# compare[@mode l]) [@@zero_alloc arity 2]
val compare_int32_u : (int32# compare[@mode l]) [@@zero_alloc arity 2]
val compare_int64_u : (int64# compare[@mode l]) [@@zero_alloc arity 2]
val compare_nativeint_u : (nativeint# compare[@mode l]) [@@zero_alloc arity 2]
val equal_float_u : (float# equal[@mode l]) [@@zero_alloc arity 2]
val equal_int32_u : (int32# equal[@mode l]) [@@zero_alloc arity 2]
val equal_int64_u : (int64# equal[@mode l]) [@@zero_alloc arity 2]
val equal_nativeint_u : (nativeint# equal[@mode l]) [@@zero_alloc arity 2]]
end
end