This commit is contained in:
c-cube 2024-03-07 02:28:50 +00:00
parent c1591afaba
commit bb560aabae
160 changed files with 712 additions and 324 deletions

2
hmap/Hmap/Key/index.html Normal file
View file

@ -0,0 +1,2 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Key (hmap.Hmap.Key)</title><meta charset="utf-8"/><link rel="stylesheet" href="../../../_odoc-theme/odoc.css"/><meta name="generator" content="odoc 2.4.1"/><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">hmap</a> &#x00BB; <a href="../index.html">Hmap</a> &#x00BB; Key</nav><header class="odoc-preamble"><h1>Module <code><span>Hmap.Key</span></code></h1><p>Keys.</p></header><nav class="odoc-toc"><ul><li><a href="#keys">Keys</a></li><li><a href="#exists">Existential keys</a></li></ul></nav><div class="odoc-content"><h2 id="keys"><a href="#keys" class="anchor"></a>Keys</h2><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>unit <span class="arrow">&#45;&gt;</span></span> <span><span class="type-var">'a</span> <a href="../index.html#type-key">key</a></span></span></code></div><div class="spec-doc"><p><code>create ()</code> is a new key.</p></div></div><h2 id="exists"><a href="#exists" class="anchor"></a>Existential keys</h2><p>Exisential keys allows to compare keys. This can be useful for functions like <a href="../index.html#val-filter"><code>filter</code></a>.</p><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>The type for existential keys.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-hide_type"><a href="#val-hide_type" class="anchor"></a><code><span><span class="keyword">val</span> hide_type : <span><span><span class="type-var">'a</span> <a href="../index.html#type-key">key</a></span> <span class="arrow">&#45;&gt;</span></span> <a href="#type-t">t</a></span></code></div><div class="spec-doc"><p><code>hide_type k</code> is an existential key for <code>k</code>.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-equal"><a href="#val-equal" class="anchor"></a><code><span><span class="keyword">val</span> equal : <span><a href="#type-t">t</a> <span class="arrow">&#45;&gt;</span></span> <span><a href="#type-t">t</a> <span class="arrow">&#45;&gt;</span></span> bool</span></code></div><div class="spec-doc"><p><code>equal k k'</code> is <code>true</code> iff <code>k</code> and <code>k'</code> are the same key.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-compare"><a href="#val-compare" class="anchor"></a><code><span><span class="keyword">val</span> compare : <span><a href="#type-t">t</a> <span class="arrow">&#45;&gt;</span></span> <span><a href="#type-t">t</a> <span class="arrow">&#45;&gt;</span></span> int</span></code></div><div class="spec-doc"><p><code>compare k k'</code> is a total order on keys compatible with <a href="#val-equal"><code>equal</code></a>.</p></div></div></div></body></html>

View file

@ -0,0 +1,2 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Key (hmap.Hmap.Make.Key)</title><meta charset="utf-8"/><link rel="stylesheet" href="../../../../_odoc-theme/odoc.css"/><meta name="generator" content="odoc 2.4.1"/><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">hmap</a> &#x00BB; <a href="../../index.html">Hmap</a> &#x00BB; <a href="../index.html">Make</a> &#x00BB; Key</nav><header class="odoc-preamble"><h1>Module <code><span>Make.Key</span></code></h1><p>Keys.</p></header><nav class="odoc-toc"><ul><li><a href="#keys">Keys</a></li><li><a href="#exists">Existential keys</a></li></ul></nav><div class="odoc-content"><h2 id="keys"><a href="#keys" class="anchor"></a>Keys</h2><div class="odoc-spec"><div class="spec type anchored" id="type-info"><a href="#type-info" class="anchor"></a><code><span><span class="keyword">type</span> <span>'a info</span></span><span> = <span><span class="type-var">'a</span> <a href="../argument-1-Key_info/index.html#type-t">Key_info.t</a></span></span></code></div><div class="spec-doc"><p>The type for key information.</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><span class="type-var">'a</span> <a href="#type-info">info</a></span> <span class="arrow">&#45;&gt;</span></span> <span><span class="type-var">'a</span> <a href="../index.html#type-key">key</a></span></span></code></div><div class="spec-doc"><p><code>create i</code> is a new key with information <code>i</code>.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-info"><a href="#val-info" class="anchor"></a><code><span><span class="keyword">val</span> info : <span><span><span class="type-var">'a</span> <a href="../index.html#type-key">key</a></span> <span class="arrow">&#45;&gt;</span></span> <span><span class="type-var">'a</span> <a href="#type-info">info</a></span></span></code></div><div class="spec-doc"><p><code>info k</code> is <code>k</code>'s information.</p></div></div><h2 id="exists"><a href="#exists" class="anchor"></a>Existential keys</h2><p>Exisential keys allow to compare keys. This can be useful for functions like <a href="../index.html#val-filter"><code>filter</code></a>.</p><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>The type for existential keys.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-hide_type"><a href="#val-hide_type" class="anchor"></a><code><span><span class="keyword">val</span> hide_type : <span><span><span class="type-var">'a</span> <a href="../index.html#type-key">key</a></span> <span class="arrow">&#45;&gt;</span></span> <a href="#type-t">t</a></span></code></div><div class="spec-doc"><p><code>hide_type k</code> is an existential key for <code>k</code>.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-equal"><a href="#val-equal" class="anchor"></a><code><span><span class="keyword">val</span> equal : <span><a href="#type-t">t</a> <span class="arrow">&#45;&gt;</span></span> <span><a href="#type-t">t</a> <span class="arrow">&#45;&gt;</span></span> bool</span></code></div><div class="spec-doc"><p><code>equal k k'</code> is <code>true</code> iff <code>k</code> and <code>k'</code> are the same key.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-compare"><a href="#val-compare" class="anchor"></a><code><span><span class="keyword">val</span> compare : <span><a href="#type-t">t</a> <span class="arrow">&#45;&gt;</span></span> <span><a href="#type-t">t</a> <span class="arrow">&#45;&gt;</span></span> int</span></code></div><div class="spec-doc"><p><code>compare k k'</code> is a total order on keys compatible with <a href="#val-equal"><code>equal</code></a>.</p></div></div></div></body></html>

View file

@ -0,0 +1,2 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Key_info (hmap.Hmap.Make.Key_info)</title><meta charset="utf-8"/><link rel="stylesheet" href="../../../../_odoc-theme/odoc.css"/><meta name="generator" content="odoc 2.4.1"/><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">hmap</a> &#x00BB; <a href="../../index.html">Hmap</a> &#x00BB; <a href="../index.html">Make</a> &#x00BB; Key_info</nav><header class="odoc-preamble"><h1>Parameter <code><span>Make.Key_info</span></code></h1></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> <span>'a t</span></span></code></div><div class="spec-doc"><p>The type for key information.</p></div></div></div></body></html>

File diff suppressed because one or more lines are too long

2
hmap/Hmap/index.html Normal file

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,2 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>KEY_INFO (hmap.Hmap.KEY_INFO)</title><meta charset="utf-8"/><link rel="stylesheet" href="../../../_odoc-theme/odoc.css"/><meta name="generator" content="odoc 2.4.1"/><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">hmap</a> &#x00BB; <a href="../index.html">Hmap</a> &#x00BB; KEY_INFO</nav><header class="odoc-preamble"><h1>Module type <code><span>Hmap.KEY_INFO</span></code></h1><p>The type for key information.</p></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> <span>'a t</span></span></code></div><div class="spec-doc"><p>The type for key information.</p></div></div></div></body></html>

View file

@ -0,0 +1,2 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Key (hmap.Hmap.S.Key)</title><meta charset="utf-8"/><link rel="stylesheet" href="../../../../_odoc-theme/odoc.css"/><meta name="generator" content="odoc 2.4.1"/><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">hmap</a> &#x00BB; <a href="../../index.html">Hmap</a> &#x00BB; <a href="../index.html">S</a> &#x00BB; Key</nav><header class="odoc-preamble"><h1>Module <code><span>S.Key</span></code></h1><p>Keys.</p></header><nav class="odoc-toc"><ul><li><a href="#keys">Keys</a></li><li><a href="#exists">Existential keys</a></li></ul></nav><div class="odoc-content"><h2 id="keys"><a href="#keys" class="anchor"></a>Keys</h2><div class="odoc-spec"><div class="spec type anchored" id="type-info"><a href="#type-info" class="anchor"></a><code><span><span class="keyword">type</span> <span>'a info</span></span></code></div><div class="spec-doc"><p>The type for key information.</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><span class="type-var">'a</span> <a href="#type-info">info</a></span> <span class="arrow">&#45;&gt;</span></span> <span><span class="type-var">'a</span> <a href="../index.html#type-key">key</a></span></span></code></div><div class="spec-doc"><p><code>create i</code> is a new key with information <code>i</code>.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-info"><a href="#val-info" class="anchor"></a><code><span><span class="keyword">val</span> info : <span><span><span class="type-var">'a</span> <a href="../index.html#type-key">key</a></span> <span class="arrow">&#45;&gt;</span></span> <span><span class="type-var">'a</span> <a href="#type-info">info</a></span></span></code></div><div class="spec-doc"><p><code>info k</code> is <code>k</code>'s information.</p></div></div><h2 id="exists"><a href="#exists" class="anchor"></a>Existential keys</h2><p>Exisential keys allow to compare keys. This can be useful for functions like <a href="../index.html#val-filter"><code>filter</code></a>.</p><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>The type for existential keys.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-hide_type"><a href="#val-hide_type" class="anchor"></a><code><span><span class="keyword">val</span> hide_type : <span><span><span class="type-var">'a</span> <a href="../index.html#type-key">key</a></span> <span class="arrow">&#45;&gt;</span></span> <a href="#type-t">t</a></span></code></div><div class="spec-doc"><p><code>hide_type k</code> is an existential key for <code>k</code>.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-equal"><a href="#val-equal" class="anchor"></a><code><span><span class="keyword">val</span> equal : <span><a href="#type-t">t</a> <span class="arrow">&#45;&gt;</span></span> <span><a href="#type-t">t</a> <span class="arrow">&#45;&gt;</span></span> bool</span></code></div><div class="spec-doc"><p><code>equal k k'</code> is <code>true</code> iff <code>k</code> and <code>k'</code> are the same key.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-compare"><a href="#val-compare" class="anchor"></a><code><span><span class="keyword">val</span> compare : <span><a href="#type-t">t</a> <span class="arrow">&#45;&gt;</span></span> <span><a href="#type-t">t</a> <span class="arrow">&#45;&gt;</span></span> int</span></code></div><div class="spec-doc"><p><code>compare k k'</code> is a total order on keys compatible with <a href="#val-equal"><code>equal</code></a>.</p></div></div></div></body></html>

File diff suppressed because one or more lines are too long

9
hmap/_doc-dir/CHANGES.md Normal file
View file

@ -0,0 +1,9 @@
v0.8.1 2017-10-03 Zagreb
------------------------
* Build depend on topkg.
v0.8.0 2016-03-08 La Forclaz (VS)
---------------------------------
First release.

13
hmap/_doc-dir/LICENSE.md Normal file
View file

@ -0,0 +1,13 @@
Copyright (c) 2016 Daniel C. Bünzli
Permission to use, copy, modify, and/or distribute this software for any
purpose with or without fee is hereby granted, provided that the above
copyright notice and this permission notice appear in all copies.
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.

43
hmap/_doc-dir/README.md Normal file
View file

@ -0,0 +1,43 @@
Hmap — Heterogeneous value maps for OCaml
-------------------------------------------------------------------------------
v0.8.1
Hmap provides heterogeneous value maps for OCaml. These maps bind keys
to values with arbitrary types. Keys witness the type of the value
they are bound to which allows to add and lookup bindings in a type
safe manner.
Hmap has no dependency and is distributed under the ISC license.
Home page: http://erratique.ch/software/hmap
Contact: Daniel Bünzli `<daniel.buenzl i@erratique.ch>`
## Installation
Hmap can be installed with `opam`:
opam install hmap
If you don't use `opam` consult the [`opam`](opam) file for build
instructions.
## Documentation
The documentation and API reference is automatically generated by
`ocamldoc` from the interfaces. It can be consulted [online][doc]
and there is a generated version in the `doc` directory of the
distribution.
[doc]: http://erratique.ch/software/hmap/doc
## Sample programs
If you installed Hmap with `opam` sample programs are located in
the directory `opam config var hmap:doc`.
In the distribution sample programs and tests are located in the
[`test`](test) directory of the distribution. They can be built an run
with
topkg build --tests true
topkg test

2
hmap/index.html Normal file
View file

@ -0,0 +1,2 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>index (hmap.index)</title><meta charset="utf-8"/><link rel="stylesheet" href="../_odoc-theme/odoc.css"/><meta name="generator" content="odoc 2.4.1"/><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> hmap</nav><header class="odoc-preamble"><h1 id="package-hmap"><a href="#package-hmap" class="anchor"></a>Package hmap <nav><a type="text/plain; charset=UTF-8" href="_doc-dir/CHANGES.md">changes</a> <a href="#package_info">more…</a></nav></h1><ul class="modules"><li><a href="Hmap/index.html"><code>Hmap</code></a> <span class="synopsis">Heterogeneous value maps.</span></li></ul></header><nav class="odoc-toc"><ul><li><a href="#package_info">Package info</a></li></ul></nav><div class="odoc-content"><h2 id="package_info"><a href="#package_info" class="anchor"></a>Package info</h2><table class="package info"><tr id="info-changes-files"><td><a href="#info-changes-files" aria-hidden="true" class="anchor"></a>changes-files</td><td><ul><li><a type="text/plain; charset=UTF-8" href="_doc-dir/CHANGES.md">CHANGES.md</a></li></ul></td></tr><tr id="info-license-files"><td><a href="#info-license-files" aria-hidden="true" class="anchor"></a>license-files</td><td><ul><li><a type="text/plain; charset=UTF-8" href="_doc-dir/LICENSE.md">LICENSE.md</a></li></ul></td></tr><tr id="info-readme-files"><td><a href="#info-readme-files" aria-hidden="true" class="anchor"></a>readme-files</td><td><ul><li><a type="text/plain; charset=UTF-8" href="_doc-dir/README.md">README.md</a></li></ul></td></tr></table></div></body></html>

View file

@ -1,2 +1,2 @@
<!DOCTYPE html>
<html><head><meta charset="utf-8"><meta name="generator" content="odig v0.0.9"><meta name="viewport" content="width=device-width, initial-scale=1.0"><link rel="stylesheet" type="text/css" media="screen, print" href="_odoc-theme/odoc.css"><title>_opam</title></head><body class="odoc"><nav class="odoc-nav">🐫</nav><header class="odoc-preamble"><h1>OCaml package documentation</h1><p>Browse <a href="#by-name">by name</a>, <a href="#by-tag">by tag</a>, the <a href="ocaml/Stdlib/index.html#modules">standard library</a> and the <a href="https://ocaml.org/manual/">OCaml manual</a> (online, latest version).</p><p><small>Generated for <code>/home/runner/work/tiny_httpd/tiny_httpd/_opam/lib</code></small></p></header><nav class="odoc-toc"><ul><li><a href="ocaml/Stdlib/index.html#modules">OCaml standard library</a></li><li><a href="https://ocaml.org/manual/">OCaml manual</a></li><li><a href="#by-name">Packages by name</a></li><li><a href="#by-tag">Packages by tag</a></li></ul></nav><div class="odoc-content"><h2 id="by-name"><a href="#by-name" aria-hidden="true" class="anchor"></a>Packages by name</h2><div class="by-name"><nav><a href="#name-o">o</a><a href="#name-t">t</a></nav><h3 id="name-o"><a href="#name-o" aria-hidden="true" class="anchor"></a>o</h3><ol class="packages"><li id="package-ocaml"><a href="#package-ocaml" aria-hidden="true" class="anchor"></a><a href="ocaml/index.html">ocaml</a> <span class="version"></span> <span class="synopsis"></span></li></ol><h3 id="name-t"><a href="#name-t" aria-hidden="true" class="anchor"></a>t</h3><ol class="packages"><li id="package-tiny_httpd"><a href="#package-tiny_httpd" aria-hidden="true" class="anchor"></a><a href="tiny_httpd/index.html">tiny_httpd</a> <span class="version"></span> <span class="synopsis"></span></li><li id="package-tiny_httpd_camlzip"><a href="#package-tiny_httpd_camlzip" aria-hidden="true" class="anchor"></a><a href="tiny_httpd_camlzip/index.html">tiny_httpd_camlzip</a> <span class="version"></span> <span class="synopsis"></span></li></ol></div><h2 id="by-tag"><a href="#by-tag" aria-hidden="true" class="anchor"></a>Packages by tag</h2><div class="by-tag"><nav><table></table></nav></div></div></body></html>
<html><head><meta charset="utf-8"><meta name="generator" content="odig v0.0.9"><meta name="viewport" content="width=device-width, initial-scale=1.0"><link rel="stylesheet" type="text/css" media="screen, print" href="_odoc-theme/odoc.css"><title>_opam</title></head><body class="odoc"><nav class="odoc-nav">🐫</nav><header class="odoc-preamble"><h1>OCaml package documentation</h1><p>Browse <a href="#by-name">by name</a>, <a href="#by-tag">by tag</a>, the <a href="ocaml/Stdlib/index.html#modules">standard library</a> and the <a href="https://ocaml.org/manual/">OCaml manual</a> (online, latest version).</p><p><small>Generated for <code>/home/runner/work/tiny_httpd/tiny_httpd/_opam/lib</code></small></p></header><nav class="odoc-toc"><ul><li><a href="ocaml/Stdlib/index.html#modules">OCaml standard library</a></li><li><a href="https://ocaml.org/manual/">OCaml manual</a></li><li><a href="#by-name">Packages by name</a></li><li><a href="#by-tag">Packages by tag</a></li></ul></nav><div class="odoc-content"><h2 id="by-name"><a href="#by-name" aria-hidden="true" class="anchor"></a>Packages by name</h2><div class="by-name"><nav><a href="#name-h">h</a><a href="#name-i">i</a><a href="#name-o">o</a><a href="#name-t">t</a></nav><h3 id="name-h"><a href="#name-h" aria-hidden="true" class="anchor"></a>h</h3><ol class="packages"><li id="package-hmap"><a href="#package-hmap" aria-hidden="true" class="anchor"></a><a href="hmap/index.html">hmap</a> <span class="version"></span> <span class="synopsis"></span></li></ol><h3 id="name-i"><a href="#name-i" aria-hidden="true" class="anchor"></a>i</h3><ol class="packages"><li id="package-iostream"><a href="#package-iostream" aria-hidden="true" class="anchor"></a><a href="iostream/index.html">iostream</a> <span class="version"></span> <span class="synopsis"></span></li></ol><h3 id="name-o"><a href="#name-o" aria-hidden="true" class="anchor"></a>o</h3><ol class="packages"><li id="package-ocaml"><a href="#package-ocaml" aria-hidden="true" class="anchor"></a><a href="ocaml/index.html">ocaml</a> <span class="version"></span> <span class="synopsis"></span></li></ol><h3 id="name-t"><a href="#name-t" aria-hidden="true" class="anchor"></a>t</h3><ol class="packages"><li id="package-tiny_httpd"><a href="#package-tiny_httpd" aria-hidden="true" class="anchor"></a><a href="tiny_httpd/index.html">tiny_httpd</a> <span class="version"></span> <span class="synopsis"></span></li><li id="package-tiny_httpd_camlzip"><a href="#package-tiny_httpd_camlzip" aria-hidden="true" class="anchor"></a><a href="tiny_httpd_camlzip/index.html">tiny_httpd_camlzip</a> <span class="version"></span> <span class="synopsis"></span></li></ol></div><h2 id="by-tag"><a href="#by-tag" aria-hidden="true" class="anchor"></a>Packages by tag</h2><div class="by-tag"><nav><table></table></nav></div></div></body></html>

