mirror of
https://github.com/c-cube/ocaml-containers.git
synced 2025-12-06 03:05:28 -05:00
2 lines
16 KiB
HTML
2 lines
16 KiB
HTML
<!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> » 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 "active" 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">-></span></span> unit)</span> <span class="arrow">-></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">-></span></span> <span>unit <span class="arrow">-></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">-></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">-></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">-></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">-></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">-></span></span> unit</span></code></div><div class="spec-doc"><p><code>clear buf</code> sets <code>buf.len <- 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">-></span></span> <span>int <span class="arrow">-></span></span> unit</span></code></div><div class="spec-doc"><p><code>ensure_cap self n</code> ensures that <code>capacity self >= 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">-></span></span> <span>int <span class="arrow">-></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">-></span></span> <span>int <span class="arrow">-></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 <= 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">-></span></span> <span>char <span class="arrow">-></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">-></span></span> <span>bytes <span class="arrow">-></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">-></span></span> <span>bytes <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>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">-></span></span> <span>string <span class="arrow">-></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">-></span></span> <span>string <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>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">-></span></span> <span><span class="xref-unresolved">Stdlib</span>.Buffer.t <span class="arrow">-></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">-></span></span> <span><span>char <a href="#type-iter">iter</a></span> <span class="arrow">-></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">-></span></span> <span><span>char <span class="xref-unresolved">Stdlib</span>.Seq.t</span> <span class="arrow">-></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">-></span></span> <span>int <span class="arrow">-></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">-></span></span> <span>int <span class="arrow">-></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">-></span></span> <span>int <span class="arrow">-></span></span> <span>char <span class="arrow">-></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">-></span></span> <span>int <span class="arrow">-></span></span> <span>char <span class="arrow">-></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">-></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">-></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">-></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">-></span></span> unit)</span> <span class="arrow">-></span></span> <span><a href="#type-t">t</a> <span class="arrow">-></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">-></span></span> <span>char <span class="arrow">-></span></span> unit)</span> <span class="arrow">-></span></span> <span><a href="#type-t">t</a> <span class="arrow">-></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">-></span></span> <span>char <span class="arrow">-></span></span> <span class="type-var">'a</span>)</span> <span class="arrow">-></span></span> <span><span class="type-var">'a</span> <span class="arrow">-></span></span> <span><a href="#type-t">t</a> <span class="arrow">-></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">-></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">-></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">-></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">-></span></span> <span>char <span class="xref-unresolved">Stdlib</span>.Seq.t</span></span></code></div></div></div></body></html>
|