This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.
<!DOCTYPE html>
<htmlxmlns="http://www.w3.org/1999/xhtml"><head><title>AccessPath (infer.Absint.AccessPath)</title><linkrel="stylesheet"href="../../../odoc.css"/><metacharset="utf-8"/><metaname="generator"content="odoc 1.5.2"/><metaname="viewport"content="width=device-width,initial-scale=1.0"/><scriptsrc="../../../highlight.pack.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body><divclass="content"><header><nav><ahref="../index.html">Up</a>–<ahref="../../index.html">infer</a>»<ahref="../index.html">Absint</a>» AccessPath</nav><h1>Module <code>Absint.AccessPath</code></h1></header><aside><p>Module for naming heap locations via the path used to access them (e.g., x.f.g, y<code>a</code>.b)</p></aside><dl><dtclass="spec type"id="type-base"><ahref="#type-base"class="anchor"></a><code><spanclass="keyword">type</span> base</code><code> = <ahref="../../IR/Var/index.html#type-t">IR.Var.t</a> * <ahref="../../IR/Typ/index.html#type-t">IR.Typ.t</a></code></dt></dl><div><divclass="spec include"><divclass="doc"><dl><dtclass="spec value"id="val-compare_base"><ahref="#val-compare_base"class="anchor"></a><code><spanclass="keyword">val</span> compare_base : <ahref="index.html#type-base">base</a><span>-></span><ahref="index.html#type-base">base</a><span>-></span> int</code></dt></dl></div></div></div><dl><dtclass="spec type"id="type-access"><ahref="#type-access"class="anchor"></a><code><spanclass="keyword">type</span> access</code><code> = </code><tableclass="variant"><trid="type-access.ArrayAccess"class="anchored"><tdclass="def constructor"><ahref="#type-access.ArrayAccess"class="anchor"></a><code>| </code><code><spanclass="constructor">ArrayAccess</span><spanclass="keyword">of</span><ahref="../../IR/Typ/index.html#type-t">IR.Typ.t</a> * <span><ahref="index.html#type-t">t</a> list</span></code></td><tdclass="doc"><p>array element type with list of access paths in index</p></td></tr><trid="type-access.FieldAccess"class="anchored"><tdclass="def constructor"><ahref="#type-access.FieldAccess"class="anchor"></a><code>| </code><code><spanclass="constructor">FieldAccess</span><spanclass="keyword">of</span><ahref="../../IR/Fieldname/index.html#type-t">IR.Fieldname.t</a></code></td><tdclass="doc"><p>field name</p></td></tr></table></dt><dtclass="spec type"id="type-t"><ahref="#type-t"class="anchor"></a><code><spanclass="keyword">and</span> t</code><code> = <ahref="index.html#type-base">base</a> * <span><ahref="index.html#type-access">access</a> list</span></code></dt><dd><p>root var, and a list of accesses. closest to the root var is first that is, x.f.g is represented as (x, <code>f; g</code>)</p></dd></dl><div><divclass="spec include"><divclass="doc"><dl><dtclass="spec value"id="val-compare_access"><ahref="#val-compare_access"class="anchor"></a><code><spanclass="keyword">val</span> compare_access : <ahref="index.html#type-access">access</a><span>-></span><ahref="index.html#type-access">access</a><span>-></span> int</code></dt><dtclass="spec value"id="val-compare"><ahref="#val-compare"class="anchor"></a><code><spanclass="keyword">val</span> compare : <ahref="index.html#type-t">t</a><span>-></span><ahref="index.html#type-t">t</a><span>-></span> int</code></dt><dtclass="spec value"id="val-equal_access"><ahref="#val-equal_access"class="anchor"></a><code><spanclass="keyword">val</span> equal_access : <ahref="index.html#type-access">access</a><span>-></span><ahref="index.html#type-access">access</a><span>-></span> bool</code></dt><dtclass="spec value"id="val-equal"><ahref="#val-equal"class="anchor"></a><code><spanclass="keyword">val</span> equal : <ahref="index.html#type-t">t</a><span>-></span><ahref="index.html#type-t">t</a><span>-></span> bool</code></dt><dtclass="spec value"id="val-compare_access"><ahref="#val-compare_access"class="anchor"></a><code><spanclass="keyword">val</span> compare_access : <ahref="index.html#type-access">access</a><span>-></span><ahref="index.html#type-access">access</a><span>-></span> int</code></dt><dtclass="spec value"id="val-compare"><ahref="#val-compare"class="anchor"></a><code><spanclass="keyword">val</span> compare : <ahref="index.html#type-t">t</a><span>-></span><ahref="index.html#type-t">t</a><span>-></span> int</code></dt></dl></div></div></div><dl><dtclass="spec value"id="val-get_typ"><ahref="#val-get_typ"class="anchor"></a><code><spanclass="keyword">val</span> get_typ : <ahref="index.html#type-t">t</a><span>-></span><ahref="../../IR/Tenv/index.html#type-t">IR.Tenv.t</a><span>-></span><span><ahref="../../IR/Typ/index.html#type-t">IR.Typ.t</a> option</span></code></dt><dd><p>get the typ of the last access in the list of accesses if the list is non-empty, or the base if the list is empty. that is, for x.f.g, return typ(g), and for x, return typ(x)</p></dd></dl><dl><dtclass="spec value"id="val-base_of_pvar"><ahref="#val-base_of_pvar"class="anchor"></a><code><spanclass="keyword">val</span> base_of_pvar : <ahref="../../IR/Pvar/index.html#type-t">IR.Pvar.t</a><span>-></span><ahref="../../IR/Typ/index.html#type-t">IR.Typ.t</a><span>-></span><ahref="index.html#type-base">base</a></code></dt><dd><p>create a base from a pvar</p></dd></dl><dl><dtclass="spec value"id="val-of_pvar"><ahref="#val-of_pvar"class="anchor"></a><code><spanclass="keyword">val</span> of_pvar : <ahref="../../IR/Pvar/index.html#type-t">IR.Pvar.t</a><span>-></span><ahref="../../IR/Typ/index.html#type-t">IR.Typ.t</a><span>-></span><ahref="index.html#type-t">t</a></code></dt><dd><p>create an access path from a pvar</p></dd></dl><dl><dtclass="spec value"id="val-of_id"><ahref="#val-of_id"class="anchor"></a><code><spanclass="keyword">val</span> of_id : <ahref="../../IR/Ident/index.html#type-t">IR.Ident.t</a><span>-></span><ahref="../../IR/Typ/index.html#type-t">IR.Typ.t</a><span>-></span><ahref="index.html#type-t">t</a></code></dt><dd><p>create an access path from an ident</p></dd></dl><dl><dtclass="spec value"id="val-of_var"><ahref="#val-of_var"class="anchor"></a><code><spanclass="keyword">val</span> of_var : <ahref="../../IR/Var/index.html#type-t">IR.Var.t</a><span>-></span><ahref="../../IR/Typ/index.html#type-t">IR.Typ.t</a><span>-></span><ahref="index.html#type-t">t</a></code></dt><dd><p>create an access path from a var</p></dd></dl><dl><dtclass="spec value"id="val-append"><ahref="#val-append"class="anchor"></a><code><spanclass="keyword">val</span> append : <ahref="index.html#type-t">t</a><span>-></span><span><ahref="index.html#type-access">access</a> list</span><span>-></span><ahref="index.html#type-t">t</a></code></dt><dd><p>append new accesses to an existing access path; e.g., `append_access x.f <code>g, h</code>` produces `x.f.g.h`</p></dd></dl><dl><dtclass="spec value"id="val-replace_prefix"><ahref="#val-replace_prefix"class="anchor"></a><code><spanclass="keyword">val</span> replace_prefix : <span>prefix:<ahref="index.html#type-t">t</a></span><span>-></span><span>replace_with:<ahref="index.html#type-t">t</a></span><span>-></span><ahref="index.html#type-t">t</a><span>-></span><span><ahref="index.html#type-t">t</a> option</span></code></dt><dtclass="spec value"id="val-equal_base"><ahref="#val-equal_base"class="anchor"></a><code><spanclass="keyword">val</span> equal_base : <ahref="index.html#type-base">base</a><span>-></span><ahref="index.html#type-base">base</a><span>-></span> bool</code></dt><dtclass="spec value"id="val-pp"><ahref="#val-pp"class="anchor"></a><code><spanclass="keyword">val</span> pp : Stdlib.Format.formatter <span>-></span><ahref="index.html#type-t">t</a><span>-></span> unit</code></dt><dtclass="spec value"id="val-pp_base"><ahref="#val-pp_base"class="anchor"></a><code><spanclass="keyword">val</span> pp_base : Stdlib.Format.formatter <span>-></span><ahref="index.html#type-base">base</a><span>-></span> unit</code></dt><dtclass="spec value"id="val-pp_access"><ahref="#val-pp_access"class="anchor"></a><code><spanclass="keyword">val</span> pp_access : Stdlib.Format.formatter <span>-></span><ahref="index.html#type-access">access</a><span>-></span> unit</code></dt><dtclass="spec value"id="val-pp_access_list"><ahref="#val-pp_access_list"class="anchor"></a><code><spanclass="keyword">val</span> pp_access_list : Stdlib.Format.formatter <span>-></span><span><ahref="index.html#type-access">access</a> list</span><span>-></span> unit</code></dt></dl><divclass="spec module"id="module-Abs"><ahref="#module-Abs"class="anchor"></a><code><spanclass="keyword">module</span><ahref="Abs/index.html">Abs</a> : <spanclass="keyword">sig</span> ... <spanclass="keyword">end</span></code></div><divclass="spec module"id="module-BaseMap"><ahref="#module-BaseMap"class="anchor"></a><code><spanclass="keyword">module</span> BaseMap : <ahref="../../IStdlib/PrettyPrintable/index.html#module-type-PPMap">IStdlib.PrettyPrintable.PPMap</a><spanclass="keyword">with</span><spanclass="keyword">type</span><ahref="../../IStdlib/PrettyPrintable/index.html#module-type-PPMap">PPMap</a>.key = <ahref="index.html#type-base">base</a></code></div></div></body></html>