ocaml-containers/3.14/containers/CCByte_buffer/index.html
Sebastian Provenzano 0a352e3e02 3.14 too
2024-11-18 14:31:12 -06:00

2 lines
16 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>CCByte_buffer (containers.CCByte_buffer)</title><meta charset="utf-8"/><link rel="stylesheet" href="../../odoc.support/odoc.css"/><meta name="generator" content="odoc 2.4.3"/><meta name="viewport" content="width=device-width,initial-scale=1.0"/><script src="../../odoc.support/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</a> &#x00BB; CCByte_buffer</nav><header class="odoc-preamble"><h1>Module <code><span>CCByte_buffer</span></code></h1><p>Byte buffer.</p><p>A dynamic vector of bytes that doesn't hide its internal from you. Same use case as <code>Buffer.t</code> but with more power.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 3.7</li></ul></header><div class="odoc-content"><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><span> = </span><span>{</span></code><ol><li id="type-t.bs" class="def record field anchored"><a href="#type-t.bs" class="anchor"></a><code><span><span class="keyword">mutable</span> bs : bytes;</span></code><div class="def-doc"><span class="comment-delim">(*</span><p>The backing bytes buffer</p><span class="comment-delim">*)</span></div></li><li id="type-t.len" class="def record field anchored"><a href="#type-t.len" class="anchor"></a><code><span><span class="keyword">mutable</span> len : int;</span></code><div class="def-doc"><span class="comment-delim">(*</span><p>Length of the &quot;active&quot; slice in <code>bs</code>. The actual content of the buffer is <code>bs[0]..bs[len-1]</code>. What comes after is undefined garbage.</p><span class="comment-delim">*)</span></div></li></ol><code><span>}</span></code></div><div class="spec-doc"><p>The byte buffer. The definition is public since 3.13.1 .</p></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-iter"><a href="#type-iter" class="anchor"></a><code><span><span class="keyword">type</span> <span>'a iter</span></span><span> = <span><span>(<span><span class="type-var">'a</span> <span class="arrow">&#45;&gt;</span></span> unit)</span> <span class="arrow">&#45;&gt;</span></span> unit</span></code></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><span class="optlabel">?cap</span>:int <span class="arrow">&#45;&gt;</span></span> <span>unit <span class="arrow">&#45;&gt;</span></span> <a href="#type-t">t</a></span></code></div><div class="spec-doc"><p>Create a new buffer with given initial capacity.</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>Current length.</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><code>is_empty b</code> is <code>length b=0</code></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>Current capacity (size of the array returned by <a href="#val-bytes"><code>bytes</code></a>)</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-bytes"><a href="#val-bytes" class="anchor"></a><code><span><span class="keyword">val</span> bytes : <span><a href="#type-t">t</a> <span class="arrow">&#45;&gt;</span></span> bytes</span></code></div><div class="spec-doc"><p>Access the underlying byte buffer. This buffer can change after operations that affect the capacity (e.g. <a href="#val-add_char"><code>add_char</code></a>).</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><code>clear buf</code> sets <code>buf.len &lt;- 0</code>. This doesn't resize the byte buffer.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-ensure_cap"><a href="#val-ensure_cap" class="anchor"></a><code><span><span class="keyword">val</span> ensure_cap : <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>ensure_cap self n</code> ensures that <code>capacity self &gt;= n</code>.</p><ul class="at-tags"><li class="raises"><span class="at-tag">raises</span> <code>Invalid_argument</code> <p>if this requires the buffer to grow beyond system limits.</p></li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-ensure_free"><a href="#val-ensure_free" class="anchor"></a><code><span><span class="keyword">val</span> ensure_free : <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>ensure_free buf n</code> ensures that the free space at the end of the buffer is at least <code>n</code>.</p><ul class="at-tags"><li class="raises"><span class="at-tag">raises</span> <code>Invalid_argument</code> <p>if this requires the buffer to grow beyond system limits.</p></li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-shrink_to"><a href="#val-shrink_to" class="anchor"></a><code><span><span class="keyword">val</span> shrink_to : <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>shrink_to buf n</code> reduces <code>length buf</code> to at most <code>n</code>. Does nothing if the length is already &lt;= n.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-add_char"><a href="#val-add_char" class="anchor"></a><code><span><span class="keyword">val</span> add_char : <span><a href="#type-t">t</a> <span class="arrow">&#45;&gt;</span></span> <span>char <span class="arrow">&#45;&gt;</span></span> unit</span></code></div><div class="spec-doc"><p>Push a character at the end.</p><ul class="at-tags"><li class="raises"><span class="at-tag">raises</span> <code>Invalid_argument</code> <p>if this requires the buffer to grow beyond system limits.</p></li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-append_bytes"><a href="#val-append_bytes" class="anchor"></a><code><span><span class="keyword">val</span> append_bytes : <span><a href="#type-t">t</a> <span class="arrow">&#45;&gt;</span></span> <span>bytes <span class="arrow">&#45;&gt;</span></span> unit</span></code></div><div class="spec-doc"><p>Add bytes at the end</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-append_subbytes"><a href="#val-append_subbytes" class="anchor"></a><code><span><span class="keyword">val</span> append_subbytes : <span><a href="#type-t">t</a> <span class="arrow">&#45;&gt;</span></span> <span>bytes <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>Add byte slice at the end</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-append_string"><a href="#val-append_string" class="anchor"></a><code><span><span class="keyword">val</span> append_string : <span><a href="#type-t">t</a> <span class="arrow">&#45;&gt;</span></span> <span>string <span class="arrow">&#45;&gt;</span></span> unit</span></code></div><div class="spec-doc"><p>Add string at the end</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-append_substring"><a href="#val-append_substring" class="anchor"></a><code><span><span class="keyword">val</span> append_substring : <span><a href="#type-t">t</a> <span class="arrow">&#45;&gt;</span></span> <span>string <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>Add substring at the end</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-append_buf"><a href="#val-append_buf" class="anchor"></a><code><span><span class="keyword">val</span> append_buf : <span><a href="#type-t">t</a> <span class="arrow">&#45;&gt;</span></span> <span><span class="xref-unresolved">Stdlib</span>.Buffer.t <span class="arrow">&#45;&gt;</span></span> unit</span></code></div><div class="spec-doc"><p>Add content of the buffer at the end</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-append_iter"><a href="#val-append_iter" class="anchor"></a><code><span><span class="keyword">val</span> append_iter : <span><a href="#type-t">t</a> <span class="arrow">&#45;&gt;</span></span> <span><span>char <a href="#type-iter">iter</a></span> <span class="arrow">&#45;&gt;</span></span> unit</span></code></div><div class="spec-doc"><p>Adds characters from the iter</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-append_seq"><a href="#val-append_seq" class="anchor"></a><code><span><span class="keyword">val</span> append_seq : <span><a href="#type-t">t</a> <span class="arrow">&#45;&gt;</span></span> <span><span>char <span class="xref-unresolved">Stdlib</span>.Seq.t</span> <span class="arrow">&#45;&gt;</span></span> unit</span></code></div><div class="spec-doc"><p>Adds characters from the seq</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-get"><a href="#val-get" class="anchor"></a><code><span><span class="keyword">val</span> get : <span><a href="#type-t">t</a> <span class="arrow">&#45;&gt;</span></span> <span>int <span class="arrow">&#45;&gt;</span></span> char</span></code></div><div class="spec-doc"><p>Get the char at the given offset</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-unsafe_get"><a href="#val-unsafe_get" class="anchor"></a><code><span><span class="keyword">val</span> unsafe_get : <span><a href="#type-t">t</a> <span class="arrow">&#45;&gt;</span></span> <span>int <span class="arrow">&#45;&gt;</span></span> char</span></code></div><div class="spec-doc"><p>Get the char at the given offset, unsafe (no bound check)</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-set"><a href="#val-set" class="anchor"></a><code><span><span class="keyword">val</span> set : <span><a href="#type-t">t</a> <span class="arrow">&#45;&gt;</span></span> <span>int <span class="arrow">&#45;&gt;</span></span> <span>char <span class="arrow">&#45;&gt;</span></span> unit</span></code></div><div class="spec-doc"><p>Set the char at the given offset</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-unsafe_set"><a href="#val-unsafe_set" class="anchor"></a><code><span><span class="keyword">val</span> unsafe_set : <span><a href="#type-t">t</a> <span class="arrow">&#45;&gt;</span></span> <span>int <span class="arrow">&#45;&gt;</span></span> <span>char <span class="arrow">&#45;&gt;</span></span> unit</span></code></div><div class="spec-doc"><p>Set the char at the given offset, unsafe (no bound check)</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-to_slice"><a href="#val-to_slice" class="anchor"></a><code><span><span class="keyword">val</span> to_slice : <span><a href="#type-t">t</a> <span class="arrow">&#45;&gt;</span></span> <a href="../CCByte_slice/index.html#type-t">CCByte_slice.t</a></span></code></div><div class="spec-doc"><p><code>to_slice buf</code> returns a slice of the current content. The slice shares the same byte array as <code>buf</code> (until <code>buf</code> is resized).</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 3.13.1</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-contents"><a href="#val-contents" class="anchor"></a><code><span><span class="keyword">val</span> contents : <span><a href="#type-t">t</a> <span class="arrow">&#45;&gt;</span></span> string</span></code></div><div class="spec-doc"><p>Copy the internal data to a string. Allocates.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-contents_bytes"><a href="#val-contents_bytes" class="anchor"></a><code><span><span class="keyword">val</span> contents_bytes : <span><a href="#type-t">t</a> <span class="arrow">&#45;&gt;</span></span> bytes</span></code></div><div class="spec-doc"><p>Copy the internal data to a <a href="#val-bytes"><code>bytes</code></a>. Allocates.</p></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><span>(<span>char <span class="arrow">&#45;&gt;</span></span> unit)</span> <span class="arrow">&#45;&gt;</span></span> <span><a href="#type-t">t</a> <span class="arrow">&#45;&gt;</span></span> unit</span></code></div><div class="spec-doc"><p>Iterate on the content</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><span>(<span>int <span class="arrow">&#45;&gt;</span></span> <span>char <span class="arrow">&#45;&gt;</span></span> unit)</span> <span class="arrow">&#45;&gt;</span></span> <span><a href="#type-t">t</a> <span class="arrow">&#45;&gt;</span></span> unit</span></code></div><div class="spec-doc"><p>Iterate with index.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 3.13.1</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-fold_left"><a href="#val-fold_left" class="anchor"></a><code><span><span class="keyword">val</span> fold_left : <span><span>(<span><span class="type-var">'a</span> <span class="arrow">&#45;&gt;</span></span> <span>char <span class="arrow">&#45;&gt;</span></span> <span class="type-var">'a</span>)</span> <span class="arrow">&#45;&gt;</span></span> <span><span class="type-var">'a</span> <span class="arrow">&#45;&gt;</span></span> <span><a href="#type-t">t</a> <span class="arrow">&#45;&gt;</span></span> <span class="type-var">'a</span></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-of_iter"><a href="#val-of_iter" class="anchor"></a><code><span><span class="keyword">val</span> of_iter : <span><span>char <a href="#type-iter">iter</a></span> <span class="arrow">&#45;&gt;</span></span> <a href="#type-t">t</a></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-of_seq"><a href="#val-of_seq" class="anchor"></a><code><span><span class="keyword">val</span> of_seq : <span><span>char <span class="xref-unresolved">Stdlib</span>.Seq.t</span> <span class="arrow">&#45;&gt;</span></span> <a href="#type-t">t</a></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-to_iter"><a href="#val-to_iter" class="anchor"></a><code><span><span class="keyword">val</span> to_iter : <span><a href="#type-t">t</a> <span class="arrow">&#45;&gt;</span></span> <span>char <a href="#type-iter">iter</a></span></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-to_seq"><a href="#val-to_seq" class="anchor"></a><code><span><span class="keyword">val</span> to_seq : <span><a href="#type-t">t</a> <span class="arrow">&#45;&gt;</span></span> <span>char <span class="xref-unresolved">Stdlib</span>.Seq.t</span></span></code></div></div></div></body></html>