ocaml-containers/2.4/containers/CCNativeint/index.html
2018-12-23 21:02:45 -06:00

2 lines
No EOL
20 KiB
HTML
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!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> &#x00BB; 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>&#45;&gt;</span> nativeint = &quot;%nativeint_neg&quot; </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>&#45;&gt;</span> nativeint <span>&#45;&gt;</span> nativeint = &quot;%nativeint_add&quot; </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>&#45;&gt;</span> nativeint <span>&#45;&gt;</span> nativeint = &quot;%nativeint_sub&quot; </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>&#45;&gt;</span> nativeint <span>&#45;&gt;</span> nativeint = &quot;%nativeint_mul&quot; </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>&#45;&gt;</span> nativeint <span>&#45;&gt;</span> nativeint = &quot;%nativeint_div&quot; </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>&#45;&gt;</span> nativeint <span>&#45;&gt;</span> nativeint = &quot;%nativeint_mod&quot; </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>&#45;&gt;</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>&#45;&gt;</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>&#45;&gt;</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>&#45;&gt;</span> nativeint <span>&#45;&gt;</span> nativeint = &quot;%nativeint_and&quot; </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>&#45;&gt;</span> nativeint <span>&#45;&gt;</span> nativeint = &quot;%nativeint_or&quot; </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>&#45;&gt;</span> nativeint <span>&#45;&gt;</span> nativeint = &quot;%nativeint_xor&quot; </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>&#45;&gt;</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>&#45;&gt;</span> int <span>&#45;&gt;</span> nativeint = &quot;%nativeint_lsl&quot; </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>&#45;&gt;</span> int <span>&#45;&gt;</span> nativeint = &quot;%nativeint_asr&quot; </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>&#45;&gt;</span> int <span>&#45;&gt;</span> nativeint = &quot;%nativeint_lsr&quot; </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>&#45;&gt;</span> nativeint = &quot;%nativeint_of_int&quot; </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>&#45;&gt;</span> int = &quot;%nativeint_to_int&quot; </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>&#45;&gt;</span> nativeint = &quot;caml_nativeint_of_float&quot; &quot;caml_nativeint_of_float_unboxed&quot; </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>&#45;&gt;</span> float = &quot;caml_nativeint_to_float&quot; &quot;caml_nativeint_to_float_unboxed&quot; </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>&#45;&gt;</span> nativeint = &quot;%nativeint_of_int32&quot; </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>&#45;&gt;</span> int32 = &quot;%nativeint_to_int32&quot; </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>&#45;&gt;</span> nativeint = &quot;caml_nativeint_of_string&quot; </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>&#45;&gt;</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>&#45;&gt;</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>&#45;&gt;</span> <a href="index.html#type-t">t</a> <span>&#45;&gt;</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>&#45;&gt;</span> <a href="index.html#type-t">t</a> <span>&#45;&gt;</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>&#45;&gt;</span> nativeint <span>&#45;&gt;</span> string = &quot;caml_nativeint_format&quot; </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>&#45;&gt;</span> <a href="index.html#type-t">t</a> <span>&#45;&gt;</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>&#45;&gt;</span> <a href="index.html#type-t">t</a> <span>&#45;&gt;</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>&#45;&gt;</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>&#45;&gt;</span> <a href="index.html#type-t">t</a> <span>&#45;&gt;</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>&#45;&gt;</span> <a href="index.html#type-t">t</a> <span>&#45;&gt;</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 &quot;Pervasives.(/)&quot;"><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>&#45;&gt;</span> <a href="index.html#type-t">t</a> <span>&#45;&gt;</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 &lt;&gt; zero</code>, the result of <code>x mod y</code> satisfies the following properties: <code>zero &lt;= x mod y &lt; 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>&#45;&gt;</span> <a href="index.html#type-t">t</a> <span>&#45;&gt;</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>&#45;&gt;</span> <a href="index.html#type-t">t</a> <span>&#45;&gt;</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>&#45;&gt;</span> <a href="index.html#type-t">t</a> <span>&#45;&gt;</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>&#45;&gt;</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>&#45;&gt;</span> int <span>&#45;&gt;</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 &lt; 0</code> or <code>y &gt;= 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>&#45;&gt;</span> int <span>&#45;&gt;</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 &lt; 0</code> or <code>y &gt;= 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>&#45;&gt;</span> int <span>&#45;&gt;</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 &lt; 0</code> or <code>y &gt;= 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>&#45;&gt;</span> <a href="index.html#type-t">t</a> <span>&#45;&gt;</span> bool</code></dt><dd><p>The equal function for native integers. Like <span class="xref-unresolved" title="unresolved reference to &quot;Pervasives.(=) x y)&quot;"><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>&#45;&gt;</span> int</code></dt><dd><p>Like <span class="xref-unresolved" title="unresolved reference to &quot;Pervasives.abs (to_int x)&quot;"><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>&#45;&gt;</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>&#45;&gt;</span> <a href="index.html#type-t">t</a></code></dt><dd><p>Alias to <span class="xref-unresolved" title="unresolved reference to &quot;Nativeint.of_int&quot;"><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>&#45;&gt;</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>&#45;&gt;</span> <a href="index.html#type-t">t</a></code></dt><dd><p>Alias to <span class="xref-unresolved" title="unresolved reference to &quot;Nativeint.of_float&quot;"><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>&#45;&gt;</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>&#45;&gt;</span> <a href="index.html#type-t">t</a></code></dt><dd><p>Alias to <span class="xref-unresolved" title="unresolved reference to &quot;Nativeint.of_string&quot;"><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 &quot;Nativeint.of_string&quot;</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>&#45;&gt;</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>&#45;&gt;</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>