View file

@ -0,0 +1,2 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>empty (iostream.Iostream.In.empty)</title><meta charset="utf-8"/><link rel="stylesheet" href="../../../../_odoc-theme/odoc.css"/><meta name="generator" content="odoc 2.4.1"/><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; <a href="../index.html">In</a> &#x00BB; empty</nav><header class="odoc-preamble"><h1>Class <code><span>In.empty</span></code></h1></header><div class="odoc-content"><div class="odoc-spec"><div class="spec method anchored" id="method-input"><a href="#method-input" class="anchor"></a><code><span><span class="keyword">method</span> input : <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 slice. Returns <code>0</code> only if the stream is closed.</p></div></div><div class="odoc-spec"><div class="spec method anchored" id="method-close"><a href="#method-close" class="anchor"></a><code><span><span class="keyword">method</span> close : <span>unit <span class="arrow">&#45;&gt;</span></span> unit</span></code></div><div class="spec-doc"><p>Close the input. Must be idempotent.</p></div></div></div></body></html>

View file

@ -0,0 +1,2 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>of_bytes (iostream.Iostream.In.of_bytes)</title><meta charset="utf-8"/><link rel="stylesheet" href="../../../../_odoc-theme/odoc.css"/><meta name="generator" content="odoc 2.4.1"/><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; <a href="../index.html">In</a> &#x00BB; of_bytes</nav><header class="odoc-preamble"><h1>Class <code><span>In.of_bytes</span></code></h1></header><div class="odoc-content"><div class="odoc-spec"><div class="spec inherit"><code><span><span class="keyword">inherit</span> <a href="../class-type-t/index.html">t</a></span></code></div></div><div class="odoc-spec"><div class="spec inherit"><code><span><span class="keyword">inherit</span> <span class="xref-unresolved">Iostream__.Seekable.t</span></span></code></div></div></div></body></html>

View file

@ -0,0 +1,2 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>of_in_channel (iostream.Iostream.In.of_in_channel)</title><meta charset="utf-8"/><link rel="stylesheet" href="../../../../_odoc-theme/odoc.css"/><meta name="generator" content="odoc 2.4.1"/><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; <a href="../index.html">In</a> &#x00BB; of_in_channel</nav><header class="odoc-preamble"><h1>Class <code><span>In.of_in_channel</span></code></h1></header><div class="odoc-content"><div class="odoc-spec"><div class="spec inherit"><code><span><span class="keyword">inherit</span> <a href="../class-type-t/index.html">t</a></span></code></div></div><div class="odoc-spec"><div class="spec inherit"><code><span><span class="keyword">inherit</span> <span class="xref-unresolved">Iostream__.Seekable.t</span></span></code></div></div></div></body></html>

View file

@ -0,0 +1,2 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>of_string (iostream.Iostream.In.of_string)</title><meta charset="utf-8"/><link rel="stylesheet" href="../../../../_odoc-theme/odoc.css"/><meta name="generator" content="odoc 2.4.1"/><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; <a href="../index.html">In</a> &#x00BB; of_string</nav><header class="odoc-preamble"><h1>Class <code><span>In.of_string</span></code></h1></header><div class="odoc-content"><div class="odoc-spec"><div class="spec inherit"><code><span><span class="keyword">inherit</span> <a href="../class-type-t/index.html">t</a></span></code></div></div><div class="odoc-spec"><div class="spec inherit"><code><span><span class="keyword">inherit</span> <span class="xref-unresolved">Iostream__.Seekable.t</span></span></code></div></div></div></body></html>

View file

@ -0,0 +1,2 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>open_file (iostream.Iostream.In.open_file)</title><meta charset="utf-8"/><link rel="stylesheet" href="../../../../_odoc-theme/odoc.css"/><meta name="generator" content="odoc 2.4.1"/><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; <a href="../index.html">In</a> &#x00BB; open_file</nav><header class="odoc-preamble"><h1>Class <code><span>In.open_file</span></code></h1></header><div class="odoc-content"><div class="odoc-spec"><div class="spec inherit"><code><span><span class="keyword">inherit</span> <a href="../class-type-t/index.html">t</a></span></code></div></div><div class="odoc-spec"><div class="spec inherit"><code><span><span class="keyword">inherit</span> <span class="xref-unresolved">Iostream__.Seekable.t</span></span></code></div></div></div></body></html>

View file

@ -0,0 +1,2 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>t (iostream.Iostream.In.t)</title><meta charset="utf-8"/><link rel="stylesheet" href="../../../../_odoc-theme/odoc.css"/><meta name="generator" content="odoc 2.4.1"/><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; <a href="../index.html">In</a> &#x00BB; t</nav><header class="odoc-preamble"><h1>Class type <code><span>In.t</span></code></h1><p>An input stream, i.e an incoming stream of bytes.</p><p>This can be a <code>string</code>, an <code>int_channel</code>, an <code>Unix.file_descr</code>, a decompression wrapper around another input stream, etc.</p></header><div class="odoc-content"><div class="odoc-spec"><div class="spec method anchored" id="method-input"><a href="#method-input" class="anchor"></a><code><span><span class="keyword">method</span> input : <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 slice. Returns <code>0</code> only if the stream is closed.</p></div></div><div class="odoc-spec"><div class="spec method anchored" id="method-close"><a href="#method-close" class="anchor"></a><code><span><span class="keyword">method</span> close : <span>unit <span class="arrow">&#45;&gt;</span></span> unit</span></code></div><div class="spec-doc"><p>Close the input. Must be idempotent.</p></div></div></div></body></html>

View file

@ -0,0 +1,2 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>t_seekable (iostream.Iostream.In.t_seekable)</title><meta charset="utf-8"/><link rel="stylesheet" href="../../../../_odoc-theme/odoc.css"/><meta name="generator" content="odoc 2.4.1"/><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; <a href="../index.html">In</a> &#x00BB; t_seekable</nav><header class="odoc-preamble"><h1>Class type <code><span>In.t_seekable</span></code></h1><p>An input stream that is also seekable.</p></header><div class="odoc-content"><div class="odoc-spec"><div class="spec inherit"><code><span><span class="keyword">inherit</span> <a href="../class-type-t/index.html">t</a></span></code></div></div><div class="odoc-spec"><div class="spec inherit"><code><span><span class="keyword">inherit</span> <span class="xref-unresolved">Iostream__.Seekable.t</span></span></code></div></div></div></body></html>

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,2 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>bufferized (iostream.Iostream.In_buf.bufferized)</title><meta charset="utf-8"/><link rel="stylesheet" href="../../../../_odoc-theme/odoc.css"/><meta name="generator" content="odoc 2.4.1"/><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; <a href="../index.html">In_buf</a> &#x00BB; bufferized</nav><header class="odoc-preamble"><h1>Class <code><span>In_buf.bufferized</span></code></h1></header><div class="odoc-content"><div class="odoc-spec"><div class="spec inherit"><code><span><span class="keyword">inherit</span> <span class="xref-unresolved">Iostream__.In.t</span></span></code></div></div><div class="odoc-spec"><div class="spec method anchored" id="method-fill_buf"><a href="#method-fill_buf" class="anchor"></a><code><span><span class="keyword">method</span> fill_buf : <span>unit <span class="arrow">&#45;&gt;</span></span> <span class="xref-unresolved">Iostream__.Slice.t</span></span></code></div><div class="spec-doc"><p><code>ic#fill_buf()</code> returns a slice into the <code>ic</code>'s internal buffer, and ensures it's empty only if <code>ic.ic</code> is empty. In other words, the invariant is that this only returns an empty slice if the input stream is exhausted.</p></div></div><div class="odoc-spec"><div class="spec method anchored" id="method-consume"><a href="#method-consume" class="anchor"></a><code><span><span class="keyword">method</span> consume : <span>int <span class="arrow">&#45;&gt;</span></span> unit</span></code></div><div class="spec-doc"><p>Consume <code>n</code> bytes from the inner buffer. This is only valid if the last call to <code>fill_buf</code> returned a slice with at least <code>n</code> bytes.</p></div></div></div></body></html>

View file

@ -0,0 +1,2 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>of_bytes (iostream.Iostream.In_buf.of_bytes)</title><meta charset="utf-8"/><link rel="stylesheet" href="../../../../_odoc-theme/odoc.css"/><meta name="generator" content="odoc 2.4.1"/><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; <a href="../index.html">In_buf</a> &#x00BB; of_bytes</nav><header class="odoc-preamble"><h1>Class <code><span>In_buf.of_bytes</span></code></h1></header><div class="odoc-content"><div class="odoc-spec"><div class="spec inherit"><code><span><span class="keyword">inherit</span> <span class="xref-unresolved">Iostream__.In.t</span></span></code></div></div><div class="odoc-spec"><div class="spec method anchored" id="method-fill_buf"><a href="#method-fill_buf" class="anchor"></a><code><span><span class="keyword">method</span> fill_buf : <span>unit <span class="arrow">&#45;&gt;</span></span> <span class="xref-unresolved">Iostream__.Slice.t</span></span></code></div><div class="spec-doc"><p><code>ic#fill_buf()</code> returns a slice into the <code>ic</code>'s internal buffer, and ensures it's empty only if <code>ic.ic</code> is empty. In other words, the invariant is that this only returns an empty slice if the input stream is exhausted.</p></div></div><div class="odoc-spec"><div class="spec method anchored" id="method-consume"><a href="#method-consume" class="anchor"></a><code><span><span class="keyword">method</span> consume : <span>int <span class="arrow">&#45;&gt;</span></span> unit</span></code></div><div class="spec-doc"><p>Consume <code>n</code> bytes from the inner buffer. This is only valid if the last call to <code>fill_buf</code> returned a slice with at least <code>n</code> bytes.</p></div></div></div></body></html>

View file

@ -0,0 +1,2 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>of_in_channel (iostream.Iostream.In_buf.of_in_channel)</title><meta charset="utf-8"/><link rel="stylesheet" href="../../../../_odoc-theme/odoc.css"/><meta name="generator" content="odoc 2.4.1"/><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; <a href="../index.html">In_buf</a> &#x00BB; of_in_channel</nav><header class="odoc-preamble"><h1>Class <code><span>In_buf.of_in_channel</span></code></h1></header><div class="odoc-content"><div class="odoc-spec"><div class="spec inherit"><code><span><span class="keyword">inherit</span> <span class="xref-unresolved">Iostream__.In.t</span></span></code></div></div><div class="odoc-spec"><div class="spec method anchored" id="method-fill_buf"><a href="#method-fill_buf" class="anchor"></a><code><span><span class="keyword">method</span> fill_buf : <span>unit <span class="arrow">&#45;&gt;</span></span> <span class="xref-unresolved">Iostream__.Slice.t</span></span></code></div><div class="spec-doc"><p><code>ic#fill_buf()</code> returns a slice into the <code>ic</code>'s internal buffer, and ensures it's empty only if <code>ic.ic</code> is empty. In other words, the invariant is that this only returns an empty slice if the input stream is exhausted.</p></div></div><div class="odoc-spec"><div class="spec method anchored" id="method-consume"><a href="#method-consume" class="anchor"></a><code><span><span class="keyword">method</span> consume : <span>int <span class="arrow">&#45;&gt;</span></span> unit</span></code></div><div class="spec-doc"><p>Consume <code>n</code> bytes from the inner buffer. This is only valid if the last call to <code>fill_buf</code> returned a slice with at least <code>n</code> bytes.</p></div></div></div></body></html>

View file

@ -0,0 +1,2 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>of_string (iostream.Iostream.In_buf.of_string)</title><meta charset="utf-8"/><link rel="stylesheet" href="../../../../_odoc-theme/odoc.css"/><meta name="generator" content="odoc 2.4.1"/><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; <a href="../index.html">In_buf</a> &#x00BB; of_string</nav><header class="odoc-preamble"><h1>Class <code><span>In_buf.of_string</span></code></h1></header><div class="odoc-content"><div class="odoc-spec"><div class="spec inherit"><code><span><span class="keyword">inherit</span> <span class="xref-unresolved">Iostream__.In.t</span></span></code></div></div><div class="odoc-spec"><div class="spec method anchored" id="method-fill_buf"><a href="#method-fill_buf" class="anchor"></a><code><span><span class="keyword">method</span> fill_buf : <span>unit <span class="arrow">&#45;&gt;</span></span> <span class="xref-unresolved">Iostream__.Slice.t</span></span></code></div><div class="spec-doc"><p><code>ic#fill_buf()</code> returns a slice into the <code>ic</code>'s internal buffer, and ensures it's empty only if <code>ic.ic</code> is empty. In other words, the invariant is that this only returns an empty slice if the input stream is exhausted.</p></div></div><div class="odoc-spec"><div class="spec method anchored" id="method-consume"><a href="#method-consume" class="anchor"></a><code><span><span class="keyword">method</span> consume : <span>int <span class="arrow">&#45;&gt;</span></span> unit</span></code></div><div class="spec-doc"><p>Consume <code>n</code> bytes from the inner buffer. This is only valid if the last call to <code>fill_buf</code> returned a slice with at least <code>n</code> bytes.</p></div></div></div></body></html>

View file

@ -0,0 +1,2 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>open_file (iostream.Iostream.In_buf.open_file)</title><meta charset="utf-8"/><link rel="stylesheet" href="../../../../_odoc-theme/odoc.css"/><meta name="generator" content="odoc 2.4.1"/><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; <a href="../index.html">In_buf</a> &#x00BB; open_file</nav><header class="odoc-preamble"><h1>Class <code><span>In_buf.open_file</span></code></h1></header><div class="odoc-content"><div class="odoc-spec"><div class="spec inherit"><code><span><span class="keyword">inherit</span> <span class="xref-unresolved">Iostream__.In.t</span></span></code></div></div><div class="odoc-spec"><div class="spec method anchored" id="method-fill_buf"><a href="#method-fill_buf" class="anchor"></a><code><span><span class="keyword">method</span> fill_buf : <span>unit <span class="arrow">&#45;&gt;</span></span> <span class="xref-unresolved">Iostream__.Slice.t</span></span></code></div><div class="spec-doc"><p><code>ic#fill_buf()</code> returns a slice into the <code>ic</code>'s internal buffer, and ensures it's empty only if <code>ic.ic</code> is empty. In other words, the invariant is that this only returns an empty slice if the input stream is exhausted.</p></div></div><div class="odoc-spec"><div class="spec method anchored" id="method-consume"><a href="#method-consume" class="anchor"></a><code><span><span class="keyword">method</span> consume : <span>int <span class="arrow">&#45;&gt;</span></span> unit</span></code></div><div class="spec-doc"><p>Consume <code>n</code> bytes from the inner buffer. This is only valid if the last call to <code>fill_buf</code> returned a slice with at least <code>n</code> bytes.</p></div></div></div></body></html>

View file

