package wax-lib

All checked builds pass
  1. Overview
  2. Docs
Libraries for Wax, a Rust-like syntax for WebAssembly

Install

dune-project
 Dependency

Authors

Maintainers

Sources

wax-v0.3.0.tbz
sha256=cc19989d0db930d9300d7356c8f127309424a82767dd3c91ffd19a0bfd20e3a6
sha512=14ff9219dc6c4e8855c3cb895bd1af6fd81d1c521afefe1e7f69208a2e37abc7ec0946f188198a26780aa405fd43a526b938158334a019f7a5d991d8efc437c3

doc/src/wax-lib.utils/uint32.ml.html

Source file uint32.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
type t = Int32.t

let of_string s =
  try
    if String.starts_with ~prefix:"0x" s then Int32.of_string s
    else Int32.of_string ("0u" ^ s)
  with Failure _ as e ->
    Printf.eprintf "Unsigned int overflow: %s\n%!" s;
    raise e

(* [Printf.sprintf "%lu"] runs the [camlinternalFormat] interpreter on every
   call — a heavy per-call allocation, and this renders every index/constant in
   the output. A non-negative [Int32] already reads as its unsigned self, so the
   overwhelmingly common case (indices, offsets, small constants) takes the
   lightweight [Int32.to_string] primitive; only a top-bit-set value (unsigned
   >= 2^31, rare) needs the format interpreter. *)
let to_string s =
  if Int32.compare s 0l >= 0 then Int32.to_string s else Printf.sprintf "%lu" s

let of_int i = Int32.of_int i

let to_int i =
  match Int32.unsigned_to_int i with Some i -> i | None -> assert false

let zero = 0l
let one = 1l
let succ = Int32.succ
let add = Int32.add
let compare = Int32.compare