<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"><head><title>InferBase__Logging (InferBase.InferBase__Logging)</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">InferBase</a></span></nav><header><h1><span class="keyword">Module</span> <span class="module-path">InferBase__Logging</span></h1></header><p>log messages at different levels of verbosity</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><div class="spec include"><div class="doc"></div><details open="open"><summary><span class="def"><code><span class="keyword">include </span><span class="keyword">module type of </span><a href="../InferBase/index.html#module-Die">InferBase.Die</a></code></span></summary><div class="spec exception" id="exception-InferExternalError"><a href="#exception-InferExternalError" class="anchor"></a><div class="def exception"><code><span class="keyword">exception </span></code><code><span class="exception">InferExternalError</span><span class="keyword"> of </span>string</code></div><div class="doc"></div></div><div class="spec exception" id="exception-InferInternalError"><a href="#exception-InferInternalError" class="anchor"></a><div class="def exception"><code><span class="keyword">exception </span></code><code><span class="exception">InferInternalError</span><span class="keyword"> of </span>string</code></div><div class="doc"></div></div><div class="spec exception" id="exception-InferUserError"><a href="#exception-InferUserError" class="anchor"></a><div class="def exception"><code><span class="keyword">exception </span></code><code><span class="exception">InferUserError</span><span class="keyword"> of </span>string</code></div><div class="doc"></div></div><div class="spec exception" id="exception-InferExit"><a href="#exception-InferExit" class="anchor"></a><div class="def exception"><code><span class="keyword">exception </span></code><code><span class="exception">InferExit</span><span class="keyword"> of </span>int</code></div><div class="doc"><p>This can be used to avoid scattering exit invocations all over the codebase</p></div></div><div class="spec type" id="type-error"><a href="#type-error" class="anchor"></a><div class="def type"><code><span class="keyword">type </span>error</code><code></code><code><span class="keyword"> = </span></code><table class="variant"><tr id="type-error.ExternalError" class="anchored"><td class="def constructor"><a href="#type-error.ExternalError" class="anchor"></a><code><span class="keyword">| </span></code><code><span class="constructor">ExternalError</span></code></td></tr><tr id="type-error.InternalError" class="anchored"><td class="def constructor"><a href="#type-error.InternalError" class="anchor"></a><code><span class="keyword">| </span></code><code><span class="constructor">InternalError</span></code></td></tr><tr id="type-error.UserError" class="anchored"><td class="def constructor"><a href="#type-error.UserError" class="anchor"></a><code><span class="keyword">| </span></code><code><span class="constructor">UserError</span></code></td></tr></table><code></code></div><div class="doc"><p>kind of error for <code class="code">die</code>, with similar semantics as <code class="code">Logging.{external,internal,user}_error</code></p></div></div><div class="spec val" id="val-exit"><a href="#val-exit" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>exit : int <span class="keyword">‑></span> <span class="type-var">'a</span></code></div><div class="doc"></div></div><div class="spec val" id="val-exit_code_of_exception"><a href="#val-exit_code_of_exception" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>exit_code_of_exception : <a href="../../InferStdlib/InferStdlib/index.html#module-IStd">InferStdlib.IStd</a>.Exn.t <span class="keyword">‑></span> int</code></div><div class="doc"></div></div><div class="spec val" id="val-set_log_uncaught_exception_callback"><a href="#val-set_log_uncaught_exception_callback" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>set_log_uncaught_exception_callback : (exn <span class="keyword">‑></span> exitcode:int <span class="keyword">‑></span> unit) <span class="keyword">‑></span> unit</code></div><div class="doc"></div></div><div class="spec val" id="val-log_uncaught_exception"><a href="#val-log_uncaught_exception" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>log_uncaught_exception : exn <span class="keyword">‑></span> exitcode:int <span class="keyword">‑></span> unit</code></div><div class="doc"></div></div><div class="spec val" id="val-die"><a href="#val-die" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>die : <a href="index.html#type-error">error</a> <span class="keyword">‑></span> (<span class="type-var">'a</span>, Format.formatter, unit, <span class="type-var">_</span>) <a href="../../InferStdlib/InferStdlib/index.html#module-IStd">InferStdlib.IStd</a>.format4 <span class="keyword">‑></span> <span class="type-var">'a</span></code></div><div class="doc"><p>Raise the corresponding exception.</p></div></div><div class="spec val" id="val-raise_error"><a href="#val-raise_error" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>raise_error : <a href="index.html#type-error">error</a> <span class="keyword">‑></span> msg:string <span class="keyword">‑></span> <span class="type-var">'a</span></code></div><div class="doc"></div></div><div class="spec type" id="type-style"><a href="#type-style" class="anchor"></a><div class="def type"><code><span class="keyword">type </span>style</code><code></code><code><span class="keyword"> = </span></code><table class="variant"><tr id="type-style.Error" class="anchored"><td class="def constructor"><a href="#type-style.Error" class="anchor"></a><code><span class="keyword">| </span></code><code><span class="constructor">Error</span></code></td></tr><tr id="type-style.Fatal" class="anchored"><td class="def constructor"><a href="#type-style.Fatal" class="anchor"></a><code><span class="keyword">| </span></code><code><span class="constructor">Fatal</span></code></td></tr><tr id="type-style.Normal" class="anchored"><td class="def constructor"><a href="#type-style.Normal" class="anchor"></a><code><span class="keyword">| </span></code><code><span class="constructor">Normal</span></code></td></tr><tr id="type-style.Warning" class="anchored"><td class="def constructor"><a href="#type-style.Warning" class="anchor"></a><code><span class="keyword">| </span></code><code><span class="constructor">Warning</span></code></td></tr></table><code></code></div><div class="doc"></div></div><div class="spec val" id="val-term_styles_of_style"><a href="#val-term_styles_of_style" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>term_styles_of_style : <a href="index.html#type-style">style</a> <span class="keyword">‑></span> <a href="../../InferStdlib/InferStdlib/IStd/index.html#module-ANSITerminal">InferStdlib.IStd.ANSITerminal</a>.style list</code></div><div class="doc"></div></div></details></div><div class="spec val" id="val-environment_info"><a href="#val-environment_info" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>environment_info : (<span class="type-var">'a</span>, <a href="index.html#module-F">F</a>.formatter, unit) <a href="../../InferStdlib/InferStdlib/index.html#module-IStd">InferStdlib.IStd</a>.format <span class="keyword">‑></span> <span class="type-var">'a</span></code></div><div class="doc"><p>log information about the environment</p></div></div><div class="spec val" id="val-progress"><a href="#val-progress" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>progress : (<span class="type-var">'a</span>, <a href="index.html#module-F">F</a>.formatter, unit) <a href="../../InferStdlib/InferStdlib/index.html#module-IStd">InferStdlib.IStd</a>.format <span class="keyword">‑></span> <span class="type-var">'a</span></code></div><div class="doc"><p>print immediately to standard error unless --quiet is specified</p></div></div><div class="spec val" id="val-progressbar_file"><a href="#val-progressbar_file" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>progressbar_file : unit <span class="keyword">‑></span> unit</code></div><div class="doc"><p>Progress bar: start of the analysis of a file.</p></div></div><div class="spec val" id="val-progressbar_procedure"><a href="#val-progressbar_procedure" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>progressbar_procedure : unit <span class="keyword">‑></span> unit</code></div><div class="doc"><p>Progress bar: start of the analysis of a procedure.</p></div></div><div class="spec val" id="val-progressbar_timeout_event"><a href="#val-progressbar_timeout_event" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>progressbar_timeout_event : <a href="../InferBase/SymOp/index.html#type-failure_kind">InferBase.SymOp.failure_kind</a> <span class="keyword">‑></span> unit</code></div><div class="doc"><p>Progress bar: log a timeout event if in developer mode.</p></div></div><div class="spec val" id="val-result"><a href="#val-result" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>result : (<span class="type-var">'a</span>, <a href="index.html#module-F">F</a>.formatter, unit) <a href="../../InferStdlib/InferStdlib/index.html#module-IStd">InferStdlib.IStd</a>.format <span class="keyword">‑></span> <span class="type-var">'a</span></code></div><div class="doc"><p>Emit a result to stdout. Use only if the output format is stable and useful enough that it may conceivably get piped to another program, ie, almost never (use <code class="code">progress</code> instead otherwise).</p></div></div><div class="spec val" id="val-user_error"><a href="#val-user_error" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>user_error : (<span class="type-var">'a</span>, <a href="index.html#module-F">F</a>.formatter, unit) <a href="../../InferStdlib/InferStdlib/index.html#module-IStd">InferStdlib.IStd</a>.format <span class="keyword">‑></span> <span class="type-var">'a</span></code></div><div class="doc"><p>bad input, etc. detected</p></div></div><div class="spec val" id="val-user_warning"><a href="#val-user_warning" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>user_warning : (<span class="type-var">'a</span>, <a href="index.html#module-F">F</a>.formatter, unit) <a href="../../InferStdlib/InferStdlib/index.html#module-IStd">InferStdlib.IStd</a>.format <span class="keyword">‑></span> <span class="type-var">'a</span></code></div><div class="doc"></div></div><div class="spec val" id="val-internal_error"><a href="#val-internal_error" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>internal_error : (<span class="type-var">'a</span>, <a href="index.html#module-F">F</a>.formatter, unit) <a href="../../InferStdlib/InferStdlib/index.html#module-IStd">InferStdlib.IStd</a>.format <span class="keyword">‑></span> <span class="type-var">'a</span></code></div><div class="doc"><p>huho, infer has a bug</p></div></div><div class="spec val" id="val-external_error"><a href="#val-external_error" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>external_error : (<span class="type-var">'a</span>, <a href="index.html#module-F">F</a>.formatter, unit) <a href="../../InferStdlib/InferStdlib/index.html#module-IStd">InferStdlib.IStd</a>.format <span class="keyword">‑></span> <span class="type-var">'a</span></code></div><div class="doc"><p>some other tool has a bug or is called wrongly</p></div></div><div class="spec val" id="val-external_warning"><a href="#val-external_warning" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>external_warning : (<span class="type-var">'a</span>, <a href="index.html#module-F">F</a>.formatter, unit) <a href="../../InferStdlib/InferStdlib/index.html#module-IStd">InferStdlib.IStd</a>.format <span class="keyword">‑></span> <span class="type-var">'a</span></code></div><div class="doc"></div></div><div class="spec type" id="type-debug_kind"><a href="#type-debug_kind" class="anchor"></a><div class="def type"><code><span class="keyword">type </span>debug_kind</code><code></code><code><span class="keyword"> = </span></code><table class="variant"><tr id="type-debug_kind.Analysis" class="anchored"><td class="def constructor"><a href="#type-debug_kind.Analysis" class="anchor"></a><code><span class="keyword">| </span></code><code><span class="constructor">Analysis</span></code></td></tr><tr id="type-debug_kind.BufferOverrun" class="anchored"><td class="def constructor"><a href="#type-debug_kind.BufferOverrun" class="anchor"></a><code><span class="keyword">| </span></code><code><span class="constructor">BufferOverrun</span></code></td></tr><tr id="type-debug_kind.Capture" class="anchored"><td class="def constructor"><a href="#type-debug_kind.Capture" class="anchor"></a><code><span class="keyword">| </span></code><code><span class="constructor">Capture</span></code></td></tr><tr id="type-debug_kind.Linters" class="anchored"><td class="def constructor"><a href="#type-debug_kind.Linters" class="anchor"></a><code><span class="keyword">| </span></code><code><span class="constructor">Linters</span></code></td></tr><tr id="type-debug_kind.MergeCapture" class="anchored"><td class="def constructor"><a href="#type-debug_kind.MergeCapture" class="anchor"></a><code><span class="keyword">| </span></code><code><span class="constructor">MergeCapture</span></code></td></tr><tr id="type-debug_kind.TestDeterminator" class="anchored"><td class="def constructor"><a href="#type-debug_kind.TestDeterminator" class="anchor"></a><code><span class="keyword">| </span></code><code><span class="constructor">TestDeterminator</span></code></td></tr></table><code></code></div><div class="doc"></div></div><div class="spec type" id="type-debug_level"><a href="#type-debug_level" class="anchor"></a><div class="def type"><code><span class="keyword">type </span>debug_level</code><code></code><code><span class="keyword"> = </span></code><table class="variant"><tr id="type-debug_level.Quiet" class="anchored"><td class="def constructor"><a href="#type-debug_level.Quiet" class="anchor"></a><code><span class="keyword">| </span></code><code><span class="constructor">Quiet</span></code></td><td class="doc"><p>(** innocuous, eg emitted once per toplevel execution *)</p></td></tr><tr id="type-debug_level.Medium" class="anchored"><td class="def constructor"><a href="#type-debug_level.Medium" class="anchor"></a><code><span class="keyword">| </span></code><code><span class="constructor">Medium</span></code></td><td class="doc"><p>(** still fairly lightweight, eg emitted O(<number of infer processes>) *)</p></td></tr><tr id="type-debug_level.Verbose" class="anchored"><td class="def constructor"><a href="#type-debug_level.Verbose" class="anchor"></a><code><span class="keyword">| </span></code><code><span class="constructor">Verbose</span></code></td><td class="doc"><p>(** go crazy *)</p></td></tr></table><code></code></div><div class="doc"><p>Level of verbosity for debug output. Each level enables all the levels before it.</p></div></div><div class="spec val" id="val-debug"><a href="#val-debug" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>debug : <a href="index.html#type-debug_kind">debug_kind</a> <span class="keyword">‑></span> <a href="index.html#type-debug_level">debug_level</a> <span class="keyword">‑></span> (<span class="type-var">'a</span>, <a href="index.html#module-F">F</a>.formatter, unit) <a href="../../InferStdlib/InferStdlib/index.html#module-IStd">InferStdlib.IStd</a>.format <span class="keyword">‑></span> <span class="type-var">'a</span></code></div><div class="doc"><p>log debug info</p></div></div><div class="spec val" id="val-debug_dev"><a href="#val-debug_dev" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>debug_dev : (<span class="type-var">'a</span>, Format.formatter, unit) <a href="../../InferStdlib/InferStdlib/index.html#module-IStd">InferStdlib.IStd</a>.format <span class="keyword">‑></span> <span class="type-var">'a</span></code></div><div class="doc"><p>For debugging during development.</p><ul class="at-tag"><li><span class="at-tag deprecated">Deprecated</span> Only use to debug during development. If you want more permanent logging, use [Logging.debug] instead.</li></ul></div></div><div class="spec type" id="type-ocaml_pos"><a href="#type-ocaml_pos" class="anchor"></a><div class="def type"><code><span class="keyword">type </span>ocaml_pos</code><code><span class="keyword"> = </span>string<span class="keyword"> * </span>int<span class="keyword"> * </span>int<span class="keyword"> * </span>int</code><code></code></div><div class="doc"><p>Type of location in ml source: __POS__</p></div></div><div class="spec val" id="val-ocaml_pos_to_string"><a href="#val-ocaml_pos_to_string" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>ocaml_pos_to_string : <a href="index.html#type-ocaml_pos">ocaml_pos</a> <span class="keyword">‑></span> string</code></div><div class="doc"><p>Convert an ocaml position to a string</p></div></div><div class="spec val" id="val-pp_ocaml_pos_opt"><a href="#val-pp_ocaml_pos_opt" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>pp_ocaml_pos_opt : <a href="index.html#module-F">F</a>.formatter <span class="keyword">‑></span> <a href="index.html#type-ocaml_pos">ocaml_pos</a> option <span class="keyword">‑></span> unit</code></div><div class="doc"><p>Pretty print a position in ocaml source</p></div></div><p>log management</p><div class="spec val" id="val-setup_log_file"><a href="#val-setup_log_file" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>setup_log_file : unit <span class="keyword">‑></span> unit</code></div><div class="doc"><p>Set up logging to go to the log file. Call this once the results directory has been set up.</p></div></div><div class="spec val" id="val-reset_formatters"><a href="#val-reset_formatters" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>reset_formatters : unit <span class="keyword">‑></span> unit</code></div><div class="doc"><p>Reset the formatters used for logging. Call this when you fork(2).</p></div></div><p>Delayed printing (HTML debug, ...)</p><div class="spec type" id="type-print_type"><a href="#type-print_type" class="anchor"></a><div class="def type"><code><span class="keyword">type </span>print_type</code><code></code><code><span class="keyword"> = </span></code><table class="variant"><tr id="type-print_type.PTatom" class="anchored"><td class="def constructor"><a href="#type-print_type.PTatom" class="anchor"></a><code><span class="keyword">| </span></code><code><span class="constructor">PTatom</span></code></td></tr><tr id="type-print_type.PTattribute" class="anchored"><td class="def constructor"><a href="#type-print_type.PTattribute" class="anchor"></a><code><span class="keyword">| </span></code><code><span class="constructor">PTattribute</span></code></td></tr><tr id="type-print_type.PTdecrease_indent" class="anchored"><td class="def constructor"><a href="#type-print_type.PTdecrease_indent" class="anchor"></a><code><span class="keyword">| </span></code><code><span class="constructor">PTdecrease_indent</span></code></td></tr><tr id="type-print_type.PTexp" class="anchored"><td class="def constructor"><a href="#type-print_type.PTexp" class="anchor"></a><code><span class="keyword">| </span></code><code><span class="constructor">PTexp</span></code></td></tr><tr id="type-print_type.PTexp_list" class="anchored"><td class="def constructor"><a href="#type-print_type.PTexp_list" class="anchor"></a><code><span class="keyword">| </span></code><code><span class="constructor">PTexp_list</span></code></td></tr><tr id="type-print_type.PThpred" class="anchored"><td class="def constructor"><a href="#type-print_type.PThpred" class="anchor"></a><code><span class="keyword">| </span></code><code><span class="constructor">PThpred</span></code></td></tr><tr id="type-print_type.PTincrease_indent" class="anchored"><td class="def constructor"><a href="#type-print_type.PTincrease_indent" class="anchor"></a><code><span class="keyword">| </span></code><code><span class="constructor">PTincrease_indent</span></code></td></tr><tr id="type-print_type.PTinstr" class="anchored"><td class="def constructor"><a href="#type-print_type.PTinstr" class="anchor"></a><code><span class="keyword">| </span></code><code><span class="constructor">PTinstr</span></code></td></tr><tr id="type-print_type.PTinstr_list" class="anchored"><td class="def constructor"><a href="#type-print_type.PTinstr_list" class="anchor"></a><code><span class="keyword">| </span></code><code><span class="constructor">PTinstr_list</span></code></td></tr><tr id="type-print_type.PTjprop_list" class="anchored"><td class="def constructor"><a href="#type-print_type.PTjprop_list" class="anchor"></a><code><span class="keyword">| </span></code><code><span class="constructor">PTjprop_list</span></code></td></tr><tr id="type-print_type.PTjprop_short" class="anchored"><td class="def constructor"><a href="#type-print_type.PTjprop_short" class="anchor"></a><code><span class="keyword">| </span></code><code><span class="constructor">PTjprop_short</span></code></td></tr><tr id="type-print_type.PTloc" class="anchored"><td class="def constructor"><a href="#type-print_type.PTloc" class="anchor"></a><code><span class="keyword">| </span></code><code><span class="constructor">PTloc</span></code></td></tr><tr id="type-print_type.PTnode_instrs" class="anchored"><td class="def constructor"><a href="#type-print_type.PTnode_instrs" class="anchor"></a><code><span class="keyword">| </span></code><code><span class="constructor">PTnode_instrs</span></code></td></tr><tr id="type-print_type.PToff" class="anchored"><td class="def constructor"><a href="#type-print_type.PToff" class="anchor"></a><code><span class="keyword">| </span></code><code><span class="constructor">PToff</span></code></td></tr><tr id="type-print_type.PToff_list" class="anchored"><td class="def constructor"><a href="#type-print_type.PToff_list" class="anchor"></a><code><span class="keyword">| </span></code><code><span class="constructor">PToff_list</span></code></td></tr><tr id="type-print_type.PTpath" class="anchored"><td class="def constructor"><a href="#type-print_type.PTpath" class="anchor"></a><code><span class="keyword">| </span></code><code><span class="constructor">PTpath</span></code></td></tr><tr id="type-print_type.PTprop" class="anchored"><td class="def constructor"><a href="#type-print_type.PTprop" class="anchor"></a><code><span class="keyword">| </span></code><code><span class="constructor">PTprop</span></code></td></tr><tr id="type-print_type.PTproplist" class="anchored"><td class="def constructor"><a href="#type-print_type.PTproplist" class="anchor"></a><code><span class="keyword">| </span></code><code><span class="constructor">PTproplist</span></code></td></tr><tr id="type-print_type.PTprop_list_with_typ" class="anchored"><td class="def constructor"><a href="#type-print_type.PTprop_list_with_typ" class="anchor"></a><code><span class="keyword">| </span></code><code><span class="constructor">PTprop_list_with_typ</span></code></td></tr><tr id="type-print_type.PTprop_with_typ" class="anchored"><td class="def constructor"><a href="#type-print_type.PTprop_with_typ" class="anchor"></a><code><span class="keyword">| </span></code><code><span class="constructor">PTprop_with_typ</span></code></td></tr><tr id="type-print_type.PTpvar" class="anchored"><td class="def constructor"><a href="#type-print_type.PTpvar" class="anchor"></a><code><span class="keyword">| </span></code><code><span class="constructor">PTpvar</span></code></td></tr><tr id="type-print_type.PTspec" class="anchored"><td class="def constructor"><a href="#type-print_type.PTspec" class="anchor"></a><code><span class="keyword">| </span></code><code><span class="constructor">PTspec</span></code></td></tr><tr id="type-print_type.PTstr" class="anchored"><td class="def constructor"><a href="#type-print_type.PTstr" class="anchor"></a><code><span class="keyword">| </span></code><code><span class="constructor">PTstr</span></code></td></tr><tr id="type-print_type.PTstr_color" class="anchored"><td class="def constructor"><a href="#type-print_type.PTstr_color" class="anchor"></a><code><span class="keyword">| </span></code><code><span class="constructor">PTstr_color</span></code></td></tr><tr id="type-print_type.PTstrln" class="anchored"><td class="def constructor"><a href="#type-print_type.PTstrln" class="anchor"></a><code><span class="keyword">| </span></code><code><span class="constructor">PTstrln</span></code></td></tr><tr id="type-print_type.PTstrln_color" class="anchored"><td class="def constructor"><a href="#type-print_type.PTstrln_color" class="anchor"></a><code><span class="keyword">| </span></code><code><span class="constructor">PTstrln_color</span></code></td></tr><tr id="type-print_type.PTpathset" class="anchored"><td class="def constructor"><a href="#type-print_type.PTpathset" class="anchor"></a><code><span class="keyword">| </span></code><code><span class="constructor">PTpathset</span></code></td></tr><tr id="type-print_type.PTpi" class="anchored"><td class="def constructor"><a href="#type-print_type.PTpi" class="anchor"></a><code><span class="keyword">| </span></code><code><span class="constructor">PTpi</span></code></td></tr><tr id="type-print_type.PTsexp" class="anchored"><td class="def constructor"><a href="#type-print_type.PTsexp" class="anchor"></a><code><span class="keyword">| </span></code><code><span class="constructor">PTsexp</span></code></td></tr><tr id="type-print_type.PTsexp_list" class="anchored"><td class="def constructor"><a href="#type-print_type.PTsexp_list" class="anchor"></a><code><span class="keyword">| </span></code><code><span class="constructor">PTsexp_list</span></code></td></tr><tr id="type-print_type.PTsigma" class="anchored"><td class="def constructor"><a href="#type-print_type.PTsigma" class="anchor"></a><code><span class="keyword">| </span></code><code><span class="constructor">PTsigma</span></code></td></tr><tr id="type-print_type.PTtexp_full" class="anchored"><td class="def constructor"><a href="#type-print_type.PTtexp_full" class="anchor"></a><code><span class="keyword">| </span></code><code><span class="constructor">PTtexp_full</span></code></td></tr><tr id="type-print_type.PTsub" class="anchored"><td class="def constructor"><a href="#type-print_type.PTsub" class="anchor"></a><code><span class="keyword">| </span></code><code><span class="constructor">PTsub</span></code></td></tr><tr id="type-print_type.PTtyp_full" class="anchored"><td class="def constructor"><a href="#type-print_type.PTtyp_full" class="anchor"></a><code><span class="keyword">| </span></code><code><span class="constructor">PTtyp_full</span></code></td></tr><tr id="type-print_type.PTtyp_list" class="anchored"><td class="def constructor"><a href="#type-print_type.PTtyp_list" class="anchor"></a><code><span class="keyword">| </span></code><code><span class="constructor">PTtyp_list</span></code></td></tr><tr id="type-print_type.PTwarning" class="anchored"><td class="def constructor"><a href="#type-print_type.PTwarning" class="anchor"></a><code><span class="keyword">| </span></code><code><span class="constructor">PTwarning</span></code></td></tr><tr id="type-print_type.PTerror" class="anchored"><td class="def constructor"><a href="#type-print_type.PTerror" class="anchor"></a><code><span class="keyword">| </span></code><code><span class="constructor">PTerror</span></code></td></tr><tr id="type-print_type.PTinfo" class="anchored"><td class="def constructor"><a href="#type-print_type.PTinfo" class="anchor"></a><code><span class="keyword">| </span></code><code><span class="constructor">PTinfo</span></code></td></tr></table><code></code></div><div class="doc"><p>type of printable elements</p></div></div><div class="spec type" id="type-print_action"><a href="#type-print_action" class="anchor"></a><div class="def type"><code><span class="keyword">type </span>print_action</code><code><span class="keyword"> = </span><a href="index.html#type-print_type">print_type</a><span class="keyword"> * </span>Obj.t</code><code></code></div><div class="doc"><p>delayable print action</p><p>data to be printed</p></div></div><div class="spec val" id="val-printer_hook"><a href="#val-printer_hook" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>printer_hook : (<a href="index.html#module-F">F</a>.formatter <span class="keyword">‑></span> <a href="index.html#type-print_action">print_action</a> <span class="keyword">‑></span> unit) <a href="../../InferStdlib/InferStdlib/index.html#module-IStd">InferStdlib.IStd</a>.ref</code></div><div class="doc"><p>hook for the current printer of delayed print actions</p></div></div><div class="spec val" id="val-add_print_action"><a href="#val-add_print_action" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>add_print_action : <a href="index.html#type-print_action">print_action</a> <span class="keyword">‑></span> unit</code></div><div class="doc"><p>extend he current print log</p></div></div><div class="spec val" id="val-get_delayed_prints"><a href="#val-get_delayed_prints" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>get_delayed_prints : unit <span class="keyword">‑></span> <a href="index.html#type-print_action">print_action</a> list</code></div><div class="doc"><p>return the delayed print actions</p></div></div><div class="spec val" id="val-set_delayed_prints"><a href="#val-set_delayed_prints" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>set_delayed_prints : <a href="index.html#type-print_action">print_action</a> list <span class="keyword">‑></span> unit</code></div><div class="doc"><p>set the delayed print actions</p></div></div><div class="spec val" id="val-reset_delayed_prints"><a href="#val-reset_delayed_prints" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>reset_delayed_prints : unit <span class="keyword">‑></span> unit</code></div><div class="doc"><p>reset the delayed print actions</p></div></div><div class="spec val" id="val-d_str"><a href="#val-d_str" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>d_str : string <span class="keyword">‑></span> unit</code></div><div class="doc"><p>dump a string</p></div></div><div class="spec val" id="val-d_str_color"><a href="#val-d_str_color" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>d_str_color : <a href="../../InferStdlib/InferStdlib/Pp/index.html#type-color">InferStdlib.Pp.color</a> <span class="keyword">‑></span> string <span class="keyword">‑></span> unit</code></div><div class="doc"><p>dump a string with the given color</p></div></div><div class="spec val" id="val-d_strln"><a href="#val-d_strln" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>d_strln : string <span class="keyword">‑></span> unit</code></div><div class="doc"><p>dump a string plus newline</p></div></div><div class="spec val" id="val-d_strln_color"><a href="#val-d_strln_color" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>d_strln_color : <a href="../../InferStdlib/InferStdlib/Pp/index.html#type-color">InferStdlib.Pp.color</a> <span class="keyword">‑></span> string <span class="keyword">‑></span> unit</code></div><div class="doc"><p>dump a string plus newline with the given color</p></div></div><div class="spec val" id="val-d_ln"><a href="#val-d_ln" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>d_ln : unit <span class="keyword">‑></span> unit</code></div><div class="doc"><p>dump a newline</p></div></div><div class="spec val" id="val-d_error"><a href="#val-d_error" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>d_error : string <span class="keyword">‑></span> unit</code></div><div class="doc"><p>dump an error string</p></div></div><div class="spec val" id="val-d_warning"><a href="#val-d_warning" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>d_warning : string <span class="keyword">‑></span> unit</code></div><div class="doc"><p>dump a warning string</p></div></div><div class="spec val" id="val-d_info"><a href="#val-d_info" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>d_info : string <span class="keyword">‑></span> unit</code></div><div class="doc"><p>dump an info string</p></div></div><div class="spec val" id="val-d_indent"><a href="#val-d_indent" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>d_indent : int <span class="keyword">‑></span> unit</code></div><div class="doc"><p>dump an indentation</p></div></div><div class="spec val" id="val-d_increase_indent"><a href="#val-d_increase_indent" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>d_increase_indent : int <span class="keyword">‑></span> unit</code></div><div class="doc"><p>dump command to increase the indentation level</p></div></div><div class="spec val" id="val-d_decrease_indent"><a href="#val-d_decrease_indent" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>d_decrease_indent : int <span class="keyword">‑></span> unit</code></div><div class="doc"><p>dump command to decrease the indentation level</p></div></div></body></html>