ocaml-containers/dev/containers-data/CCRingBuffer/MakeFromArray/index.html
2023-02-15 10:05:53 +00:00

2 lines
No EOL
18 KiB
HTML
Raw 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>MakeFromArray (containers-data.CCRingBuffer.MakeFromArray)</title><link rel="stylesheet" href="../../../odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 2.2.0"/><meta name="viewport" content="width=device-width,initial-scale=1.0"/><script src="../../../highlight.pack.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body class="odoc"><nav class="odoc-nav"><a href="../index.html">Up</a> <a href="../../index.html">containers-data</a> &#x00BB; <a href="../index.html">CCRingBuffer</a> &#x00BB; MakeFromArray</nav><header class="odoc-preamble"><h1>Module <code><span>CCRingBuffer.MakeFromArray</span></code></h1><p>Makes a ring buffer module with the given array type</p></header><nav class="odoc-toc"><ul><li><a href="#parameters">Parameters</a></li><li><a href="#signature">Signature</a></li></ul></nav><div class="odoc-content"><h2 id="parameters"><a href="#parameters" class="anchor"></a>Parameters</h2><div class="odoc-spec"><div class="spec parameter anchored" id="argument-1-A"><a href="#argument-1-A" class="anchor"></a><code><span><span class="keyword">module</span> </span><span><a href="argument-1-A/index.html">A</a></span><span> : <a href="../Array/module-type-S/index.html">Array.S</a></span></code></div></div><h2 id="signature"><a href="#signature" class="anchor"></a>Signature</h2><div class="odoc-spec"><div class="spec module anchored" id="module-Array"><a href="#module-Array" class="anchor"></a><code><span><span class="keyword">module</span> Array</span><span> = <a href="argument-1-A/index.html">A</a></span></code></div><div class="spec-doc"><p>The module type of Array for this ring buffer</p></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-t"><a href="#type-t" class="anchor"></a><code><span><span class="keyword">type</span> t</span></code></div><div class="spec-doc"><p>Defines the bounded ring buffer type</p></div></div><div class="odoc-spec"><div class="spec exception anchored" id="exception-Empty"><a href="#exception-Empty" class="anchor"></a><code><span><span class="keyword">exception</span> </span><span><span class="exception">Empty</span></span></code></div><div class="spec-doc"><p>Raised in querying functions when the buffer is empty</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-create"><a href="#val-create" class="anchor"></a><code><span><span class="keyword">val</span> create : <span>int <span class="arrow">&#45;&gt;</span></span> <a href="#type-t">t</a></span></code></div><div class="spec-doc"><p><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-tags"><li class="raises"><span class="at-tag">raises</span> <span class="value">Invalid_argument</span> <p>if the argument is <code>&lt; 1</code>.</p></li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-copy"><a href="#val-copy" class="anchor"></a><code><span><span class="keyword">val</span> copy : <span><a href="#type-t">t</a> <span class="arrow">&#45;&gt;</span></span> <a href="#type-t">t</a></span></code></div><div class="spec-doc"><p>Make a fresh copy of the buffer.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-capacity"><a href="#val-capacity" class="anchor"></a><code><span><span class="keyword">val</span> capacity : <span><a href="#type-t">t</a> <span class="arrow">&#45;&gt;</span></span> int</span></code></div><div class="spec-doc"><p>Length of the inner buffer.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-length"><a href="#val-length" class="anchor"></a><code><span><span class="keyword">val</span> length : <span><a href="#type-t">t</a> <span class="arrow">&#45;&gt;</span></span> int</span></code></div><div class="spec-doc"><p>Number of elements currently stored in the buffer.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-is_full"><a href="#val-is_full" class="anchor"></a><code><span><span class="keyword">val</span> is_full : <span><a href="#type-t">t</a> <span class="arrow">&#45;&gt;</span></span> bool</span></code></div><div class="spec-doc"><p><code>true</code> if pushing an element would erase another element.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 1.3</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-blit_from"><a href="#val-blit_from" class="anchor"></a><code><span><span class="keyword">val</span> blit_from : <span><a href="#type-t">t</a> <span class="arrow">&#45;&gt;</span></span> <span><a href="argument-1-A/index.html#type-t">Array.t</a> <span class="arrow">&#45;&gt;</span></span> <span>int <span class="arrow">&#45;&gt;</span></span> <span>int <span class="arrow">&#45;&gt;</span></span> unit</span></code></div><div class="spec-doc"><p><code>blit_from buf from_buf o len</code> copies the slice <code>o, ... o + len - 1</code> from an input buffer <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-tags"><li class="raises"><span class="at-tag">raises</span> <span class="value">Invalid_argument</span> <p>if <code>o,len</code> is not a valid slice of <code>s</code>.</p></li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-blit_into"><a href="#val-blit_into" class="anchor"></a><code><span><span class="keyword">val</span> blit_into : <span><a href="#type-t">t</a> <span class="arrow">&#45;&gt;</span></span> <span><a href="argument-1-A/index.html#type-t">Array.t</a> <span class="arrow">&#45;&gt;</span></span> <span>int <span class="arrow">&#45;&gt;</span></span> <span>int <span class="arrow">&#45;&gt;</span></span> int</span></code></div><div class="spec-doc"><p><code>blit_into buf to_buf o len</code> copies at most <code>len</code> elements from <code>buf</code> into <code>to_buf</code> starting at offset <code>o</code> in <code>s</code>.</p><ul class="at-tags"><li class="returns"><span class="at-tag">returns</span> <p>the number of elements actually copied (<code>min len (length buf)</code>).</p></li></ul><ul class="at-tags"><li class="raises"><span class="at-tag">raises</span> <span class="value">Invalid_argument</span> <p>if <code>o,len</code> is not a valid slice of <code>s</code>.</p></li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-append"><a href="#val-append" class="anchor"></a><code><span><span class="keyword">val</span> append : <span><a href="#type-t">t</a> <span class="arrow">&#45;&gt;</span></span> <span>into:<a href="#type-t">t</a> <span class="arrow">&#45;&gt;</span></span> unit</span></code></div><div class="spec-doc"><p><code>append b ~into</code> copies all data from <code>b</code> and adds it at the end of <code>into</code>. Erases data of <code>into</code> if there is not enough room.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-to_list"><a href="#val-to_list" class="anchor"></a><code><span><span class="keyword">val</span> to_list : <span><a href="#type-t">t</a> <span class="arrow">&#45;&gt;</span></span> <span><a href="argument-1-A/index.html#type-elt">Array.elt</a> list</span></span></code></div><div class="spec-doc"><p>Extract the current content into a list.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-clear"><a href="#val-clear" class="anchor"></a><code><span><span class="keyword">val</span> clear : <span><a href="#type-t">t</a> <span class="arrow">&#45;&gt;</span></span> unit</span></code></div><div class="spec-doc"><p>Clear the content of the buffer</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-is_empty"><a href="#val-is_empty" class="anchor"></a><code><span><span class="keyword">val</span> is_empty : <span><a href="#type-t">t</a> <span class="arrow">&#45;&gt;</span></span> bool</span></code></div><div class="spec-doc"><p>Is the buffer empty (i.e. contains no elements)?</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-junk_front"><a href="#val-junk_front" class="anchor"></a><code><span><span class="keyword">val</span> junk_front : <span><a href="#type-t">t</a> <span class="arrow">&#45;&gt;</span></span> unit</span></code></div><div class="spec-doc"><p>Drop the front element from <code>t</code>.</p><ul class="at-tags"><li class="raises"><span class="at-tag">raises</span> <span class="value">Empty</span> <p>if the buffer is already empty.</p></li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-junk_back"><a href="#val-junk_back" class="anchor"></a><code><span><span class="keyword">val</span> junk_back : <span><a href="#type-t">t</a> <span class="arrow">&#45;&gt;</span></span> unit</span></code></div><div class="spec-doc"><p>Drop the back element from <code>t</code>.</p><ul class="at-tags"><li class="raises"><span class="at-tag">raises</span> <span class="value">Empty</span> <p>if the buffer is already empty.</p></li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-skip"><a href="#val-skip" class="anchor"></a><code><span><span class="keyword">val</span> skip : <span><a href="#type-t">t</a> <span class="arrow">&#45;&gt;</span></span> <span>int <span class="arrow">&#45;&gt;</span></span> unit</span></code></div><div class="spec-doc"><p><code>skip b len</code> removes <code>len</code> elements from the front of <code>b</code>.</p><ul class="at-tags"><li class="raises"><span class="at-tag">raises</span> <span class="value">Invalid_argument</span> <p>if <code>len &gt; length b</code>.</p></li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-iter"><a href="#val-iter" class="anchor"></a><code><span><span class="keyword">val</span> iter : <span><a href="#type-t">t</a> <span class="arrow">&#45;&gt;</span></span> <span>f:<span>(<span><a href="argument-1-A/index.html#type-elt">Array.elt</a> <span class="arrow">&#45;&gt;</span></span> unit)</span> <span class="arrow">&#45;&gt;</span></span> unit</span></code></div><div class="spec-doc"><p><code>iter b ~f</code> calls <code>f i t</code> for each element <code>t</code> in <code>buf</code>.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-iteri"><a href="#val-iteri" class="anchor"></a><code><span><span class="keyword">val</span> iteri : <span><a href="#type-t">t</a> <span class="arrow">&#45;&gt;</span></span> <span>f:<span>(<span>int <span class="arrow">&#45;&gt;</span></span> <span><a href="argument-1-A/index.html#type-elt">Array.elt</a> <span class="arrow">&#45;&gt;</span></span> unit)</span> <span class="arrow">&#45;&gt;</span></span> unit</span></code></div><div class="spec-doc"><p><code>iteri b ~f</code> calls <code>f i t</code> for each element <code>t</code> in <code>buf</code>, with <code>i</code> being its relative index within <code>buf</code>.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-get_front"><a href="#val-get_front" class="anchor"></a><code><span><span class="keyword">val</span> get_front : <span><a href="#type-t">t</a> <span class="arrow">&#45;&gt;</span></span> <span>int <span class="arrow">&#45;&gt;</span></span> <a href="argument-1-A/index.html#type-elt">Array.elt</a></span></code></div><div class="spec-doc"><p><code>get_front buf i</code> returns the <code>i</code>-th element of <code>buf</code> from the front, i.e. the one returned by <code>take_front buf</code> after <code>i-1</code> calls to <code>junk_front buf</code>.</p><ul class="at-tags"><li class="raises"><span class="at-tag">raises</span> <span class="value">Invalid_argument</span> <p>if the index is invalid (&gt; <code>length buf</code>).</p></li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-get_back"><a href="#val-get_back" class="anchor"></a><code><span><span class="keyword">val</span> get_back : <span><a href="#type-t">t</a> <span class="arrow">&#45;&gt;</span></span> <span>int <span class="arrow">&#45;&gt;</span></span> <a href="argument-1-A/index.html#type-elt">Array.elt</a></span></code></div><div class="spec-doc"><p><code>get_back buf i</code> returns the <code>i</code>-th element of <code>buf</code> from the back, i.e. the one returned by <code>take_back buf</code> after <code>i-1</code> calls to <code>junk_back buf</code>.</p><ul class="at-tags"><li class="raises"><span class="at-tag">raises</span> <span class="value">Invalid_argument</span> <p>if the index is invalid (&gt; <code>length buf</code>).</p></li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-push_back"><a href="#val-push_back" class="anchor"></a><code><span><span class="keyword">val</span> push_back : <span><a href="#type-t">t</a> <span class="arrow">&#45;&gt;</span></span> <span><a href="argument-1-A/index.html#type-elt">Array.elt</a> <span class="arrow">&#45;&gt;</span></span> unit</span></code></div><div class="spec-doc"><p>Push value at the back of <code>t</code>. If <code>t.bounded=false</code>, the buffer will grow as needed, otherwise the oldest elements are replaced first.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-peek_front"><a href="#val-peek_front" class="anchor"></a><code><span><span class="keyword">val</span> peek_front : <span><a href="#type-t">t</a> <span class="arrow">&#45;&gt;</span></span> <span><a href="argument-1-A/index.html#type-elt">Array.elt</a> option</span></span></code></div><div class="spec-doc"><p>First value from front of <code>t</code>, without modification.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-peek_front_exn"><a href="#val-peek_front_exn" class="anchor"></a><code><span><span class="keyword">val</span> peek_front_exn : <span><a href="#type-t">t</a> <span class="arrow">&#45;&gt;</span></span> <a href="argument-1-A/index.html#type-elt">Array.elt</a></span></code></div><div class="spec-doc"><p>First value from front of <code>t</code>, without modification.</p><ul class="at-tags"><li class="raises"><span class="at-tag">raises</span> <span class="value">Empty</span> <p>if buffer is empty.</p></li></ul><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 1.3</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-peek_back"><a href="#val-peek_back" class="anchor"></a><code><span><span class="keyword">val</span> peek_back : <span><a href="#type-t">t</a> <span class="arrow">&#45;&gt;</span></span> <span><a href="argument-1-A/index.html#type-elt">Array.elt</a> option</span></span></code></div><div class="spec-doc"><p>Get the last value from back of <code>t</code>, without modification.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-peek_back_exn"><a href="#val-peek_back_exn" class="anchor"></a><code><span><span class="keyword">val</span> peek_back_exn : <span><a href="#type-t">t</a> <span class="arrow">&#45;&gt;</span></span> <a href="argument-1-A/index.html#type-elt">Array.elt</a></span></code></div><div class="spec-doc"><p>Get the last value from back of <code>t</code>, without modification.</p><ul class="at-tags"><li class="raises"><span class="at-tag">raises</span> <span class="value">Empty</span> <p>if buffer is empty.</p></li></ul><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 1.3</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-take_back"><a href="#val-take_back" class="anchor"></a><code><span><span class="keyword">val</span> take_back : <span><a href="#type-t">t</a> <span class="arrow">&#45;&gt;</span></span> <span><a href="argument-1-A/index.html#type-elt">Array.elt</a> option</span></span></code></div><div class="spec-doc"><p>Take and remove the last value from back of <code>t</code>, if any.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-take_back_exn"><a href="#val-take_back_exn" class="anchor"></a><code><span><span class="keyword">val</span> take_back_exn : <span><a href="#type-t">t</a> <span class="arrow">&#45;&gt;</span></span> <a href="argument-1-A/index.html#type-elt">Array.elt</a></span></code></div><div class="spec-doc"><p>Take and remove the last value from back of <code>t</code>.</p><ul class="at-tags"><li class="raises"><span class="at-tag">raises</span> <span class="value">Empty</span> <p>if buffer is already empty.</p></li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-take_front"><a href="#val-take_front" class="anchor"></a><code><span><span class="keyword">val</span> take_front : <span><a href="#type-t">t</a> <span class="arrow">&#45;&gt;</span></span> <span><a href="argument-1-A/index.html#type-elt">Array.elt</a> option</span></span></code></div><div class="spec-doc"><p>Take and remove the first value from front of <code>t</code>, if any.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-take_front_exn"><a href="#val-take_front_exn" class="anchor"></a><code><span><span class="keyword">val</span> take_front_exn : <span><a href="#type-t">t</a> <span class="arrow">&#45;&gt;</span></span> <a href="argument-1-A/index.html#type-elt">Array.elt</a></span></code></div><div class="spec-doc"><p>Take and remove the first value from front of <code>t</code>.</p><ul class="at-tags"><li class="raises"><span class="at-tag">raises</span> <span class="value">Empty</span> <p>if buffer is already empty.</p></li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-of_array"><a href="#val-of_array" class="anchor"></a><code><span><span class="keyword">val</span> of_array : <span><a href="argument-1-A/index.html#type-t">Array.t</a> <span class="arrow">&#45;&gt;</span></span> <a href="#type-t">t</a></span></code></div><div class="spec-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-tags"><li class="since"><span class="at-tag">since</span> 0.11</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-to_array"><a href="#val-to_array" class="anchor"></a><code><span><span class="keyword">val</span> to_array : <span><a href="#type-t">t</a> <span class="arrow">&#45;&gt;</span></span> <a href="argument-1-A/index.html#type-t">Array.t</a></span></code></div><div class="spec-doc"><p>Create an array from the elements, in order.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 0.11</li></ul></div></div></div></body></html>