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
open Ty
type t =
{ min: int option
; max: int option
; size_min: int option
; size_max: int option
; ranged_min: Ranged_dmap.t
; ranged_max: Ranged_dmap.t
; sized_min: int Sized_map.t
; sized_max: int Sized_map.t }
let default =
{ min= None
; max= None
; size_min= None
; size_max= Some 10
; ranged_min= Ranged_dmap.empty
; ranged_max= Ranged_dmap.empty
; sized_min= Sized_map.empty
; sized_max= Sized_map.empty }
let int_min limits =
match Ranged_dmap.find_opt Int limits.ranged_min with
| None ->
limits.min
| Some i ->
Some i
let int_max limits =
match Ranged_dmap.find_opt Int limits.ranged_max with
| None ->
limits.max
| Some i ->
Some i
let int32_min limits =
match Ranged_dmap.find_opt Int32 limits.ranged_min with
| None ->
limits.min |> Option.map Int32.of_int
| Some i ->
Some i
let int32_max limits =
match Ranged_dmap.find_opt Int32 limits.ranged_max with
| None ->
limits.max |> Option.map Int32.of_int
| Some i ->
Some i
let int64_min limits =
match Ranged_dmap.find_opt Int64 limits.ranged_min with
| None ->
limits.min |> Option.map Int64.of_int
| Some i ->
Some i
let int64_max limits =
match Ranged_dmap.find_opt Int64 limits.ranged_max with
| None ->
limits.max |> Option.map Int64.of_int
| Some i ->
Some i
let sized_min limits sized =
match Sized_map.find_opt sized limits.sized_min with
| None ->
limits.size_min
| Some i ->
Some i
let sized_max limits sized =
match Sized_map.find_opt sized limits.sized_max with
| None ->
limits.size_max
| Some i ->
Some i