jon.recoil.org

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    64

In 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
Sourcemodule Make (I : sig ... end) : sig ... end

human-friendly string (and possibly sexp) conversions

Sourcemodule Make_hex (I : sig ... end) : sig ... end

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.

Sourcemodule Make_binary (I : sig ... end) : sig ... end

in the output, to_string, to_string_hum, and sexp_of_t convert t to an unsigned binary representation with an "0b" prefix.

Sourceval sexp_of_int_style : [ `No_underscores | `Underscores ] Base.Dynamic.t @@ portable

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:'_'