package bam-ppx

  1. Overview
  2. Docs

Source file limits.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
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
OCaml

Innovation. Community. Security.