mirror of
https://github.com/ocaml-tracing/ocaml-trace.git
synced 2026-03-09 12:23:32 -04:00
6 lines
5.5 KiB
HTML
6 lines
5.5 KiB
HTML
<!DOCTYPE html>
|
||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Expansion_helpers (ppxlib.Ppxlib.Expansion_helpers)</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">ppxlib</a> » <a href="../index.html">Ppxlib</a> » Expansion_helpers</nav><header class="odoc-preamble"><h1>Module <code><span>Ppxlib.Expansion_helpers</span></code></h1><p>Various helpers for expansion, such as quoting expressions in their context, or mangling names.</p></header><div class="odoc-tocs"><nav class="odoc-toc odoc-local-toc"><ul><li><a href="#mangling">Mangling</a></li><li><a href="#quoting">Quoting</a></li></ul></nav></div><div class="odoc-content"><h3 id="mangling"><a href="#mangling" class="anchor"></a>Mangling</h3><p>Derive mangled names from type names in a deriver. For instance, the <code>t</code> can be turned into <code>t_of_yojson</code> or <code>yojson_of_t</code> with the functions from this module.</p><div class="odoc-spec"><div class="spec type anchored" id="type-affix"><a href="#type-affix" class="anchor"></a><code><span><span class="keyword">type</span> affix</span><span> = </span></code><ol><li id="type-affix.Prefix" class="def variant constructor anchored"><a href="#type-affix.Prefix" class="anchor"></a><code><span>| </span><span><span class="constructor">Prefix</span> <span class="keyword">of</span> string</span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>Prefix p</code> adds prefix <code>p</code>.</p><span class="comment-delim">*)</span></div></li><li id="type-affix.Suffix" class="def variant constructor anchored"><a href="#type-affix.Suffix" class="anchor"></a><code><span>| </span><span><span class="constructor">Suffix</span> <span class="keyword">of</span> string</span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>Suffix s</code> adds suffix <code>s</code>.</p><span class="comment-delim">*)</span></div></li><li id="type-affix.PrefixSuffix" class="def variant constructor anchored"><a href="#type-affix.PrefixSuffix" class="anchor"></a><code><span>| </span><span><span class="constructor">PrefixSuffix</span> <span class="keyword">of</span> string * string</span></code><div class="def-doc"><span class="comment-delim">(*</span><p><code>PrefixSuffix (p, s)</code> adds both prefix <code>p</code> and suffix <code>s</code>.</p><span class="comment-delim">*)</span></div></li></ol></div><div class="spec-doc"><p>Specification for name mangling.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-mangle"><a href="#val-mangle" class="anchor"></a><code><span><span class="keyword">val</span> mangle : <span><span class="optlabel">?fixpoint</span>:string <span class="arrow">-></span></span> <span><a href="#type-affix">affix</a> <span class="arrow">-></span></span> <span>string <span class="arrow">-></span></span> string</span></code></div><div class="spec-doc"><p><code>mangle ~fixpoint affix s</code> derives a mangled name from <code>s</code> with the mangling specified by <code>affix</code>. If <code>s</code> is equal to <code>fixpoint</code> (<code>"t"</code> by default), then <code>s</code> is omitted from the mangled name.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-mangle_type_decl"><a href="#val-mangle_type_decl" class="anchor"></a><code><span><span class="keyword">val</span> mangle_type_decl :
|
||
<span><span class="optlabel">?fixpoint</span>:string <span class="arrow">-></span></span>
|
||
<span><a href="#type-affix">affix</a> <span class="arrow">-></span></span>
|
||
<span><a href="../../Astlib/Ast_502/Parsetree/index.html#type-type_declaration">Astlib.Ast_502.Parsetree.type_declaration</a> <span class="arrow">-></span></span>
|
||
string</span></code></div><div class="spec-doc"><p><code>mangle_type_decl ~fixpoint affix td</code> does the same as <a href="#val-mangle"><code>mangle</code></a>, but for the name of <code>td</code>.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-mangle_lid"><a href="#val-mangle_lid" class="anchor"></a><code><span><span class="keyword">val</span> mangle_lid : <span><span class="optlabel">?fixpoint</span>:string <span class="arrow">-></span></span> <span><a href="#type-affix">affix</a> <span class="arrow">-></span></span> <span><a href="../Longident/index.html#type-t">Longident.t</a> <span class="arrow">-></span></span> <a href="../Longident/index.html#type-t">Longident.t</a></span></code></div><div class="spec-doc"><p><code>mangle_lid ~fixpoint affix lid</code> does the same as <a href="#val-mangle"><code>mangle</code></a>, but for the last component of <code>lid</code>.</p></div></div><h3 id="quoting"><a href="#quoting" class="anchor"></a>Quoting</h3><div class="odoc-spec"><div class="spec module anchored" id="module-Quoter"><a href="#module-Quoter" class="anchor"></a><code><span><span class="keyword">module</span> <a href="Quoter/index.html">Quoter</a></span><span> : <span class="keyword">sig</span> ... <span class="keyword">end</span></span></code></div><div class="spec-doc"><p>Generate expressions in a hygienic way.</p></div></div></div></body></html>
|