Module Ocamlformat_stdlib.Int_conversionsSource
include module type of struct include Base.Int_conversions end
Sourceval int_to_int32 : int @ local -> int32 option @@ portable Ocaml has the following integer types, with the following bit widths on 32-bit and 64-bit architectures.
arch arch
type 32b 64b
----------------------
int 31 63 (32 when compiled to JavaScript)
nativeint 32 64
int32 32 32
int64 64 64In both cases, the following inequalities hold:
width int < width nativeint && width int32 <= width nativeint <= width int64
The conversion functions come in one of two flavors.
If width(foo) <= width(bar) on both 32-bit and 64-bit architectures, then we have
val foo_to_bar : foo -> bar
otherwise we have
val foo_to_bar : foo -> bar option
val foo_to_bar_exn : foo -> bar
Sourceval int_to_int32_exn : int @ local -> int32 @ local @@ portable Sourceval int_to_int32_trunc : int @ local -> int32 @@ portable Sourceval int_to_int64 : int @ local -> int64 @@ portable Sourceval int_to_nativeint : int @ local -> nativeint @@ portable Sourceval int32_to_int : int32 @ local -> int option @@ portable Sourceval int32_to_int_exn : int32 @ local -> int @@ portable Sourceval int32_to_int_trunc : int32 @ local -> int @@ portable Sourceval int32_to_int64 : int32 @ local -> int64 @@ portable Sourceval int32_to_nativeint : int32 @ local -> nativeint @@ portable Sourceval int32_is_representable_as_int : int32 @ local -> bool @@ portable Sourceval int64_to_int : int64 @ local -> int option @@ portable Sourceval int64_to_int_exn : int64 @ local -> int @@ portable Sourceval int64_to_int_trunc : int64 @ local -> int @@ portable Sourceval int64_to_int32 : int64 @ local -> int32 option @@ portable Sourceval int64_to_int32_exn :
int64 @ local ->
int32 @ local @@ portable
[@@zero_alloc] Sourceval int64_to_int32_trunc : int64 @ local -> int32 @@ portable Sourceval int64_to_nativeint : int64 @ local -> nativeint option @@ portable Sourceval int64_to_nativeint_exn : int64 @ local -> nativeint @ local @@ portable Sourceval int64_to_nativeint_trunc : int64 @ local -> nativeint @@ portable Sourceval int64_fit_on_int63_exn : int64 @ local -> unit @@ portable Sourceval int64_is_representable_as_int63 : int64 @ local -> bool @@ portable Sourceval nativeint_to_int : nativeint @ local -> int option @@ portable Sourceval nativeint_to_int_exn : nativeint @ local -> int @@ portable Sourceval nativeint_to_int_trunc : nativeint @ local -> int @@ portable Sourceval nativeint_to_int32 : nativeint @ local -> int32 option @@ portable Sourceval nativeint_to_int32_exn : nativeint @ local -> int32 @ local @@ portable Sourceval nativeint_to_int32_trunc : nativeint @ local -> int32 @@ portable Sourceval nativeint_to_int64 : nativeint @ local -> int64 @@ portable Sourceval num_bits_int : int @@ portable Sourceval num_bits_int32 : int @@ portable Sourceval num_bits_int64 : int @@ portable Sourceval num_bits_nativeint : int @@ portable human-friendly string (and possibly sexp) conversions
in the output, to_string, of_string, sexp_of_t, and t_of_sexp convert between t and signed hexadecimal with an optional "0x" or "0X" prefix.
in the output, to_string, to_string_hum, and sexp_of_t convert t to an unsigned binary representation with an "0b" prefix.
global ref affecting whether the sexp_of_t returned by Make is consistent with the to_string input or the to_string_hum output
utility for defining to_string_hum on numeric types -- takes a string matching
(-|+)?[0-9a-fA-F]+ and puts [delimiter] every [chars_per_delimiter] characters
starting from the right.
Sourceval insert_delimiter_every :
string ->
delimiter:char ->
chars_per_delimiter:int ->
string @@ portable Sourceval insert_delimiter : string -> delimiter:char -> string @@ portable insert_delimiter_every ~chars_per_delimiter:3
Sourceval insert_underscores : string -> string @@ portable insert_delimiter ~delimiter:'_'