@ -0,0 +1,2 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>t_from_refill (iostream.Iostream.In_buf.t_from_refill)</title><meta charset="utf-8"/><link rel="stylesheet" href="../../../../_odoc-theme/odoc.css"/><meta name="generator" content="odoc 2.4.1"/><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; <a href="../index.html">In_buf</a> &#x00BB; t_from_refill</nav><header class="odoc-preamble"><h1>Class <code><span>In_buf.t_from_refill</span></code></h1><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></header><div class="odoc-content"><div class="odoc-spec"><div class="spec method anchored" id="method-refill"><a href="#method-refill" class="anchor"></a><code><span><span class="keyword">method</span> <span class="keyword">private</span> <span class="keyword">virtual</span> refill : <span><span class="xref-unresolved">Iostream__.Slice.t</span> <span class="arrow">&#45;&gt;</span></span> unit</span></code></div><div class="spec-doc"><p>Implementation of the stream: this takes a slice, resets its offset, and fills it with bytes. It must write at least one byte in the slice, unless the underlying input has reached its end.</p></div></div><div class="odoc-spec"><div class="spec method anchored" id="method-input"><a href="#method-input" class="anchor"></a><code><span><span class="keyword">method</span> input : <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><div class="odoc-spec"><div class="spec method anchored" id="method-fill_buf"><a href="#method-fill_buf" class="anchor"></a><code><span><span class="keyword">method</span> fill_buf : <span>unit <span class="arrow">&#45;&gt;</span></span> <span class="xref-unresolved">Iostream__.Slice.t</span></span></code></div></div><div class="odoc-spec"><div class="spec method anchored" id="method-consume"><a href="#method-consume" class="anchor"></a><code><span><span class="keyword">method</span> consume : <span>int <span class="arrow">&#45;&gt;</span></span> unit</span></code></div></div></div></body></html>

View file

@ -0,0 +1,2 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>t (iostream.Iostream.In_buf.t)</title><meta charset="utf-8"/><link rel="stylesheet" href="../../../../_odoc-theme/odoc.css"/><meta name="generator" content="odoc 2.4.1"/><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; <a href="../index.html">In_buf</a> &#x00BB; t</nav><header class="odoc-preamble"><h1>Class type <code><span>In_buf.t</span></code></h1><p>The implementation of buffered input streams.</p></header><div class="odoc-content"><div class="odoc-spec"><div class="spec inherit"><code><span><span class="keyword">inherit</span> <span class="xref-unresolved">Iostream__.In.t</span></span></code></div></div><div class="odoc-spec"><div class="spec method anchored" id="method-fill_buf"><a href="#method-fill_buf" class="anchor"></a><code><span><span class="keyword">method</span> fill_buf : <span>unit <span class="arrow">&#45;&gt;</span></span> <span class="xref-unresolved">Iostream__.Slice.t</span></span></code></div><div class="spec-doc"><p><code>ic#fill_buf()</code> returns a slice into the <code>ic</code>'s internal buffer, and ensures it's empty only if <code>ic.ic</code> is empty. In other words, the invariant is that this only returns an empty slice if the input stream is exhausted.</p></div></div><div class="odoc-spec"><div class="spec method anchored" id="method-consume"><a href="#method-consume" class="anchor"></a><code><span><span class="keyword">method</span> consume : <span>int <span class="arrow">&#45;&gt;</span></span> unit</span></code></div><div class="spec-doc"><p>Consume <code>n</code> bytes from the inner buffer. This is only valid if the last call to <code>fill_buf</code> returned a slice with at least <code>n</code> bytes.</p></div></div></div></body></html>

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,2 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>dummy (iostream.Iostream.Out.dummy)</title><meta charset="utf-8"/><link rel="stylesheet" href="../../../../_odoc-theme/odoc.css"/><meta name="generator" content="odoc 2.4.1"/><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; <a href="../index.html">Out</a> &#x00BB; dummy</nav><header class="odoc-preamble"><h1>Class <code><span>Out.dummy</span></code></h1></header><div class="odoc-content"><div class="odoc-spec"><div class="spec method anchored" id="method-output"><a href="#method-output" class="anchor"></a><code><span><span class="keyword">method</span> output : <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>Output slice</p></div></div><div class="odoc-spec"><div class="spec method anchored" id="method-close"><a href="#method-close" class="anchor"></a><code><span><span class="keyword">method</span> close : <span>unit <span class="arrow">&#45;&gt;</span></span> unit</span></code></div><div class="spec-doc"><p>Close the output. Must be idempotent.</p></div></div></div></body></html>

View file

@ -0,0 +1,2 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>map_char (iostream.Iostream.Out.map_char)</title><meta charset="utf-8"/><link rel="stylesheet" href="../../../../_odoc-theme/odoc.css"/><meta name="generator" content="odoc 2.4.1"/><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; <a href="../index.html">Out</a> &#x00BB; map_char</nav><header class="odoc-preamble"><h1>Class <code><span>Out.map_char</span></code></h1></header><div class="odoc-content"><div class="odoc-spec"><div class="spec method anchored" id="method-output"><a href="#method-output" class="anchor"></a><code><span><span class="keyword">method</span> output : <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>Output slice</p></div></div><div class="odoc-spec"><div class="spec method anchored" id="method-close"><a href="#method-close" class="anchor"></a><code><span><span class="keyword">method</span> close : <span>unit <span class="arrow">&#45;&gt;</span></span> unit</span></code></div><div class="spec-doc"><p>Close the output. Must be idempotent.</p></div></div></div></body></html>

View file

@ -0,0 +1,2 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>of_buffer (iostream.Iostream.Out.of_buffer)</title><meta charset="utf-8"/><link rel="stylesheet" href="../../../../_odoc-theme/odoc.css"/><meta name="generator" content="odoc 2.4.1"/><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; <a href="../index.html">Out</a> &#x00BB; of_buffer</nav><header class="odoc-preamble"><h1>Class <code><span>Out.of_buffer</span></code></h1></header><div class="odoc-content"><div class="odoc-spec"><div class="spec method anchored" id="method-output"><a href="#method-output" class="anchor"></a><code><span><span class="keyword">method</span> output : <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>Output slice</p></div></div><div class="odoc-spec"><div class="spec method anchored" id="method-close"><a href="#method-close" class="anchor"></a><code><span><span class="keyword">method</span> close : <span>unit <span class="arrow">&#45;&gt;</span></span> unit</span></code></div><div class="spec-doc"><p>Close the output. Must be idempotent.</p></div></div></div></body></html>

View file

@ -0,0 +1,2 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>of_out_channel (iostream.Iostream.Out.of_out_channel)</title><meta charset="utf-8"/><link rel="stylesheet" href="../../../../_odoc-theme/odoc.css"/><meta name="generator" content="odoc 2.4.1"/><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; <a href="../index.html">Out</a> &#x00BB; of_out_channel</nav><header class="odoc-preamble"><h1>Class <code><span>Out.of_out_channel</span></code></h1></header><div class="odoc-content"><div class="odoc-spec"><div class="spec inherit"><code><span><span class="keyword">inherit</span> <a href="../class-type-t/index.html">t</a></span></code></div></div><div class="odoc-spec"><div class="spec inherit"><code><span><span class="keyword">inherit</span> <span class="xref-unresolved">Iostream__.Seekable.t</span></span></code></div></div></div></body></html>

View file

@ -0,0 +1,2 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>t (iostream.Iostream.Out.t)</title><meta charset="utf-8"/><link rel="stylesheet" href="../../../../_odoc-theme/odoc.css"/><meta name="generator" content="odoc 2.4.1"/><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; <a href="../index.html">Out</a> &#x00BB; t</nav><header class="odoc-preamble"><h1>Class type <code><span>Out.t</span></code></h1><p>An output stream, ie. a place into which we can write bytes. This can be a <code>Buffer.t</code>, an <code>out_channel</code>, a <code>Unix.file_descr</code>, etc.</p></header><div class="odoc-content"><div class="odoc-spec"><div class="spec method anchored" id="method-output"><a href="#method-output" class="anchor"></a><code><span><span class="keyword">method</span> output : <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>Output slice</p></div></div><div class="odoc-spec"><div class="spec method anchored" id="method-close"><a href="#method-close" class="anchor"></a><code><span><span class="keyword">method</span> close : <span>unit <span class="arrow">&#45;&gt;</span></span> unit</span></code></div><div class="spec-doc"><p>Close the output. Must be idempotent.</p></div></div></div></body></html>

View file

@ -0,0 +1,2 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>t_seekable (iostream.Iostream.Out.t_seekable)</title><meta charset="utf-8"/><link rel="stylesheet" href="../../../../_odoc-theme/odoc.css"/><meta name="generator" content="odoc 2.4.1"/><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; <a href="../index.html">Out</a> &#x00BB; t_seekable</nav><header class="odoc-preamble"><h1>Class type <code><span>Out.t_seekable</span></code></h1></header><div class="odoc-content"><div class="odoc-spec"><div class="spec inherit"><code><span><span class="keyword">inherit</span> <a href="../class-type-t/index.html">t</a></span></code></div></div><div class="odoc-spec"><div class="spec inherit"><code><span><span class="keyword">inherit</span> <span class="xref-unresolved">Iostream__.Seekable.t</span></span></code></div></div></div></body></html>

View file

@ -0,0 +1,13 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Out (iostream.Iostream.Out)</title><meta charset="utf-8"/><link rel="stylesheet" href="../../../_odoc-theme/odoc.css"/><meta name="generator" content="odoc 2.4.1"/><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; Out</nav><header class="odoc-preamble"><h1>Module <code><span>Iostream.Out</span></code></h1><p>Output 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>An output stream, ie. a place into which we can write bytes. This can be a <code>Buffer.t</code>, an <code>out_channel</code>, a <code>Unix.file_descr</code>, etc.</p></div></div><div class="odoc-spec"><div class="spec class-type anchored" id="class-type-t_seekable"><a href="#class-type-t_seekable" class="anchor"></a><code><span><span class="keyword">class</span> <span class="keyword">type</span> </span><span><a href="class-type-t_seekable/index.html">t_seekable</a></span><span> = <span class="keyword">object</span> ... <span class="keyword">end</span></span></code></div></div><div class="odoc-spec"><div class="spec class anchored" id="class-dummy"><a href="#class-dummy" class="anchor"></a><code><span><span class="keyword">class</span> </span><span><a href="class-dummy/index.html">dummy</a></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-dummy"><a href="#val-dummy" class="anchor"></a><code><span><span class="keyword">val</span> dummy : <a href="class-type-t/index.html">t</a></span></code></div><div class="spec-doc"><p>Dummy output, drops everything written to it.</p></div></div><div class="odoc-spec"><div class="spec class anchored" id="class-of_out_channel"><a href="#class-of_out_channel" class="anchor"></a><code><span><span class="keyword">class</span> </span><span><a href="class-of_out_channel/index.html">of_out_channel</a></span><span> : <span><span class="optlabel">?close_noerr</span>:bool <span class="arrow">&#45;&gt;</span></span> <span><a href="../../../ocaml/Stdlib/index.html#type-out_channel">out_channel</a> <span class="arrow">&#45;&gt;</span></span> <a href="class-type-t_seekable/index.html">t_seekable</a></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-of_out_channel"><a href="#val-of_out_channel" class="anchor"></a><code><span><span class="keyword">val</span> of_out_channel : <span><span class="optlabel">?close_noerr</span>:bool <span class="arrow">&#45;&gt;</span></span> <span><a href="../../../ocaml/Stdlib/index.html#type-out_channel">out_channel</a> <span class="arrow">&#45;&gt;</span></span> <a href="class-type-t_seekable/index.html">t_seekable</a></span></code></div><div class="spec-doc"><p>Wrap an out channel.</p></div></div><div class="odoc-spec"><div class="spec class anchored" id="class-of_buffer"><a href="#class-of_buffer" class="anchor"></a><code><span><span class="keyword">class</span> </span><span><a href="class-of_buffer/index.html">of_buffer</a></span><span> : <span><a href="../../../ocaml/Stdlib/Buffer/index.html#type-t">Stdlib.Buffer.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-of_buffer"><a href="#val-of_buffer" class="anchor"></a><code><span><span class="keyword">val</span> of_buffer : <span><a href="../../../ocaml/Stdlib/Buffer/index.html#type-t">Stdlib.Buffer.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><code>of_buffer buf</code> is an output channel that writes directly into <code>buf</code>. <code>flush</code> and <code>close</code> have no effect.</p></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">?close_noerr</span>:bool <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_seekable/index.html">t_seekable</a></span></code></div><div class="spec-doc"><p><code>open_file file</code> creates an out stream writing into the given file.</p><ul class="at-tags"><li class="parameter"><span class="at-tag">parameter</span> <span class="value">mode</span> <p>permissions for the file creation</p></li></ul><ul class="at-tags"><li class="parameter"><span class="at-tag">parameter</span> <span class="value">flags</span> <p>set of unix flags to use. It must contain write permissions.</p></li></ul></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">?close_noerr</span>:bool <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_seekable/index.html">t_seekable</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-output"><a href="#val-output" class="anchor"></a><code><span><span class="keyword">val</span> output : <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> unit</span></code></div><div class="spec-doc"><p>Write the slice of bytes.</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 stream. Idempotent.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-output_string"><a href="#val-output_string" class="anchor"></a><code><span><span class="keyword">val</span> output_string : <span><a href="class-type-t/index.html">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>Output the whole string.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-output_int"><a href="#val-output_int" class="anchor"></a><code><span><span class="keyword">val</span> output_int : <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>Output an integer in decimal notation.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-tee"><a href="#val-tee" class="anchor"></a><code><span><span class="keyword">val</span> tee : <span><span><a href="class-type-t/index.html">t</a> list</span> <span class="arrow">&#45;&gt;</span></span> <a href="class-type-t/index.html">t</a></span></code></div><div class="spec-doc"><p><code>tee ocs</code> is an output that accepts bytes and writes them to every output in <code>ocs</code>. When closed, it closes all elements of <code>oc</code>.</p></div></div><div class="odoc-spec"><div class="spec class anchored" id="class-map_char"><a href="#class-map_char" class="anchor"></a><code><span><span class="keyword">class</span> </span><span><a href="class-map_char/index.html">map_char</a></span><span> : <span><span>(<span>char <span class="arrow">&#45;&gt;</span></span> char)</span> <span class="arrow">&#45;&gt;</span></span> <span><a href="class-type-t/index.html">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-map_char"><a href="#val-map_char" class="anchor"></a><code><span><span class="keyword">val</span> map_char : <span><span>(<span>char <span class="arrow">&#45;&gt;</span></span> char)</span> <span class="arrow">&#45;&gt;</span></span> <span><a href="class-type-t/index.html">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>Transform the stream byte by byte</p></div></div></div></body></html>

View file

@ -0,0 +1,2 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>bufferized (iostream.Iostream.Out_buf.bufferized)</title><meta charset="utf-8"/><link rel="stylesheet" href="../../../../_odoc-theme/odoc.css"/><meta name="generator" content="odoc 2.4.1"/><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; <a href="../index.html">Out_buf</a> &#x00BB; bufferized</nav><header class="odoc-preamble"><h1>Class <code><span>Out_buf.bufferized</span></code></h1></header><div class="odoc-content"><div class="odoc-spec"><div class="spec inherit"><code><span><span class="keyword">inherit</span> <span class="xref-unresolved">Iostream__.Out.t</span></span></code></div></div><div class="odoc-spec"><div class="spec method anchored" id="method-output_char"><a href="#method-output_char" class="anchor"></a><code><span><span class="keyword">method</span> output_char : <span>char <span class="arrow">&#45;&gt;</span></span> unit</span></code></div><div class="spec-doc"><p>Output a single char</p></div></div><div class="odoc-spec"><div class="spec method anchored" id="method-flush"><a href="#method-flush" class="anchor"></a><code><span><span class="keyword">method</span> flush : <span>unit <span class="arrow">&#45;&gt;</span></span> unit</span></code></div><div class="spec-doc"><p>Flush underlying buffer</p></div></div></div></body></html>

View file

@ -0,0 +1,2 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>dummy (iostream.Iostream.Out_buf.dummy)</title><meta charset="utf-8"/><link rel="stylesheet" href="../../../../_odoc-theme/odoc.css"/><meta name="generator" content="odoc 2.4.1"/><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; <a href="../index.html">Out_buf</a> &#x00BB; dummy</nav><header class="odoc-preamble"><h1>Class <code><span>Out_buf.dummy</span></code></h1></header><div class="odoc-content"><div class="odoc-spec"><div class="spec inherit"><code><span><span class="keyword">inherit</span> <span class="xref-unresolved">Iostream__.Out.t</span></span></code></div></div><div class="odoc-spec"><div class="spec method anchored" id="method-output_char"><a href="#method-output_char" class="anchor"></a><code><span><span class="keyword">method</span> output_char : <span>char <span class="arrow">&#45;&gt;</span></span> unit</span></code></div><div class="spec-doc"><p>Output a single char</p></div></div><div class="odoc-spec"><div class="spec method anchored" id="method-flush"><a href="#method-flush" class="anchor"></a><code><span><span class="keyword">method</span> flush : <span>unit <span class="arrow">&#45;&gt;</span></span> unit</span></code></div><div class="spec-doc"><p>Flush underlying buffer</p></div></div></div></body></html>

View file

