Source file hashable_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
open! Import
module type Common = sig
type t [@@deriving compare, hash]
val hashable : t Hashtbl.Hashable.t
end
module type S_plain = sig
include Common
module Table : Hashtbl.S_plain with type key = t
module Hash_set : Hash_set.S_plain with type elt = t
module Hash_queue : Hash_queue.S with type key = t
end
module type S = sig
include Common
module Table : Hashtbl.S with type key = t
module Hash_set : Hash_set.S with type elt = t
module Hash_queue : Hash_queue.S with type key = t
end
module type S_binable = sig
type t [@@deriving hash]
val hashable : t Hashtbl.Hashable.t
module Table : Hashtbl.S_binable with type key = t
module Hash_set : Hash_set.S_binable with type elt = t
module Hash_queue : Hash_queue.S with type key = t
end
module type Hashable = sig
module type Common = Common
module type S = S
module type S_binable = S_binable
module type S_plain = S_plain
module Make_plain (T : sig
type t [@@deriving hash]
include Hashtbl.Key_plain with type t := t
end) : S_plain with type t := T.t
module Make_plain_and_derive_hash_fold_t (T : Hashtbl.Key_plain) :
S_plain with type t := T.t
module Make (T : sig
type t [@@deriving hash]
include Hashtbl.Key with type t := t
end) : S with type t := T.t
module Make_and_derive_hash_fold_t (T : Hashtbl.Key) : S with type t := T.t
module Make_binable (T : sig
type t [@@deriving hash]
include Hashtbl.Key_binable with type t := t
end) : S_binable with type t := T.t
module Make_plain_with_hashable (T : sig
module Key : sig
type t [@@deriving hash]
include Hashtbl.Key_plain with type t := t
end
val hashable : Key.t Hashtbl.Hashable.t
end) : S_plain with type t := T.Key.t
module Make_with_hashable (T : sig
module Key : sig
type t [@@deriving hash]
include Hashtbl.Key with type t := t
end
val hashable : Key.t Hashtbl.Hashable.t
end) : S with type t := T.Key.t
module Make_binable_with_hashable (T : sig
module Key : sig
type t [@@deriving hash]
include Hashtbl.Key_binable with type t := t
end
val hashable : Key.t Hashtbl.Hashable.t
end) : S_binable with type t := T.Key.t
module Make_binable_and_derive_hash_fold_t (T : Hashtbl.Key_binable) :
S_binable with type t := T.t
module Stable : sig
module V1 : sig
module type S = sig
type key
module Table : sig
type 'a t = (key, 'a) Hashtbl.t [@@deriving sexp, bin_io]
end
module Hash_set : sig
type t = key Hash_set.t [@@deriving sexp, bin_io]
end
val hashable : key Hashtbl.Hashable.t
end
module Make (Key : Hashtbl.Key_binable) : S with type key := Key.t
module Make_with_hashable (T : sig
module Key : Hashtbl.Key_binable
val hashable : Key.t Hashtbl.Hashable.t
end) : S with type key := T.Key.t
module With_stable_witness : sig
module type S = sig
type key
module Table : sig
type 'a t = (key, 'a) Hashtbl.t [@@deriving sexp, bin_io, stable_witness]
end
module Hash_set : sig
type t = key Hash_set.t [@@deriving sexp, bin_io, stable_witness]
end
val hashable : key Hashtbl.Hashable.t
end
module Make (Key : Hashtbl.Key_stable) : S with type key := Key.t
module Make_with_hashable (T : sig
module Key : Hashtbl.Key_stable
val hashable : Key.t Hashtbl.Hashable.t
end) : S with type key := T.Key.t
end
end
end
end