mirror of
https://github.com/c-cube/ocaml-containers.git
synced 2025-12-06 03:05:28 -05:00
2 lines
No EOL
18 KiB
HTML
2 lines
No EOL
18 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="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> » <a href="../index.html">CCRingBuffer</a> » 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">-></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>< 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">-></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">-></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">-></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">-></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">-></span></span> <span><a href="argument-1-A/index.html#type-t">Array.t</a> <span class="arrow">-></span></span> <span>int <span class="arrow">-></span></span> <span>int <span class="arrow">-></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">-></span></span> <span><a href="argument-1-A/index.html#type-t">Array.t</a> <span class="arrow">-></span></span> <span>int <span class="arrow">-></span></span> <span>int <span class="arrow">-></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">-></span></span> <span>into:<a href="#type-t">t</a> <span class="arrow">-></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">-></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">-></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">-></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">-></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">-></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">-></span></span> <span>int <span class="arrow">-></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 > 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">-></span></span> <span>f:<span>(<span><a href="argument-1-A/index.html#type-elt">Array.elt</a> <span class="arrow">-></span></span> unit)</span> <span class="arrow">-></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">-></span></span> <span>f:<span>(<span>int <span class="arrow">-></span></span> <span><a href="argument-1-A/index.html#type-elt">Array.elt</a> <span class="arrow">-></span></span> unit)</span> <span class="arrow">-></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">-></span></span> <span>int <span class="arrow">-></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 (> <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">-></span></span> <span>int <span class="arrow">-></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 (> <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">-></span></span> <span><a href="argument-1-A/index.html#type-elt">Array.elt</a> <span class="arrow">-></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">-></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">-></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">-></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">-></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">-></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">-></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">-></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">-></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">-></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">-></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> |