@ -0,0 +1,2 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>of_buffer (iostream.Iostream.Out_buf.of_buffer)</title><meta charset="utf-8"/><link rel="stylesheet" href="../../../../_odoc-theme/odoc.css"/><meta name="generator" content="odoc 2.4.1"/><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; <a href="../index.html">Out_buf</a> &#x00BB; of_buffer</nav><header class="odoc-preamble"><h1>Class <code><span>Out_buf.of_buffer</span></code></h1></header><div class="odoc-content"><div class="odoc-spec"><div class="spec inherit"><code><span><span class="keyword">inherit</span> <span class="xref-unresolved">Iostream__.Out.t</span></span></code></div></div><div class="odoc-spec"><div class="spec method anchored" id="method-output_char"><a href="#method-output_char" class="anchor"></a><code><span><span class="keyword">method</span> output_char : <span>char <span class="arrow">&#45;&gt;</span></span> unit</span></code></div><div class="spec-doc"><p>Output a single char</p></div></div><div class="odoc-spec"><div class="spec method anchored" id="method-flush"><a href="#method-flush" class="anchor"></a><code><span><span class="keyword">method</span> flush : <span>unit <span class="arrow">&#45;&gt;</span></span> unit</span></code></div><div class="spec-doc"><p>Flush underlying buffer</p></div></div></div></body></html>

View file

@ -0,0 +1,2 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>of_out_channel (iostream.Iostream.Out_buf.of_out_channel)</title><meta charset="utf-8"/><link rel="stylesheet" href="../../../../_odoc-theme/odoc.css"/><meta name="generator" content="odoc 2.4.1"/><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; <a href="../index.html">Out_buf</a> &#x00BB; of_out_channel</nav><header class="odoc-preamble"><h1>Class <code><span>Out_buf.of_out_channel</span></code></h1></header><div class="odoc-content"><div class="odoc-spec"><div class="spec inherit"><code><span><span class="keyword">inherit</span> <a href="../class-type-t/index.html">t</a></span></code></div></div><div class="odoc-spec"><div class="spec inherit"><code><span><span class="keyword">inherit</span> <span class="xref-unresolved">Iostream__.Seekable.t</span></span></code></div></div></div></body></html>

View file

@ -0,0 +1,2 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>open_file (iostream.Iostream.Out_buf.open_file)</title><meta charset="utf-8"/><link rel="stylesheet" href="../../../../_odoc-theme/odoc.css"/><meta name="generator" content="odoc 2.4.1"/><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; <a href="../index.html">Out_buf</a> &#x00BB; open_file</nav><header class="odoc-preamble"><h1>Class <code><span>Out_buf.open_file</span></code></h1></header><div class="odoc-content"><div class="odoc-spec"><div class="spec inherit"><code><span><span class="keyword">inherit</span> <a href="../class-type-t/index.html">t</a></span></code></div></div><div class="odoc-spec"><div class="spec inherit"><code><span><span class="keyword">inherit</span> <span class="xref-unresolved">Iostream__.Seekable.t</span></span></code></div></div></div></body></html>

View file

@ -0,0 +1,2 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>t_from_output (iostream.Iostream.Out_buf.t_from_output)</title><meta charset="utf-8"/><link rel="stylesheet" href="../../../../_odoc-theme/odoc.css"/><meta name="generator" content="odoc 2.4.1"/><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; <a href="../index.html">Out_buf</a> &#x00BB; t_from_output</nav><header class="odoc-preamble"><h1>Class <code><span>Out_buf.t_from_output</span></code></h1><p>Make a bufferized output from a non bufferized output+close.</p><ul class="at-tags"><li class="parameter"><span class="at-tag">parameter</span> <span class="value">bytes</span> <p>the buffer to use. It's owned by this channel as long as the channel exists.</p></li></ul></header><div class="odoc-content"><div class="odoc-spec"><div class="spec inherit"><code><span><span class="keyword">inherit</span> <a href="../class-type-t/index.html">t</a></span></code></div></div><div class="odoc-spec"><div class="spec method anchored" id="method-output_underlying"><a href="#method-output_underlying" class="anchor"></a><code><span><span class="keyword">method</span> <span class="keyword">private</span> <span class="keyword">virtual</span> output_underlying : <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>Emit these private bytes, unbufferized</p></div></div><div class="odoc-spec"><div class="spec method anchored" id="method-close_underlying"><a href="#method-close_underlying" class="anchor"></a><code><span><span class="keyword">method</span> <span class="keyword">private</span> <span class="keyword">virtual</span> close_underlying : <span>unit <span class="arrow">&#45;&gt;</span></span> unit</span></code></div><div class="spec-doc"><p>Close the underlying output. The bufferized output will flush and then call this.</p></div></div></div></body></html>

View file

@ -0,0 +1,2 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>t (iostream.Iostream.Out_buf.t)</title><meta charset="utf-8"/><link rel="stylesheet" href="../../../../_odoc-theme/odoc.css"/><meta name="generator" content="odoc 2.4.1"/><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; <a href="../index.html">Out_buf</a> &#x00BB; t</nav><header class="odoc-preamble"><h1>Class type <code><span>Out_buf.t</span></code></h1><p>An output stream, ie. a place into which we can write bytes, with a buffer to amortize the cost of operations.</p><p>This can be a <code>Buffer.t</code>, an <code>out_channel</code>, a <code>Unix.file_descr</code>, etc.</p></header><div class="odoc-content"><div class="odoc-spec"><div class="spec inherit"><code><span><span class="keyword">inherit</span> <span class="xref-unresolved">Iostream__.Out.t</span></span></code></div></div><div class="odoc-spec"><div class="spec method anchored" id="method-output_char"><a href="#method-output_char" class="anchor"></a><code><span><span class="keyword">method</span> output_char : <span>char <span class="arrow">&#45;&gt;</span></span> unit</span></code></div><div class="spec-doc"><p>Output a single char</p></div></div><div class="odoc-spec"><div class="spec method anchored" id="method-flush"><a href="#method-flush" class="anchor"></a><code><span><span class="keyword">method</span> flush : <span>unit <span class="arrow">&#45;&gt;</span></span> unit</span></code></div><div class="spec-doc"><p>Flush underlying buffer</p></div></div></div></body></html>

View file

@ -0,0 +1,2 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>t_seekable (iostream.Iostream.Out_buf.t_seekable)</title><meta charset="utf-8"/><link rel="stylesheet" href="../../../../_odoc-theme/odoc.css"/><meta name="generator" content="odoc 2.4.1"/><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; <a href="../index.html">Out_buf</a> &#x00BB; t_seekable</nav><header class="odoc-preamble"><h1>Class type <code><span>Out_buf.t_seekable</span></code></h1></header><div class="odoc-content"><div class="odoc-spec"><div class="spec inherit"><code><span><span class="keyword">inherit</span> <a href="../class-type-t/index.html">t</a></span></code></div></div><div class="odoc-spec"><div class="spec inherit"><code><span><span class="keyword">inherit</span> <span class="xref-unresolved">Iostream__.Seekable.t</span></span></code></div></div></div></body></html>

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,2 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>t (iostream.Iostream.Seekable.t)</title><meta charset="utf-8"/><link rel="stylesheet" href="../../../../_odoc-theme/odoc.css"/><meta name="generator" content="odoc 2.4.1"/><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; <a href="../index.html">Seekable</a> &#x00BB; t</nav><header class="odoc-preamble"><h1>Class type <code><span>Seekable.t</span></code></h1></header><div class="odoc-content"><div class="odoc-spec"><div class="spec method anchored" id="method-seek"><a href="#method-seek" class="anchor"></a><code><span><span class="keyword">method</span> seek : <span>int <span class="arrow">&#45;&gt;</span></span> unit</span></code></div><div class="spec-doc"><p>Seek in the underlying stream.</p><ul class="at-tags"><li class="raises"><span class="at-tag">raises</span> <code>Sys_error</code> <p>in case of failure</p></li></ul></div></div><div class="odoc-spec"><div class="spec method anchored" id="method-pos"><a href="#method-pos" class="anchor"></a><code><span><span class="keyword">method</span> pos : <span>unit <span class="arrow">&#45;&gt;</span></span> int</span></code></div><div class="spec-doc"><p>Return current offset in underlying stream.</p><ul class="at-tags"><li class="raises"><span class="at-tag">raises</span> <code>Sys_error</code> <p>in case of failure</p></li></ul></div></div></div></body></html>

View file

@ -0,0 +1,2 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Seekable (iostream.Iostream.Seekable)</title><meta charset="utf-8"/><link rel="stylesheet" href="../../../_odoc-theme/odoc.css"/><meta name="generator" content="odoc 2.4.1"/><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; Seekable</nav><header class="odoc-preamble"><h1>Module <code><span>Iostream.Seekable</span></code></h1><p>An object we can seek in.</p><p>Files can be seeked in, i.e the read/write head can move around.</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><div class="odoc-spec"><div class="spec value anchored" id="val-seek"><a href="#val-seek" class="anchor"></a><code><span><span class="keyword">val</span> seek : <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><div class="odoc-spec"><div class="spec value anchored" id="val-pos"><a href="#val-pos" class="anchor"></a><code><span><span class="keyword">val</span> pos : <span><a href="class-type-t/index.html">t</a> <span class="arrow">&#45;&gt;</span></span> int</span></code></div></div></div></body></html>

View file

@ -0,0 +1,2 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Slice (iostream.Iostream.Slice)</title><meta charset="utf-8"/><link rel="stylesheet" href="../../../_odoc-theme/odoc.css"/><meta name="generator" content="odoc 2.4.1"/><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; Slice</nav><header class="odoc-preamble"><h1>Module <code><span>Iostream.Slice</span></code></h1><p>Byte slice or buffer.</p></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.bytes" class="def record field anchored"><a href="#type-t.bytes" class="anchor"></a><code><span>bytes : bytes;</span></code><div class="def-doc"><span class="comment-delim">(*</span><p>Bytes</p><span class="comment-delim">*)</span></div></li><li id="type-t.off" class="def record field anchored"><a href="#type-t.off" class="anchor"></a><code><span><span class="keyword">mutable</span> off : int;</span></code><div class="def-doc"><span class="comment-delim">(*</span><p>Offset in bytes</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 slice. Empty slice has <code>len=0</code></p><span class="comment-delim">*)</span></div></li></ol><code><span>}</span></code></div><div class="spec-doc"><p>A slice of bytes. The valid bytes in the slice are <code>bytes[off], bytes[off+1], …, bytes[off+len-1]</code> (i.e <code>len</code> bytes starting at offset <code>off</code>).</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-empty"><a href="#val-empty" class="anchor"></a><code><span><span class="keyword">val</span> empty : <a href="#type-t">t</a></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>int <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_bytes"><a href="#val-of_bytes" class="anchor"></a><code><span><span class="keyword">val</span> of_bytes : <span>bytes <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-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><div class="odoc-spec"><div class="spec value anchored" id="val-off"><a href="#val-off" class="anchor"></a><code><span><span class="keyword">val</span> off : <span><a href="#type-t">t</a> <span class="arrow">&#45;&gt;</span></span> int</span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-len"><a href="#val-len" class="anchor"></a><code><span><span class="keyword">val</span> len : <span><a href="#type-t">t</a> <span class="arrow">&#45;&gt;</span></span> int</span></code></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="#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>Consume the first <code>n</code> bytes from the slice, making it <code>n</code> bytes shorter. This modifies the slice in place.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-find_index_exn"><a href="#val-find_index_exn" class="anchor"></a><code><span><span class="keyword">val</span> find_index_exn : <span><a href="#type-t">t</a> <span class="arrow">&#45;&gt;</span></span> <span>char <span class="arrow">&#45;&gt;</span></span> int</span></code></div><div class="spec-doc"><p>find index of <code>c</code> in slice, or raise <code>Not_found</code></p></div></div></div></body></html>

View file

@ -0,0 +1,2 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Iostream (iostream.Iostream)</title><meta charset="utf-8"/><link rel="stylesheet" href="../../_odoc-theme/odoc.css"/><meta name="generator" content="odoc 2.4.1"/><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; Iostream</nav><header class="odoc-preamble"><h1>Module <code><span>Iostream</span></code></h1><p>I/O streams.</p><p>This module defines generic I/O streams. They can be user-defined and can be composed from other streams.</p></header><div class="odoc-content"><div class="odoc-spec"><div class="spec module anchored" id="module-In"><a href="#module-In" class="anchor"></a><code><span><span class="keyword">module</span> <a href="In/index.html">In</a></span><span> : <span class="keyword">sig</span> ... <span class="keyword">end</span></span></code></div><div class="spec-doc"><p>Input stream.</p></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-In_buf"><a href="#module-In_buf" class="anchor"></a><code><span><span class="keyword">module</span> <a href="In_buf/index.html">In_buf</a></span><span> : <span class="keyword">sig</span> ... <span class="keyword">end</span></span></code></div><div class="spec-doc"><p>Buffered input stream.</p></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Out"><a href="#module-Out" class="anchor"></a><code><span><span class="keyword">module</span> <a href="Out/index.html">Out</a></span><span> : <span class="keyword">sig</span> ... <span class="keyword">end</span></span></code></div><div class="spec-doc"><p>Output stream.</p></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Out_buf"><a href="#module-Out_buf" class="anchor"></a><code><span><span class="keyword">module</span> <a href="Out_buf/index.html">Out_buf</a></span><span> : <span class="keyword">sig</span> ... <span class="keyword">end</span></span></code></div><div class="spec-doc"><p>Buffered output stream.</p></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Slice"><a href="#module-Slice" class="anchor"></a><code><span><span class="keyword">module</span> <a href="Slice/index.html">Slice</a></span><span> : <span class="keyword">sig</span> ... <span class="keyword">end</span></span></code></div><div class="spec-doc"><p>Byte slice or buffer.</p></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Seekable"><a href="#module-Seekable" class="anchor"></a><code><span><span class="keyword">module</span> <a href="Seekable/index.html">Seekable</a></span><span> : <span class="keyword">sig</span> ... <span class="keyword">end</span></span></code></div><div class="spec-doc"><p>An object we can seek in.</p></div></div></div></body></html>

View file

@ -0,0 +1,2 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Iostream__ (iostream.Iostream__)</title><meta charset="utf-8"/><link rel="stylesheet" href="../../_odoc-theme/odoc.css"/><meta name="generator" content="odoc 2.4.1"/><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; Iostream__</nav><header class="odoc-preamble"><h1>Module <code><span>Iostream__</span></code></h1></header><div class="odoc-content"><p>This module is hidden.</p></div></body></html>

View file

@ -0,0 +1,2 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Iostream__In (iostream.Iostream__In)</title><meta charset="utf-8"/><link rel="stylesheet" href="../../_odoc-theme/odoc.css"/><meta name="generator" content="odoc 2.4.1"/><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; Iostream__In</nav><header class="odoc-preamble"><h1>Module <code><span>Iostream__In</span></code></h1></header><div class="odoc-content"><p>This module is hidden.</p></div></body></html>

View file

@ -0,0 +1,2 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Iostream__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.1"/><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; Iostream__In_buf</nav><header class="odoc-preamble"><h1>Module <code><span>Iostream__In_buf</span></code></h1></header><div class="odoc-content"><p>This module is hidden.</p></div></body></html>

View file

@ -0,0 +1,2 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Iostream__Out (iostream.Iostream__Out)</title><meta charset="utf-8"/><link rel="stylesheet" href="../../_odoc-theme/odoc.css"/><meta name="generator" content="odoc 2.4.1"/><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; Iostream__Out</nav><header class="odoc-preamble"><h1>Module <code><span>Iostream__Out</span></code></h1></header><div class="odoc-content"><p>This module is hidden.</p></div></body></html>

View file

@ -0,0 +1,2 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Iostream__Out_buf (iostream.Iostream__Out_buf)</title><meta charset="utf-8"/><link rel="stylesheet" href="../../_odoc-theme/odoc.css"/><meta name="generator" content="odoc 2.4.1"/><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; Iostream__Out_buf</nav><header class="odoc-preamble"><h1>Module <code><span>Iostream__Out_buf</span></code></h1></header><div class="odoc-content"><p>This module is hidden.</p></div></body></html>

View file

@ -0,0 +1,2 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Iostream__Seekable (iostream.Iostream__Seekable)</title><meta charset="utf-8"/><link rel="stylesheet" href="../../_odoc-theme/odoc.css"/><meta name="generator" content="odoc 2.4.1"/><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; Iostream__Seekable</nav><header class="odoc-preamble"><h1>Module <code><span>Iostream__Seekable</span></code></h1></header><div class="odoc-content"><p>This module is hidden.</p></div></body></html>

View file

@ -0,0 +1,2 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Iostream__Slice (iostream.Iostream__Slice)</title><meta charset="utf-8"/><link rel="stylesheet" href="../../_odoc-theme/odoc.css"/><meta name="generator" content="odoc 2.4.1"/><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; Iostream__Slice</nav><header class="odoc-preamble"><h1>Module <code><span>Iostream__Slice</span></code></h1></header><div class="odoc-content"><p>This module is hidden.</p></div></body></html>

View file

@ -0,0 +1,2 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>In (iostream.Iostream_unix.In)</title><meta charset="utf-8"/><link rel="stylesheet" href="../../../_odoc-theme/odoc.css"/><meta name="generator" content="odoc 2.4.1"/><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_unix</a> &#x00BB; In</nav><header class="odoc-preamble"><h1>Module <code><span>Iostream_unix.In</span></code></h1></header><div class="odoc-content"><div class="odoc-spec"><div class="spec value anchored" id="val-of_unix_fd"><a href="#val-of_unix_fd" class="anchor"></a><code><span><span class="keyword">val</span> of_unix_fd : <span><span class="optlabel">?close_noerr</span>:bool <span class="arrow">&#45;&gt;</span></span> <span><a href="../../../ocaml/Unix/index.html#type-file_descr">Unix.file_descr</a> <span class="arrow">&#45;&gt;</span></span> <a href="../../Iostream/In/class-type-t_seekable/index.html">Iostream.In.t_seekable</a></span></code></div><div class="spec-doc"><p>Create an in stream from a raw Unix file descriptor. The file descriptor must be opened for reading.</p></div></div></div></body></html>

