mirror of
https://github.com/c-cube/ocaml-containers.git
synced 2025-12-06 11:15:31 -05:00
2 lines
No EOL
20 KiB
HTML
2 lines
No EOL
20 KiB
HTML
<!DOCTYPE html>
|
||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>CCNativeint (containers.CCNativeint)</title><link rel="stylesheet" href="../../odoc.css"/><meta charset="utf-8"/><meta name="viewport" content="width=device-width,initial-scale=1.0"/><script src="../../highlight.pack.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body><div class="content"><header><nav><a href="../index.html">Up</a> – <a href="../index.html">containers</a> » CCNativeint</nav><h1>Module <code>CCNativeint</code></h1><h2 id="nativeint"><a href="#nativeint" class="anchor"></a>Nativeint</h2><p>Helpers for processor-native integers</p><p>This module provides operations on the type <code>nativeint</code> of signed 32-bit integers (on 32-bit platforms) or signed 64-bit integers (on 64-bit platforms). This integer type has exactly the same width as that of a pointer type in the C compiler. All arithmetic operations over nativeint are taken modulo 2<sup>32</sup> or 2<sup>64</sup> depending on the word size of the architecture.</p><p>Performance notice: values of type <code>nativeint</code> occupy more memory space than values of type <code>int</code>, and arithmetic operations on <code>nativeint</code> are generally slower than those on <code>int</code>. Use <code>nativeint</code> only when the application requires the extra bit of precision over the <code>int</code> type.</p><dl><dt>since</dt><dd>2.1</dd></dl><nav class="toc"><ul><li><a href="#conversion">Conversion</a></li></ul></nav></header><div><div class="spec include"><div class="doc"><details open="open"><summary><span class="def"><code><span class="keyword">include </span><span class="keyword">module type of </span><span class="keyword">sig</span> ... <span class="keyword">end</span></code></span></summary><dl><dt class="spec value" id="val-zero"><a href="#val-zero" class="anchor"></a><code><span class="keyword">val </span>zero : nativeint</code></dt><dt class="spec value" id="val-one"><a href="#val-one" class="anchor"></a><code><span class="keyword">val </span>one : nativeint</code></dt><dt class="spec value" id="val-minus_one"><a href="#val-minus_one" class="anchor"></a><code><span class="keyword">val </span>minus_one : nativeint</code></dt></dl><dl><dt class="spec external" id="val-neg"><a href="#val-neg" class="anchor"></a><code><span class="keyword">external </span>neg : nativeint <span>-></span> nativeint = "%nativeint_neg" </code></dt><dt class="spec external" id="val-add"><a href="#val-add" class="anchor"></a><code><span class="keyword">external </span>add : nativeint <span>-></span> nativeint <span>-></span> nativeint = "%nativeint_add" </code></dt><dt class="spec external" id="val-sub"><a href="#val-sub" class="anchor"></a><code><span class="keyword">external </span>sub : nativeint <span>-></span> nativeint <span>-></span> nativeint = "%nativeint_sub" </code></dt><dt class="spec external" id="val-mul"><a href="#val-mul" class="anchor"></a><code><span class="keyword">external </span>mul : nativeint <span>-></span> nativeint <span>-></span> nativeint = "%nativeint_mul" </code></dt><dt class="spec external" id="val-div"><a href="#val-div" class="anchor"></a><code><span class="keyword">external </span>div : nativeint <span>-></span> nativeint <span>-></span> nativeint = "%nativeint_div" </code></dt><dt class="spec external" id="val-rem"><a href="#val-rem" class="anchor"></a><code><span class="keyword">external </span>rem : nativeint <span>-></span> nativeint <span>-></span> nativeint = "%nativeint_mod" </code></dt></dl><dl><dt class="spec value" id="val-succ"><a href="#val-succ" class="anchor"></a><code><span class="keyword">val </span>succ : nativeint <span>-></span> nativeint</code></dt><dt class="spec value" id="val-pred"><a href="#val-pred" class="anchor"></a><code><span class="keyword">val </span>pred : nativeint <span>-></span> nativeint</code></dt><dt class="spec value" id="val-abs"><a href="#val-abs" class="anchor"></a><code><span class="keyword">val </span>abs : nativeint <span>-></span> nativeint</code></dt><dt class="spec value" id="val-size"><a href="#val-size" class="anchor"></a><code><span class="keyword">val </span>size : int</code></dt><dt class="spec value" id="val-max_int"><a href="#val-max_int" class="anchor"></a><code><span class="keyword">val </span>max_int : nativeint</code></dt><dt class="spec value" id="val-min_int"><a href="#val-min_int" class="anchor"></a><code><span class="keyword">val </span>min_int : nativeint</code></dt></dl><dl><dt class="spec external" id="val-logand"><a href="#val-logand" class="anchor"></a><code><span class="keyword">external </span>logand : nativeint <span>-></span> nativeint <span>-></span> nativeint = "%nativeint_and" </code></dt><dt class="spec external" id="val-logor"><a href="#val-logor" class="anchor"></a><code><span class="keyword">external </span>logor : nativeint <span>-></span> nativeint <span>-></span> nativeint = "%nativeint_or" </code></dt><dt class="spec external" id="val-logxor"><a href="#val-logxor" class="anchor"></a><code><span class="keyword">external </span>logxor : nativeint <span>-></span> nativeint <span>-></span> nativeint = "%nativeint_xor" </code></dt></dl><dl><dt class="spec value" id="val-lognot"><a href="#val-lognot" class="anchor"></a><code><span class="keyword">val </span>lognot : nativeint <span>-></span> nativeint</code></dt></dl><dl><dt class="spec external" id="val-shift_left"><a href="#val-shift_left" class="anchor"></a><code><span class="keyword">external </span>shift_left : nativeint <span>-></span> int <span>-></span> nativeint = "%nativeint_lsl" </code></dt><dt class="spec external" id="val-shift_right"><a href="#val-shift_right" class="anchor"></a><code><span class="keyword">external </span>shift_right : nativeint <span>-></span> int <span>-></span> nativeint = "%nativeint_asr" </code></dt><dt class="spec external" id="val-shift_right_logical"><a href="#val-shift_right_logical" class="anchor"></a><code><span class="keyword">external </span>shift_right_logical : nativeint <span>-></span> int <span>-></span> nativeint = "%nativeint_lsr" </code></dt><dt class="spec external" id="val-of_int"><a href="#val-of_int" class="anchor"></a><code><span class="keyword">external </span>of_int : int <span>-></span> nativeint = "%nativeint_of_int" </code></dt><dt class="spec external" id="val-to_int"><a href="#val-to_int" class="anchor"></a><code><span class="keyword">external </span>to_int : nativeint <span>-></span> int = "%nativeint_to_int" </code></dt><dt class="spec external" id="val-of_float"><a href="#val-of_float" class="anchor"></a><code><span class="keyword">external </span>of_float : float <span>-></span> nativeint = "caml_nativeint_of_float" "caml_nativeint_of_float_unboxed" </code></dt><dt class="spec external" id="val-to_float"><a href="#val-to_float" class="anchor"></a><code><span class="keyword">external </span>to_float : nativeint <span>-></span> float = "caml_nativeint_to_float" "caml_nativeint_to_float_unboxed" </code></dt><dt class="spec external" id="val-of_int32"><a href="#val-of_int32" class="anchor"></a><code><span class="keyword">external </span>of_int32 : int32 <span>-></span> nativeint = "%nativeint_of_int32" </code></dt><dt class="spec external" id="val-to_int32"><a href="#val-to_int32" class="anchor"></a><code><span class="keyword">external </span>to_int32 : nativeint <span>-></span> int32 = "%nativeint_to_int32" </code></dt><dt class="spec external" id="val-of_string"><a href="#val-of_string" class="anchor"></a><code><span class="keyword">external </span>of_string : string <span>-></span> nativeint = "caml_nativeint_of_string" </code></dt></dl><dl><dt class="spec value" id="val-of_string_opt"><a href="#val-of_string_opt" class="anchor"></a><code><span class="keyword">val </span>of_string_opt : string <span>-></span> nativeint option</code></dt><dt class="spec value" id="val-to_string"><a href="#val-to_string" class="anchor"></a><code><span class="keyword">val </span>to_string : nativeint <span>-></span> string</code></dt></dl><dl><dt class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><code><span class="keyword">type </span>t</code><code><span class="keyword"> = </span>nativeint</code></dt></dl><dl><dt class="spec value" id="val-compare"><a href="#val-compare" class="anchor"></a><code><span class="keyword">val </span>compare : <a href="index.html#type-t">t</a> <span>-></span> <a href="index.html#type-t">t</a> <span>-></span> int</code></dt><dt class="spec value" id="val-equal"><a href="#val-equal" class="anchor"></a><code><span class="keyword">val </span>equal : <a href="index.html#type-t">t</a> <span>-></span> <a href="index.html#type-t">t</a> <span>-></span> bool</code></dt></dl><dl><dt class="spec external" id="val-format"><a href="#val-format" class="anchor"></a><code><span class="keyword">external </span>format : string <span>-></span> nativeint <span>-></span> string = "caml_nativeint_format" </code></dt></dl></details></div></div></div><dl><dt class="spec value" id="val-(+)"><a href="#val-(+)" class="anchor"></a><code><span class="keyword">val </span>(+) : <a href="index.html#type-t">t</a> <span>-></span> <a href="index.html#type-t">t</a> <span>-></span> <a href="index.html#type-t">t</a></code></dt><dd><p>Addition.</p></dd></dl><dl><dt class="spec value" id="val-(-)"><a href="#val-(-)" class="anchor"></a><code><span class="keyword">val </span>(-) : <a href="index.html#type-t">t</a> <span>-></span> <a href="index.html#type-t">t</a> <span>-></span> <a href="index.html#type-t">t</a></code></dt><dd><p>Subtraction.</p></dd></dl><dl><dt class="spec value" id="val-(~-)"><a href="#val-(~-)" class="anchor"></a><code><span class="keyword">val </span>(~-) : <a href="index.html#type-t">t</a> <span>-></span> <a href="index.html#type-t">t</a></code></dt><dd><p>Unary negation.</p></dd></dl><dl><dt class="spec value" id="val-(*)"><a href="#val-(*)" class="anchor"></a><code><span class="keyword">val </span>(*) : <a href="index.html#type-t">t</a> <span>-></span> <a href="index.html#type-t">t</a> <span>-></span> <a href="index.html#type-t">t</a></code></dt><dd><p>Multiplication.</p></dd></dl><dl><dt class="spec value" id="val-(/)"><a href="#val-(/)" class="anchor"></a><code><span class="keyword">val </span>(/) : <a href="index.html#type-t">t</a> <span>-></span> <a href="index.html#type-t">t</a> <span>-></span> <a href="index.html#type-t">t</a></code></dt><dd><p>Integer division. Raise <code>Division_by_zero</code> if the second argument is zero. This division rounds the real quotient of its arguments towards zero, as specified for <span class="xref-unresolved" title="unresolved reference to "Pervasives.(/)""><code>Pervasives</code>.(/)</span>.</p></dd></dl><dl><dt class="spec value" id="val-(mod)"><a href="#val-(mod)" class="anchor"></a><code><span class="keyword">val </span>(mod) : <a href="index.html#type-t">t</a> <span>-></span> <a href="index.html#type-t">t</a> <span>-></span> <a href="index.html#type-t">t</a></code></dt><dd><p><code>x mod y </code> is the integer remainder. If <code>y <> zero</code>, the result of <code>x mod y</code> satisfies the following properties: <code>zero <= x mod y < abs y</code> and <code>x = ((x / y) * y) + (x mod y)</code>. If <code>y = 0</code>, <code>x mod y</code> raises <code>Division_by_zero</code>.</p></dd></dl><dl><dt class="spec value" id="val-(land)"><a href="#val-(land)" class="anchor"></a><code><span class="keyword">val </span>(land) : <a href="index.html#type-t">t</a> <span>-></span> <a href="index.html#type-t">t</a> <span>-></span> <a href="index.html#type-t">t</a></code></dt><dd><p>Bitwise logical and.</p></dd></dl><dl><dt class="spec value" id="val-(lor)"><a href="#val-(lor)" class="anchor"></a><code><span class="keyword">val </span>(lor) : <a href="index.html#type-t">t</a> <span>-></span> <a href="index.html#type-t">t</a> <span>-></span> <a href="index.html#type-t">t</a></code></dt><dd><p>Bitwise logical or.</p></dd></dl><dl><dt class="spec value" id="val-(lxor)"><a href="#val-(lxor)" class="anchor"></a><code><span class="keyword">val </span>(lxor) : <a href="index.html#type-t">t</a> <span>-></span> <a href="index.html#type-t">t</a> <span>-></span> <a href="index.html#type-t">t</a></code></dt><dd><p>Bitwise logical exclusive or.</p></dd></dl><dl><dt class="spec value" id="val-(lnot)"><a href="#val-(lnot)" class="anchor"></a><code><span class="keyword">val </span>(lnot) : <a href="index.html#type-t">t</a> <span>-></span> <a href="index.html#type-t">t</a></code></dt><dd><p>Bitwise logical negation.</p></dd></dl><dl><dt class="spec value" id="val-(lsl)"><a href="#val-(lsl)" class="anchor"></a><code><span class="keyword">val </span>(lsl) : <a href="index.html#type-t">t</a> <span>-></span> int <span>-></span> <a href="index.html#type-t">t</a></code></dt><dd><p><code> x lsl y</code> shifts <code>x</code> to the left by <code>y</code> bits. The result is unspecified if <code>y < 0</code> or <code>y >= bitsize</code>, where <code>bitsize</code> is <code>32</code> on a 32-bit platform and <code>64</code> on a 64-bit platform.</p></dd></dl><dl><dt class="spec value" id="val-(lsr)"><a href="#val-(lsr)" class="anchor"></a><code><span class="keyword">val </span>(lsr) : <a href="index.html#type-t">t</a> <span>-></span> int <span>-></span> <a href="index.html#type-t">t</a></code></dt><dd><p><code>x lsr y</code> shifts <code>x</code> to the right by <code>y</code> bits. This is a logical shift: zeroes are inserted in the vacated bits regardless of the sign of <code>x</code>. The result is unspecified if <code>y < 0</code> or <code>y >= bitsize</code>.</p></dd></dl><dl><dt class="spec value" id="val-(asr)"><a href="#val-(asr)" class="anchor"></a><code><span class="keyword">val </span>(asr) : <a href="index.html#type-t">t</a> <span>-></span> int <span>-></span> <a href="index.html#type-t">t</a></code></dt><dd><p><code>x asr y</code> shifts <code>x</code> to the right by <code>y</code> bits. This is an arithmetic shift: the sign bit of <code>x</code> is replicated and inserted in the vacated bits. The result is unspecified if <code>y < 0</code> or <code>y >= bitsize</code>.</p></dd></dl><div class="spec module" id="module-Infix"><a href="#module-Infix" class="anchor"></a><code><span class="keyword">module </span><a href="Infix/index.html">Infix</a> : <span class="keyword">sig</span> ... <span class="keyword">end</span></code></div><dl><dt class="spec value" id="val-equal"><a href="#val-equal" class="anchor"></a><code><span class="keyword">val </span>equal : <a href="index.html#type-t">t</a> <span>-></span> <a href="index.html#type-t">t</a> <span>-></span> bool</code></dt><dd><p>The equal function for native integers. Like <span class="xref-unresolved" title="unresolved reference to "Pervasives.(=) x y)""><code>Pervasives</code>.(=) x y)</span>.</p></dd></dl><dl><dt class="spec value" id="val-hash"><a href="#val-hash" class="anchor"></a><code><span class="keyword">val </span>hash : <a href="index.html#type-t">t</a> <span>-></span> int</code></dt><dd><p>Like <span class="xref-unresolved" title="unresolved reference to "Pervasives.abs (to_int x)""><code>Pervasives</code>.abs (to_int x)</span>.</p></dd></dl><section><header><h2 id="conversion"><a href="#conversion" class="anchor"></a>Conversion</h2></header><dl><dt class="spec value" id="val-to_int"><a href="#val-to_int" class="anchor"></a><code><span class="keyword">val </span>to_int : <a href="index.html#type-t">t</a> <span>-></span> int</code></dt><dd><p>Convert the given native integer (type <code>nativeint</code>) to an integer (type <code>int</code>). The high-order bit is lost during the conversion.</p></dd></dl><dl><dt class="spec value" id="val-of_int"><a href="#val-of_int" class="anchor"></a><code><span class="keyword">val </span>of_int : int <span>-></span> <a href="index.html#type-t">t</a></code></dt><dd><p>Alias to <span class="xref-unresolved" title="unresolved reference to "Nativeint.of_int""><code>Nativeint</code>.of_int</span>. Convert the given integer (type <code>int</code>) to a native integer (type <code>nativeint</code>).</p></dd></dl><dl><dt class="spec value" id="val-to_float"><a href="#val-to_float" class="anchor"></a><code><span class="keyword">val </span>to_float : <a href="index.html#type-t">t</a> <span>-></span> float</code></dt><dd><p>Convert the given native integer to a floating-point number.</p></dd></dl><dl><dt class="spec value" id="val-of_float"><a href="#val-of_float" class="anchor"></a><code><span class="keyword">val </span>of_float : float <span>-></span> <a href="index.html#type-t">t</a></code></dt><dd><p>Alias to <span class="xref-unresolved" title="unresolved reference to "Nativeint.of_float""><code>Nativeint</code>.of_float</span>. Convert the given floating-point number to a native integer, discarding the fractional part (truncate towards 0). The result of the conversion is undefined if, after truncation, the number is outside the range [<a href="index.html#val-min_int"><code>CCNativeint.min_int</code></a>, <a href="index.html#val-max_int"><code>CCNativeint.max_int</code></a>].</p></dd></dl><dl><dt class="spec value" id="val-to_string"><a href="#val-to_string" class="anchor"></a><code><span class="keyword">val </span>to_string : <a href="index.html#type-t">t</a> <span>-></span> string</code></dt><dd><p>Return the string representation of its argument, in decimal.</p></dd></dl><dl><dt class="spec value" id="val-of_string_exn"><a href="#val-of_string_exn" class="anchor"></a><code><span class="keyword">val </span>of_string_exn : string <span>-></span> <a href="index.html#type-t">t</a></code></dt><dd><p>Alias to <span class="xref-unresolved" title="unresolved reference to "Nativeint.of_string""><code>Nativeint</code>.of_string</span>. Convert the given string to a native integer. The string is read in decimal (by default, or if the string begins with <code>0u</code>) or in hexadecimal, octal or binary if the string begins with <code>0x</code>, <code>0o</code> or <code>0b</code> respectively.</p><p>The <code>0u</code> prefix reads the input as an unsigned integer in the range <code>[0, 2*CCNativeint.max_int+1]</code>. If the input exceeds <a href="index.html#val-max_int"><code>CCNativeint.max_int</code></a> it is converted to the signed integer <code>CCInt64.min_int + input - CCNativeint.max_int - 1</code>.</p><p>Raise <code>Failure "Nativeint.of_string"</code> if the given string is not a valid representation of an integer, or if the integer represented exceeds the range of integers representable in type <code>nativeint</code>.</p></dd></dl><dl><dt class="spec value" id="val-of_string"><a href="#val-of_string" class="anchor"></a><code><span class="keyword">val </span>of_string : string <span>-></span> <a href="index.html#type-t">t</a> option</code></dt><dd><p>Safe version of <a href="index.html#val-of_string_exn"><code>of_string_exn</code></a>. Like <a href="index.html#val-of_string_exn"><code>of_string_exn</code></a>, but return <code>None</code> instead of raising.</p></dd></dl><dl><dt class="spec value" id="val-of_string_opt"><a href="#val-of_string_opt" class="anchor"></a><code><span class="keyword">val </span>of_string_opt : string <span>-></span> <a href="index.html#type-t">t</a> option</code></dt><dd><p>Alias to <a href="index.html#val-of_string"><code>of_string</code></a>.</p></dd></dl></section></div></body></html> |