mirror of
https://github.com/c-cube/ocaml-containers.git
synced 2025-12-06 03:05:28 -05:00
15 lines
No EOL
17 KiB
HTML
15 lines
No EOL
17 KiB
HTML
<!DOCTYPE html>
|
|
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>MakeFromArray (containers.data.CCRingBuffer.MakeFromArray)</title><link rel="stylesheet" href="../../../odoc.css"/><meta charset="utf-8"/><meta name="viewport" content="width=device-width,initial-scale=1.0"/><meta name="generator" content="doc-ock-html v1.0.0-1-g1fc9bf0"/></head><body><nav id="top"><a href="../index.html">Up</a> — <span class="package">package <a href="../../index.html">containers.data</a></span></nav><header><h1><span class="keyword">Module</span> <span class="module-path">CCRingBuffer.MakeFromArray</span></h1></header><div class="doc"><p>Makes a ring buffer module with the given array type.</p></div><h3 class="heading">Parameters</h3><div><div class="spec argument" id="argument-1-A"><a href="#argument-1-A" class="anchor"></a><div class="def argument"><code><a href="argument-1-A/index.html">A</a> : <a href="../Array/index.html#module-type-S">Array.S</a></code></div><div class="doc"></div></div></div><h3 class="heading">Signature</h3><div class="spec module" id="module-Array"><a href="#module-Array" class="anchor"></a><div class="def module"><code><span class="keyword">module </span>Array = <a href="index.html#argument-1-A">A</a></code></div><div class="doc"><p>The module type of Array for this ring buffer</p></div></div><div class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><div class="def type"><code><span class="keyword">type </span>t</code><code></code><code></code></div><div class="doc"><p>Defines the bounded ring buffer type</p></div></div><div class="spec exception" id="exception-Empty"><a href="#exception-Empty" class="anchor"></a><div class="def exception"><code><span class="keyword">exception </span></code><code><span class="exception">Empty</span></code></div><div class="doc"><p>Raised in querying functions when the buffer is empty</p></div></div><div class="spec val" id="val-create"><a href="#val-create" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>create : int <span class="keyword">‑></span> <a href="index.html#type-t">t</a></code></div><div class="doc"><p><code class="code">create size</code> creates a new bounded buffer with given size.
|
|
The underlying array is allocated immediately and no further (large)
|
|
allocation will happen from now on.</p><ul class="at-tag"><li><span class="at-tag raise">Raises</span> <span class="module-path">Invalid_argument</span>: if the arguments is <code class="code">< 1</code>.</li></ul></div></div><div class="spec val" id="val-copy"><a href="#val-copy" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>copy : <a href="index.html#type-t">t</a> <span class="keyword">‑></span> <a href="index.html#type-t">t</a></code></div><div class="doc"><p>Make a fresh copy of the buffer.</p></div></div><div class="spec val" id="val-capacity"><a href="#val-capacity" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>capacity : <a href="index.html#type-t">t</a> <span class="keyword">‑></span> int</code></div><div class="doc"><p>Length of the inner buffer.</p></div></div><div class="spec val" id="val-length"><a href="#val-length" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>length : <a href="index.html#type-t">t</a> <span class="keyword">‑></span> int</code></div><div class="doc"><p>Number of elements currently stored in the buffer.</p></div></div><div class="spec val" id="val-is_full"><a href="#val-is_full" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>is_full : <a href="index.html#type-t">t</a> <span class="keyword">‑></span> bool</code></div><div class="doc"><p>true if pushing an element would erase another element.</p><ul class="at-tag"><li><span class="at-tag since">Since</span>: 1.3</li></ul></div></div><div class="spec val" id="val-blit_from"><a href="#val-blit_from" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>blit_from : <a href="index.html#type-t">t</a> <span class="keyword">‑></span> <a href="Array/index.html#type-t">Array.t</a> <span class="keyword">‑></span> int <span class="keyword">‑></span> int <span class="keyword">‑></span> unit</code></div><div class="doc"><p><code class="code">blit_from buf from_buf o len</code> copies the slice <code class="code">o, ... o + len - 1</code> from
|
|
a input buffer <code class="code">from_buf</code> to the end of the buffer.
|
|
If the slice is too large for the buffer, only the last part of the array
|
|
will be copied.</p><ul class="at-tag"><li><span class="at-tag raise">Raises</span> <span class="module-path">Invalid_argument</span>: if <code class="code">o,len</code> is not a valid slice of <code class="code">s</code>.</li></ul></div></div><div class="spec val" id="val-blit_into"><a href="#val-blit_into" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>blit_into : <a href="index.html#type-t">t</a> <span class="keyword">‑></span> <a href="Array/index.html#type-t">Array.t</a> <span class="keyword">‑></span> int <span class="keyword">‑></span> int <span class="keyword">‑></span> int</code></div><div class="doc"><p><code class="code">blit_into buf to_buf o len</code> copies at most <code class="code">len</code> elements from <code class="code">buf</code>
|
|
into <code class="code">to_buf</code> starting at offset <code class="code">o</code> in <code class="code">s</code>.</p><ul class="at-tag"><li><span class="at-tag return">Returns</span> the number of elements actually copied (<code class="code">min len (length buf)</code>).</li><li><span class="at-tag raise">Raises</span> <span class="module-path">Invalid_argument</span>: if <code class="code">o,len</code> is not a valid slice of <code class="code">s</code>.</li></ul></div></div><div class="spec val" id="val-append"><a href="#val-append" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>append : <a href="index.html#type-t">t</a> <span class="keyword">‑></span> into:<a href="index.html#type-t">t</a> <span class="keyword">‑></span> unit</code></div><div class="doc"><p><code class="code">append b ~into</code> copies all data from <code class="code">b</code> and adds it at the
|
|
end of <code class="code">into</code>. Erases data of <code class="code">into</code> if there is not enough room.</p></div></div><div class="spec val" id="val-to_list"><a href="#val-to_list" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>to_list : <a href="index.html#type-t">t</a> <span class="keyword">‑></span> <a href="Array/index.html#type-elt">Array.elt</a> list</code></div><div class="doc"><p>Extract the current content into a list.</p></div></div><div class="spec val" id="val-clear"><a href="#val-clear" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>clear : <a href="index.html#type-t">t</a> <span class="keyword">‑></span> unit</code></div><div class="doc"><p>Clear the content of the buffer. Doesn't actually destroy the content.</p></div></div><div class="spec val" id="val-is_empty"><a href="#val-is_empty" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>is_empty : <a href="index.html#type-t">t</a> <span class="keyword">‑></span> bool</code></div><div class="doc"><p>Is the buffer empty (i.e. contains no elements)?</p></div></div><div class="spec val" id="val-junk_front"><a href="#val-junk_front" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>junk_front : <a href="index.html#type-t">t</a> <span class="keyword">‑></span> unit</code></div><div class="doc"><p>Drop the front element from <code class="code">t</code>.</p><ul class="at-tag"><li><span class="at-tag raise">Raises</span> <span class="module-path">Empty</span>: if the buffer is already empty.</li></ul></div></div><div class="spec val" id="val-junk_back"><a href="#val-junk_back" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>junk_back : <a href="index.html#type-t">t</a> <span class="keyword">‑></span> unit</code></div><div class="doc"><p>Drop the back element from <code class="code">t</code>.</p><ul class="at-tag"><li><span class="at-tag raise">Raises</span> <span class="module-path">Empty</span>: if the buffer is already empty.</li></ul></div></div><div class="spec val" id="val-skip"><a href="#val-skip" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>skip : <a href="index.html#type-t">t</a> <span class="keyword">‑></span> int <span class="keyword">‑></span> unit</code></div><div class="doc"><p><code class="code">skip b len</code> removes <code class="code">len</code> elements from the front of <code class="code">b</code>.</p><ul class="at-tag"><li><span class="at-tag raise">Raises</span> <span class="module-path">Invalid_argument</span>: if <code class="code">len > length b</code>.</li></ul></div></div><div class="spec val" id="val-iter"><a href="#val-iter" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>iter : <a href="index.html#type-t">t</a> <span class="keyword">‑></span> f:(<a href="Array/index.html#type-elt">Array.elt</a> <span class="keyword">‑></span> unit) <span class="keyword">‑></span> unit</code></div><div class="doc"><p><code class="code">iter b ~f</code> calls <code class="code">f i t</code> for each element <code class="code">t</code> in <code class="code">buf</code>.</p></div></div><div class="spec val" id="val-iteri"><a href="#val-iteri" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>iteri : <a href="index.html#type-t">t</a> <span class="keyword">‑></span> f:(int <span class="keyword">‑></span> <a href="Array/index.html#type-elt">Array.elt</a> <span class="keyword">‑></span> unit) <span class="keyword">‑></span> unit</code></div><div class="doc"><p><code class="code">iteri b ~f</code> calls <code class="code">f i t</code> for each element <code class="code">t</code> in <code class="code">buf</code>, with <code class="code">i</code>
|
|
being its relative index within <code class="code">buf</code>.</p></div></div><div class="spec val" id="val-get_front"><a href="#val-get_front" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>get_front : <a href="index.html#type-t">t</a> <span class="keyword">‑></span> int <span class="keyword">‑></span> <a href="Array/index.html#type-elt">Array.elt</a></code></div><div class="doc"><p><code class="code">get_front buf i</code> returns the <code class="code">i</code>-th element of <code class="code">buf</code> from the front, ie
|
|
the one returned by <code class="code">take_front buf</code> after <code class="code">i-1</code> calls to <code class="code">junk_front buf</code>.</p><ul class="at-tag"><li><span class="at-tag raise">Raises</span> <span class="module-path">Invalid_argument</span>: if the index is invalid (> <code class="code">length buf</code>).</li></ul></div></div><div class="spec val" id="val-get_back"><a href="#val-get_back" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>get_back : <a href="index.html#type-t">t</a> <span class="keyword">‑></span> int <span class="keyword">‑></span> <a href="Array/index.html#type-elt">Array.elt</a></code></div><div class="doc"><p><code class="code">get_back buf i</code> returns the <code class="code">i</code>-th element of <code class="code">buf</code> from the back, ie
|
|
the one returned by <code class="code">take_back buf</code> after <code class="code">i-1</code> calls to <code class="code">junk_back buf</code>.</p><ul class="at-tag"><li><span class="at-tag raise">Raises</span> <span class="module-path">Invalid_argument</span>: if the index is invalid (> <code class="code">length buf</code>).</li></ul></div></div><div class="spec val" id="val-push_back"><a href="#val-push_back" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>push_back : <a href="index.html#type-t">t</a> <span class="keyword">‑></span> <a href="Array/index.html#type-elt">Array.elt</a> <span class="keyword">‑></span> unit</code></div><div class="doc"><p>Push value at the back of <code class="code">t</code>.
|
|
If <code class="code">t.bounded=false</code>, the buffer will grow as needed,
|
|
otherwise the oldest elements are replaced first.</p></div></div><div class="spec val" id="val-peek_front"><a href="#val-peek_front" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>peek_front : <a href="index.html#type-t">t</a> <span class="keyword">‑></span> <a href="Array/index.html#type-elt">Array.elt</a> option</code></div><div class="doc"><p>First value from front of <code class="code">t</code>, without modification.</p></div></div><div class="spec val" id="val-peek_front_exn"><a href="#val-peek_front_exn" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>peek_front_exn : <a href="index.html#type-t">t</a> <span class="keyword">‑></span> <a href="Array/index.html#type-elt">Array.elt</a></code></div><div class="doc"><p>First value from front of <code class="code">t</code>, without modification.</p><ul class="at-tag"><li><span class="at-tag raise">Raises</span> <span class="module-path">Empty</span>: if buffer is empty.</li><li><span class="at-tag since">Since</span>: 1.3</li></ul></div></div><div class="spec val" id="val-peek_back"><a href="#val-peek_back" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>peek_back : <a href="index.html#type-t">t</a> <span class="keyword">‑></span> <a href="Array/index.html#type-elt">Array.elt</a> option</code></div><div class="doc"><p>Get the last value from back of <code class="code">t</code>, without modification.</p></div></div><div class="spec val" id="val-peek_back_exn"><a href="#val-peek_back_exn" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>peek_back_exn : <a href="index.html#type-t">t</a> <span class="keyword">‑></span> <a href="Array/index.html#type-elt">Array.elt</a></code></div><div class="doc"><p>Get the last value from back of <code class="code">t</code>, without modification.</p><ul class="at-tag"><li><span class="at-tag raise">Raises</span> <span class="module-path">Empty</span>: if buffer is empty.</li><li><span class="at-tag since">Since</span>: 1.3</li></ul></div></div><div class="spec val" id="val-take_back"><a href="#val-take_back" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>take_back : <a href="index.html#type-t">t</a> <span class="keyword">‑></span> <a href="Array/index.html#type-elt">Array.elt</a> option</code></div><div class="doc"><p>Take and remove the last value from back of <code class="code">t</code>, if any.</p></div></div><div class="spec val" id="val-take_back_exn"><a href="#val-take_back_exn" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>take_back_exn : <a href="index.html#type-t">t</a> <span class="keyword">‑></span> <a href="Array/index.html#type-elt">Array.elt</a></code></div><div class="doc"><p>Take and remove the last value from back of <code class="code">t</code>.</p><ul class="at-tag"><li><span class="at-tag raise">Raises</span> <span class="module-path">Empty</span>: if buffer is already empty.</li></ul></div></div><div class="spec val" id="val-take_front"><a href="#val-take_front" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>take_front : <a href="index.html#type-t">t</a> <span class="keyword">‑></span> <a href="Array/index.html#type-elt">Array.elt</a> option</code></div><div class="doc"><p>Take and remove the first value from front of <code class="code">t</code>, if any.</p></div></div><div class="spec val" id="val-take_front_exn"><a href="#val-take_front_exn" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>take_front_exn : <a href="index.html#type-t">t</a> <span class="keyword">‑></span> <a href="Array/index.html#type-elt">Array.elt</a></code></div><div class="doc"><p>Take and remove the first value from front of <code class="code">t</code>.</p><ul class="at-tag"><li><span class="at-tag raise">Raises</span> <span class="module-path">Empty</span>: if buffer is already empty.</li></ul></div></div><div class="spec val" id="val-of_array"><a href="#val-of_array" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>of_array : <a href="Array/index.html#type-t">Array.t</a> <span class="keyword">‑></span> <a href="index.html#type-t">t</a></code></div><div class="doc"><p>Create a buffer from an initial array, but doesn't take ownership
|
|
of it (still allocates a new internal array).</p><ul class="at-tag"><li><span class="at-tag since">Since</span>: 0.11</li></ul></div></div><div class="spec val" id="val-to_array"><a href="#val-to_array" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>to_array : <a href="index.html#type-t">t</a> <span class="keyword">‑></span> <a href="Array/index.html#type-t">Array.t</a></code></div><div class="doc"><p>Create an array from the elements, in order.</p><ul class="at-tag"><li><span class="at-tag since">Since</span>: 0.11</li></ul></div></div></body></html> |