tiny_httpd/iostream/Iostream/In_buf/index.html
2024-06-18 20:31:56 +00:00

18 lines
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>In_buf (iostream.Iostream.In_buf)</title><meta charset="utf-8"/><link rel="stylesheet" href="../../../_odoc-theme/odoc.css"/><meta name="generator" content="odoc 2.4.2"/><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">iostream</a> &#x00BB; <a href="../index.html">Iostream</a> &#x00BB; In_buf</nav><header class="odoc-preamble"><h1>Module <code><span>Iostream.In_buf</span></code></h1><p>Buffered input stream.</p></header><div class="odoc-content"><div class="odoc-spec"><div class="spec class-type anchored" id="class-type-t"><a href="#class-type-t" class="anchor"></a><code><span><span class="keyword">class</span> <span class="keyword">type</span> </span><span><a href="class-type-t/index.html">t</a></span><span> = <span class="keyword">object</span> ... <span class="keyword">end</span></span></code></div><div class="spec-doc"><p>The implementation of buffered input streams.</p></div></div><div class="odoc-spec"><div class="spec class anchored" id="class-t_from_refill"><a href="#class-t_from_refill" class="anchor"></a><code><span><span class="keyword">class</span> <span class="keyword">virtual</span> </span><span><a href="class-t_from_refill/index.html">t_from_refill</a></span><span> : <span><span class="optlabel">?bytes</span>:bytes <span class="arrow">&#45;&gt;</span></span> <span>unit <span class="arrow">&#45;&gt;</span></span> <span class="keyword">object</span> ... <span class="keyword">end</span></span></code></div><div class="spec-doc"><p>A mixin to implement a buffered input by only providing a <code>refill</code> method. Add a <code>close</code> method and it's good to go.</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><span class="optlabel">?bytes</span>:bytes <span class="arrow">&#45;&gt;</span></span>
<span><span class="optlabel">?close</span>:<span>(<span>unit <span class="arrow">&#45;&gt;</span></span> unit)</span> <span class="arrow">&#45;&gt;</span></span>
<span><span class="label">refill</span>:<span>(<span>bytes <span class="arrow">&#45;&gt;</span></span> int)</span> <span class="arrow">&#45;&gt;</span></span>
<span>unit <span class="arrow">&#45;&gt;</span></span>
<a href="class-type-t/index.html">t</a></span></code></div><div class="spec-doc"><p>Create a new buffered input stream.</p><ul class="at-tags"><li class="parameter"><span class="at-tag">parameter</span> <span class="value">refill</span> <p>will be called to refill the content of the bytes, returning how many bytes were added (starting at offset 0).</p></li></ul><ul class="at-tags"><li class="parameter"><span class="at-tag">parameter</span> <span class="value">buf</span> <p>the underlying buffer</p></li></ul><ul class="at-tags"><li class="raises"><span class="at-tag">raises</span> <code>Invalid_argument</code> <p>if the buffer's length is not at least 16.</p></li></ul></div></div><div class="odoc-spec"><div class="spec class anchored" id="class-of_bytes"><a href="#class-of_bytes" class="anchor"></a><code><span><span class="keyword">class</span> </span><span><a href="class-of_bytes/index.html">of_bytes</a></span><span> : <span><span class="optlabel">?off</span>:int <span class="arrow">&#45;&gt;</span></span> <span><span class="optlabel">?len</span>:int <span class="arrow">&#45;&gt;</span></span> <span>bytes <span class="arrow">&#45;&gt;</span></span> <a href="class-type-t/index.html">t</a></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-of_bytes"><a href="#val-of_bytes" class="anchor"></a><code><span><span class="keyword">val</span> of_bytes : <span><span class="optlabel">?off</span>:int <span class="arrow">&#45;&gt;</span></span> <span><span class="optlabel">?len</span>:int <span class="arrow">&#45;&gt;</span></span> <span>bytes <span class="arrow">&#45;&gt;</span></span> <a href="class-type-t/index.html">t</a></span></code></div></div><div class="odoc-spec"><div class="spec class anchored" id="class-of_string"><a href="#class-of_string" class="anchor"></a><code><span><span class="keyword">class</span> </span><span><a href="class-of_string/index.html">of_string</a></span><span> : <span><span class="optlabel">?off</span>:int <span class="arrow">&#45;&gt;</span></span> <span><span class="optlabel">?len</span>:int <span class="arrow">&#45;&gt;</span></span> <span>string <span class="arrow">&#45;&gt;</span></span> <a href="class-type-t/index.html">t</a></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-of_string"><a href="#val-of_string" class="anchor"></a><code><span><span class="keyword">val</span> of_string : <span><span class="optlabel">?off</span>:int <span class="arrow">&#45;&gt;</span></span> <span><span class="optlabel">?len</span>:int <span class="arrow">&#45;&gt;</span></span> <span>string <span class="arrow">&#45;&gt;</span></span> <a href="class-type-t/index.html">t</a></span></code></div></div><div class="odoc-spec"><div class="spec class anchored" id="class-bufferized"><a href="#class-bufferized" class="anchor"></a><code><span><span class="keyword">class</span> </span><span><a href="class-bufferized/index.html">bufferized</a></span><span> : <span><span class="optlabel">?bytes</span>:bytes <span class="arrow">&#45;&gt;</span></span> <span><a href="../In/class-type-t/index.html">In.t</a> <span class="arrow">&#45;&gt;</span></span> <a href="class-type-t/index.html">t</a></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-bufferized"><a href="#val-bufferized" class="anchor"></a><code><span><span class="keyword">val</span> bufferized : <span><span class="optlabel">?bytes</span>:bytes <span class="arrow">&#45;&gt;</span></span> <span><a href="../In/class-type-t/index.html">In.t</a> <span class="arrow">&#45;&gt;</span></span> <a href="class-type-t/index.html">t</a></span></code></div></div><p>Read from the given buffer.</p><ul class="at-tags"><li class="parameter"><span class="at-tag">parameter</span> <span class="value">off</span> <p>initial offset (default 0)</p></li></ul><ul class="at-tags"><li class="parameter"><span class="at-tag">parameter</span> <span class="value">len</span> <p>length of the slice in the bytes. (default all available bytes from offset)</p></li></ul><div class="odoc-spec"><div class="spec class anchored" id="class-of_in_channel"><a href="#class-of_in_channel" class="anchor"></a><code><span><span class="keyword">class</span> </span><span><a href="class-of_in_channel/index.html">of_in_channel</a></span><span> : <span><span class="optlabel">?bytes</span>:bytes <span class="arrow">&#45;&gt;</span></span> <span><a href="../../../ocaml/Stdlib/index.html#type-in_channel">in_channel</a> <span class="arrow">&#45;&gt;</span></span> <a href="class-type-t/index.html">t</a></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-of_in_channel"><a href="#val-of_in_channel" class="anchor"></a><code><span><span class="keyword">val</span> of_in_channel : <span><span class="optlabel">?bytes</span>:bytes <span class="arrow">&#45;&gt;</span></span> <span><a href="../../../ocaml/Stdlib/index.html#type-in_channel">in_channel</a> <span class="arrow">&#45;&gt;</span></span> <a href="class-type-t/index.html">t</a></span></code></div><div class="spec-doc"><p>Wrap a standard input channel.</p></div></div><div class="odoc-spec"><div class="spec class anchored" id="class-open_file"><a href="#class-open_file" class="anchor"></a><code><span><span class="keyword">class</span> </span><span><a href="class-open_file/index.html">open_file</a></span><span> : <span><span class="optlabel">?bytes</span>:bytes <span class="arrow">&#45;&gt;</span></span> <span><span class="optlabel">?mode</span>:int <span class="arrow">&#45;&gt;</span></span> <span><span class="optlabel">?flags</span>:<span><a href="../../../ocaml/Stdlib/index.html#type-open_flag">open_flag</a> list</span> <span class="arrow">&#45;&gt;</span></span> <span>string <span class="arrow">&#45;&gt;</span></span> <a href="class-type-t/index.html">t</a></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-open_file"><a href="#val-open_file" class="anchor"></a><code><span><span class="keyword">val</span> open_file :
<span><span class="optlabel">?bytes</span>:bytes <span class="arrow">&#45;&gt;</span></span>
<span><span class="optlabel">?mode</span>:int <span class="arrow">&#45;&gt;</span></span>
<span><span class="optlabel">?flags</span>:<span><a href="../../../ocaml/Stdlib/index.html#type-open_flag">open_flag</a> list</span> <span class="arrow">&#45;&gt;</span></span>
<span>string <span class="arrow">&#45;&gt;</span></span>
<a href="class-type-t/index.html">t</a></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-with_open_file"><a href="#val-with_open_file" class="anchor"></a><code><span><span class="keyword">val</span> with_open_file :
<span><span class="optlabel">?bytes</span>:bytes <span class="arrow">&#45;&gt;</span></span>
<span><span class="optlabel">?mode</span>:int <span class="arrow">&#45;&gt;</span></span>
<span><span class="optlabel">?flags</span>:<span><a href="../../../ocaml/Stdlib/index.html#type-open_flag">open_flag</a> list</span> <span class="arrow">&#45;&gt;</span></span>
<span>string <span class="arrow">&#45;&gt;</span></span>
<span><span>(<span><a href="class-type-t/index.html">t</a> <span class="arrow">&#45;&gt;</span></span> <span class="type-var">'a</span>)</span> <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-fill_buf"><a href="#val-fill_buf" class="anchor"></a><code><span><span class="keyword">val</span> fill_buf : <span><a href="class-type-t/index.html">t</a> <span class="arrow">&#45;&gt;</span></span> <a href="../Slice/index.html#type-t">Slice.t</a></span></code></div><div class="spec-doc"><p><code>fill_buffer bic</code> returns a slice into <code>bic</code>'s internal buffer, and ensures it's empty only if <code>bic.ic</code> is empty.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-input"><a href="#val-input" class="anchor"></a><code><span><span class="keyword">val</span> input : <span><a href="class-type-t/index.html">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> int</span></code></div><div class="spec-doc"><p>Read into the given slice of bytes.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-of_in"><a href="#val-of_in" class="anchor"></a><code><span><span class="keyword">val</span> of_in : <span><span class="optlabel">?bytes</span>:bytes <span class="arrow">&#45;&gt;</span></span> <span><a href="../In/class-type-t/index.html">In.t</a> <span class="arrow">&#45;&gt;</span></span> <a href="class-type-t/index.html">t</a></span></code></div><div class="spec-doc"><p>Make a buffered version of the input stream.</p><ul class="at-tags"><li class="parameter"><span class="at-tag">parameter</span> <span class="value">bytes</span> <p>the buffer to use.</p></li></ul><ul class="at-tags"><li class="raises"><span class="at-tag">raises</span> <code>Invalid_argument</code> <p>if the buffer's length is not at least 16.</p></li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-consume"><a href="#val-consume" class="anchor"></a><code><span><span class="keyword">val</span> consume : <span><a href="class-type-t/index.html">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>consume bic n</code> consumes <code>n</code> bytes from <code>bic</code>. Precondition: <code>n &lt;= get_len bic</code>, ie. one cannot consume bytes that have not yet been obtained via <code>fill_buffer</code> or <code>fill_and_get</code>.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-close"><a href="#val-close" class="anchor"></a><code><span><span class="keyword">val</span> close : <span><a href="class-type-t/index.html">t</a> <span class="arrow">&#45;&gt;</span></span> unit</span></code></div><div class="spec-doc"><p>Close the input stream.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-into_in"><a href="#val-into_in" class="anchor"></a><code><span><span class="keyword">val</span> into_in : <span><a href="class-type-t/index.html">t</a> <span class="arrow">&#45;&gt;</span></span> <a href="../In/class-type-t/index.html">In.t</a></span></code></div><div class="spec-doc"><p>Cast into a <a href="../In/class-type-t/index.html"><code>In.t</code></a>. This doesn't allocate.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-input_all_into_buffer"><a href="#val-input_all_into_buffer" class="anchor"></a><code><span><span class="keyword">val</span> input_all_into_buffer : <span><a href="class-type-t/index.html">t</a> <span class="arrow">&#45;&gt;</span></span> <span><a href="../../../ocaml/Stdlib/Buffer/index.html#type-t">Stdlib.Buffer.t</a> <span class="arrow">&#45;&gt;</span></span> unit</span></code></div><div class="spec-doc"><p>Read the whole content into the given buffer.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-input_all"><a href="#val-input_all" class="anchor"></a><code><span><span class="keyword">val</span> input_all : <span><span class="optlabel">?buf</span>:bytes <span class="arrow">&#45;&gt;</span></span> <span><a href="class-type-t/index.html">t</a> <span class="arrow">&#45;&gt;</span></span> string</span></code></div><div class="spec-doc"><p><code>input_all ic</code> reads the whole content of <code>ic</code> into a string.</p><ul class="at-tags"><li class="parameter"><span class="at-tag">parameter</span> <span class="value">buf</span> <p>the initial buffer to use internally.</p></li></ul><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 0.2</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-copy_into"><a href="#val-copy_into" class="anchor"></a><code><span><span class="keyword">val</span> copy_into : <span><a href="class-type-t/index.html">t</a> <span class="arrow">&#45;&gt;</span></span> <span><a href="../Out/class-type-t/index.html">Out.t</a> <span class="arrow">&#45;&gt;</span></span> unit</span></code></div><div class="spec-doc"><p>Copy the entire stream into the given output.</p></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="class-type-t/index.html">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 ic n</code> reads and dicards the next <code>n</code> bytes in <code>ic</code>.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-input_line"><a href="#val-input_line" class="anchor"></a><code><span><span class="keyword">val</span> input_line : <span><span class="optlabel">?buffer</span>:<a href="../../../ocaml/Stdlib/Buffer/index.html#type-t">Stdlib.Buffer.t</a> <span class="arrow">&#45;&gt;</span></span> <span><a href="class-type-t/index.html">t</a> <span class="arrow">&#45;&gt;</span></span> <span>string option</span></span></code></div><div class="spec-doc"><p>Read a line from the input. Return <code>None</code> if the stream is empty.</p><ul class="at-tags"><li class="parameter"><span class="at-tag">parameter</span> <span class="value">buffer</span> <p>a buffer to use to hold the line.</p></li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-input_lines"><a href="#val-input_lines" class="anchor"></a><code><span><span class="keyword">val</span> input_lines : <span><span class="optlabel">?buffer</span>:<a href="../../../ocaml/Stdlib/Buffer/index.html#type-t">Stdlib.Buffer.t</a> <span class="arrow">&#45;&gt;</span></span> <span><a href="class-type-t/index.html">t</a> <span class="arrow">&#45;&gt;</span></span> <span>string list</span></span></code></div><div class="spec-doc"><p>Read all lines from the input.</p></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="class-type-t/index.html">t</a> <span class="arrow">&#45;&gt;</span></span> <span><span>(<span>char <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-to_seq"><a href="#val-to_seq" class="anchor"></a><code><span><span class="keyword">val</span> to_seq : <span><a href="class-type-t/index.html">t</a> <span class="arrow">&#45;&gt;</span></span> <span>char <a href="../../../ocaml/Stdlib/Seq/index.html#type-t">Stdlib.Seq.t</a></span></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 class="optlabel">?bytes</span>:bytes <span class="arrow">&#45;&gt;</span></span> <span><span>char <a href="../../../ocaml/Stdlib/Seq/index.html#type-t">Stdlib.Seq.t</a></span> <span class="arrow">&#45;&gt;</span></span> <a href="class-type-t/index.html">t</a></span></code></div></div></div></body></html>