mirror of
https://github.com/ocaml-tracing/ocaml-opentelemetry.git
synced 2026-03-09 12:23:32 -04:00
7 lines
21 KiB
HTML
7 lines
21 KiB
HTML
<!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> » <a href="../../index.html">pbrt</a> » <a href="../index.html">Pbrt</a> » 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">-></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">-></span></span> <span>unit <span class="arrow">-></span></span> <a href="#type-t">t</a></span></code></div><div class="spec-doc"><p>Create a new 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">-></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">-></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">-></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">-></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">-></span></span> <span>int <span class="arrow">-></span></span> <span>int <span class="arrow">-></span></span> unit)</span> <span class="arrow">-></span></span> <span><a href="#type-t">t</a> <span class="arrow">-></span></span> unit</span></code></div><div class="spec-doc"><p><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">-></span></span> <span><a href="../index.html#type-payload_kind">payload_kind</a> <span class="arrow">-></span></span> <span><a href="#type-t">t</a> <span class="arrow">-></span></span> unit</span></code></div><div class="spec-doc"><p><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">-></span></span> <span><a href="#type-t">t</a> <span class="arrow">-></span></span> unit)</span> <span class="arrow">-></span></span> <span><span class="type-var">'a</span> <span class="arrow">-></span></span> <span><a href="#type-t">t</a> <span class="arrow">-></span></span> 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">-></span></span> <span><a href="#type-t">t</a> <span class="arrow">-></span></span> unit)</span> <span class="arrow">-></span></span>
|
||
<span><span class="label">encode_value</span>:<span>(<span><span class="type-var">'b</span> <span class="arrow">-></span></span> <span><a href="#type-t">t</a> <span class="arrow">-></span></span> unit)</span> <span class="arrow">-></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">-></span></span>
|
||
<span><a href="#type-t">t</a> <span class="arrow">-></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">-></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">-></span></span> <span><a href="#type-t">t</a> <span class="arrow">-></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">-></span></span> <span><a href="#type-t">t</a> <span class="arrow">-></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">-></span></span> <span><a href="#type-t">t</a> <span class="arrow">-></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">-></span></span> <span><a href="#type-t">t</a> <span class="arrow">-></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">-></span></span> <span><a href="#type-t">t</a> <span class="arrow">-></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">-></span></span> <span><a href="#type-t">t</a> <span class="arrow">-></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">-></span></span> <span><a href="#type-t">t</a> <span class="arrow">-></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">-></span></span> <span><a href="#type-t">t</a> <span class="arrow">-></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">-></span></span> <span><a href="#type-t">t</a> <span class="arrow">-></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">-></span></span> <span><a href="#type-t">t</a> <span class="arrow">-></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">-></span></span> <span><a href="#type-t">t</a> <span class="arrow">-></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">-></span></span> <span><a href="#type-t">t</a> <span class="arrow">-></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">-></span></span> <span><a href="#type-t">t</a> <span class="arrow">-></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">-></span></span> <span><a href="#type-t">t</a> <span class="arrow">-></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">-></span></span> <span><a href="#type-t">t</a> <span class="arrow">-></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">-></span></span> <span><a href="#type-t">t</a> <span class="arrow">-></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">-></span></span> <span><a href="#type-t">t</a> <span class="arrow">-></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">-></span></span> <span><a href="#type-t">t</a> <span class="arrow">-></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">-></span></span> <span><a href="#type-t">t</a> <span class="arrow">-></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">-></span></span> <span><a href="#type-t">t</a> <span class="arrow">-></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">-></span></span> <span><a href="#type-t">t</a> <span class="arrow">-></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">-></span></span> <span><a href="#type-t">t</a> <span class="arrow">-></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">-></span></span> <span><a href="#type-t">t</a> <span class="arrow">-></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">-></span></span> <span><a href="#type-t">t</a> <span class="arrow">-></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">-></span></span> <span><a href="#type-t">t</a> <span class="arrow">-></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">-></span></span> <span><a href="#type-t">t</a> <span class="arrow">-></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">-></span></span> <span><a href="#type-t">t</a> <span class="arrow">-></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">-></span></span> <span><a href="#type-t">t</a> <span class="arrow">-></span></span> unit</span></code></div></div></div></body></html>
|