<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <link rel="stylesheet" href="style.css" type="text/css"> <meta content="text/html; charset=iso-8859-1" http-equiv="Content-Type"> <link rel="Start" href="index.html"> <link rel="next" href="ReportGeneric.html"> <link rel="Up" href="index.html"> <link title="Index of types" rel=Appendix href="index_types.html"> <link title="Index of exceptions" rel=Appendix href="index_exceptions.html"> <link title="Index of values" rel=Appendix href="index_values.html"> <link title="Index of modules" rel=Appendix href="index_modules.html"> <link title="Common" rel="Chapter" href="Common.html"> <link title="ReportGeneric" rel="Chapter" href="ReportGeneric.html"> <link title="ReportHTML" rel="Chapter" href="ReportHTML.html"> <link title="ReportStat" rel="Chapter" href="ReportStat.html"> <link title="ReportUtils" rel="Chapter" href="ReportUtils.html"> <link title="Runtime" rel="Chapter" href="Runtime.html"><link title="Point kinds" rel="Section" href="#6_Pointkinds"> <link title="Utility functions" rel="Section" href="#6_Utilityfunctions"> <link title="I/O functions" rel="Section" href="#6_IOfunctions"> <title>Bisect : Common</title> </head> <body> <div class="navbar"> <a href="index.html">Up</a> <a href="ReportGeneric.html">Next</a> </div> <center><h1>Module <a href="type_Common.html">Common</a></h1></center> <br> <pre><span class="keyword">module</span> Common: <code class="code">sig</code> <a href="Common.html">..</a> <code class="code">end</code></pre>This module provides type definitions, and functions used by the various parts of Bisect.<br> <hr width="100%"> <br> <a name="6_Pointkinds"></a> <h6>Point kinds</h6><br> <br><code><span class="keyword">type</span> <a name="TYPEpoint_kind"></a><code class="type"></code>point_kind = </code><table class="typetable"> <tr> <td align="left" valign="top" > <code><span class="keyword">|</span></code></td> <td align="left" valign="top" > <code><span class="constructor">Binding</span></code></td> <td class="typefieldcomment" align="left" valign="top" ><code>(*</code></td><td class="typefieldcomment" align="left" valign="top" >Point kind for bindings (let ... in, as well as toplevel bindings).</td><td class="typefieldcomment" align="left" valign="bottom" ><code>*)</code></td> </tr> <tr> <td align="left" valign="top" > <code><span class="keyword">|</span></code></td> <td align="left" valign="top" > <code><span class="constructor">Sequence</span></code></td> <td class="typefieldcomment" align="left" valign="top" ><code>(*</code></td><td class="typefieldcomment" align="left" valign="top" >Point kind for sequences.</td><td class="typefieldcomment" align="left" valign="bottom" ><code>*)</code></td> </tr> <tr> <td align="left" valign="top" > <code><span class="keyword">|</span></code></td> <td align="left" valign="top" > <code><span class="constructor">For</span></code></td> <td class="typefieldcomment" align="left" valign="top" ><code>(*</code></td><td class="typefieldcomment" align="left" valign="top" >Point kind for for loops.</td><td class="typefieldcomment" align="left" valign="bottom" ><code>*)</code></td> </tr> <tr> <td align="left" valign="top" > <code><span class="keyword">|</span></code></td> <td align="left" valign="top" > <code><span class="constructor">If_then</span></code></td> <td class="typefieldcomment" align="left" valign="top" ><code>(*</code></td><td class="typefieldcomment" align="left" valign="top" >Point kind for if/then constructs.</td><td class="typefieldcomment" align="left" valign="bottom" ><code>*)</code></td> </tr> <tr> <td align="left" valign="top" > <code><span class="keyword">|</span></code></td> <td align="left" valign="top" > <code><span class="constructor">Try</span></code></td> <td class="typefieldcomment" align="left" valign="top" ><code>(*</code></td><td class="typefieldcomment" align="left" valign="top" >Point kind for try/catch constructs.</td><td class="typefieldcomment" align="left" valign="bottom" ><code>*)</code></td> </tr> <tr> <td align="left" valign="top" > <code><span class="keyword">|</span></code></td> <td align="left" valign="top" > <code><span class="constructor">While</span></code></td> <td class="typefieldcomment" align="left" valign="top" ><code>(*</code></td><td class="typefieldcomment" align="left" valign="top" >Point kind for while loops.</td><td class="typefieldcomment" align="left" valign="bottom" ><code>*)</code></td> </tr> <tr> <td align="left" valign="top" > <code><span class="keyword">|</span></code></td> <td align="left" valign="top" > <code><span class="constructor">Match</span></code></td> <td class="typefieldcomment" align="left" valign="top" ><code>(*</code></td><td class="typefieldcomment" align="left" valign="top" >Point kind for matches, and functions.</td><td class="typefieldcomment" align="left" valign="bottom" ><code>*)</code></td> </tr> <tr> <td align="left" valign="top" > <code><span class="keyword">|</span></code></td> <td align="left" valign="top" > <code><span class="constructor">Class_expr</span></code></td> <td class="typefieldcomment" align="left" valign="top" ><code>(*</code></td><td class="typefieldcomment" align="left" valign="top" >Point kind for class expressions.</td><td class="typefieldcomment" align="left" valign="bottom" ><code>*)</code></td> </tr> <tr> <td align="left" valign="top" > <code><span class="keyword">|</span></code></td> <td align="left" valign="top" > <code><span class="constructor">Class_init</span></code></td> <td class="typefieldcomment" align="left" valign="top" ><code>(*</code></td><td class="typefieldcomment" align="left" valign="top" >Point kind for class initialiazers.</td><td class="typefieldcomment" align="left" valign="bottom" ><code>*)</code></td> </tr> <tr> <td align="left" valign="top" > <code><span class="keyword">|</span></code></td> <td align="left" valign="top" > <code><span class="constructor">Class_meth</span></code></td> <td class="typefieldcomment" align="left" valign="top" ><code>(*</code></td><td class="typefieldcomment" align="left" valign="top" >Point kind for class methods.</td><td class="typefieldcomment" align="left" valign="bottom" ><code>*)</code></td> </tr> <tr> <td align="left" valign="top" > <code><span class="keyword">|</span></code></td> <td align="left" valign="top" > <code><span class="constructor">Class_val</span></code></td> <td class="typefieldcomment" align="left" valign="top" ><code>(*</code></td><td class="typefieldcomment" align="left" valign="top" >Point kind for class values.</td><td class="typefieldcomment" align="left" valign="bottom" ><code>*)</code></td> </tr> <tr> <td align="left" valign="top" > <code><span class="keyword">|</span></code></td> <td align="left" valign="top" > <code><span class="constructor">Toplevel_expr</span></code></td> <td class="typefieldcomment" align="left" valign="top" ><code>(*</code></td><td class="typefieldcomment" align="left" valign="top" >Point kind for toplevel expressions.</td><td class="typefieldcomment" align="left" valign="bottom" ><code>*)</code></td> </tr> <tr> <td align="left" valign="top" > <code><span class="keyword">|</span></code></td> <td align="left" valign="top" > <code><span class="constructor">Lazy_operator</span></code></td> <td class="typefieldcomment" align="left" valign="top" ><code>(*</code></td><td class="typefieldcomment" align="left" valign="top" >Point kind for lazy operators.</td><td class="typefieldcomment" align="left" valign="bottom" ><code>*)</code></td> </tr></table> <div class="info"> The type of point kinds, characterizing the various places where Bisect will check for code execution.<br> </div> <pre><span class="keyword">val</span> <a name="VALall_point_kinds"></a>all_point_kinds : <code class="type"><a href="Common.html#TYPEpoint_kind">point_kind</a> list</code></pre><div class="info"> The list of all point kinds, in ascending order.<br> </div> <pre><span class="keyword">val</span> <a name="VALstring_of_point_kind"></a>string_of_point_kind : <code class="type"><a href="Common.html#TYPEpoint_kind">point_kind</a> -> string</code></pre><div class="info"> Conversion from point kind into string.<br> </div> <br> <a name="6_Utilityfunctions"></a> <h6>Utility functions</h6><br> <pre><span class="keyword">val</span> <a name="VALtry_finally"></a>try_finally : <code class="type">'a -> ('a -> 'b) -> ('a -> unit) -> 'b</code></pre><div class="info"> <code class="code">try_finally x f h</code> implements the try/finally logic. <code class="code">f</code> is the body of the try clause, while <code class="code">h</code> is the finally handler. Errors raised by handler are silently ignored.<br> </div> <pre><span class="keyword">val</span> <a name="VALtry_in_channel"></a>try_in_channel : <code class="type">bool -> string -> (Pervasives.in_channel -> 'a) -> 'a</code></pre><div class="info"> <code class="code">try_in_channel bin filename f</code> is equivalent to <code class="code">try_finally x f h</code> where:<ul> <li><code class="code">x</code> is an input channel for file <code class="code">filename</code>, (opened in binary mode iff <code class="code">bin</code> is <code class="code">true</code>);</li> <li><code class="code">h</code> just closes the input channel. Raises an exception if any error occurs.</li> </ul> <br> </div> <pre><span class="keyword">val</span> <a name="VALtry_out_channel"></a>try_out_channel : <code class="type">bool -> string -> (Pervasives.out_channel -> 'a) -> 'a</code></pre><div class="info"> <code class="code">try_out_channel bin filename f</code> is equivalent to <code class="code">try_finally x f h</code> where:<ul> <li><code class="code">x</code> is an output channel for file <code class="code">filename</code>, (opened in binary mode iff <code class="code">bin</code> is <code class="code">true</code>);</li> <li><code class="code">h</code> just closes the output channel. Raises an exception if any error occurs.</li> </ul> <br> </div> <br> <a name="6_IOfunctions"></a> <h6>I/O functions</h6><br> <pre><span class="keyword">exception</span> <a name="EXCEPTIONInvalid_file"></a>Invalid_file <span class="keyword">of</span> <code class="type">string</code></pre> <div class="info"> Exception to be raised when a read file does not conform to the Bisect format. The parameter is the name of the incriminated file.<br> </div> <pre><span class="keyword">exception</span> <a name="EXCEPTIONUnsupported_version"></a>Unsupported_version <span class="keyword">of</span> <code class="type">string</code></pre> <div class="info"> Exception to be raised when a read file has a format whose version is unsupported. The parameter is the name of the incriminated file.<br> </div> <pre><span class="keyword">exception</span> <a name="EXCEPTIONModified_file"></a>Modified_file <span class="keyword">of</span> <code class="type">string</code></pre> <div class="info"> Exception to be raised when the source file has been modified since instrumentation. The parameter is the name of the incriminated file.<br> </div> <pre><span class="keyword">val</span> <a name="VALcmp_file_of_ml_file"></a>cmp_file_of_ml_file : <code class="type">string -> string</code></pre><div class="info"> <code class="code">cmp_file_of_ml_file f</code> returns the name of the <i>cmp</i> file associated with the <i>ml</i> file named <code class="code">f</code>.<br> </div> <pre><span class="keyword">val</span> <a name="VALwrite_runtime_data"></a>write_runtime_data : <code class="type">Pervasives.out_channel -> (string * int array) list -> unit</code></pre><div class="info"> <code class="code">write_runtime_data oc d</code> writes the runtime data <code class="code">d</code> to the output channel <code class="code">oc</code> using the Bisect file format. The runtime data list <code class="code">d</code> encodes a map (through an association list) from files to arrays of integers (the value at index <i>i</i> being the number of times point <i>i</i> has been visited). Raises <code class="code">Sys_error</code> if an i/o error occurs.<br> </div> <pre><span class="keyword">val</span> <a name="VALwrite_points"></a>write_points : <code class="type">Pervasives.out_channel -><br> (int * int * <a href="Common.html#TYPEpoint_kind">point_kind</a>) list -> string -> unit</code></pre><div class="info"> <code class="code">write_points oc pts f</code> writes the point definitions <code class="code">pts</code> to the output channel <code class="code">oc</code> using the Bisect file format. A point definition is a (offset, identifier, kind) triple. <code class="code">f</code> is the name of the source file related to point definitions, whose digest is written to the output channel. Raises <code class="code">Sys_error</code> if an i/o error occurs.<br> </div> <pre><span class="keyword">val</span> <a name="VALread_runtime_data"></a>read_runtime_data : <code class="type">string -> (string * int array) list</code></pre><div class="info"> <code class="code">read_runtime_data f</code> reads the runtime data from file <code class="code">f</code>. Raises <code class="code">Sys_error</code> if an i/o error occurs, may also raise <code class="code">Invalid_file</code>, <code class="code">Unsupported_version</code>, or <code class="code">Modified_file</code>.<br> </div> <pre><span class="keyword">val</span> <a name="VALread_points"></a>read_points : <code class="type">string -> (int * int * <a href="Common.html#TYPEpoint_kind">point_kind</a>) list</code></pre><div class="info"> <code class="code">read_points f</code> reads the point definitions associated with the source file named <code class="code">f</code>. Raises <code class="code">Sys_error</code> if an i/o error occurs, may also raise <code class="code">Invalid_file</code>, <code class="code">Unsupported_version</code>, or <code class="code">Modified_file</code>.<br> </div> </body></html>