You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
9 lines
28 KiB
9 lines
28 KiB
<!DOCTYPE html>
|
|
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>InferIR__PredSymb (InferIR.InferIR__PredSymb)</title><link rel="stylesheet" href="../../odoc.css"/><meta charset="utf-8"/><meta name="viewport" content="width=device-width,initial-scale=1.0"/><meta name="generator" content="doc-ock-html v1.0.0-1-g1fc9bf0"/></head><body><nav id="top"><a href="../index.html">Up</a> — <span class="package">package <a href="../index.html">InferIR</a></span></nav><header><h1><span class="keyword">Module</span> <span class="module-path">InferIR__PredSymb</span></h1></header><p>The Smallfoot Intermediate Language: Predicate Symbols</p><div class="spec module" id="module-F"><a href="#module-F" class="anchor"></a><div class="def module"><code><span class="keyword">module </span>F = Format</code></div><div class="doc"></div></div><h3>Programs and Types</h3><div class="spec type" id="type-func_attribute"><a href="#type-func_attribute" class="anchor"></a><div class="def type"><code><span class="keyword">type </span>func_attribute</code><code></code><code><span class="keyword"> = </span></code><table class="variant"><tr id="type-func_attribute.FA_sentinel" class="anchored"><td class="def constructor"><a href="#type-func_attribute.FA_sentinel" class="anchor"></a><code><span class="keyword">| </span></code><code><span class="constructor">FA_sentinel</span><span class="keyword"> of </span>int<span class="keyword"> * </span>int</code></td></tr></table><code></code></div><div class="doc"></div></div><div class="spec include"><div class="doc"></div><details open="open"><summary><span class="def"><code><span class="keyword">include </span><span class="keyword">sig</span> ... <span class="keyword">end</span></code></span></summary><div class="spec val" id="val-compare_func_attribute"><a href="#val-compare_func_attribute" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>compare_func_attribute : <a href="index.html#type-func_attribute">func_attribute</a> <span class="keyword">‑></span> <a href="index.html#type-func_attribute">func_attribute</a> <span class="keyword">‑></span> int</code></div><div class="doc"></div></div></details></div><div class="spec val" id="val-pp_func_attribute"><a href="#val-pp_func_attribute" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>pp_func_attribute : <a href="index.html#module-F">F</a>.formatter <span class="keyword">‑></span> <a href="index.html#type-func_attribute">func_attribute</a> <span class="keyword">‑></span> unit</code></div><div class="doc"></div></div><div class="spec val" id="val-get_sentinel_func_attribute_value"><a href="#val-get_sentinel_func_attribute_value" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>get_sentinel_func_attribute_value : <a href="index.html#type-func_attribute">func_attribute</a> list <span class="keyword">‑></span> (int<span class="keyword"> * </span>int) option</code></div><div class="doc"><p>Return the value of the FA_sentinel attribute in <code class="code">attr_list</code> if it is found</p></div></div><div class="spec type" id="type-access"><a href="#type-access" class="anchor"></a><div class="def type"><code><span class="keyword">type </span>access</code><code></code><code><span class="keyword"> = </span></code><table class="variant"><tr id="type-access.Default" class="anchored"><td class="def constructor"><a href="#type-access.Default" class="anchor"></a><code><span class="keyword">| </span></code><code><span class="constructor">Default</span></code></td></tr><tr id="type-access.Public" class="anchored"><td class="def constructor"><a href="#type-access.Public" class="anchor"></a><code><span class="keyword">| </span></code><code><span class="constructor">Public</span></code></td></tr><tr id="type-access.Private" class="anchored"><td class="def constructor"><a href="#type-access.Private" class="anchor"></a><code><span class="keyword">| </span></code><code><span class="constructor">Private</span></code></td></tr><tr id="type-access.Protected" class="anchored"><td class="def constructor"><a href="#type-access.Protected" class="anchor"></a><code><span class="keyword">| </span></code><code><span class="constructor">Protected</span></code></td></tr></table><code></code></div><div class="doc"><p>Visibility modifiers.</p></div></div><div class="spec include"><div class="doc"></div><details open="open"><summary><span class="def"><code><span class="keyword">include </span><span class="keyword">sig</span> ... <span class="keyword">end</span></code></span></summary><div class="spec val" id="val-compare_access"><a href="#val-compare_access" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>compare_access : <a href="index.html#type-access">access</a> <span class="keyword">‑></span> <a href="index.html#type-access">access</a> <span class="keyword">‑></span> int</code></div><div class="doc"></div></div></details></div><div class="spec val" id="val-equal_access"><a href="#val-equal_access" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>equal_access : <a href="index.html#type-access">access</a> <span class="keyword">‑></span> <a href="index.html#type-access">access</a> <span class="keyword">‑></span> bool</code></div><div class="doc"></div></div><div class="spec val" id="val-string_of_access"><a href="#val-string_of_access" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>string_of_access : <a href="index.html#type-access">access</a> <span class="keyword">‑></span> string</code></div><div class="doc"></div></div><div class="spec type" id="type-mem_kind"><a href="#type-mem_kind" class="anchor"></a><div class="def type"><code><span class="keyword">type </span>mem_kind</code><code></code><code><span class="keyword"> = </span></code><table class="variant"><tr id="type-mem_kind.Mmalloc" class="anchored"><td class="def constructor"><a href="#type-mem_kind.Mmalloc" class="anchor"></a><code><span class="keyword">| </span></code><code><span class="constructor">Mmalloc</span></code></td><td class="doc"><p>(** memory allocated with malloc *)</p></td></tr><tr id="type-mem_kind.Mnew" class="anchored"><td class="def constructor"><a href="#type-mem_kind.Mnew" class="anchor"></a><code><span class="keyword">| </span></code><code><span class="constructor">Mnew</span></code></td><td class="doc"><p>(** memory allocated with new *)</p></td></tr><tr id="type-mem_kind.Mnew_array" class="anchored"><td class="def constructor"><a href="#type-mem_kind.Mnew_array" class="anchor"></a><code><span class="keyword">| </span></code><code><span class="constructor">Mnew_array</span></code></td><td class="doc"><p>(** memory allocated with new<code class="code"></code> *)</p></td></tr><tr id="type-mem_kind.Mobjc" class="anchored"><td class="def constructor"><a href="#type-mem_kind.Mobjc" class="anchor"></a><code><span class="keyword">| </span></code><code><span class="constructor">Mobjc</span></code></td><td class="doc"><p>(** memory allocated with objective-c alloc *)</p></td></tr></table><code></code></div><div class="doc"></div></div><div class="spec include"><div class="doc"></div><details open="open"><summary><span class="def"><code><span class="keyword">include </span><span class="keyword">sig</span> ... <span class="keyword">end</span></code></span></summary><div class="spec val" id="val-compare_mem_kind"><a href="#val-compare_mem_kind" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>compare_mem_kind : <a href="index.html#type-mem_kind">mem_kind</a> <span class="keyword">‑></span> <a href="index.html#type-mem_kind">mem_kind</a> <span class="keyword">‑></span> int</code></div><div class="doc"></div></div></details></div><div class="spec type" id="type-resource"><a href="#type-resource" class="anchor"></a><div class="def type"><code><span class="keyword">type </span>resource</code><code></code><code><span class="keyword"> = </span></code><table class="variant"><tr id="type-resource.Rmemory" class="anchored"><td class="def constructor"><a href="#type-resource.Rmemory" class="anchor"></a><code><span class="keyword">| </span></code><code><span class="constructor">Rmemory</span><span class="keyword"> of </span><a href="index.html#type-mem_kind">mem_kind</a></code></td></tr><tr id="type-resource.Rfile" class="anchored"><td class="def constructor"><a href="#type-resource.Rfile" class="anchor"></a><code><span class="keyword">| </span></code><code><span class="constructor">Rfile</span></code></td></tr><tr id="type-resource.Rignore" class="anchored"><td class="def constructor"><a href="#type-resource.Rignore" class="anchor"></a><code><span class="keyword">| </span></code><code><span class="constructor">Rignore</span></code></td></tr><tr id="type-resource.Rlock" class="anchored"><td class="def constructor"><a href="#type-resource.Rlock" class="anchor"></a><code><span class="keyword">| </span></code><code><span class="constructor">Rlock</span></code></td></tr></table><code></code></div><div class="doc"><p>resource that can be allocated</p></div></div><div class="spec include"><div class="doc"></div><details open="open"><summary><span class="def"><code><span class="keyword">include </span><span class="keyword">sig</span> ... <span class="keyword">end</span></code></span></summary><div class="spec val" id="val-compare_resource"><a href="#val-compare_resource" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>compare_resource : <a href="index.html#type-resource">resource</a> <span class="keyword">‑></span> <a href="index.html#type-resource">resource</a> <span class="keyword">‑></span> int</code></div><div class="doc"></div></div></details></div><div class="spec type" id="type-res_act_kind"><a href="#type-res_act_kind" class="anchor"></a><div class="def type"><code><span class="keyword">type </span>res_act_kind</code><code></code><code><span class="keyword"> = </span></code><table class="variant"><tr id="type-res_act_kind.Racquire" class="anchored"><td class="def constructor"><a href="#type-res_act_kind.Racquire" class="anchor"></a><code><span class="keyword">| </span></code><code><span class="constructor">Racquire</span></code></td></tr><tr id="type-res_act_kind.Rrelease" class="anchored"><td class="def constructor"><a href="#type-res_act_kind.Rrelease" class="anchor"></a><code><span class="keyword">| </span></code><code><span class="constructor">Rrelease</span></code></td></tr></table><code></code></div><div class="doc"><p>kind of resource action</p></div></div><div class="spec include"><div class="doc"></div><details open="open"><summary><span class="def"><code><span class="keyword">include </span><span class="keyword">sig</span> ... <span class="keyword">end</span></code></span></summary><div class="spec val" id="val-compare_res_act_kind"><a href="#val-compare_res_act_kind" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>compare_res_act_kind : <a href="index.html#type-res_act_kind">res_act_kind</a> <span class="keyword">‑></span> <a href="index.html#type-res_act_kind">res_act_kind</a> <span class="keyword">‑></span> int</code></div><div class="doc"></div></div></details></div><div class="spec val" id="val-equal_res_act_kind"><a href="#val-equal_res_act_kind" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>equal_res_act_kind : <a href="index.html#type-res_act_kind">res_act_kind</a> <span class="keyword">‑></span> <a href="index.html#type-res_act_kind">res_act_kind</a> <span class="keyword">‑></span> bool</code></div><div class="doc"></div></div><div class="spec type" id="type-dangling_kind"><a href="#type-dangling_kind" class="anchor"></a><div class="def type"><code><span class="keyword">type </span>dangling_kind</code><code></code><code><span class="keyword"> = </span></code><table class="variant"><tr id="type-dangling_kind.DAuninit" class="anchored"><td class="def constructor"><a href="#type-dangling_kind.DAuninit" class="anchor"></a><code><span class="keyword">| </span></code><code><span class="constructor">DAuninit</span></code></td><td class="doc"><p>(** pointer is dangling because it is uninitialized *)</p></td></tr><tr id="type-dangling_kind.DAaddr_stack_var" class="anchored"><td class="def constructor"><a href="#type-dangling_kind.DAaddr_stack_var" class="anchor"></a><code><span class="keyword">| </span></code><code><span class="constructor">DAaddr_stack_var</span></code></td><td class="doc"><p>(** pointer is dangling because it is the address of a stack variable which went out of scope *)</p></td></tr><tr id="type-dangling_kind.DAminusone" class="anchored"><td class="def constructor"><a href="#type-dangling_kind.DAminusone" class="anchor"></a><code><span class="keyword">| </span></code><code><span class="constructor">DAminusone</span></code></td><td class="doc"><p>(** pointer is -1 *)</p></td></tr></table><code></code></div><div class="doc"><p>kind of dangling pointers</p></div></div><div class="spec type" id="type-path_pos"><a href="#type-path_pos" class="anchor"></a><div class="def type"><code><span class="keyword">type </span>path_pos</code><code><span class="keyword"> = </span><a href="../InferIR/Typ/Procname/index.html#type-t">InferIR.Typ.Procname.t</a><span class="keyword"> * </span>int</code><code></code></div><div class="doc"><p>position in a path: proc name, node id</p></div></div><div class="spec include"><div class="doc"></div><details open="open"><summary><span class="def"><code><span class="keyword">include </span><span class="keyword">sig</span> ... <span class="keyword">end</span></code></span></summary><div class="spec val" id="val-compare_path_pos"><a href="#val-compare_path_pos" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>compare_path_pos : <a href="index.html#type-path_pos">path_pos</a> <span class="keyword">‑></span> <a href="index.html#type-path_pos">path_pos</a> <span class="keyword">‑></span> int</code></div><div class="doc"></div></div></details></div><div class="spec val" id="val-equal_path_pos"><a href="#val-equal_path_pos" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>equal_path_pos : <a href="index.html#type-path_pos">path_pos</a> <span class="keyword">‑></span> <a href="index.html#type-path_pos">path_pos</a> <span class="keyword">‑></span> bool</code></div><div class="doc"></div></div><div class="spec type" id="type-res_action"><a href="#type-res_action" class="anchor"></a><div class="def type"><code><span class="keyword">type </span>res_action</code><code></code><code><span class="keyword"> = </span></code><code>{</code><table class="record"><tr id="type-res_action.ra_kind" class="anchored"><td class="def field"><a href="#type-res_action.ra_kind" class="anchor"></a><code>ra_kind : <a href="index.html#type-res_act_kind">res_act_kind</a>;</code></td><td class="doc"><p>(** kind of action *)</p></td></tr><tr id="type-res_action.ra_res" class="anchored"><td class="def field"><a href="#type-res_action.ra_res" class="anchor"></a><code>ra_res : <a href="index.html#type-resource">resource</a>;</code></td><td class="doc"><p>(** kind of resource *)</p></td></tr><tr id="type-res_action.ra_pname" class="anchored"><td class="def field"><a href="#type-res_action.ra_pname" class="anchor"></a><code>ra_pname : <a href="../InferIR/Typ/Procname/index.html#type-t">InferIR.Typ.Procname.t</a>;</code></td><td class="doc"><p>(** name of the procedure used to acquire/release the resource *)</p></td></tr><tr id="type-res_action.ra_loc" class="anchored"><td class="def field"><a href="#type-res_action.ra_loc" class="anchor"></a><code>ra_loc : <a href="../../InferBase/InferBase/Location/index.html#type-t">InferBase.Location.t</a>;</code></td><td class="doc"><p>(** location of the acquire/release *)</p></td></tr><tr id="type-res_action.ra_vpath" class="anchored"><td class="def field"><a href="#type-res_action.ra_vpath" class="anchor"></a><code>ra_vpath : <a href="../InferIR/DecompiledExp/index.html#type-vpath">InferIR.DecompiledExp.vpath</a>;</code></td><td class="doc"><p>(** vpath of the resource value *)</p></td></tr></table><code>}</code><code></code></div><div class="doc"><p>acquire/release action on a resource</p></div></div><div class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><div class="def type"><code><span class="keyword">type </span>t</code><code></code><code><span class="keyword"> = </span></code><table class="variant"><tr id="type-t.Aresource" class="anchored"><td class="def constructor"><a href="#type-t.Aresource" class="anchor"></a><code><span class="keyword">| </span></code><code><span class="constructor">Aresource</span><span class="keyword"> of </span><a href="index.html#type-res_action">res_action</a></code></td><td class="doc"><p>(** resource acquire/release *)</p></td></tr><tr id="type-t.Aautorelease" class="anchored"><td class="def constructor"><a href="#type-t.Aautorelease" class="anchor"></a><code><span class="keyword">| </span></code><code><span class="constructor">Aautorelease</span></code></td></tr><tr id="type-t.Adangling" class="anchored"><td class="def constructor"><a href="#type-t.Adangling" class="anchor"></a><code><span class="keyword">| </span></code><code><span class="constructor">Adangling</span><span class="keyword"> of </span><a href="index.html#type-dangling_kind">dangling_kind</a></code></td><td class="doc"><p>(** dangling pointer *)</p></td></tr><tr id="type-t.Aundef" class="anchored"><td class="def constructor"><a href="#type-t.Aundef" class="anchor"></a><code><span class="keyword">| </span></code><code><span class="constructor">Aundef</span><span class="keyword"> of </span><a href="../InferIR/Typ/Procname/index.html#type-t">InferIR.Typ.Procname.t</a><span class="keyword"> * </span><a href="../InferIR/Annot/Item/index.html#type-t">InferIR.Annot.Item.t</a><span class="keyword"> * </span><a href="../../InferBase/InferBase/Location/index.html#type-t">InferBase.Location.t</a><span class="keyword"> * </span><a href="index.html#type-path_pos">path_pos</a></code></td></tr><tr id="type-t.Alocked" class="anchored"><td class="def constructor"><a href="#type-t.Alocked" class="anchor"></a><code><span class="keyword">| </span></code><code><span class="constructor">Alocked</span></code></td></tr><tr id="type-t.Aunlocked" class="anchored"><td class="def constructor"><a href="#type-t.Aunlocked" class="anchor"></a><code><span class="keyword">| </span></code><code><span class="constructor">Aunlocked</span></code></td></tr><tr id="type-t.Adiv0" class="anchored"><td class="def constructor"><a href="#type-t.Adiv0" class="anchor"></a><code><span class="keyword">| </span></code><code><span class="constructor">Adiv0</span><span class="keyword"> of </span><a href="index.html#type-path_pos">path_pos</a></code></td><td class="doc"><p>(** value appeared in second argument of division at given path position *)</p></td></tr><tr id="type-t.Aobjc_null" class="anchored"><td class="def constructor"><a href="#type-t.Aobjc_null" class="anchor"></a><code><span class="keyword">| </span></code><code><span class="constructor">Aobjc_null</span></code></td><td class="doc"><p>(** attributed exp is null due to a call to a method with given path as null receiver *)</p></td></tr><tr id="type-t.Aretval" class="anchored"><td class="def constructor"><a href="#type-t.Aretval" class="anchor"></a><code><span class="keyword">| </span></code><code><span class="constructor">Aretval</span><span class="keyword"> of </span><a href="../InferIR/Typ/Procname/index.html#type-t">InferIR.Typ.Procname.t</a><span class="keyword"> * </span><a href="../InferIR/Annot/Item/index.html#type-t">InferIR.Annot.Item.t</a></code></td><td class="doc"><p>(** value was returned from a call to the given procedure, plus the annots of the return value *)</p></td></tr><tr id="type-t.Aobserver" class="anchored"><td class="def constructor"><a href="#type-t.Aobserver" class="anchor"></a><code><span class="keyword">| </span></code><code><span class="constructor">Aobserver</span></code></td><td class="doc"><p>(** denotes an object registered as an observers to a notification center *)</p></td></tr><tr id="type-t.Aunsubscribed_observer" class="anchored"><td class="def constructor"><a href="#type-t.Aunsubscribed_observer" class="anchor"></a><code><span class="keyword">| </span></code><code><span class="constructor">Aunsubscribed_observer</span></code></td><td class="doc"><p>(** denotes an object unsubscribed from observers of a notification center *)</p></td></tr><tr id="type-t.Awont_leak" class="anchored"><td class="def constructor"><a href="#type-t.Awont_leak" class="anchor"></a><code><span class="keyword">| </span></code><code><span class="constructor">Awont_leak</span></code></td><td class="doc"><p>(** value do not participate in memory leak analysis *)</p></td></tr></table><code></code></div><div class="doc"><p>Attributes are nary function symbols that are applied to expression arguments in Apred and
|
|
Anpred atomic formulas. Many operations don't make much sense for nullary predicates, and are
|
|
generally treated as no-ops. The first argument is treated specially, as the "anchor" of the
|
|
predicate application. For example, adding or removing an attribute uses the anchor to identify
|
|
the atom to operate on. Also, abstraction and normalization operations treat the anchor
|
|
specially and maintain more information on it than other arguments. Therefore when attaching an
|
|
attribute to an expression, that expression should be the first argument, optionally followed by
|
|
additional related expressions.</p></div></div><div class="spec include"><div class="doc"></div><details open="open"><summary><span class="def"><code><span class="keyword">include </span><span class="keyword">sig</span> ... <span class="keyword">end</span></code></span></summary><div class="spec val" id="val-compare"><a href="#val-compare" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>compare : <a href="index.html#type-t">t</a> <span class="keyword">‑></span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> int</code></div><div class="doc"></div></div></details></div><div class="spec val" id="val-equal"><a href="#val-equal" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>equal : <a href="index.html#type-t">t</a> <span class="keyword">‑></span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> bool</code></div><div class="doc"></div></div><div class="spec val" id="val-mem_alloc_pname"><a href="#val-mem_alloc_pname" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>mem_alloc_pname : <a href="index.html#type-mem_kind">mem_kind</a> <span class="keyword">‑></span> <a href="../InferIR/Typ/Procname/index.html#type-t">InferIR.Typ.Procname.t</a></code></div><div class="doc"><p>name of the allocation function for the given memory kind</p></div></div><div class="spec val" id="val-mem_dealloc_pname"><a href="#val-mem_dealloc_pname" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>mem_dealloc_pname : <a href="index.html#type-mem_kind">mem_kind</a> <span class="keyword">‑></span> <a href="../InferIR/Typ/Procname/index.html#type-t">InferIR.Typ.Procname.t</a></code></div><div class="doc"><p>name of the deallocation function for the given memory kind</p></div></div><div class="spec type" id="type-category"><a href="#type-category" class="anchor"></a><div class="def type"><code><span class="keyword">type </span>category</code><code></code><code><span class="keyword"> = </span></code><table class="variant"><tr id="type-category.ACresource" class="anchored"><td class="def constructor"><a href="#type-category.ACresource" class="anchor"></a><code><span class="keyword">| </span></code><code><span class="constructor">ACresource</span></code></td></tr><tr id="type-category.ACautorelease" class="anchored"><td class="def constructor"><a href="#type-category.ACautorelease" class="anchor"></a><code><span class="keyword">| </span></code><code><span class="constructor">ACautorelease</span></code></td></tr><tr id="type-category.AClock" class="anchored"><td class="def constructor"><a href="#type-category.AClock" class="anchor"></a><code><span class="keyword">| </span></code><code><span class="constructor">AClock</span></code></td></tr><tr id="type-category.ACdiv0" class="anchored"><td class="def constructor"><a href="#type-category.ACdiv0" class="anchor"></a><code><span class="keyword">| </span></code><code><span class="constructor">ACdiv0</span></code></td></tr><tr id="type-category.ACobjc_null" class="anchored"><td class="def constructor"><a href="#type-category.ACobjc_null" class="anchor"></a><code><span class="keyword">| </span></code><code><span class="constructor">ACobjc_null</span></code></td></tr><tr id="type-category.ACundef" class="anchored"><td class="def constructor"><a href="#type-category.ACundef" class="anchor"></a><code><span class="keyword">| </span></code><code><span class="constructor">ACundef</span></code></td></tr><tr id="type-category.ACretval" class="anchored"><td class="def constructor"><a href="#type-category.ACretval" class="anchor"></a><code><span class="keyword">| </span></code><code><span class="constructor">ACretval</span></code></td></tr><tr id="type-category.ACobserver" class="anchored"><td class="def constructor"><a href="#type-category.ACobserver" class="anchor"></a><code><span class="keyword">| </span></code><code><span class="constructor">ACobserver</span></code></td></tr><tr id="type-category.ACwontleak" class="anchored"><td class="def constructor"><a href="#type-category.ACwontleak" class="anchor"></a><code><span class="keyword">| </span></code><code><span class="constructor">ACwontleak</span></code></td></tr></table><code></code></div><div class="doc"><p>Categories of attributes</p></div></div><div class="spec include"><div class="doc"></div><details open="open"><summary><span class="def"><code><span class="keyword">include </span><span class="keyword">sig</span> ... <span class="keyword">end</span></code></span></summary><div class="spec val" id="val-compare_category"><a href="#val-compare_category" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>compare_category : <a href="index.html#type-category">category</a> <span class="keyword">‑></span> <a href="index.html#type-category">category</a> <span class="keyword">‑></span> int</code></div><div class="doc"></div></div></details></div><div class="spec val" id="val-equal_category"><a href="#val-equal_category" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>equal_category : <a href="index.html#type-category">category</a> <span class="keyword">‑></span> <a href="index.html#type-category">category</a> <span class="keyword">‑></span> bool</code></div><div class="doc"></div></div><div class="spec val" id="val-to_category"><a href="#val-to_category" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>to_category : <a href="index.html#type-t">t</a> <span class="keyword">‑></span> <a href="index.html#type-category">category</a></code></div><div class="doc"><p>Return the category to which the attribute belongs.</p></div></div><div class="spec val" id="val-is_undef"><a href="#val-is_undef" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>is_undef : <a href="index.html#type-t">t</a> <span class="keyword">‑></span> bool</code></div><div class="doc"></div></div><div class="spec val" id="val-to_string"><a href="#val-to_string" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>to_string : <a href="../../InferStdlib/InferStdlib/Pp/index.html#type-env">InferStdlib.Pp.env</a> <span class="keyword">‑></span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> string</code></div><div class="doc"><p>convert the attribute to a string</p></div></div><div class="spec val" id="val-d_attribute"><a href="#val-d_attribute" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>d_attribute : <a href="index.html#type-t">t</a> <span class="keyword">‑></span> unit</code></div><div class="doc"><p>Dump an attribute.</p></div></div></body></html> |