package hardcaml

  1. Overview
  2. Docs
On This Page
  1. Unsafe Operations
Legend:
Library
Module
Module type
Parameter
Class
Class type

Representation of variable width Constants and conversion to/from OCaml types.

type t
val compare : t -> t -> Base.Int.t
val sexp_of_t : t -> Ppx_sexp_conv_lib.Sexp.t
module Signedness : sig ... end
val empty : t
val create : Base.Int.t -> t

create n create a n bit constant, initialized to hold all 0s.

val width : t -> Base.Int.t

Bit width of constant

val to_binary_string : t -> Hardcaml__.Import.String.t

Convert a constant to a string of '1' and '0' chars.

val to_binary_string_hum : t -> Hardcaml__.Import.String.t

Same as to_binary_string but adds '_'s every chars

val to_int : t -> Base.Int.t

Convert constant to an int. Bits above Int.num_bits are dropped.

val to_int32 : t -> Base.Int32.t

Convert constant to an int32. Bits above Int32.num_bits are dropped.

val to_int64 : t -> Base.Int64.t

Convert constant to an int64. Bits above Int64.num_bits are dropped.

val to_int64_array : t -> Base.Int64.t Hardcaml__.Import.Array.t

Convert to array of int64s

val to_z : t -> Z.t

Convert to an unsigned arbitrary precision integer.

val to_hex_string : signedness:Signedness.t -> t -> Hardcaml__.Import.String.t

Convert to a hex encoded string.

val of_binary_string : Hardcaml__.Import.String.t -> t

Convert a string containing '1' and '0' characters to a constant. Width is inferred from the strings length.

val of_binary_string_hum : Hardcaml__.Import.String.t -> t

Same as of_binary_string but allow '_' chars

val of_int : width:Base.Int.t -> Base.Int.t -> t

Create a constant from the given int value.

val of_int32 : width:Base.Int.t -> Base.Int32.t -> t

Create a constant from the given int32 value

val of_int64 : width:Base.Int.t -> Base.Int64.t -> t

Create a constant from the given int64 value

val of_int64_array : width:Base.Int.t -> Base.Int64.t Hardcaml__.Import.Array.t -> t

Create from an array of int64s

val of_z : width:Base.Int.t -> Z.t -> t

Convert from an arbitrary precision integer.

val of_hex_string : signedness:Signedness.t -> width:Base.Int.t -> Hardcaml__.Import.String.t -> t

Create from a hex encoded string.

val int_of_hex_char : Hardcaml__.Import.Char.t -> Base.Int.t

Utility conversion functions to/from hex chars

val hex_char_of_int : Base.Int.t -> Hardcaml__.Import.Char.t
module type Bit = sig ... end
module Make_bit_list (Bit : Bit) : sig ... end

Create constant conversion functions from lists of some inner Bit.t type.

val of_bit_list : Base.Int.t Hardcaml__.Import.List.t -> t
val to_bit_list : t -> Base.Int.t Hardcaml__.Import.List.t
val pp : Hardcaml__.Import.Formatter.t -> t -> Hardcaml__.Import.Unit.t

Unsafe Operations

val unsafe_to_bytes : t -> Hardcaml__.Import.Bytes.t

Return the underlying Bytes.t representation of the constant. We label as unsafe as the output bytes are not copied. Mutating them should be done with care.

val unsafe_of_bytes : width:Base.Int.t -> Hardcaml__.Import.Bytes.t -> t

Construct a constant from the given Bytes.t. We label as unsafe as the input bytes are not copied. Mutating them should be done with care.

The length of the given Bytes.t must be rounded up to 64 bits and be the correct size of fit width bits or an exception is raised.

OCaml

Innovation. Community. Security.