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.

3 lines
34 KiB

This file contains invisible Unicode characters!

This file contains invisible Unicode characters that may be processed differently from what appears below. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to reveal hidden characters.

<!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> &mdash; <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">&#8209;&gt;</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">&#8209;&gt;</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">&#8209;&gt;</span> exitcode:int <span class="keyword">&#8209;&gt;</span> unit) <span class="keyword">&#8209;&gt;</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">&#8209;&gt;</span> exitcode:int <span class="keyword">&#8209;&gt;</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">&#8209;&gt;</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">&#8209;&gt;</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">&#8209;&gt;</span> msg:string <span class="keyword">&#8209;&gt;</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">&#8209;&gt;</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">&#8209;&gt;</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">&#8209;&gt;</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">&#8209;&gt;</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">&#8209;&gt;</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">&#8209;&gt;</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">&#8209;&gt;</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">&#8209;&gt;</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">&#8209;&gt;</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">&#8209;&gt;</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">&#8209;&gt;</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">&#8209;&gt;</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(&lt;number of infer processes&gt;) *)</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">&#8209;&gt;</span> <a href="index.html#type-debug_level">debug_level</a> <span class="keyword">&#8209;&gt;</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">&#8209;&gt;</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">&#8209;&gt;</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">&#8209;&gt;</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">&#8209;&gt;</span> <a href="index.html#type-ocaml_pos">ocaml_pos</a> option <span class="keyword">&#8209;&gt;</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">&#8209;&gt;</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">&#8209;&gt;</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">&#8209;&gt;</span> <a href="index.html#type-print_action">print_action</a> <span class="keyword">&#8209;&gt;</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">&#8209;&gt;</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">&#8209;&gt;</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">&#8209;&gt;</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">&#8209;&gt;</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">&#8209;&gt;</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">&#8209;&gt;</span> string <span class="keyword">&#8209;&gt;</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">&#8209;&gt;</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">&#8209;&gt;</span> string <span class="keyword">&#8209;&gt;</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">&#8209;&gt;</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">&#8209;&gt;</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">&#8209;&gt;</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">&#8209;&gt;</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">&#8209;&gt;</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">&#8209;&gt;</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">&#8209;&gt;</span> unit</code></div><div class="doc"><p>dump command to decrease the indentation level</p></div></div></body></html>