View file

@ -0,0 +1,2 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Out (iostream.Iostream_unix.Out)</title><meta charset="utf-8"/><link rel="stylesheet" href="../../../_odoc-theme/odoc.css"/><meta name="generator" content="odoc 2.4.1"/><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_unix</a> &#x00BB; Out</nav><header class="odoc-preamble"><h1>Module <code><span>Iostream_unix.Out</span></code></h1></header><div class="odoc-content"><div class="odoc-spec"><div class="spec value anchored" id="val-of_unix_fd"><a href="#val-of_unix_fd" class="anchor"></a><code><span><span class="keyword">val</span> of_unix_fd : <span><a href="../../../ocaml/Unix/index.html#type-file_descr">Unix.file_descr</a> <span class="arrow">&#45;&gt;</span></span> <a href="../../Iostream/Out/class-type-t_seekable/index.html">Iostream.Out.t_seekable</a></span></code></div><div class="spec-doc"><p>Output stream directly writing into the given Unix file descriptor.</p></div></div></div></body></html>

View file

@ -0,0 +1,2 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Iostream_unix (iostream.Iostream_unix)</title><meta charset="utf-8"/><link rel="stylesheet" href="../../_odoc-theme/odoc.css"/><meta name="generator" content="odoc 2.4.1"/><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; Iostream_unix</nav><header class="odoc-preamble"><h1>Module <code><span>Iostream_unix</span></code></h1></header><div class="odoc-content"><div class="odoc-spec"><div class="spec module anchored" id="module-In"><a href="#module-In" class="anchor"></a><code><span><span class="keyword">module</span> <a href="In/index.html">In</a></span><span> : <span class="keyword">sig</span> ... <span class="keyword">end</span></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Out"><a href="#module-Out" class="anchor"></a><code><span><span class="keyword">module</span> <a href="Out/index.html">Out</a></span><span> : <span class="keyword">sig</span> ... <span class="keyword">end</span></span></code></div></div></div></body></html>

View file

@ -0,0 +1,15 @@
# 0.2
- camlzip: add buffered version of the input stream transducers
- add In_buf.skip
- add `iostream-camlzip`, depends on `iostream`
- rename Out to Out_buf, add Out
- add `Slice` type, used for buffered input
- add `iostream.unix` optional library
- split seekable into its own class
- breaking: use OO and `class type` for all types
# 0.1
initial release

View file

