ocaml-opentelemetry/pbrt/Pbrt/Encoder/index.html
2025-07-23 14:08:20 +00:00

7 lines
21 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Encoder (pbrt.Pbrt.Encoder)</title><meta charset="utf-8"/><link rel="stylesheet" href="../../../_odoc-theme/odoc.css"/><meta name="generator" content="odoc 3.1.0"/><meta name="viewport" content="width=device-width,initial-scale=1.0"/><script src="../../../highlight.pack.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body class="odoc"><nav class="odoc-nav"><a href="../index.html">Up</a> <a href="../../../index.html">Index</a> &#x00BB; <a href="../../index.html">pbrt</a> &#x00BB; <a href="../index.html">Pbrt</a> &#x00BB; Encoder</nav><header class="odoc-preamble"><h1>Module <code><span>Pbrt.Encoder</span></code></h1><p>Encoding protobufs.</p></header><div class="odoc-tocs"><nav class="odoc-toc odoc-local-toc"><ul><li><a href="#types">Types</a></li><li><a href="#error">Error</a></li><li><a href="#creator">Creator</a></li><li><a href="#convertion">Convertion</a></li><li><a href="#encoding-functions">Encoding Functions</a></li></ul></nav></div><div class="odoc-content"><h3 id="types"><a href="#types" class="anchor"></a>Types</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 (mutable) encoder.</p><p>This encoder can be re-used, see <a href="#val-clear"><code>clear</code></a>.</p></div></div><h3 id="error"><a href="#error" class="anchor"></a>Error</h3><div class="odoc-spec"><div class="spec type anchored" id="type-error"><a href="#type-error" class="anchor"></a><code><span><span class="keyword">type</span> error</span><span> = </span></code><ol><li id="type-error.Overflow" class="def variant constructor anchored"><a href="#type-error.Overflow" class="anchor"></a><code><span>| </span><span><span class="constructor">Overflow</span> <span class="keyword">of</span> string</span></code></li></ol></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-error_to_string"><a href="#val-error_to_string" class="anchor"></a><code><span><span class="keyword">val</span> error_to_string : <span><a href="#type-error">error</a> <span class="arrow">&#45;&gt;</span></span> string</span></code></div></div><div class="odoc-spec"><div class="spec exception anchored" id="exception-Failure"><a href="#exception-Failure" class="anchor"></a><code><span><span class="keyword">exception</span> </span><span><span class="exception">Failure</span> <span class="keyword">of</span> <a href="#type-error">error</a></span></code></div></div><h3 id="creator"><a href="#creator" class="anchor"></a>Creator</h3><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">?size</span>:int <span class="arrow">&#45;&gt;</span></span> <span>unit <span class="arrow">&#45;&gt;</span></span> <a href="#type-t">t</a></span></code></div><div class="spec-doc"><p>Create a new encoder.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-clear"><a href="#val-clear" class="anchor"></a><code><span><span class="keyword">val</span> clear : <span><a href="#type-t">t</a> <span class="arrow">&#45;&gt;</span></span> unit</span></code></div><div class="spec-doc"><p>Clear the content of the internal buffer(s), but does not release memory. This makes the encoder ready to encode another message.</p><ul class="at-tags"><li class="parameter"><span class="at-tag">parameter</span> <span class="value">size</span> <p>initial size in bytes</p></li></ul><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 2.1</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-reset"><a href="#val-reset" class="anchor"></a><code><span><span class="keyword">val</span> reset : <span><a href="#type-t">t</a> <span class="arrow">&#45;&gt;</span></span> unit</span></code></div><div class="spec-doc"><p>Clears the content and resets internal storage to its initial memory consumption.</p><p>This is more costly than <a href="#val-clear"><code>clear</code></a> but can be useful after a very large message was encoded.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 2.1</li></ul></div></div><h3 id="convertion"><a href="#convertion" class="anchor"></a>Convertion</h3><div class="odoc-spec"><div class="spec value anchored" id="val-to_bytes"><a href="#val-to_bytes" class="anchor"></a><code><span><span class="keyword">val</span> to_bytes : <span><a href="#type-t">t</a> <span class="arrow">&#45;&gt;</span></span> bytes</span></code></div><div class="spec-doc"><p>Extract the content of the encoder to bytes.</p></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 class="spec-doc"><p>Extract the content of the encoder to a string. Call this after encoding a message into the encoder.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-write_chunks"><a href="#val-write_chunks" class="anchor"></a><code><span><span class="keyword">val</span> write_chunks : <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> <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>write_chunks w e</code> calls the write function <code>w</code> (e.g <code>output oc</code> for some output channel <code>oc</code>) on every chunk inside <code>e</code>. The number of chunks is an implementation detail.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 2.1</li></ul></div></div><h3 id="encoding-functions"><a href="#encoding-functions" class="anchor"></a>Encoding Functions</h3><p>These combinators are used by generated code (or user combinators) to encode a OCaml value into the wire representation of protobufs.</p><div class="odoc-spec"><div class="spec value anchored" id="val-key"><a href="#val-key" class="anchor"></a><code><span><span class="keyword">val</span> key : <span>int <span class="arrow">&#45;&gt;</span></span> <span><a href="../index.html#type-payload_kind">payload_kind</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><code>key k pk e</code> writes a key and a payload kind to <code>e</code>.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-nested"><a href="#val-nested" class="anchor"></a><code><span><span class="keyword">val</span> nested : <span><span>(<span><span class="type-var">'a</span> <span class="arrow">&#45;&gt;</span></span> <span><a href="#type-t">t</a> <span class="arrow">&#45;&gt;</span></span> unit)</span> <span class="arrow">&#45;&gt;</span></span> <span><span class="type-var">'a</span> <span class="arrow">&#45;&gt;</span></span> <span><a href="#type-t">t</a> <span class="arrow">&#45;&gt;</span></span> unit</span></code></div><div class="spec-doc"><p><code>nested f x e</code> applies <code>f x</code> to an encoder for a message nested in <code>e</code>.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-map_entry"><a href="#val-map_entry" class="anchor"></a><code><span><span class="keyword">val</span> map_entry :
<span><span class="label">encode_key</span>:<span>(<span><span class="type-var">'a</span> <span class="arrow">&#45;&gt;</span></span> <span><a href="#type-t">t</a> <span class="arrow">&#45;&gt;</span></span> unit)</span> <span class="arrow">&#45;&gt;</span></span>
<span><span class="label">encode_value</span>:<span>(<span><span class="type-var">'b</span> <span class="arrow">&#45;&gt;</span></span> <span><a href="#type-t">t</a> <span class="arrow">&#45;&gt;</span></span> unit)</span> <span class="arrow">&#45;&gt;</span></span>
<span><span>(<span>(<span class="type-var">'a</span> * <a href="../index.html#type-payload_kind">payload_kind</a>)</span> * <span>(<span class="type-var">'b</span> * <a href="../index.html#type-payload_kind">payload_kind</a>)</span>)</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><div class="odoc-spec"><div class="spec value anchored" id="val-empty_nested"><a href="#val-empty_nested" class="anchor"></a><code><span><span class="keyword">val</span> empty_nested : <span><a href="#type-t">t</a> <span class="arrow">&#45;&gt;</span></span> unit</span></code></div><div class="spec-doc"><p><code>nested f e</code> encodes a zero length empty message</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-int_as_varint"><a href="#val-int_as_varint" class="anchor"></a><code><span><span class="keyword">val</span> int_as_varint : <span>int <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>int_as_varint i e</code> encodes <code>i</code> in <code>e</code> with <code>Varint</code> encoding</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-int_as_zigzag"><a href="#val-int_as_zigzag" class="anchor"></a><code><span><span class="keyword">val</span> int_as_zigzag : <span>int <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>int_as_zigzag i e</code> encodes <code>i</code> in <code>e</code> with <code>Varint</code> zigzag encoding</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-int32_as_varint"><a href="#val-int32_as_varint" class="anchor"></a><code><span><span class="keyword">val</span> int32_as_varint : <span>int32 <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>int32_as_varint i e</code> encodes <code>i</code> in <code>e</code> with <code>Varint</code> encoding</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-int32_as_zigzag"><a href="#val-int32_as_zigzag" class="anchor"></a><code><span><span class="keyword">val</span> int32_as_zigzag : <span>int32 <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>int32_as_varint i e</code> encodes <code>i</code> in <code>e</code> with <code>Varint</code> zigzag encoding</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-int64_as_varint"><a href="#val-int64_as_varint" class="anchor"></a><code><span><span class="keyword">val</span> int64_as_varint : <span>int64 <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>int64_as_varint i e</code> encodes <code>i</code> in <code>e</code> with <code>Varint</code> encoding</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-int64_as_zigzag"><a href="#val-int64_as_zigzag" class="anchor"></a><code><span><span class="keyword">val</span> int64_as_zigzag : <span>int64 <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>int64_as_varint i e</code> encodes <code>i</code> in <code>e</code> with <code>Varint</code> zigzag encoding</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-int32_as_bits32"><a href="#val-int32_as_bits32" class="anchor"></a><code><span><span class="keyword">val</span> int32_as_bits32 : <span>int32 <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>int32_as_varint i e</code> encodes <code>i</code> in <code>e</code> with <code>Bits32</code> encoding</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-int64_as_bits64"><a href="#val-int64_as_bits64" class="anchor"></a><code><span><span class="keyword">val</span> int64_as_bits64 : <span>int64 <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>int64_as_varint i e</code> encodes <code>i</code> in <code>e</code> with <code>Bits64</code> encoding</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-uint32_as_varint"><a href="#val-uint32_as_varint" class="anchor"></a><code><span><span class="keyword">val</span> uint32_as_varint : <span><span>[ <span>`unsigned of int32</span> ]</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><div class="odoc-spec"><div class="spec value anchored" id="val-uint32_as_zigzag"><a href="#val-uint32_as_zigzag" class="anchor"></a><code><span><span class="keyword">val</span> uint32_as_zigzag : <span><span>[ <span>`unsigned of int32</span> ]</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><div class="odoc-spec"><div class="spec value anchored" id="val-uint64_as_varint"><a href="#val-uint64_as_varint" class="anchor"></a><code><span><span class="keyword">val</span> uint64_as_varint : <span><span>[ <span>`unsigned of int64</span> ]</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><div class="odoc-spec"><div class="spec value anchored" id="val-uint64_as_zigzag"><a href="#val-uint64_as_zigzag" class="anchor"></a><code><span><span class="keyword">val</span> uint64_as_zigzag : <span><span>[ <span>`unsigned of int64</span> ]</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><div class="odoc-spec"><div class="spec value anchored" id="val-uint32_as_bits32"><a href="#val-uint32_as_bits32" class="anchor"></a><code><span><span class="keyword">val</span> uint32_as_bits32 : <span><span>[ <span>`unsigned of int32</span> ]</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><div class="odoc-spec"><div class="spec value anchored" id="val-uint64_as_bits64"><a href="#val-uint64_as_bits64" class="anchor"></a><code><span><span class="keyword">val</span> uint64_as_bits64 : <span><span>[ <span>`unsigned of int64</span> ]</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><div class="odoc-spec"><div class="spec value anchored" id="val-bool"><a href="#val-bool" class="anchor"></a><code><span><span class="keyword">val</span> bool : <span>bool <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>encode b e</code> encodes <code>b</code> in <code>e</code> with <code>Varint</code> encoding</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-float_as_bits32"><a href="#val-float_as_bits32" class="anchor"></a><code><span><span class="keyword">val</span> float_as_bits32 : <span>float <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>float_as_bits32 f e</code> encodes <code>f</code> in <code>e</code> with <code>Bits32</code> encoding</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-float_as_bits64"><a href="#val-float_as_bits64" class="anchor"></a><code><span><span class="keyword">val</span> float_as_bits64 : <span>float <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>float_as_bits64 f e</code> encodes <code>f</code> in <code>e</code> with <code>Bits64</code> encoding</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-int_as_bits32"><a href="#val-int_as_bits32" class="anchor"></a><code><span><span class="keyword">val</span> int_as_bits32 : <span>int <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>int_as_bits32 i e</code> encodes <code>i</code> in <code>e</code> with <code>Bits32</code> encoding TODO : add error handling</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-int_as_bits64"><a href="#val-int_as_bits64" class="anchor"></a><code><span><span class="keyword">val</span> int_as_bits64 : <span>int <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>int_as_bits64 i e</code> encodes <code>i</code> in <code>e</code> with <code>Bits64</code> encoding</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-string"><a href="#val-string" class="anchor"></a><code><span><span class="keyword">val</span> string : <span>string <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>string s e</code> encodes <code>s</code> in <code>e</code></p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-bytes"><a href="#val-bytes" class="anchor"></a><code><span><span class="keyword">val</span> bytes : <span>bytes <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>string s e</code> encodes <code>s</code> in <code>e</code></p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-wrapper_double_value"><a href="#val-wrapper_double_value" class="anchor"></a><code><span><span class="keyword">val</span> wrapper_double_value : <span><span>float option</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><div class="odoc-spec"><div class="spec value anchored" id="val-wrapper_float_value"><a href="#val-wrapper_float_value" class="anchor"></a><code><span><span class="keyword">val</span> wrapper_float_value : <span><span>float option</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><div class="odoc-spec"><div class="spec value anchored" id="val-wrapper_int64_value"><a href="#val-wrapper_int64_value" class="anchor"></a><code><span><span class="keyword">val</span> wrapper_int64_value : <span><span>int64 option</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><div class="odoc-spec"><div class="spec value anchored" id="val-wrapper_int32_value"><a href="#val-wrapper_int32_value" class="anchor"></a><code><span><span class="keyword">val</span> wrapper_int32_value : <span><span>int32 option</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><div class="odoc-spec"><div class="spec value anchored" id="val-wrapper_bool_value"><a href="#val-wrapper_bool_value" class="anchor"></a><code><span><span class="keyword">val</span> wrapper_bool_value : <span><span>bool option</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><div class="odoc-spec"><div class="spec value anchored" id="val-wrapper_string_value"><a href="#val-wrapper_string_value" class="anchor"></a><code><span><span class="keyword">val</span> wrapper_string_value : <span><span>string option</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><div class="odoc-spec"><div class="spec value anchored" id="val-wrapper_bytes_value"><a href="#val-wrapper_bytes_value" class="anchor"></a><code><span><span class="keyword">val</span> wrapper_bytes_value : <span><span>bytes option</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></div></body></html>