Source file primitives.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
[@@@warning "-incompatible-with-upstream"]
external box_bool
: (bool#[@unboxed])
-> (bool[@local_opt])
@@ stateless
= "%int8_of_int8#"
let box_char c =
let open struct
external char_u_to_int : (char#[@unboxed]) -> int @@ stateless = "%int_of_int8#"
end in
let signed_int = char_u_to_int c in
let unsigned_int = signed_int land ((1 lsl 8) - 1) in
Char.chr unsigned_int
;;
external box_float : (float#[@unboxed]) -> (float[@local_opt]) @@ stateless = "%box_float"
external box_int : (int#[@unboxed]) -> (int[@local_opt]) @@ stateless = "%int_of_int#"
external box_int32 : (int32#[@unboxed]) -> (int32[@local_opt]) @@ stateless = "%box_int32"
external box_int64 : (int64#[@unboxed]) -> (int64[@local_opt]) @@ stateless = "%box_int64"
external box_nativeint
: (nativeint#[@unboxed])
-> (nativeint[@local_opt])
@@ stateless
= "%box_nativeint"
external unbox_bool
: (bool[@local_opt])
-> (bool#[@unboxed])
@@ stateless
= "%int8#_of_int8"
external unbox_char
: (char[@local_opt])
-> (char#[@unboxed])
@@ stateless
= "%int8#_of_int8"
external unbox_float : float @ local -> (float#[@unboxed]) @@ stateless = "%unbox_float"
external unbox_int : (int[@local_opt]) -> (int#[@unboxed]) @@ stateless = "%int#_of_int"
external unbox_int32 : int32 @ local -> (int32#[@unboxed]) @@ stateless = "%unbox_int32"
external unbox_int64 : int64 @ local -> (int64#[@unboxed]) @@ stateless = "%unbox_int64"
external unbox_nativeint
: nativeint @ local
-> (nativeint#[@unboxed])
@@ stateless
= "%unbox_nativeint"