@ -0,0 +1,20 @@
# Iostream
[![Build and Test](https://github.com/c-cube/ocaml-iostream/actions/workflows/main.yml/badge.svg)](https://github.com/c-cube/ocaml-iostream/actions/workflows/main.yml)
This library defines _generic_ I/O streams of bytes. The streams should be
composable, user-definable, and agnostic to the underlying I/O mechanism; with
OCaml 5 it means that they might be backed by an effect-based scheduler.
The goal is to provide a reasonable interoperability layer that multiple libraries and applications
in the OCaml ecosystem can rely on, while providing the modularity that standard IO channels lack.
Modern statically typed languages like Go and Rust provide this layer in their stdlib and their whole
ecosystem can build on it.
## Documentation
https://c-cube.github.io/ocaml-iostream/
## License
MIT license.

2
iostream/index.html Normal file
View file

@ -0,0 +1,2 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>index (iostream.index)</title><meta charset="utf-8"/><link rel="stylesheet" href="../_odoc-theme/odoc.css"/><meta name="generator" content="odoc 2.4.1"/><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> iostream</nav><header class="odoc-preamble"><h1 id="package-iostream"><a href="#package-iostream" class="anchor"></a>Package iostream <nav><a type="text/plain; charset=UTF-8" href="_doc-dir/CHANGES.md">changes</a> <a href="#package_info">more…</a></nav></h1><ul class="modules"><li><a href="Iostream/index.html"><code>Iostream</code></a> <span class="synopsis">I/O streams.</span></li><li><a href="Iostream_unix/index.html"><code>Iostream_unix</code></a> </li></ul></header><nav class="odoc-toc"><ul><li><a href="#package_info">Package info</a></li></ul></nav><div class="odoc-content"><h2 id="package_info"><a href="#package_info" class="anchor"></a>Package info</h2><table class="package info"><tr id="info-changes-files"><td><a href="#info-changes-files" aria-hidden="true" class="anchor"></a>changes-files</td><td><ul><li><a type="text/plain; charset=UTF-8" href="_doc-dir/CHANGES.md">CHANGES.md</a></li></ul></td></tr><tr id="info-readme-files"><td><a href="#info-readme-files" aria-hidden="true" class="anchor"></a>readme-files</td><td><ul><li><a type="text/plain; charset=UTF-8" href="_doc-dir/README.md">README.md</a></li></ul></td></tr></table></div></body></html>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,2 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>bufferized (tiny_httpd.Tiny_httpd_core.IO.Input.bufferized)</title><meta charset="utf-8"/><link rel="stylesheet" href="../../../../../_odoc-theme/odoc.css"/><meta name="generator" content="odoc 2.4.1"/><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">tiny_httpd</a> &#x00BB; <a href="../../../index.html">Tiny_httpd_core</a> &#x00BB; <a href="../../index.html">IO</a> &#x00BB; <a href="../index.html">Input</a> &#x00BB; bufferized</nav><header class="odoc-preamble"><h1>Class <code><span>Input.bufferized</span></code></h1></header><div class="odoc-content"><div class="odoc-spec"><div class="spec inherit"><code><span><span class="keyword">inherit</span> <span class="xref-unresolved">Iostream__.In.t</span></span></code></div></div><div class="odoc-spec"><div class="spec method anchored" id="method-fill_buf"><a href="#method-fill_buf" class="anchor"></a><code><span><span class="keyword">method</span> fill_buf : <span>unit <span class="arrow">&#45;&gt;</span></span> <span class="xref-unresolved">Iostream__.Slice.t</span></span></code></div><div class="spec-doc"><p><code>ic#fill_buf()</code> returns a slice into the <code>ic</code>'s internal buffer, and ensures it's empty only if <code>ic.ic</code> is empty. In other words, the invariant is that this only returns an empty slice if the input stream is exhausted.</p></div></div><div class="odoc-spec"><div class="spec method anchored" id="method-consume"><a href="#method-consume" class="anchor"></a><code><span><span class="keyword">method</span> consume : <span>int <span class="arrow">&#45;&gt;</span></span> unit</span></code></div><div class="spec-doc"><p>Consume <code>n</code> bytes from the inner buffer. This is only valid if the last call to <code>fill_buf</code> returned a slice with at least <code>n</code> bytes.</p></div></div></div></body></html>

View file

@ -0,0 +1,2 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>of_bytes (tiny_httpd.Tiny_httpd_core.IO.Input.of_bytes)</title><meta charset="utf-8"/><link rel="stylesheet" href="../../../../../_odoc-theme/odoc.css"/><meta name="generator" content="odoc 2.4.1"/><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">tiny_httpd</a> &#x00BB; <a href="../../../index.html">Tiny_httpd_core</a> &#x00BB; <a href="../../index.html">IO</a> &#x00BB; <a href="../index.html">Input</a> &#x00BB; of_bytes</nav><header class="odoc-preamble"><h1>Class <code><span>Input.of_bytes</span></code></h1></header><div class="odoc-content"><div class="odoc-spec"><div class="spec inherit"><code><span><span class="keyword">inherit</span> <span class="xref-unresolved">Iostream__.In.t</span></span></code></div></div><div class="odoc-spec"><div class="spec method anchored" id="method-fill_buf"><a href="#method-fill_buf" class="anchor"></a><code><span><span class="keyword">method</span> fill_buf : <span>unit <span class="arrow">&#45;&gt;</span></span> <span class="xref-unresolved">Iostream__.Slice.t</span></span></code></div><div class="spec-doc"><p><code>ic#fill_buf()</code> returns a slice into the <code>ic</code>'s internal buffer, and ensures it's empty only if <code>ic.ic</code> is empty. In other words, the invariant is that this only returns an empty slice if the input stream is exhausted.</p></div></div><div class="odoc-spec"><div class="spec method anchored" id="method-consume"><a href="#method-consume" class="anchor"></a><code><span><span class="keyword">method</span> consume : <span>int <span class="arrow">&#45;&gt;</span></span> unit</span></code></div><div class="spec-doc"><p>Consume <code>n</code> bytes from the inner buffer. This is only valid if the last call to <code>fill_buf</code> returned a slice with at least <code>n</code> bytes.</p></div></div></div></body></html>

View file

@ -0,0 +1,2 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>of_in_channel (tiny_httpd.Tiny_httpd_core.IO.Input.of_in_channel)</title><meta charset="utf-8"/><link rel="stylesheet" href="../../../../../_odoc-theme/odoc.css"/><meta name="generator" content="odoc 2.4.1"/><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">tiny_httpd</a> &#x00BB; <a href="../../../index.html">Tiny_httpd_core</a> &#x00BB; <a href="../../index.html">IO</a> &#x00BB; <a href="../index.html">Input</a> &#x00BB; of_in_channel</nav><header class="odoc-preamble"><h1>Class <code><span>Input.of_in_channel</span></code></h1></header><div class="odoc-content"><div class="odoc-spec"><div class="spec inherit"><code><span><span class="keyword">inherit</span> <span class="xref-unresolved">Iostream__.In.t</span></span></code></div></div><div class="odoc-spec"><div class="spec method anchored" id="method-fill_buf"><a href="#method-fill_buf" class="anchor"></a><code><span><span class="keyword">method</span> fill_buf : <span>unit <span class="arrow">&#45;&gt;</span></span> <span class="xref-unresolved">Iostream__.Slice.t</span></span></code></div><div class="spec-doc"><p><code>ic#fill_buf()</code> returns a slice into the <code>ic</code>'s internal buffer, and ensures it's empty only if <code>ic.ic</code> is empty. In other words, the invariant is that this only returns an empty slice if the input stream is exhausted.</p></div></div><div class="odoc-spec"><div class="spec method anchored" id="method-consume"><a href="#method-consume" class="anchor"></a><code><span><span class="keyword">method</span> consume : <span>int <span class="arrow">&#45;&gt;</span></span> unit</span></code></div><div class="spec-doc"><p>Consume <code>n</code> bytes from the inner buffer. This is only valid if the last call to <code>fill_buf</code> returned a slice with at least <code>n</code> bytes.</p></div></div></div></body></html>

View file

@ -0,0 +1,2 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>of_string (tiny_httpd.Tiny_httpd_core.IO.Input.of_string)</title><meta charset="utf-8"/><link rel="stylesheet" href="../../../../../_odoc-theme/odoc.css"/><meta name="generator" content="odoc 2.4.1"/><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">tiny_httpd</a> &#x00BB; <a href="../../../index.html">Tiny_httpd_core</a> &#x00BB; <a href="../../index.html">IO</a> &#x00BB; <a href="../index.html">Input</a> &#x00BB; of_string</nav><header class="odoc-preamble"><h1>Class <code><span>Input.of_string</span></code></h1></header><div class="odoc-content"><div class="odoc-spec"><div class="spec inherit"><code><span><span class="keyword">inherit</span> <span class="xref-unresolved">Iostream__.In.t</span></span></code></div></div><div class="odoc-spec"><div class="spec method anchored" id="method-fill_buf"><a href="#method-fill_buf" class="anchor"></a><code><span><span class="keyword">method</span> fill_buf : <span>unit <span class="arrow">&#45;&gt;</span></span> <span class="xref-unresolved">Iostream__.Slice.t</span></span></code></div><div class="spec-doc"><p><code>ic#fill_buf()</code> returns a slice into the <code>ic</code>'s internal buffer, and ensures it's empty only if <code>ic.ic</code> is empty. In other words, the invariant is that this only returns an empty slice if the input stream is exhausted.</p></div></div><div class="odoc-spec"><div class="spec method anchored" id="method-consume"><a href="#method-consume" class="anchor"></a><code><span><span class="keyword">method</span> consume : <span>int <span class="arrow">&#45;&gt;</span></span> unit</span></code></div><div class="spec-doc"><p>Consume <code>n</code> bytes from the inner buffer. This is only valid if the last call to <code>fill_buf</code> returned a slice with at least <code>n</code> bytes.</p></div></div></div></body></html>

View file

@ -0,0 +1,2 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>open_file (tiny_httpd.Tiny_httpd_core.IO.Input.open_file)</title><meta charset="utf-8"/><link rel="stylesheet" href="../../../../../_odoc-theme/odoc.css"/><meta name="generator" content="odoc 2.4.1"/><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">tiny_httpd</a> &#x00BB; <a href="../../../index.html">Tiny_httpd_core</a> &#x00BB; <a href="../../index.html">IO</a> &#x00BB; <a href="../index.html">Input</a> &#x00BB; open_file</nav><header class="odoc-preamble"><h1>Class <code><span>Input.open_file</span></code></h1></header><div class="odoc-content"><div class="odoc-spec"><div class="spec inherit"><code><span><span class="keyword">inherit</span> <span class="xref-unresolved">Iostream__.In.t</span></span></code></div></div><div class="odoc-spec"><div class="spec method anchored" id="method-fill_buf"><a href="#method-fill_buf" class="anchor"></a><code><span><span class="keyword">method</span> fill_buf : <span>unit <span class="arrow">&#45;&gt;</span></span> <span class="xref-unresolved">Iostream__.Slice.t</span></span></code></div><div class="spec-doc"><p><code>ic#fill_buf()</code> returns a slice into the <code>ic</code>'s internal buffer, and ensures it's empty only if <code>ic.ic</code> is empty. In other words, the invariant is that this only returns an empty slice if the input stream is exhausted.</p></div></div><div class="odoc-spec"><div class="spec method anchored" id="method-consume"><a href="#method-consume" class="anchor"></a><code><span><span class="keyword">method</span> consume : <span>int <span class="arrow">&#45;&gt;</span></span> unit</span></code></div><div class="spec-doc"><p>Consume <code>n</code> bytes from the inner buffer. This is only valid if the last call to <code>fill_buf</code> returned a slice with at least <code>n</code> bytes.</p></div></div></div></body></html>

View file

@ -0,0 +1,2 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>t_from_refill (tiny_httpd.Tiny_httpd_core.IO.Input.t_from_refill)</title><meta charset="utf-8"/><link rel="stylesheet" href="../../../../../_odoc-theme/odoc.css"/><meta name="generator" content="odoc 2.4.1"/><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">tiny_httpd</a> &#x00BB; <a href="../../../index.html">Tiny_httpd_core</a> &#x00BB; <a href="../../index.html">IO</a> &#x00BB; <a href="../index.html">Input</a> &#x00BB; t_from_refill</nav><header class="odoc-preamble"><h1>Class <code><span>Input.t_from_refill</span></code></h1><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></header><div class="odoc-content"><div class="odoc-spec"><div class="spec method anchored" id="method-refill"><a href="#method-refill" class="anchor"></a><code><span><span class="keyword">method</span> <span class="keyword">private</span> <span class="keyword">virtual</span> refill : <span><span class="xref-unresolved">Iostream__.Slice.t</span> <span class="arrow">&#45;&gt;</span></span> unit</span></code></div><div class="spec-doc"><p>Implementation of the stream: this takes a slice, resets its offset, and fills it with bytes. It must write at least one byte in the slice, unless the underlying input has reached its end.</p></div></div><div class="odoc-spec"><div class="spec method anchored" id="method-input"><a href="#method-input" class="anchor"></a><code><span><span class="keyword">method</span> input : <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><div class="odoc-spec"><div class="spec method anchored" id="method-fill_buf"><a href="#method-fill_buf" class="anchor"></a><code><span><span class="keyword">method</span> fill_buf : <span>unit <span class="arrow">&#45;&gt;</span></span> <span class="xref-unresolved">Iostream__.Slice.t</span></span></code></div></div><div class="odoc-spec"><div class="spec method anchored" id="method-consume"><a href="#method-consume" class="anchor"></a><code><span><span class="keyword">method</span> consume : <span>int <span class="arrow">&#45;&gt;</span></span> unit</span></code></div></div></div></body></html>

View file

@ -0,0 +1,2 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>t (tiny_httpd.Tiny_httpd_core.IO.Input.t)</title><meta charset="utf-8"/><link rel="stylesheet" href="../../../../../_odoc-theme/odoc.css"/><meta name="generator" content="odoc 2.4.1"/><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">tiny_httpd</a> &#x00BB; <a href="../../../index.html">Tiny_httpd_core</a> &#x00BB; <a href="../../index.html">IO</a> &#x00BB; <a href="../index.html">Input</a> &#x00BB; t</nav><header class="odoc-preamble"><h1>Class type <code><span>Input.t</span></code></h1><p>The implementation of buffered input streams.</p></header><div class="odoc-content"><div class="odoc-spec"><div class="spec inherit"><code><span><span class="keyword">inherit</span> <span class="xref-unresolved">Iostream__.In.t</span></span></code></div></div><div class="odoc-spec"><div class="spec method anchored" id="method-fill_buf"><a href="#method-fill_buf" class="anchor"></a><code><span><span class="keyword">method</span> fill_buf : <span>unit <span class="arrow">&#45;&gt;</span></span> <span class="xref-unresolved">Iostream__.Slice.t</span></span></code></div><div class="spec-doc"><p><code>ic#fill_buf()</code> returns a slice into the <code>ic</code>'s internal buffer, and ensures it's empty only if <code>ic.ic</code> is empty. In other words, the invariant is that this only returns an empty slice if the input stream is exhausted.</p></div></div><div class="odoc-spec"><div class="spec method anchored" id="method-consume"><a href="#method-consume" class="anchor"></a><code><span><span class="keyword">method</span> consume : <span>int <span class="arrow">&#45;&gt;</span></span> unit</span></code></div><div class="spec-doc"><p>Consume <code>n</code> bytes from the inner buffer. This is only valid if the last call to <code>fill_buf</code> returned a slice with at least <code>n</code> bytes.</p></div></div></div></body></html>

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,2 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>bufferized (tiny_httpd.Tiny_httpd_core.IO.Output.bufferized)</title><meta charset="utf-8"/><link rel="stylesheet" href="../../../../../_odoc-theme/odoc.css"/><meta name="generator" content="odoc 2.4.1"/><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">tiny_httpd</a> &#x00BB; <a href="../../../index.html">Tiny_httpd_core</a> &#x00BB; <a href="../../index.html">IO</a> &#x00BB; <a href="../index.html">Output</a> &#x00BB; bufferized</nav><header class="odoc-preamble"><h1>Class <code><span>Output.bufferized</span></code></h1></header><div class="odoc-content"><div class="odoc-spec"><div class="spec inherit"><code><span><span class="keyword">inherit</span> <span class="xref-unresolved">Iostream__.Out.t</span></span></code></div></div><div class="odoc-spec"><div class="spec method anchored" id="method-output_char"><a href="#method-output_char" class="anchor"></a><code><span><span class="keyword">method</span> output_char : <span>char <span class="arrow">&#45;&gt;</span></span> unit</span></code></div><div class="spec-doc"><p>Output a single char</p></div></div><div class="odoc-spec"><div class="spec method anchored" id="method-flush"><a href="#method-flush" class="anchor"></a><code><span><span class="keyword">method</span> flush : <span>unit <span class="arrow">&#45;&gt;</span></span> unit</span></code></div><div class="spec-doc"><p>Flush underlying buffer</p></div></div></div></body></html>

View file

@ -0,0 +1,2 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>dummy (tiny_httpd.Tiny_httpd_core.IO.Output.dummy)</title><meta charset="utf-8"/><link rel="stylesheet" href="../../../../../_odoc-theme/odoc.css"/><meta name="generator" content="odoc 2.4.1"/><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">tiny_httpd</a> &#x00BB; <a href="../../../index.html">Tiny_httpd_core</a> &#x00BB; <a href="../../index.html">IO</a> &#x00BB; <a href="../index.html">Output</a> &#x00BB; dummy</nav><header class="odoc-preamble"><h1>Class <code><span>Output.dummy</span></code></h1></header><div class="odoc-content"><div class="odoc-spec"><div class="spec inherit"><code><span><span class="keyword">inherit</span> <span class="xref-unresolved">Iostream__.Out.t</span></span></code></div></div><div class="odoc-spec"><div class="spec method anchored" id="method-output_char"><a href="#method-output_char" class="anchor"></a><code><span><span class="keyword">method</span> output_char : <span>char <span class="arrow">&#45;&gt;</span></span> unit</span></code></div><div class="spec-doc"><p>Output a single char</p></div></div><div class="odoc-spec"><div class="spec method anchored" id="method-flush"><a href="#method-flush" class="anchor"></a><code><span><span class="keyword">method</span> flush : <span>unit <span class="arrow">&#45;&gt;</span></span> unit</span></code></div><div class="spec-doc"><p>Flush underlying buffer</p></div></div></div></body></html>

View file

@ -0,0 +1,2 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>of_buffer (tiny_httpd.Tiny_httpd_core.IO.Output.of_buffer)</title><meta charset="utf-8"/><link rel="stylesheet" href="../../../../../_odoc-theme/odoc.css"/><meta name="generator" content="odoc 2.4.1"/><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">tiny_httpd</a> &#x00BB; <a href="../../../index.html">Tiny_httpd_core</a> &#x00BB; <a href="../../index.html">IO</a> &#x00BB; <a href="../index.html">Output</a> &#x00BB; of_buffer</nav><header class="odoc-preamble"><h1>Class <code><span>Output.of_buffer</span></code></h1></header><div class="odoc-content"><div class="odoc-spec"><div class="spec inherit"><code><span><span class="keyword">inherit</span> <span class="xref-unresolved">Iostream__.Out.t</span></span></code></div></div><div class="odoc-spec"><div class="spec method anchored" id="method-output_char"><a href="#method-output_char" class="anchor"></a><code><span><span class="keyword">method</span> output_char : <span>char <span class="arrow">&#45;&gt;</span></span> unit</span></code></div><div class="spec-doc"><p>Output a single char</p></div></div><div class="odoc-spec"><div class="spec method anchored" id="method-flush"><a href="#method-flush" class="anchor"></a><code><span><span class="keyword">method</span> flush : <span>unit <span class="arrow">&#45;&gt;</span></span> unit</span></code></div><div class="spec-doc"><p>Flush underlying buffer</p></div></div></div></body></html>

View file

@ -0,0 +1,2 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>of_out_channel (tiny_httpd.Tiny_httpd_core.IO.Output.of_out_channel)</title><meta charset="utf-8"/><link rel="stylesheet" href="../../../../../_odoc-theme/odoc.css"/><meta name="generator" content="odoc 2.4.1"/><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">tiny_httpd</a> &#x00BB; <a href="../../../index.html">Tiny_httpd_core</a> &#x00BB; <a href="../../index.html">IO</a> &#x00BB; <a href="../index.html">Output</a> &#x00BB; of_out_channel</nav><header class="odoc-preamble"><h1>Class <code><span>Output.of_out_channel</span></code></h1></header><div class="odoc-content"><div class="odoc-spec"><div class="spec inherit"><code><span><span class="keyword">inherit</span> <a href="../class-type-t/index.html">t</a></span></code></div></div><div class="odoc-spec"><div class="spec inherit"><code><span><span class="keyword">inherit</span> <span class="xref-unresolved">Iostream__.Seekable.t</span></span></code></div></div></div></body></html>

View file

@ -0,0 +1,2 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>of_unix_fd (tiny_httpd.Tiny_httpd_core.IO.Output.of_unix_fd)</title><meta charset="utf-8"/><link rel="stylesheet" href="../../../../../_odoc-theme/odoc.css"/><meta name="generator" content="odoc 2.4.1"/><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">tiny_httpd</a> &#x00BB; <a href="../../../index.html">Tiny_httpd_core</a> &#x00BB; <a href="../../index.html">IO</a> &#x00BB; <a href="../index.html">Output</a> &#x00BB; of_unix_fd</nav><header class="odoc-preamble"><h1>Class <code><span>Output.of_unix_fd</span></code></h1></header><div class="odoc-content"><div class="odoc-spec"><div class="spec inherit"><code><span><span class="keyword">inherit</span> <span class="xref-unresolved">Iostream__.Out.t</span></span></code></div></div><div class="odoc-spec"><div class="spec method anchored" id="method-output_char"><a href="#method-output_char" class="anchor"></a><code><span><span class="keyword">method</span> output_char : <span>char <span class="arrow">&#45;&gt;</span></span> unit</span></code></div><div class="spec-doc"><p>Output a single char</p></div></div><div class="odoc-spec"><div class="spec method anchored" id="method-flush"><a href="#method-flush" class="anchor"></a><code><span><span class="keyword">method</span> flush : <span>unit <span class="arrow">&#45;&gt;</span></span> unit</span></code></div><div class="spec-doc"><p>Flush underlying buffer</p></div></div></div></body></html>

View file

@ -0,0 +1,2 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>open_file (tiny_httpd.Tiny_httpd_core.IO.Output.open_file)</title><meta charset="utf-8"/><link rel="stylesheet" href="../../../../../_odoc-theme/odoc.css"/><meta name="generator" content="odoc 2.4.1"/><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">tiny_httpd</a> &#x00BB; <a href="../../../index.html">Tiny_httpd_core</a> &#x00BB; <a href="../../index.html">IO</a> &#x00BB; <a href="../index.html">Output</a> &#x00BB; open_file</nav><header class="odoc-preamble"><h1>Class <code><span>Output.open_file</span></code></h1></header><div class="odoc-content"><div class="odoc-spec"><div class="spec inherit"><code><span><span class="keyword">inherit</span> <a href="../class-type-t/index.html">t</a></span></code></div></div><div class="odoc-spec"><div class="spec inherit"><code><span><span class="keyword">inherit</span> <span class="xref-unresolved">Iostream__.Seekable.t</span></span></code></div></div></div></body></html>

View file

@ -0,0 +1,2 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>t_from_output (tiny_httpd.Tiny_httpd_core.IO.Output.t_from_output)</title><meta charset="utf-8"/><link rel="stylesheet" href="../../../../../_odoc-theme/odoc.css"/><meta name="generator" content="odoc 2.4.1"/><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">tiny_httpd</a> &#x00BB; <a href="../../../index.html">Tiny_httpd_core</a> &#x00BB; <a href="../../index.html">IO</a> &#x00BB; <a href="../index.html">Output</a> &#x00BB; t_from_output</nav><header class="odoc-preamble"><h1>Class <code><span>Output.t_from_output</span></code></h1><p>Make a bufferized output from a non bufferized output+close.</p><ul class="at-tags"><li class="parameter"><span class="at-tag">parameter</span> <span class="value">bytes</span> <p>the buffer to use. It's owned by this channel as long as the channel exists.</p></li></ul></header><div class="odoc-content"><div class="odoc-spec"><div class="spec inherit"><code><span><span class="keyword">inherit</span> <a href="../class-type-t/index.html">t</a></span></code></div></div><div class="odoc-spec"><div class="spec method anchored" id="method-output_underlying"><a href="#method-output_underlying" class="anchor"></a><code><span><span class="keyword">method</span> <span class="keyword">private</span> <span class="keyword">virtual</span> output_underlying : <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>Emit these private bytes, unbufferized</p></div></div><div class="odoc-spec"><div class="spec method anchored" id="method-close_underlying"><a href="#method-close_underlying" class="anchor"></a><code><span><span class="keyword">method</span> <span class="keyword">private</span> <span class="keyword">virtual</span> close_underlying : <span>unit <span class="arrow">&#45;&gt;</span></span> unit</span></code></div><div class="spec-doc"><p>Close the underlying output. The bufferized output will flush and then call this.</p></div></div></div></body></html>

View file

@ -0,0 +1,2 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>t (tiny_httpd.Tiny_httpd_core.IO.Output.t)</title><meta charset="utf-8"/><link rel="stylesheet" href="../../../../../_odoc-theme/odoc.css"/><meta name="generator" content="odoc 2.4.1"/><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">tiny_httpd</a> &#x00BB; <a href="../../../index.html">Tiny_httpd_core</a> &#x00BB; <a href="../../index.html">IO</a> &#x00BB; <a href="../index.html">Output</a> &#x00BB; t</nav><header class="odoc-preamble"><h1>Class type <code><span>Output.t</span></code></h1><p>An output stream, ie. a place into which we can write bytes, with a buffer to amortize the cost of operations.</p><p>This can be a <code>Buffer.t</code>, an <code>out_channel</code>, a <code>Unix.file_descr</code>, etc.</p></header><div class="odoc-content"><div class="odoc-spec"><div class="spec inherit"><code><span><span class="keyword">inherit</span> <span class="xref-unresolved">Iostream__.Out.t</span></span></code></div></div><div class="odoc-spec"><div class="spec method anchored" id="method-output_char"><a href="#method-output_char" class="anchor"></a><code><span><span class="keyword">method</span> output_char : <span>char <span class="arrow">&#45;&gt;</span></span> unit</span></code></div><div class="spec-doc"><p>Output a single char</p></div></div><div class="odoc-spec"><div class="spec method anchored" id="method-flush"><a href="#method-flush" class="anchor"></a><code><span><span class="keyword">method</span> flush : <span>unit <span class="arrow">&#45;&gt;</span></span> unit</span></code></div><div class="spec-doc"><p>Flush underlying buffer</p></div></div></div></body></html>

View file

@ -0,0 +1,2 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>t_seekable (tiny_httpd.Tiny_httpd_core.IO.Output.t_seekable)</title><meta charset="utf-8"/><link rel="stylesheet" href="../../../../../_odoc-theme/odoc.css"/><meta name="generator" content="odoc 2.4.1"/><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">tiny_httpd</a> &#x00BB; <a href="../../../index.html">Tiny_httpd_core</a> &#x00BB; <a href="../../index.html">IO</a> &#x00BB; <a href="../index.html">Output</a> &#x00BB; t_seekable</nav><header class="odoc-preamble"><h1>Class type <code><span>Output.t_seekable</span></code></h1></header><div class="odoc-content"><div class="odoc-spec"><div class="spec inherit"><code><span><span class="keyword">inherit</span> <a href="../class-type-t/index.html">t</a></span></code></div></div><div class="odoc-spec"><div class="spec inherit"><code><span><span class="keyword">inherit</span> <span class="xref-unresolved">Iostream__.Seekable.t</span></span></code></div></div></div></body></html>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,2 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Writer (tiny_httpd.Tiny_httpd_core.IO.Writer)</title><meta charset="utf-8"/><link rel="stylesheet" href="../../../../_odoc-theme/odoc.css"/><meta name="generator" content="odoc 2.4.1"/><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">tiny_httpd</a> &#x00BB; <a href="../../index.html">Tiny_httpd_core</a> &#x00BB; <a href="../index.html">IO</a> &#x00BB; Writer</nav><header class="odoc-preamble"><h1>Module <code><span>IO.Writer</span></code></h1><p>A writer abstraction.</p></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.write" class="def record field anchored"><a href="#type-t.write" class="anchor"></a><code><span>write : <span><a href="../Output/class-type-t/index.html">Output.t</a> <span class="arrow">&#45;&gt;</span></span> unit;</span></code></li></ol><code><span>}</span></code></div><div class="spec-doc"><p>Writer.</p><p>A writer is a push-based stream of bytes. Give it an output channel and it will write the bytes in it.</p><p>This is useful for responses: an http endpoint can return a writer as its response's body; the writer is given access to the connection to the client and can write into it as if it were a regular <code>out_channel</code>, including controlling calls to <code>flush</code>. Tiny_httpd will convert these writes into valid HTTP chunks.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 0.14</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-make"><a href="#val-make" class="anchor"></a><code><span><span class="keyword">val</span> make : <span><span class="label">write</span>:<span>(<span><a href="../Output/class-type-t/index.html">Output.t</a> <span class="arrow">&#45;&gt;</span></span> unit)</span> <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><div class="odoc-spec"><div class="spec value anchored" id="val-write"><a href="#val-write" class="anchor"></a><code><span><span class="keyword">val</span> write : <span><a href="../Output/class-type-t/index.html">Output.t</a> <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>Write into the channel.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-empty"><a href="#val-empty" class="anchor"></a><code><span><span class="keyword">val</span> empty : <a href="#type-t">t</a></span></code></div><div class="spec-doc"><p>Empty writer, will output 0 bytes.</p></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>string <span class="arrow">&#45;&gt;</span></span> <a href="#type-t">t</a></span></code></div><div class="spec-doc"><p>A writer that just emits the bytes from the given string.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-of_input"><a href="#val-of_input" class="anchor"></a><code><span><span class="keyword">val</span> of_input : <span><a href="../Input/class-type-t/index.html">Input.t</a> <span class="arrow">&#45;&gt;</span></span> <a href="#type-t">t</a></span></code></div></div></div></body></html>

View file

@ -0,0 +1,2 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>IO (tiny_httpd.Tiny_httpd_core.IO)</title><meta charset="utf-8"/><link rel="stylesheet" href="../../../_odoc-theme/odoc.css"/><meta name="generator" content="odoc 2.4.1"/><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">tiny_httpd</a> &#x00BB; <a href="../index.html">Tiny_httpd_core</a> &#x00BB; IO</nav><header class="odoc-preamble"><h1>Module <code><span>Tiny_httpd_core.IO</span></code></h1><p>IO abstraction.</p><p>We abstract IO so we can support classic unix blocking IOs with threads, and modern async IO with Eio.</p><p><b>NOTE</b>: experimental.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 0.14</li></ul></header><div class="odoc-content"><div class="odoc-spec"><div class="spec module anchored" id="module-Buf"><a href="#module-Buf" class="anchor"></a><code><span><span class="keyword">module</span> Buf</span><span> = <a href="../Buf/index.html">Buf</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Slice"><a href="#module-Slice" class="anchor"></a><code><span><span class="keyword">module</span> Slice</span><span> = <a href="../../../iostream/Iostream/Slice/index.html">Iostream.Slice</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Output"><a href="#module-Output" class="anchor"></a><code><span><span class="keyword">module</span> <a href="Output/index.html">Output</a></span><span> : <span class="keyword">sig</span> ... <span class="keyword">end</span></span></code></div><div class="spec-doc"><p>Output channel (byte sink)</p></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Input"><a href="#module-Input" class="anchor"></a><code><span><span class="keyword">module</span> <a href="Input/index.html">Input</a></span><span> : <span class="keyword">sig</span> ... <span class="keyword">end</span></span></code></div><div class="spec-doc"><p>Input channel (byte source)</p></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Writer"><a href="#module-Writer" class="anchor"></a><code><span><span class="keyword">module</span> <a href="Writer/index.html">Writer</a></span><span> : <span class="keyword">sig</span> ... <span class="keyword">end</span></span></code></div><div class="spec-doc"><p>A writer abstraction.</p></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-TCP_server"><a href="#module-TCP_server" class="anchor"></a><code><span><span class="keyword">module</span> <a href="TCP_server/index.html">TCP_server</a></span><span> : <span class="keyword">sig</span> ... <span class="keyword">end</span></span></code></div><div class="spec-doc"><p>A TCP server abstraction.</p></div></div></div></body></html>

View file

@ -0,0 +1,8 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Log (tiny_httpd.Tiny_httpd_core.Log)</title><meta charset="utf-8"/><link rel="stylesheet" href="../../../_odoc-theme/odoc.css"/><meta name="generator" content="odoc 2.4.1"/><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">tiny_httpd</a> &#x00BB; <a href="../index.html">Tiny_httpd_core</a> &#x00BB; Log</nav><header class="odoc-preamble"><h1>Module <code><span>Tiny_httpd_core.Log</span></code></h1><p>Logging for tiny_httpd</p></header><div class="odoc-content"><div class="odoc-spec"><div class="spec value anchored" id="val-info"><a href="#val-info" class="anchor"></a><code><span><span class="keyword">val</span> info :
<span><span>(<span><span>(<span><span><span>(<span class="type-var">'a</span>, <a href="../../../ocaml/Stdlib/Format/index.html#type-formatter">Stdlib.Format.formatter</a>, unit, unit)</span> <a href="../../../ocaml/Stdlib/index.html#type-format4">format4</a></span> <span class="arrow">&#45;&gt;</span></span> <span class="type-var">'a</span>)</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-debug"><a href="#val-debug" class="anchor"></a><code><span><span class="keyword">val</span> debug :
<span><span>(<span><span>(<span><span><span>(<span class="type-var">'a</span>, <a href="../../../ocaml/Stdlib/Format/index.html#type-formatter">Stdlib.Format.formatter</a>, unit, unit)</span> <a href="../../../ocaml/Stdlib/index.html#type-format4">format4</a></span> <span class="arrow">&#45;&gt;</span></span> <span class="type-var">'a</span>)</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-error"><a href="#val-error" class="anchor"></a><code><span><span class="keyword">val</span> error :
<span><span>(<span><span>(<span><span><span>(<span class="type-var">'a</span>, <a href="../../../ocaml/Stdlib/Format/index.html#type-formatter">Stdlib.Format.formatter</a>, unit, unit)</span> <a href="../../../ocaml/Stdlib/index.html#type-format4">format4</a></span> <span class="arrow">&#45;&gt;</span></span> <span class="type-var">'a</span>)</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-setup"><a href="#val-setup" class="anchor"></a><code><span><span class="keyword">val</span> setup : <span><span class="label">debug</span>:bool <span class="arrow">&#45;&gt;</span></span> <span>unit <span class="arrow">&#45;&gt;</span></span> unit</span></code></div><div class="spec-doc"><p>Setup and enable logging. This should only ever be used in executables, not libraries.</p><ul class="at-tags"><li class="parameter"><span class="at-tag">parameter</span> <span class="value">debug</span> <p>if true, set logging to debug (otherwise info)</p></li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-dummy"><a href="#val-dummy" class="anchor"></a><code><span><span class="keyword">val</span> dummy : bool</span></code></div></div></div></body></html>

View file

@ -0,0 +1,2 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Meth (tiny_httpd.Tiny_httpd_core.Meth)</title><meta charset="utf-8"/><link rel="stylesheet" href="../../../_odoc-theme/odoc.css"/><meta name="generator" content="odoc 2.4.1"/><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">tiny_httpd</a> &#x00BB; <a href="../index.html">Tiny_httpd_core</a> &#x00BB; Meth</nav><header class="odoc-preamble"><h1>Module <code><span>Tiny_httpd_core.Meth</span></code></h1><p>HTTP Methods</p></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.GET" class="def variant constructor anchored"><a href="#type-t.GET" class="anchor"></a><code><span>| </span><span>`GET</span></code></li><li id="type-t.PUT" class="def variant constructor anchored"><a href="#type-t.PUT" class="anchor"></a><code><span>| </span><span>`PUT</span></code></li><li id="type-t.POST" class="def variant constructor anchored"><a href="#type-t.POST" class="anchor"></a><code><span>| </span><span>`POST</span></code></li><li id="type-t.HEAD" class="def variant constructor anchored"><a href="#type-t.HEAD" class="anchor"></a><code><span>| </span><span>`HEAD</span></code></li><li id="type-t.DELETE" class="def variant constructor anchored"><a href="#type-t.DELETE" class="anchor"></a><code><span>| </span><span>`DELETE</span></code></li><li id="type-t.OPTIONS" class="def variant constructor anchored"><a href="#type-t.OPTIONS" class="anchor"></a><code><span>| </span><span>`OPTIONS</span></code></li></ol><code><span> ]</span></code></div><div class="spec-doc"><p>A HTTP method. For now we only handle a subset of these.</p><p>See https://tools.ietf.org/html/rfc7231#section-4</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-pp"><a href="#val-pp" class="anchor"></a><code><span><span class="keyword">val</span> pp : <span><a href="../../../ocaml/Stdlib/Format/index.html#type-formatter">Stdlib.Format.formatter</a> <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><div class="odoc-spec"><div class="spec value anchored" id="val-to_string"><a href="#val-to_string" class="anchor"></a><code><span><span class="keyword">val</span> to_string : <span><a href="#type-t">t</a> <span class="arrow">&#45;&gt;</span></span> string</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>string <span class="arrow">&#45;&gt;</span></span> <a href="#type-t">t</a></span></code></div></div></div></body></html>

View file

@ -1,5 +1,5 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Tiny_httpd_pool (tiny_httpd.Tiny_httpd_pool)</title><meta charset="utf-8"/><link rel="stylesheet" href="../../_odoc-theme/odoc.css"/><meta name="generator" content="odoc 2.4.1"/><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">tiny_httpd</a> &#x00BB; Tiny_httpd_pool</nav><header class="odoc-preamble"><h1>Module <code><span>Tiny_httpd_pool</span></code></h1><p>Resource pool.</p><p>This pool is used for buffers. It can be used for other resources but do note that it assumes resources are still reasonably cheap to produce and discard, and will never block waiting for a resource — it's not a good pool for DB connections.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 0.14.</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> <span>'a t</span></span></code></div><div class="spec-doc"><p>Pool of values of type <code>'a</code></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 :
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Pool (tiny_httpd.Tiny_httpd_core.Pool)</title><meta charset="utf-8"/><link rel="stylesheet" href="../../../_odoc-theme/odoc.css"/><meta name="generator" content="odoc 2.4.1"/><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">tiny_httpd</a> &#x00BB; <a href="../index.html">Tiny_httpd_core</a> &#x00BB; Pool</nav><header class="odoc-preamble"><h1>Module <code><span>Tiny_httpd_core.Pool</span></code></h1><p>Resource pool.</p><p>This pool is used for buffers. It can be used for other resources but do note that it assumes resources are still reasonably cheap to produce and discard, and will never block waiting for a resource — it's not a good pool for DB connections.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 0.14.</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> <span>'a t</span></span></code></div><div class="spec-doc"><p>Pool of values of type <code>'a</code></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">?clear</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>
<span><span class="label">mk_item</span>:<span>(<span>unit <span class="arrow">&#45;&gt;</span></span> <span class="type-var">'a</span>)</span> <span class="arrow">&#45;&gt;</span></span>
<span><span class="optlabel">?max_size</span>:int <span class="arrow">&#45;&gt;</span></span>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,2 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Response_code (tiny_httpd.Tiny_httpd_core.Response_code)</title><meta charset="utf-8"/><link rel="stylesheet" href="../../../_odoc-theme/odoc.css"/><meta name="generator" content="odoc 2.4.1"/><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">tiny_httpd</a> &#x00BB; <a href="../index.html">Tiny_httpd_core</a> &#x00BB; Response_code</nav><header class="odoc-preamble"><h1>Module <code><span>Tiny_httpd_core.Response_code</span></code></h1><p>Response Codes</p></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> = int</span></code></div><div class="spec-doc"><p>A standard HTTP code.</p><p>https://tools.ietf.org/html/rfc7231#section-6</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-ok"><a href="#val-ok" class="anchor"></a><code><span><span class="keyword">val</span> ok : <a href="#type-t">t</a></span></code></div><div class="spec-doc"><p>The code <code>200</code></p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-not_found"><a href="#val-not_found" class="anchor"></a><code><span><span class="keyword">val</span> not_found : <a href="#type-t">t</a></span></code></div><div class="spec-doc"><p>The code <code>404</code></p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-descr"><a href="#val-descr" class="anchor"></a><code><span><span class="keyword">val</span> descr : <span><a href="#type-t">t</a> <span class="arrow">&#45;&gt;</span></span> string</span></code></div><div class="spec-doc"><p>A description of some of the error codes. NOTE: this is not complete (yet).</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-is_success"><a href="#val-is_success" class="anchor"></a><code><span><span class="keyword">val</span> is_success : <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_success code</code> is true iff <code>code</code> is in the <code>2xx</code> or <code>3xx</code> range.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> NEXT_RELEASE</li></ul></div></div></div></body></html>

View file

@ -0,0 +1,2 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Private_ (tiny_httpd.Tiny_httpd_core.Route.Private_)</title><meta charset="utf-8"/><link rel="stylesheet" href="../../../../_odoc-theme/odoc.css"/><meta name="generator" content="odoc 2.4.1"/><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">tiny_httpd</a> &#x00BB; <a href="../../index.html">Tiny_httpd_core</a> &#x00BB; <a href="../index.html">Route</a> &#x00BB; Private_</nav><header class="odoc-preamble"><h1>Module <code><span>Route.Private_</span></code></h1></header><div class="odoc-content"><div class="odoc-spec"><div class="spec value anchored" id="val-eval"><a href="#val-eval" class="anchor"></a><code><span><span class="keyword">val</span> eval : <span><span>string list</span> <span class="arrow">&#45;&gt;</span></span> <span><span><span>(<span class="type-var">'a</span>, <span class="type-var">'b</span>)</span> <a href="../index.html#type-t">t</a></span> <span class="arrow">&#45;&gt;</span></span> <span><span class="type-var">'a</span> <span class="arrow">&#45;&gt;</span></span> <span><span class="type-var">'b</span> option</span></span></code></div></div></div></body></html>

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,2 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Middleware (tiny_httpd.Tiny_httpd_core.Server.Middleware)</title><meta charset="utf-8"/><link rel="stylesheet" href="../../../../_odoc-theme/odoc.css"/><meta name="generator" content="odoc 2.4.1"/><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">tiny_httpd</a> &#x00BB; <a href="../../index.html">Tiny_httpd_core</a> &#x00BB; <a href="../index.html">Server</a> &#x00BB; Middleware</nav><header class="odoc-preamble"><h1>Module <code><span>Server.Middleware</span></code></h1></header><div class="odoc-content"><div class="odoc-spec"><div class="spec type anchored" id="type-handler"><a href="#type-handler" class="anchor"></a><code><span><span class="keyword">type</span> handler</span><span> = <span><span><a href="../../IO/Input/class-type-t/index.html">IO.Input.t</a> <a href="../../Request/index.html#type-t">Request.t</a></span> <span class="arrow">&#45;&gt;</span></span> <span><span class="label">resp</span>:<span>(<span><a href="../../Response/index.html#type-t">Response.t</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>Handlers are functions returning a response to a request. The response can be delayed, hence the use of a continuation as the <code>resp</code> parameter.</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><span> = <span><a href="#type-handler">handler</a> <span class="arrow">&#45;&gt;</span></span> <a href="#type-handler">handler</a></span></code></div><div class="spec-doc"><p>A middleware is a handler transformation.</p><p>It takes the existing handler <code>h</code>, and returns a new one which, given a query, modify it or log it before passing it to <code>h</code>, or fail. It can also log or modify or drop the response.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-nil"><a href="#val-nil" class="anchor"></a><code><span><span class="keyword">val</span> nil : <a href="#type-t">t</a></span></code></div><div class="spec-doc"><p>Trivial middleware that does nothing.</p></div></div></div></body></html>

View file

@ -0,0 +1,41 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Server (tiny_httpd.Tiny_httpd_core.Server)</title><meta charset="utf-8"/><link rel="stylesheet" href="../../../_odoc-theme/odoc.css"/><meta name="generator" content="odoc 2.4.1"/><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">tiny_httpd</a> &#x00BB; <a href="../index.html">Tiny_httpd_core</a> &#x00BB; Server</nav><header class="odoc-preamble"><h1>Module <code><span>Tiny_httpd_core.Server</span></code></h1><p>HTTP server.</p><p>This module implements a very simple, basic HTTP/1.1 server using blocking IOs and threads.</p><p>It is possible to use a thread pool, see <code>create</code>'s argument <code>new_thread</code>.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 0.13</li></ul></header><nav class="odoc-toc"><ul><li><a href="#middlewares">Middlewares</a></li><li><a href="#main-server-type">Main Server type</a></li><li><a href="#request-handlers">Request handlers</a></li><li><a href="#server-sent-events">Server-sent events</a></li><li><a href="#upgrade-handlers">Upgrade handlers</a></li><li><a href="#run-the-server">Run the server</a></li></ul></nav><div class="odoc-content"><h3 id="middlewares"><a href="#middlewares" class="anchor"></a>Middlewares</h3><p>A middleware can be inserted in a handler to modify or observe its behavior.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 0.11</li></ul><div class="odoc-spec"><div class="spec module anchored" id="module-Middleware"><a href="#module-Middleware" class="anchor"></a><code><span><span class="keyword">module</span> <a href="Middleware/index.html">Middleware</a></span><span> : <span class="keyword">sig</span> ... <span class="keyword">end</span></span></code></div></div><h3 id="main-server-type"><a href="#main-server-type" class="anchor"></a>Main Server type</h3><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>A HTTP server. See <code>create</code> for more details.</p></div></div><div class="odoc-spec"><div class="spec module-type anchored" id="module-type-IO_BACKEND"><a href="#module-type-IO_BACKEND" class="anchor"></a><code><span><span class="keyword">module</span> <span class="keyword">type</span> <a href="module-type-IO_BACKEND/index.html">IO_BACKEND</a></span><span> = <span class="keyword">sig</span> ... <span class="keyword">end</span></span></code></div><div class="spec-doc"><p>A backend that provides IO operations, network operations, etc.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-create_from"><a href="#val-create_from" class="anchor"></a><code><span><span class="keyword">val</span> create_from :
<span><span class="optlabel">?buf_size</span>:int <span class="arrow">&#45;&gt;</span></span>
<span><span class="optlabel">?middlewares</span>:<span><span>(<span>[ `Encoding <span><span>| `Stage</span> of int</span> ]</span> * <a href="Middleware/index.html#type-t">Middleware.t</a>)</span> list</span> <span class="arrow">&#45;&gt;</span></span>
<span><span class="label">backend</span>:<span>(<span class="keyword">module</span> <a href="module-type-IO_BACKEND/index.html">IO_BACKEND</a>)</span> <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 webserver using provided backend.</p><p>The server will not do anything until <a href="#val-run"><code>run</code></a> is called on it. Before starting the server, one can use <code>add_path_handler</code> and <a href="#val-set_top_handler"><code>set_top_handler</code></a> to specify how to handle incoming requests.</p><ul class="at-tags"><li class="parameter"><span class="at-tag">parameter</span> <span class="value">buf_size</span> <p>size for buffers (since 0.11)</p></li></ul><ul class="at-tags"><li class="parameter"><span class="at-tag">parameter</span> <span class="value">middlewares</span> <p>see <a href="#val-add_middleware"><code>add_middleware</code></a> for more details.</p></li></ul><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 0.14</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-addr"><a href="#val-addr" class="anchor"></a><code><span><span class="keyword">val</span> addr : <span><a href="#type-t">t</a> <span class="arrow">&#45;&gt;</span></span> string</span></code></div><div class="spec-doc"><p>Address on which the server listens.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-is_ipv6"><a href="#val-is_ipv6" class="anchor"></a><code><span><span class="keyword">val</span> is_ipv6 : <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_ipv6 server</code> returns <code>true</code> iff the address of the server is an IPv6 address.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 0.3</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-port"><a href="#val-port" class="anchor"></a><code><span><span class="keyword">val</span> port : <span><a href="#type-t">t</a> <span class="arrow">&#45;&gt;</span></span> int</span></code></div><div class="spec-doc"><p>Port on which the server listens. Note that this might be different than the port initially given if the port was <code>0</code> (meaning that the OS picks a port for us).</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-active_connections"><a href="#val-active_connections" class="anchor"></a><code><span><span class="keyword">val</span> active_connections : <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 currently active connections.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-add_decode_request_cb"><a href="#val-add_decode_request_cb" class="anchor"></a><code><span><span class="keyword">val</span> add_decode_request_cb :
<span><a href="#type-t">t</a> <span class="arrow">&#45;&gt;</span></span>
<span><span>(<span><span>unit <a href="../Request/index.html#type-t">Request.t</a></span> <span class="arrow">&#45;&gt;</span></span> <span><span>(<span>unit <a href="../Request/index.html#type-t">Request.t</a></span> * <span>(<span><a href="../IO/Input/class-type-t/index.html">IO.Input.t</a> <span class="arrow">&#45;&gt;</span></span> <a href="../IO/Input/class-type-t/index.html">IO.Input.t</a>)</span>)</span> option</span>)</span> <span class="arrow">&#45;&gt;</span></span>
unit</span></code></div><div class="spec-doc"><p>Add a callback for every request. The callback can provide a stream transformer and a new request (with modified headers, typically). A possible use is to handle decompression by looking for a <code>Transfer-Encoding</code> header and returning a stream transformer that decompresses on the fly.</p><ul class="at-tags"><li class="deprecated"><span class="at-tag">deprecated</span> <p>use <a href="#val-add_middleware"><code>add_middleware</code></a> instead</p></li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-add_encode_response_cb"><a href="#val-add_encode_response_cb" class="anchor"></a><code><span><span class="keyword">val</span> add_encode_response_cb :
<span><a href="#type-t">t</a> <span class="arrow">&#45;&gt;</span></span>
<span><span>(<span><span>unit <a href="../Request/index.html#type-t">Request.t</a></span> <span class="arrow">&#45;&gt;</span></span> <span><a href="../Response/index.html#type-t">Response.t</a> <span class="arrow">&#45;&gt;</span></span> <span><a href="../Response/index.html#type-t">Response.t</a> option</span>)</span> <span class="arrow">&#45;&gt;</span></span>
unit</span></code></div><div class="spec-doc"><p>Add a callback for every request/response pair. Similarly to <a href="#val-add_encode_response_cb"><code>add_encode_response_cb</code></a> the callback can return a new response, for example to compress it. The callback is given the query with only its headers, as well as the current response.</p><ul class="at-tags"><li class="deprecated"><span class="at-tag">deprecated</span> <p>use <a href="#val-add_middleware"><code>add_middleware</code></a> instead</p></li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-add_middleware"><a href="#val-add_middleware" class="anchor"></a><code><span><span class="keyword">val</span> add_middleware :
<span><span class="label">stage</span>:<span>[ `Encoding <span><span>| `Stage</span> of int</span> ]</span> <span class="arrow">&#45;&gt;</span></span>
<span><a href="#type-t">t</a> <span class="arrow">&#45;&gt;</span></span>
<span><a href="Middleware/index.html#type-t">Middleware.t</a> <span class="arrow">&#45;&gt;</span></span>
unit</span></code></div><div class="spec-doc"><p>Add a middleware to every request/response pair.</p><ul class="at-tags"><li class="parameter"><span class="at-tag">parameter</span> <span class="value">stage</span> <p>specify when middleware applies. Encoding comes first (outermost layer), then stages in increasing order.</p></li></ul><ul class="at-tags"><li class="raises"><span class="at-tag">raises</span> <code>Invalid_argument</code> <p>if stage is <code>`Stage n</code> where <code>n &lt; 1</code></p></li></ul><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 0.11</li></ul></div></div><h3 id="request-handlers"><a href="#request-handlers" class="anchor"></a>Request handlers</h3><div class="odoc-spec"><div class="spec value anchored" id="val-set_top_handler"><a href="#val-set_top_handler" class="anchor"></a><code><span><span class="keyword">val</span> set_top_handler : <span><a href="#type-t">t</a> <span class="arrow">&#45;&gt;</span></span> <span><span>(<span><span><a href="../IO/Input/class-type-t/index.html">IO.Input.t</a> <a href="../Request/index.html#type-t">Request.t</a></span> <span class="arrow">&#45;&gt;</span></span> <a href="../Response/index.html#type-t">Response.t</a>)</span> <span class="arrow">&#45;&gt;</span></span> unit</span></code></div><div class="spec-doc"><p>Setup a handler called by default.</p><p>This handler is called with any request not accepted by any handler installed via <code>add_path_handler</code>. If no top handler is installed, unhandled paths will return a <code>404</code> not found</p><p>This used to take a <code>string Request.t</code> but it now takes a <code>byte_stream Request.t</code> since 0.14 . Use <a href="../Request/index.html#val-read_body_full"><code>Request.read_body_full</code></a> to read the body into a string if needed.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-add_route_handler"><a href="#val-add_route_handler" class="anchor"></a><code><span><span class="keyword">val</span> add_route_handler :
<span><span class="optlabel">?accept</span>:<span>(<span><span>unit <a href="../Request/index.html#type-t">Request.t</a></span> <span class="arrow">&#45;&gt;</span></span> <span><span>(unit, <a href="../Response_code/index.html#type-t">Response_code.t</a> * string)</span> <a href="../../../ocaml/Stdlib/index.html#type-result">result</a></span>)</span> <span class="arrow">&#45;&gt;</span></span>
<span><span class="optlabel">?middlewares</span>:<span><a href="Middleware/index.html#type-t">Middleware.t</a> list</span> <span class="arrow">&#45;&gt;</span></span>
<span><span class="optlabel">?meth</span>:<a href="../Meth/index.html#type-t">Meth.t</a> <span class="arrow">&#45;&gt;</span></span>
<span><a href="#type-t">t</a> <span class="arrow">&#45;&gt;</span></span>
<span><span><span>(<span class="type-var">'a</span>, <span><span>string <a href="../Request/index.html#type-t">Request.t</a></span> <span class="arrow">&#45;&gt;</span></span> <a href="../Response/index.html#type-t">Response.t</a>)</span> <a href="../Route/index.html#type-t">Route.t</a></span> <span class="arrow">&#45;&gt;</span></span>
<span><span class="type-var">'a</span> <span class="arrow">&#45;&gt;</span></span>
unit</span></code></div><div class="spec-doc"><p><code>add_route_handler server Route.(exact &quot;path&quot; @/ string @/ int @/ return) f</code> calls <code>f &quot;foo&quot; 42 request</code> when a <code>request</code> with path &quot;path/foo/42/&quot; is received.</p><p>Note that the handlers are called in the reverse order of their addition, so the last registered handler can override previously registered ones.</p><ul class="at-tags"><li class="parameter"><span class="at-tag">parameter</span> <span class="value">meth</span> <p>if provided, only accept requests with the given method. Typically one could react to <code>`GET</code> or <code>`PUT</code>.</p></li></ul><ul class="at-tags"><li class="parameter"><span class="at-tag">parameter</span> <span class="value">accept</span> <p>should return <code>Ok()</code> if the given request (before its body is read) should be accepted, <code>Error (code,message)</code> if it's to be rejected (e.g. because its content is too big, or for some permission error). See the <code>http_of_dir</code> program for an example of how to use <code>accept</code> to filter uploads that are too large before the upload even starts. The default always returns <code>Ok()</code>, i.e. it accepts all requests.</p></li></ul><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 0.6</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-add_route_handler_stream"><a href="#val-add_route_handler_stream" class="anchor"></a><code><span><span class="keyword">val</span> add_route_handler_stream :
<span><span class="optlabel">?accept</span>:<span>(<span><span>unit <a href="../Request/index.html#type-t">Request.t</a></span> <span class="arrow">&#45;&gt;</span></span> <span><span>(unit, <a href="../Response_code/index.html#type-t">Response_code.t</a> * string)</span> <a href="../../../ocaml/Stdlib/index.html#type-result">result</a></span>)</span> <span class="arrow">&#45;&gt;</span></span>
<span><span class="optlabel">?middlewares</span>:<span><a href="Middleware/index.html#type-t">Middleware.t</a> list</span> <span class="arrow">&#45;&gt;</span></span>
<span><span class="optlabel">?meth</span>:<a href="../Meth/index.html#type-t">Meth.t</a> <span class="arrow">&#45;&gt;</span></span>
<span><a href="#type-t">t</a> <span class="arrow">&#45;&gt;</span></span>
<span><span><span>(<span class="type-var">'a</span>, <span><span><a href="../IO/Input/class-type-t/index.html">IO.Input.t</a> <a href="../Request/index.html#type-t">Request.t</a></span> <span class="arrow">&#45;&gt;</span></span> <a href="../Response/index.html#type-t">Response.t</a>)</span> <a href="../Route/index.html#type-t">Route.t</a></span> <span class="arrow">&#45;&gt;</span></span>
<span><span class="type-var">'a</span> <span class="arrow">&#45;&gt;</span></span>
unit</span></code></div><div class="spec-doc"><p>Similar to <a href="#val-add_route_handler"><code>add_route_handler</code></a>, but where the body of the request is a stream of bytes that has not been read yet. This is useful when one wants to stream the body directly into a parser, json decoder (such as <code>Jsonm</code>) or into a file.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 0.6</li></ul></div></div><h3 id="server-sent-events"><a href="#server-sent-events" class="anchor"></a>Server-sent events</h3><p><b>EXPERIMENTAL</b>: this API is not stable yet.</p><div class="odoc-spec"><div class="spec module-type anchored" id="module-type-SERVER_SENT_GENERATOR"><a href="#module-type-SERVER_SENT_GENERATOR" class="anchor"></a><code><span><span class="keyword">module</span> <span class="keyword">type</span> <a href="module-type-SERVER_SENT_GENERATOR/index.html">SERVER_SENT_GENERATOR</a></span><span> = <span class="keyword">sig</span> ... <span class="keyword">end</span></span></code></div><div class="spec-doc"><p>A server-side function to generate of Server-sent events.</p></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-server_sent_generator"><a href="#type-server_sent_generator" class="anchor"></a><code><span><span class="keyword">type</span> server_sent_generator</span><span> = <span>(<span class="keyword">module</span> <a href="module-type-SERVER_SENT_GENERATOR/index.html">SERVER_SENT_GENERATOR</a>)</span></span></code></div><div class="spec-doc"><p>Server-sent event generator. This generates events that are forwarded to the client (e.g. the browser).</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 0.9</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-add_route_server_sent_handler"><a href="#val-add_route_server_sent_handler" class="anchor"></a><code><span><span class="keyword">val</span> add_route_server_sent_handler :
<span><span class="optlabel">?accept</span>:<span>(<span><span>unit <a href="../Request/index.html#type-t">Request.t</a></span> <span class="arrow">&#45;&gt;</span></span> <span><span>(unit, <a href="../Response_code/index.html#type-t">Response_code.t</a> * string)</span> <a href="../../../ocaml/Stdlib/index.html#type-result">result</a></span>)</span> <span class="arrow">&#45;&gt;</span></span>
<span><a href="#type-t">t</a> <span class="arrow">&#45;&gt;</span></span>
<span><span><span>(<span class="type-var">'a</span>, <span><span>string <a href="../Request/index.html#type-t">Request.t</a></span> <span class="arrow">&#45;&gt;</span></span> <span><a href="#type-server_sent_generator">server_sent_generator</a> <span class="arrow">&#45;&gt;</span></span> unit)</span> <a href="../Route/index.html#type-t">Route.t</a></span> <span class="arrow">&#45;&gt;</span></span>
<span><span class="type-var">'a</span> <span class="arrow">&#45;&gt;</span></span>
unit</span></code></div><div class="spec-doc"><p>Add a handler on an endpoint, that serves server-sent events.</p><p>The callback is given a generator that can be used to send events as it pleases. The connection is always closed by the client, and the accepted method is always <code>GET</code>. This will set the header &quot;content-type&quot; to &quot;text/event-stream&quot; automatically and reply with a 200 immediately. See <a href="#type-server_sent_generator"><code>server_sent_generator</code></a> for more details.</p><p>This handler stays on the original thread (it is synchronous).</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 0.9</li></ul></div></div><h3 id="upgrade-handlers"><a href="#upgrade-handlers" class="anchor"></a>Upgrade handlers</h3><p>These handlers upgrade the connection to another protocol.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> NEXT_RELEASE</li></ul><div class="odoc-spec"><div class="spec module-type anchored" id="module-type-UPGRADE_HANDLER"><a href="#module-type-UPGRADE_HANDLER" class="anchor"></a><code><span><span class="keyword">module</span> <span class="keyword">type</span> <a href="module-type-UPGRADE_HANDLER/index.html">UPGRADE_HANDLER</a></span><span> = <span class="keyword">sig</span> ... <span class="keyword">end</span></span></code></div><div class="spec-doc"><p>Handler that upgrades to another protocol.</p></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-upgrade_handler"><a href="#type-upgrade_handler" class="anchor"></a><code><span><span class="keyword">type</span> upgrade_handler</span><span> = <span>(<span class="keyword">module</span> <a href="module-type-UPGRADE_HANDLER/index.html">UPGRADE_HANDLER</a>)</span></span></code></div><div class="spec-doc"><ul class="at-tags"><li class="since"><span class="at-tag">since</span> NEXT_RELEASE</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-add_upgrade_handler"><a href="#val-add_upgrade_handler" class="anchor"></a><code><span><span class="keyword">val</span> add_upgrade_handler :
<span><span class="optlabel">?accept</span>:<span>(<span><span>unit <a href="../Request/index.html#type-t">Request.t</a></span> <span class="arrow">&#45;&gt;</span></span> <span><span>(unit, <a href="../Response_code/index.html#type-t">Response_code.t</a> * string)</span> <a href="../../../ocaml/Stdlib/index.html#type-result">result</a></span>)</span> <span class="arrow">&#45;&gt;</span></span>
<span><a href="#type-t">t</a> <span class="arrow">&#45;&gt;</span></span>
<span><span><span>(<span class="type-var">'a</span>, <a href="#type-upgrade_handler">upgrade_handler</a>)</span> <a href="../Route/index.html#type-t">Route.t</a></span> <span class="arrow">&#45;&gt;</span></span>
<span><span class="type-var">'a</span> <span class="arrow">&#45;&gt;</span></span>
unit</span></code></div></div><h3 id="run-the-server"><a href="#run-the-server" class="anchor"></a>Run the server</h3><div class="odoc-spec"><div class="spec value anchored" id="val-running"><a href="#val-running" class="anchor"></a><code><span><span class="keyword">val</span> running : <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 server running?</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 0.14</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-stop"><a href="#val-stop" class="anchor"></a><code><span><span class="keyword">val</span> stop : <span><a href="#type-t">t</a> <span class="arrow">&#45;&gt;</span></span> unit</span></code></div><div class="spec-doc"><p>Ask the server to stop. This might not have an immediate effect as <a href="#val-run"><code>run</code></a> might currently be waiting on IO.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-run"><a href="#val-run" class="anchor"></a><code><span><span class="keyword">val</span> run : <span><span class="optlabel">?after_init</span>:<span>(<span>unit <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> <span><span>(unit, exn)</span> <a href="../../../ocaml/Stdlib/index.html#type-result">result</a></span></span></code></div><div class="spec-doc"><p>Run the main loop of the server, listening on a socket described at the server's creation time, using <code>new_thread</code> to start a thread for each new client.</p><p>This returns <code>Ok ()</code> if the server exits gracefully, or <code>Error e</code> if it exits with an error.</p><ul class="at-tags"><li class="parameter"><span class="at-tag">parameter</span> <span class="value">after_init</span> <p>is called after the server starts listening. since 0.13 .</p></li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-run_exn"><a href="#val-run_exn" class="anchor"></a><code><span><span class="keyword">val</span> run_exn : <span><span class="optlabel">?after_init</span>:<span>(<span>unit <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><code>run_exn s</code> is like <code>run s</code> but re-raises an exception if the server exits with an error.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 0.14</li></ul></div></div></div></body></html>

View file

@ -0,0 +1,2 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>IO_BACKEND (tiny_httpd.Tiny_httpd_core.Server.IO_BACKEND)</title><meta charset="utf-8"/><link rel="stylesheet" href="../../../../_odoc-theme/odoc.css"/><meta name="generator" content="odoc 2.4.1"/><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">tiny_httpd</a> &#x00BB; <a href="../../index.html">Tiny_httpd_core</a> &#x00BB; <a href="../index.html">Server</a> &#x00BB; IO_BACKEND</nav><header class="odoc-preamble"><h1>Module type <code><span>Server.IO_BACKEND</span></code></h1><p>A backend that provides IO operations, network operations, etc.</p><p>This is used to decouple tiny_httpd from the scheduler/IO library used to actually open a TCP server and talk to clients. The classic way is based on <a href="../../../../ocaml/Unix/index.html"><code>Unix</code></a> and blocking IOs, but it's also possible to use an OCaml 5 library using effects and non blocking IOs.</p></header><div class="odoc-content"><div class="odoc-spec"><div class="spec value anchored" id="val-init_addr"><a href="#val-init_addr" class="anchor"></a><code><span><span class="keyword">val</span> init_addr : <span>unit <span class="arrow">&#45;&gt;</span></span> string</span></code></div><div class="spec-doc"><p>Initial TCP address</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-init_port"><a href="#val-init_port" class="anchor"></a><code><span><span class="keyword">val</span> init_port : <span>unit <span class="arrow">&#45;&gt;</span></span> int</span></code></div><div class="spec-doc"><p>Initial port</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-get_time_s"><a href="#val-get_time_s" class="anchor"></a><code><span><span class="keyword">val</span> get_time_s : <span>unit <span class="arrow">&#45;&gt;</span></span> float</span></code></div><div class="spec-doc"><p>Obtain the current timestamp in seconds.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-tcp_server"><a href="#val-tcp_server" class="anchor"></a><code><span><span class="keyword">val</span> tcp_server : <span>unit <span class="arrow">&#45;&gt;</span></span> <a href="../../IO/TCP_server/index.html#type-builder">IO.TCP_server.builder</a></span></code></div><div class="spec-doc"><p>TCP server builder, to create servers that can listen on a port and handle clients.</p></div></div></div></body></html>

Some files were not shown because too many files have changed in this diff Show more