@ciao-lang/ts-ciao-interface
Version:
Simple Ciao interface for node.
109 lines • 35.9 kB
HTML
<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><meta name="theme-color" content="#273f79"/><link rel="stylesheet" href="lpdoc.css" type="text/css"/><script type="text/javascript" src="lpdoc.js"></script><title>Program structure for intermodular analysis — The CiaoPP Program Processor v1.5</title></head><body><div class="lpdoc-page fixleftbar"><a href="#" id="sidebar-toggle-button" class="lpdoc-navbutton"><span id="sidebar-button-arrow">☰</span></a><div id="sidebar" class="lpdoc-sidebar"><div style="height: 40px; margin-left: auto; margin-right: auto"><img src="ciao-logo_autofig.png" width=auto height=100%></div><div class="lpdoc-nav"><span class="lpdoc-on-right"><a class="lpdoc-navbutton" href="intermod.html">↑</a><a class="lpdoc-navbutton" href="intermod_schedule.html">←</a><a class="lpdoc-navbutton" href="intermod_entry.html">→</a><a class="lpdoc-navbutton" href="ciaopp_ref_mansearch.html">🔍</a></span><span><a href="ciaopp_ref_manfulltoc.html">TOC</a></span></div><hr></hr><ul class="lpdoc-itemize-sectpath"><li><a href="ciaopp_ref_man.html">The CiaoPP Program Processor</a> »<br/> </li><li><a href="part_internals.html">PART IV - CiaoPP Internals</a> »<br/> </li><li><a href="intermod.html">Modular driver</a> »<br/> </li><li><a href=""><strong>Program structure for intermodular analysis</strong></a></li></ul><hr></hr><em>ON THIS PAGE</em><ul><li><a href="#Usage and interface">Usage and interface</a></li><li><a href="#Documentation on exports">Documentation on exports</a></li><li><a href="#Documentation on imports">Documentation on imports</a></li></ul></div><div class="lpdoc-main"><div id=""><h1>Program structure for intermodular analysis</h1><a class="lpdoc-idx-anchor" href="ciaopp_ref_mansearch.html#intermod_punit"></a>
This module contains the functionality to compute the intermodular graph of a program, i.e., the dependencies of its modules.<p>The predicate <a class="lpdoc-idx-anchor" id="0" href="ciaopp_ref_mansearch.html#compute_intermodule_graph/1"><tt>compute_intermodule_graph/1</tt></a> calls the Ciao compiler to obtain which modules are in the intermodular punit, which is controlled by the flag <tt>punit_boundary</tt>. This is done by: <ul> <p><li><a class="lpdoc-idx-anchor" id="1" href="ciaopp_ref_mansearch.html#process_changed_module/1"><tt>process_changed_module/1</tt></a>: Is executed if the module changed (w.r.t. the <tt>.itf</tt> file.<p><li><a class="lpdoc-idx-anchor" id="2" href="ciaopp_ref_mansearch.html#check_stop_one_module/1"><tt>check_stop_one_module/1</tt></a>: Decides whether the compiler needs to keep processing the modules imported by the current module.<p><li><a class="lpdoc-idx-anchor" id="3" href="ciaopp_ref_mansearch.html#redo_unchanged_module/1"><tt>redo_unchanged_module/1</tt></a>: Is executed if there were no changes since the last time the module was <strong>compiled</strong>, if always fails because it is asking whether to process the file <strong>again</strong>.<p></ul> <br/><div id="Usage and interface"><h2>Usage and interface</h2><div class="lpdoc-cartouche"><ul><li><strong>Library usage:</strong><br/><tt>:- use_module(ciaopp(plai/intermod_punit)).</tt><li><strong>Exports:</strong><br/><ul class="lpdoc-itemize-minus"><li><em>Predicates:</em><br/><a class="lpdoc-idx-anchor" id="4" href="#compute_punit_modules/3"><tt>compute_punit_modules/3</tt></a>, <a class="lpdoc-idx-anchor" id="5" href="#get_punit_modules/1"><tt>get_punit_modules/1</tt></a>, <a class="lpdoc-idx-anchor" id="6" href="#get_punit_included_files/1"><tt>get_punit_included_files/1</tt></a>, <a class="lpdoc-idx-anchor" id="7" href="#get_all_module_cycles/2"><tt>get_all_module_cycles/2</tt></a>, <a class="lpdoc-idx-anchor" id="8" href="#module_is_processable/1"><tt>module_is_processable/1</tt></a>, <a class="lpdoc-idx-anchor" id="9" href="#ensure_registry_file/3"><tt>ensure_registry_file/3</tt></a>, <a class="lpdoc-idx-anchor" id="10" href="#read_registry_file/3"><tt>read_registry_file/3</tt></a>, <a class="lpdoc-idx-anchor" id="11" href="#write_registry_file/3"><tt>write_registry_file/3</tt></a>, <a class="lpdoc-idx-anchor" id="12" href="#open_mode/3"><tt>open_mode/3</tt></a>, <a class="lpdoc-idx-anchor" id="13" href="#change_open_mode/2"><tt>change_open_mode/2</tt></a>, <a class="lpdoc-idx-anchor" id="14" href="#save_registry_info/3"><tt>save_registry_info/3</tt></a>, <a class="lpdoc-idx-anchor" id="15" href="#save_registry_info/2"><tt>save_registry_info/2</tt></a>, <a class="lpdoc-idx-anchor" id="16" href="#compute_imported_modules/0"><tt>compute_imported_modules/0</tt></a>, <a class="lpdoc-idx-anchor" id="17" href="#get_imported_module_base/2"><tt>get_imported_module_base/2</tt></a>, <a class="lpdoc-idx-anchor" id="18" href="#get_modules_analyzed/1"><tt>get_modules_analyzed/1</tt></a>, <a class="lpdoc-idx-anchor" id="19" href="#set_modules_analyzed/1"><tt>set_modules_analyzed/1</tt></a>.
</ul></ul></div></div><div id="Documentation on exports"><h2>Documentation on exports</h2><div><div class="lpdoc-defname"><span class="lpdoc-predtag">PREDICATE</span><a class="lpdoc-idx-anchor" id="compute_punit_modules/3" href="ciaopp_ref_mansearch.html#compute_punit_modules/3">compute_punit_modules/3</a></div><div class="lpdoc-deftext"><p><span class="lpdoc-usage-header">Usage:</span><span class="lpdoc-usage-decl"><tt>compute_punit_modules(TopLevel,ModList,Error)</tt>
</span><p><span class="lpdoc-var">ModList</span> is the list of modules to analyze. This list is formed by the modules which have their .reg file outdated, or if the module is not completely analyzed (some of the entries in the .reg file are marked or invalid). For those modules which have no .reg file, the <em>parents</em> of the module are included in the list (as there are no call patterns for those modules without .reg file).<p>The structure of the elements in the list is a term (<span class="lpdoc-var">Mod</span>,<span class="lpdoc-var">Depth</span>,<span class="lpdoc-var">Force</span>), where <span class="lpdoc-var">Mod</span> stands for the module name, <span class="lpdoc-var">Depth</span> is the maximum depth without cycles in the intermodular graph, and <span class="lpdoc-var">Force</span> marks those modules which must be completely reanalyzed (only useful for the parents of the modules with no reg file). </p><ul class="lpdoc-itemize-minus"><li><em>The following properties should hold at call time:</em><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="20" href="ciaopp_ref_mansearch.html#nonvar/1"><tt>nonvar/1</tt></a>)</span><span><span class="lpdoc-var">TopLevel</span> is currently a term which is not a free variable.
</span>
<li><em>The following properties should hold upon exit:</em><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="21" href="ciaopp_ref_mansearch.html#nonvar/1"><tt>nonvar/1</tt></a>)</span><span><span class="lpdoc-var">ModList</span> is currently a term which is not a free variable.
</span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="22" href="ciaopp_ref_mansearch.html#nonvar/1"><tt>nonvar/1</tt></a>)</span><span><span class="lpdoc-var">Error</span> is currently a term which is not a free variable.
</span>
<li><em>The following properties should hold globally:</em><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="23" href="native_props_nfdet_doc.html#not_fails/1"><tt>not_fails/1</tt></a>)</span><span>All the calls of the form <span class="lpdoc-var">compute_punit_modules(TopLevel,ModList,Error)</span> do not fail.
</span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="24" href="native_props_nfdet_doc.html#is_det/1"><tt>is_det/1</tt></a>)</span><span>All calls of the form <span class="lpdoc-var">compute_punit_modules(TopLevel,ModList,Error)</span> are deterministic.
</span>
</ul></div></div><p>
<div><div class="lpdoc-defname"><span class="lpdoc-predtag">PREDICATE</span><a class="lpdoc-idx-anchor" id="get_punit_modules/1" href="ciaopp_ref_mansearch.html#get_punit_modules/1">get_punit_modules/1</a></div><div class="lpdoc-deftext"><p><span class="lpdoc-usage-header">Usage:</span><span class="lpdoc-usage-decl"><tt>get_punit_modules(ModList)</tt>
</span><p>Obtains <span class="lpdoc-var">ModList</span>, the list of modules in the program unit that is currently loaded. This list is formed by the modules which appear in the top-down modular graph traversal with registries set to read_write mode (and including library modules if punit_boundary flag is set to 'on'. <a class="lpdoc-idx-anchor" id="25" href="ciaopp_ref_mansearch.html#compute_punit_modules/2"><tt>compute_punit_modules/2</tt></a> needs to be called before.</p><ul class="lpdoc-itemize-minus"><li><em>The following properties should hold upon exit:</em><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="26" href="ciaopp_ref_mansearch.html#nonvar/1"><tt>nonvar/1</tt></a>)</span><span><span class="lpdoc-var">ModList</span> is currently a term which is not a free variable.
</span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="27" href="basic_props.html#list/1"><tt>list/1</tt></a>)</span><span><span class="lpdoc-var">ModList</span> is a list.
</span>
<li><em>The following properties should hold globally:</em><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="28" href="native_props_nfdet_doc.html#not_fails/1"><tt>not_fails/1</tt></a>)</span><span>All the calls of the form <span class="lpdoc-var">get_punit_modules(ModList)</span> do not fail.
</span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="29" href="native_props_nfdet_doc.html#is_det/1"><tt>is_det/1</tt></a>)</span><span>All calls of the form <span class="lpdoc-var">get_punit_modules(ModList)</span> are deterministic.
</span>
</ul></div></div><p>
<div><div class="lpdoc-defname"><span class="lpdoc-predtag">PREDICATE</span><a class="lpdoc-idx-anchor" id="get_punit_included_files/1" href="ciaopp_ref_mansearch.html#get_punit_included_files/1">get_punit_included_files/1</a></div><div class="lpdoc-deftext"><p><span class="lpdoc-usage-header">Usage:</span><span class="lpdoc-usage-decl"><tt>get_punit_included_files(IncludeList)</tt>
</span><p>Returns the list of included files in the program unit. This list includes not only files explicitly included with <a class="lpdoc-idx-anchor" id="30" href="ciaopp_ref_mansearch.html#:- include"><tt>:- include</tt></a> declarations, but also packages used. <a class="lpdoc-idx-anchor" id="31" href="ciaopp_ref_mansearch.html#compute_punit_modules/2"><tt>compute_punit_modules/2</tt></a> needs to be called before.</p><ul class="lpdoc-itemize-minus"><li><em>The following properties should hold upon exit:</em><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="32" href="ciaopp_ref_mansearch.html#nonvar/1"><tt>nonvar/1</tt></a>)</span><span><span class="lpdoc-var">IncludeList</span> is currently a term which is not a free variable.
</span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="33" href="basic_props.html#list/2"><tt>list/2</tt></a>)</span><span><span class="lpdoc-var">IncludeList</span> is a list of <span class="lpdoc-var">filename</span>s.
</span>
<li><em>The following properties should hold globally:</em><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="34" href="native_props_nfdet_doc.html#not_fails/1"><tt>not_fails/1</tt></a>)</span><span>All the calls of the form <span class="lpdoc-var">get_punit_included_files(IncludeList)</span> do not fail.
</span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="35" href="native_props_nfdet_doc.html#is_det/1"><tt>is_det/1</tt></a>)</span><span>All calls of the form <span class="lpdoc-var">get_punit_included_files(IncludeList)</span> are deterministic.
</span>
</ul></div></div><p>
<div><div class="lpdoc-defname"><span class="lpdoc-predtag">PREDICATE</span><a class="lpdoc-idx-anchor" id="get_all_module_cycles/2" href="ciaopp_ref_mansearch.html#get_all_module_cycles/2">get_all_module_cycles/2</a></div><div class="lpdoc-deftext"><p><span class="lpdoc-usage-header">Usage:</span><span class="lpdoc-usage-decl"><tt>get_all_module_cycles(TopLevelFile,CycleList)</tt>
</span><p>Obtains <span class="lpdoc-var">CycleList</span>, the list of cycles in the program unit whose top-level module is <span class="lpdoc-var">TopLevelFile</span>. A cycle is a ciclic dependency in the module dependency graph. Every element of <span class="lpdoc-var">CycleList</span> is a list of the modules which belong to each cycle. Modules not belonging to any cycle are represented as one-element lists. <span class="lpdoc-var">CycleList</span> is sorted as a post-order traversal of the inter-cycle dependency graph.<p>The modules included in <span class="lpdoc-var">CycleList</span> are those which appear in the top-down modular graph traversal with registries set to read_write mode (and including library modules if punit_boundary flag is set to 'on'.)</p><ul class="lpdoc-itemize-minus"><li><em>The following properties should hold at call time:</em><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="36" href="ciaopp_ref_mansearch.html#nonvar/1"><tt>nonvar/1</tt></a>)</span><span><span class="lpdoc-var">TopLevelFile</span> is currently a term which is not a free variable.
</span>
<li><em>The following properties should hold upon exit:</em><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="37" href="ciaopp_ref_mansearch.html#nonvar/1"><tt>nonvar/1</tt></a>)</span><span><span class="lpdoc-var">CycleList</span> is currently a term which is not a free variable.
</span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="38" href="basic_props.html#list/1"><tt>list/1</tt></a>)</span><span><span class="lpdoc-var">CycleList</span> is a list.
</span>
<li><em>The following properties should hold globally:</em><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="39" href="native_props_nfdet_doc.html#not_fails/1"><tt>not_fails/1</tt></a>)</span><span>All the calls of the form <span class="lpdoc-var">get_all_module_cycles(TopLevelFile,CycleList)</span> do not fail.
</span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="40" href="native_props_nfdet_doc.html#is_det/1"><tt>is_det/1</tt></a>)</span><span>All calls of the form <span class="lpdoc-var">get_all_module_cycles(TopLevelFile,CycleList)</span> are deterministic.
</span>
</ul></div></div><p>
<div><div class="lpdoc-defname"><span class="lpdoc-predtag">PREDICATE</span><a class="lpdoc-idx-anchor" id="module_is_processable/1" href="ciaopp_ref_mansearch.html#module_is_processable/1">module_is_processable/1</a></div><div class="lpdoc-deftext"><p><span class="lpdoc-usage-header">Usage:</span><span class="lpdoc-usage-decl"><tt>module_is_processable(Base)</tt>
</span><p>Succeeds if module in <span class="lpdoc-var">Base</span> can be processed by intermodular preprocessing tools. This predicate may have to load the registry file of that module, in order to check that the module has read-write mode.</p><ul class="lpdoc-itemize-minus"><li><em>The following properties should hold at call time:</em><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="41" href="ciaopp_ref_mansearch.html#nonvar/1"><tt>nonvar/1</tt></a>)</span><span><span class="lpdoc-var">Base</span> is currently a term which is not a free variable.
</span>
</ul></div></div><p>
<div><div class="lpdoc-defname"><span class="lpdoc-predtag">PREDICATE</span><a class="lpdoc-idx-anchor" id="ensure_registry_file/3" href="ciaopp_ref_mansearch.html#ensure_registry_file/3">ensure_registry_file/3</a></div><div class="lpdoc-deftext">No further documentation available for this predicate.</div></div><p>
<div><div class="lpdoc-defname"><span class="lpdoc-predtag">PREDICATE</span><a class="lpdoc-idx-anchor" id="read_registry_file/3" href="ciaopp_ref_mansearch.html#read_registry_file/3">read_registry_file/3</a></div><div class="lpdoc-deftext"><p><span class="lpdoc-usage-header">Usage:</span><span class="lpdoc-usage-decl"><tt>read_registry_file(Module,Base,Verb)</tt>
</span><p> Reads the registry file of <span class="lpdoc-var">Module</span> and loads it into <tt>registry/2</tt>, erasing any previous registry information for that module. <span class="lpdoc-var">Base</span> must be the absolute file name, but excluding file extension.</p><ul class="lpdoc-itemize-minus"><li><em>The following properties should hold at call time:</em><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="42" href="ciaopp_ref_mansearch.html#nonvar/1"><tt>nonvar/1</tt></a>)</span><span><span class="lpdoc-var">Module</span> is currently a term which is not a free variable.
</span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="43" href="ciaopp_ref_mansearch.html#nonvar/1"><tt>nonvar/1</tt></a>)</span><span><span class="lpdoc-var">Base</span> is currently a term which is not a free variable.
</span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="44" href="ciaopp_ref_mansearch.html#nonvar/1"><tt>nonvar/1</tt></a>)</span><span><span class="lpdoc-var">Verb</span> is currently a term which is not a free variable.
</span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="45" href="basic_props.html#atm/1"><tt>atm/1</tt></a>)</span><span><span class="lpdoc-var">Module</span> is an atom.
</span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="46" href="basic_props.html#atm/1"><tt>atm/1</tt></a>)</span><span><span class="lpdoc-var">Base</span> is an atom.
</span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="47" href="basic_props.html#atm/1"><tt>atm/1</tt></a>)</span><span><span class="lpdoc-var">Verb</span> is an atom.
</span>
<li><em>The following properties should hold globally:</em><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="48" href="native_props_nfdet_doc.html#not_fails/1"><tt>not_fails/1</tt></a>)</span><span>All the calls of the form <span class="lpdoc-var">read_registry_file(Module,Base,Verb)</span> do not fail.
</span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="49" href="native_props_nfdet_doc.html#is_det/1"><tt>is_det/1</tt></a>)</span><span>All calls of the form <span class="lpdoc-var">read_registry_file(Module,Base,Verb)</span> are deterministic.
</span>
</ul></div></div><p>
<div><div class="lpdoc-defname"><span class="lpdoc-predtag">PREDICATE</span><a class="lpdoc-idx-anchor" id="write_registry_file/3" href="ciaopp_ref_mansearch.html#write_registry_file/3">write_registry_file/3</a></div><div class="lpdoc-deftext"><p><span class="lpdoc-usage-header">Usage:</span><span class="lpdoc-usage-decl"><tt>write_registry_file(Base,Module,Verb)</tt>
</span><p>Writes to disk the registry information stored in memory for module <span class="lpdoc-var">Module</span> which has as base file name <span class="lpdoc-var">Base</span>.</p><ul class="lpdoc-itemize-minus"><li><em>The following properties should hold at call time:</em><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="50" href="basic_props.html#atm/1"><tt>atm/1</tt></a>)</span><span><span class="lpdoc-var">Base</span> is an atom.
</span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="51" href="basic_props.html#atm/1"><tt>atm/1</tt></a>)</span><span><span class="lpdoc-var">Module</span> is an atom.
</span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="52" href="basic_props.html#atm/1"><tt>atm/1</tt></a>)</span><span><span class="lpdoc-var">Verb</span> is an atom.
</span>
<li><em>The following properties should hold globally:</em><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="53" href="native_props_nfdet_doc.html#not_fails/1"><tt>not_fails/1</tt></a>)</span><span>All the calls of the form <span class="lpdoc-var">write_registry_file(Base,Module,Verb)</span> do not fail.
</span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="54" href="native_props_nfdet_doc.html#is_det/1"><tt>is_det/1</tt></a>)</span><span>All calls of the form <span class="lpdoc-var">write_registry_file(Base,Module,Verb)</span> are deterministic.
</span>
</ul></div></div><p>
<div><div class="lpdoc-defname"><span class="lpdoc-predtag">PREDICATE</span><a class="lpdoc-idx-anchor" id="open_mode/3" href="ciaopp_ref_mansearch.html#open_mode/3">open_mode/3</a></div><div class="lpdoc-deftext"><p><span class="lpdoc-usage-header">Usage:</span><span class="lpdoc-usage-decl"><tt>open_mode(Base,Type,OpenMode)</tt>
</span><p>Module with basename <span class="lpdoc-var">Base</span> is of type <span class="lpdoc-var">Type</span> and it is opened with mode <span class="lpdoc-var">OpenMode</span>. <span class="lpdoc-var">Type</span> can be <a class="lpdoc-idx-anchor" id="55" href="ciaopp_ref_mansearch.html#user"><tt>user</tt></a> or <a class="lpdoc-idx-anchor" id="56" href="ciaopp_ref_mansearch.html#library"><tt>library</tt></a>. <span class="lpdoc-var">OpenMode</span> is used to indicate if an imported module's registry can be updated. It can take the values <a class="lpdoc-idx-anchor" id="57" href="ciaopp_ref_mansearch.html#read_write"><tt>read_write</tt></a> or <a class="lpdoc-idx-anchor" id="58" href="ciaopp_ref_mansearch.html#read_only"><tt>read_only</tt></a>.</p><ul class="lpdoc-itemize-minus"></ul></div></div><p>
<div><div class="lpdoc-defname"><span class="lpdoc-predtag">PREDICATE</span><a class="lpdoc-idx-anchor" id="change_open_mode/2" href="ciaopp_ref_mansearch.html#change_open_mode/2">change_open_mode/2</a></div><div class="lpdoc-deftext"><p><span class="lpdoc-usage-header">Usage:</span><span class="lpdoc-usage-decl"><tt>change_open_mode(Base,OpenMode)</tt>
</span><p><span class="lpdoc-var">OpenMode</span> is the new open mode of the module with basename <span class="lpdoc-var">Base</span>. <span class="lpdoc-var">OpenMode</span> can take the values <a class="lpdoc-idx-anchor" id="59" href="ciaopp_ref_mansearch.html#read_write"><tt>read_write</tt></a> and <a class="lpdoc-idx-anchor" id="60" href="ciaopp_ref_mansearch.html#read_only"><tt>read_only</tt></a>.</p><ul class="lpdoc-itemize-minus"><li><em>The following properties should hold at call time:</em><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="61" href="ciaopp_ref_mansearch.html#nonvar/1"><tt>nonvar/1</tt></a>)</span><span><span class="lpdoc-var">Base</span> is currently a term which is not a free variable.
</span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="62" href="ciaopp_ref_mansearch.html#nonvar/1"><tt>nonvar/1</tt></a>)</span><span><span class="lpdoc-var">OpenMode</span> is currently a term which is not a free variable.
</span>
</ul></div></div><p>
<div><div class="lpdoc-defname"><span class="lpdoc-predtag">PREDICATE</span><a class="lpdoc-idx-anchor" id="save_registry_info/3" href="ciaopp_ref_mansearch.html#save_registry_info/3">save_registry_info/3</a></div><div class="lpdoc-deftext"><p><span class="lpdoc-usage-header">Usage:</span><span class="lpdoc-usage-decl"><tt>save_registry_info(Verb,CurrBase,Info)</tt>
</span><p>Writes on disk the registry information of the modules related to the current module (<span class="lpdoc-var">CurrBase</span>) which have been modified. This information is updated by <a class="lpdoc-idx-anchor" id="63" href="ciaopp_ref_mansearch.html#gen_registry_info/3"><tt>gen_registry_info/3</tt></a>. Even if this predicate is used, <a class="lpdoc-idx-anchor" id="64" href="#save_registry_info/2"><tt>save_registry_info/2</tt></a> must be used after performing intermodular preprocessing.</p><ul class="lpdoc-itemize-minus"><li><em>The following properties should hold at call time:</em><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="65" href="ciaopp_ref_mansearch.html#nonvar/1"><tt>nonvar/1</tt></a>)</span><span><span class="lpdoc-var">Verb</span> is currently a term which is not a free variable.
</span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="66" href="ciaopp_ref_mansearch.html#nonvar/1"><tt>nonvar/1</tt></a>)</span><span><span class="lpdoc-var">CurrBase</span> is currently a term which is not a free variable.
</span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="67" href="basic_props.html#atm/1"><tt>atm/1</tt></a>)</span><span><span class="lpdoc-var">Verb</span> is an atom.
</span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="68" href="basic_props.html#atm/1"><tt>atm/1</tt></a>)</span><span><span class="lpdoc-var">CurrBase</span> is an atom.
</span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="69" href="basic_props.html#term/1"><tt>term/1</tt></a>)</span><span><span class="lpdoc-var">Info</span> is any term.
</span>
<li><em>The following properties should hold globally:</em><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="70" href="native_props_nfdet_doc.html#not_fails/1"><tt>not_fails/1</tt></a>)</span><span>All the calls of the form <span class="lpdoc-var">save_registry_info(Verb,CurrBase,Info)</span> do not fail.
</span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="71" href="native_props_nfdet_doc.html#is_det/1"><tt>is_det/1</tt></a>)</span><span>All calls of the form <span class="lpdoc-var">save_registry_info(Verb,CurrBase,Info)</span> are deterministic.
</span>
</ul></div></div><p>
<div><div class="lpdoc-defname"><span class="lpdoc-predtag">PREDICATE</span><a class="lpdoc-idx-anchor" id="save_registry_info/2" href="ciaopp_ref_mansearch.html#save_registry_info/2">save_registry_info/2</a></div><div class="lpdoc-deftext"><p><span class="lpdoc-usage-header">Usage:</span><span class="lpdoc-usage-decl"><tt>save_registry_info(Verb,Info)</tt>
</span><p>Writes on disk the registry information of the modules loaded into Ciaopp or related to modules loaded into Ciaopp. This information is updated by <a class="lpdoc-idx-anchor" id="72" href="ciaopp_ref_mansearch.html#gen_registry_info/3"><tt>gen_registry_info/3</tt></a>. This predicate must be called after performing intermodular preprocessing (analysis, specialization...), even if <a class="lpdoc-idx-anchor" id="73" href="#save_registry_info/3"><tt>save_registry_info/3</tt></a> has been used.</p><ul class="lpdoc-itemize-minus"><li><em>The following properties should hold at call time:</em><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="74" href="ciaopp_ref_mansearch.html#nonvar/1"><tt>nonvar/1</tt></a>)</span><span><span class="lpdoc-var">Verb</span> is currently a term which is not a free variable.
</span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="75" href="basic_props.html#atm/1"><tt>atm/1</tt></a>)</span><span><span class="lpdoc-var">Verb</span> is an atom.
</span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="76" href="basic_props.html#term/1"><tt>term/1</tt></a>)</span><span><span class="lpdoc-var">Info</span> is any term.
</span>
<li><em>The following properties should hold globally:</em><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="77" href="native_props_nfdet_doc.html#not_fails/1"><tt>not_fails/1</tt></a>)</span><span>All the calls of the form <span class="lpdoc-var">save_registry_info(Verb,Info)</span> do not fail.
</span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="78" href="native_props_nfdet_doc.html#is_det/1"><tt>is_det/1</tt></a>)</span><span>All calls of the form <span class="lpdoc-var">save_registry_info(Verb,Info)</span> are deterministic.
</span>
</ul></div></div><p>
<div><div class="lpdoc-defname"><span class="lpdoc-predtag">PREDICATE</span><a class="lpdoc-idx-anchor" id="compute_imported_modules/0" href="ciaopp_ref_mansearch.html#compute_imported_modules/0">compute_imported_modules/0</a></div><div class="lpdoc-deftext"><p><span class="lpdoc-usage-header">Usage:</span><p>Gets the list of imported modules from the current module. This list is obtained from the itf information of the current module, and is stored in <tt>imported_module/1</tt>.</p><ul class="lpdoc-itemize-minus"><li><em>The following properties should hold globally:</em><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="79" href="native_props_nfdet_doc.html#not_fails/1"><tt>not_fails/1</tt></a>)</span><span>All the calls of the form <span class="lpdoc-var">compute_imported_modules</span> do not fail.
</span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="80" href="native_props_nfdet_doc.html#is_det/1"><tt>is_det/1</tt></a>)</span><span>All calls of the form <span class="lpdoc-var">compute_imported_modules</span> are deterministic.
</span>
</ul></div></div><p>
<div><div class="lpdoc-defname"><span class="lpdoc-predtag">PREDICATE</span><a class="lpdoc-idx-anchor" id="get_imported_module_base/2" href="ciaopp_ref_mansearch.html#get_imported_module_base/2">get_imported_module_base/2</a></div><div class="lpdoc-deftext">No further documentation available for this predicate.</div></div><p>
<div><div class="lpdoc-defname"><span class="lpdoc-predtag">PREDICATE</span><a class="lpdoc-idx-anchor" id="get_modules_analyzed/1" href="ciaopp_ref_mansearch.html#get_modules_analyzed/1">get_modules_analyzed/1</a></div><div class="lpdoc-deftext"><p><span class="lpdoc-usage-header">Usage:</span><span class="lpdoc-usage-decl"><tt>get_modules_analyzed(ModList)</tt>
</span><p>Returns the list of modules analyzed the last time a modular analysis was executed.</p><ul class="lpdoc-itemize-minus"><li><em>The following properties should hold upon exit:</em><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="81" href="basic_props.html#list/1"><tt>list/1</tt></a>)</span><span><span class="lpdoc-var">ModList</span> is a list.
</span>
</ul></div></div><p>
<div><div class="lpdoc-defname"><span class="lpdoc-predtag">PREDICATE</span><a class="lpdoc-idx-anchor" id="set_modules_analyzed/1" href="ciaopp_ref_mansearch.html#set_modules_analyzed/1">set_modules_analyzed/1</a></div><div class="lpdoc-deftext"><p><span class="lpdoc-usage-header">Usage:</span><span class="lpdoc-usage-decl"><tt>set_modules_analyzed(ModList)</tt>
</span><p>Sets the list of modules which have been analyzed.</p><ul class="lpdoc-itemize-minus"><li><em>The following properties should hold at call time:</em><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="82" href="basic_props.html#list/1"><tt>list/1</tt></a>)</span><span><span class="lpdoc-var">ModList</span> is a list.
</span>
</ul></div></div><p>
</div><div id="Documentation on imports"><h2>Documentation on imports</h2>This module has the following direct dependencies:<ul class="lpdoc-itemize-minus"><li><em>Application modules:</em><br/><a class="lpdoc-idx-anchor" id="83" href="preprocess_flags.html"><tt>preprocess_flags</tt></a>, <a class="lpdoc-idx-anchor" id="84" href="ciaopp_ref_mansearch.html#ciaopp_log"><tt>ciaopp_log</tt></a>, <a class="lpdoc-idx-anchor" id="85" href="ciaopp_ref_mansearch.html#analysis_stats"><tt>analysis_stats</tt></a>, <a class="lpdoc-idx-anchor" id="86" href="intermod_db.html"><tt>intermod_db</tt></a>, <a class="lpdoc-idx-anchor" id="87" href="ciaopp_ref_mansearch.html#tarjan"><tt>tarjan</tt></a>, <a class="lpdoc-idx-anchor" id="88" href="frontend_driver.html"><tt>frontend_driver</tt></a>, <a class="lpdoc-idx-anchor" id="89" href="ciaopp_ref_mansearch.html#intermod_ops"><tt>intermod_ops</tt></a>.
<li><em>System library modules:</em><br/><a class="lpdoc-idx-anchor" id="90" href="ciaopp_ref_mansearch.html#native_props"><tt>native_props</tt></a>, <a class="lpdoc-idx-anchor" id="91" href="ciaopp_ref_mansearch.html#datafacts_rt"><tt>datafacts_rt</tt></a>, <a class="lpdoc-idx-anchor" id="92" href="ciaopp_ref_mansearch.html#p_unit_db"><tt>p_unit_db</tt></a>, <a class="lpdoc-idx-anchor" id="93" href="ciaopp_ref_mansearch.html#p_asr"><tt>p_asr</tt></a>, <a class="lpdoc-idx-anchor" id="94" href="ciaopp_ref_mansearch.html#aux_filenames"><tt>aux_filenames</tt></a>, <a class="lpdoc-idx-anchor" id="95" href="ciaopp_ref_mansearch.html#c_itf_props"><tt>c_itf_props</tt></a>, <a class="lpdoc-idx-anchor" id="96" href="ciaopp_ref_mansearch.html#aggregates"><tt>aggregates</tt></a>, <a class="lpdoc-idx-anchor" id="97" href="ciaopp_ref_mansearch.html#ctrlcclean"><tt>ctrlcclean</tt></a>, <a class="lpdoc-idx-anchor" id="98" href="ciaopp_ref_mansearch.html#errhandle"><tt>errhandle</tt></a>, <a class="lpdoc-idx-anchor" id="99" href="ciaopp_ref_mansearch.html#streams"><tt>streams</tt></a>, <a class="lpdoc-idx-anchor" id="100" href="ciaopp_ref_mansearch.html#write"><tt>write</tt></a>, <a class="lpdoc-idx-anchor" id="101" href="ciaopp_ref_mansearch.html#read"><tt>read</tt></a>, <a class="lpdoc-idx-anchor" id="102" href="ciaopp_ref_mansearch.html#pathnames"><tt>pathnames</tt></a>, <a class="lpdoc-idx-anchor" id="103" href="ciaopp_ref_mansearch.html#system"><tt>system</tt></a>, <a class="lpdoc-idx-anchor" id="104" href="ciaopp_ref_mansearch.html#fastrw"><tt>fastrw</tt></a>, <a class="lpdoc-idx-anchor" id="105" href="ciaopp_ref_mansearch.html#hiordlib"><tt>hiordlib</tt></a>, <a class="lpdoc-idx-anchor" id="106" href="ciaopp_ref_mansearch.html#bundle_paths"><tt>bundle_paths</tt></a>, <a class="lpdoc-idx-anchor" id="107" href="ciaopp_ref_mansearch.html#c_itf"><tt>c_itf</tt></a>.
<li><em>Internal (engine) modules:</em><br/><a class="lpdoc-idx-anchor" id="108" href="ciaopp_ref_mansearch.html#term_basic"><tt>term_basic</tt></a>, <a class="lpdoc-idx-anchor" id="109" href="ciaopp_ref_mansearch.html#arithmetic"><tt>arithmetic</tt></a>, <a class="lpdoc-idx-anchor" id="110" href="ciaopp_ref_mansearch.html#atomic_basic"><tt>atomic_basic</tt></a>, <a class="lpdoc-idx-anchor" id="111" href="ciaopp_ref_mansearch.html#basiccontrol"><tt>basiccontrol</tt></a>, <a class="lpdoc-idx-anchor" id="112" href="ciaopp_ref_mansearch.html#exceptions"><tt>exceptions</tt></a>, <a class="lpdoc-idx-anchor" id="113" href="ciaopp_ref_mansearch.html#term_compare"><tt>term_compare</tt></a>, <a class="lpdoc-idx-anchor" id="114" href="ciaopp_ref_mansearch.html#term_typing"><tt>term_typing</tt></a>, <a class="lpdoc-idx-anchor" id="115" href="ciaopp_ref_mansearch.html#debugger_support"><tt>debugger_support</tt></a>, <a class="lpdoc-idx-anchor" id="116" href="basic_props.html"><tt>basic_props</tt></a>, <a class="lpdoc-idx-anchor" id="117" href="ciaopp_ref_mansearch.html#hiord_rt"><tt>hiord_rt</tt></a>, <a class="lpdoc-idx-anchor" id="118" href="ciaopp_ref_mansearch.html#stream_basic"><tt>stream_basic</tt></a>, <a class="lpdoc-idx-anchor" id="119" href="ciaopp_ref_mansearch.html#io_basic"><tt>io_basic</tt></a>.
<li><em>Packages:</em><br/><a class="lpdoc-idx-anchor" id="120" href="ciaopp_ref_mansearch.html#prelude"><tt>prelude</tt></a>, <a class="lpdoc-idx-anchor" id="121" href="ciaopp_ref_mansearch.html#initial"><tt>initial</tt></a>, <a class="lpdoc-idx-anchor" id="122" href="ciaopp_ref_mansearch.html#condcomp"><tt>condcomp</tt></a>, <a class="lpdoc-idx-anchor" id="123" href="assertions_doc.html"><tt>assertions</tt></a>, <a class="lpdoc-idx-anchor" id="124" href="ciaopp_ref_mansearch.html#assertions/assertions_basic"><tt>assertions/assertions_basic</tt></a>, <a class="lpdoc-idx-anchor" id="125" href="ciaopp_ref_mansearch.html#modes"><tt>modes</tt></a>, <a class="lpdoc-idx-anchor" id="126" href="ciaopp_ref_mansearch.html#nativeprops"><tt>nativeprops</tt></a>, <a class="lpdoc-idx-anchor" id="127" href="ciaopp_ref_mansearch.html#datafacts"><tt>datafacts</tt></a>.
</ul></div></div><div class="lpdoc-footer">Generated with LPdoc using Ciao</div></div><div class="lpdoc-clearer"></div></div></body></html>