mirror of
https://github.com/ganelson/inform.git
synced 2024-06-01 07:48:35 +03:00
Completed rewrite of large-scale structure formation
This commit is contained in:
parent
c902597e56
commit
510bd86f87
|
@ -1,6 +1,6 @@
|
|||
# Inform 7
|
||||
|
||||
v10.1.0-alpha.1+6U04 'Krypton' (12 January 2022)
|
||||
v10.1.0-alpha.1+6U05 'Krypton' (13 January 2022)
|
||||
|
||||
## About Inform 7
|
||||
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
Prerelease: alpha.1
|
||||
Build Date: 12 January 2022
|
||||
Build Number: 6U04
|
||||
Build Date: 13 January 2022
|
||||
Build Number: 6U05
|
||||
|
|
|
@ -60,19 +60,12 @@ MathJax = {
|
|||
|
||||
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>§1. Z-Machine Definitions. </b>The Z-machine contains certain special constants and variables at fixed
|
||||
position in its "header"; the addresses of these are given below. See
|
||||
{\it The Z-Machine Standards Document}, version 1.0, for details.
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="extract"><span class="extract-syntax">INDIV_PROP_START</span></span> is the lowest number of any "individual property",
|
||||
an I6 internal quantity defined by the compiler when the target is Glulx
|
||||
but not for Z.
|
||||
The Z-Machine Standards Document, version 1.0, for details.
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax">#</span><span class="identifier-syntax">Ifdef</span><span class="plain-syntax"> </span><span class="identifier-syntax">TARGET_ZCODE</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">INDIV_PROP_START</span><span class="plain-syntax"> </span><span class="constant-syntax">64</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="comment-syntax">Offsets into Z-machine header:</span>
|
||||
|
||||
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">HDR_ZCODEVERSION</span><span class="plain-syntax"> = </span><span class="constant-syntax">$00</span><span class="plain-syntax">; </span><span class="comment-syntax">byte</span>
|
||||
|
|
|
@ -4208,16 +4208,17 @@ permitted to have properties other than the three named here: all other
|
|||
properties are redirected to the current location's object.
|
||||
</p>
|
||||
|
||||
<p class="commentary">Properties with numbers under <span class="extract"><span class="extract-syntax">INDIV_PROP_START</span></span> are "common properties".
|
||||
These come along with a table of default values, so that it is meaningful
|
||||
(in I6, anyway) to read them even when they are not provided (so that the
|
||||
address, returned by the <span class="extract"><span class="extract-syntax">.&</span></span> operator, is zero).
|
||||
<p class="commentary">At one time this function correctly handled the case of a common property
|
||||
whose default value was itself a function which could be run; but this is
|
||||
now awkward to compile (since it needed the magic compiler-defimed constant
|
||||
INDIV_PROP_START, existing on Inform 6 for Glulx but not on other platforms),
|
||||
and in the Inform 7 world it was a facility never used.
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">RunRoutines</span><span class="plain-syntax"> </span><span class="identifier-syntax">obj</span><span class="plain-syntax"> </span><span class="identifier-syntax">prop</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">obj</span><span class="plain-syntax"> == </span><span class="identifier-syntax">thedark</span><span class="plain-syntax">) </span><span class="identifier-syntax">obj</span><span class="plain-syntax"> = </span><span class="identifier-syntax">real_location</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">obj</span><span class="plain-syntax">.&</span><span class="identifier-syntax">prop</span><span class="plain-syntax"> == </span><span class="constant-syntax">0</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">prop</span><span class="plain-syntax">-->1 >= </span><span class="identifier-syntax">INDIV_PROP_START</span><span class="plain-syntax">)) </span><span class="reserved-syntax">rfalse</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">obj</span><span class="plain-syntax">.&</span><span class="identifier-syntax">prop</span><span class="plain-syntax"> == </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">rfalse</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">obj</span><span class="plain-syntax">.</span><span class="identifier-syntax">prop</span><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
</pre>
|
||||
|
|
|
@ -65,7 +65,7 @@
|
|||
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../compiler.html">Inter Modules</a></li><li><a href="index.html">building</a></li><li><a href="index.html#1">Chapter 1: Architecture</a></li><li><b>Building Module</b></li></ul></div>
|
||||
<p class="purpose">Setting up the use of this module.</p>
|
||||
|
||||
<ul class="toc"><li><a href="1-bm.html#SP1">§1. Introduction</a></li><li><a href="1-bm.html#SP2">§2. Setting up the memory manager</a></li><li><a href="1-bm.html#SP3">§3. The beginning</a></li><li><a href="1-bm.html#SP4">§4. The end</a></li></ul><hr class="tocbar">
|
||||
<ul class="toc"><li><a href="1-bm.html#SP1">§1. Introduction</a></li><li><a href="1-bm.html#SP2">§2. Setting up the memory manager</a></li><li><a href="1-bm.html#SP3">§3. The beginning</a></li><li><a href="1-bm.html#SP4">§4. Initialising</a></li><li><a href="1-bm.html#SP5">§5. The end</a></li></ul><hr class="tocbar">
|
||||
|
||||
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>§1. Introduction. </b></p>
|
||||
|
||||
|
@ -79,7 +79,7 @@
|
|||
<span class="definition-keyword">enum</span> <span class="constant-syntax">package_request_CLASS</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">hierarchy_location_CLASS</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">hierarchy_attachment_point_CLASS</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">module_package_CLASS</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">module_request_CLASS</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">submodule_identity_CLASS</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">submodule_request_CLASS</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">inter_schema_CLASS</span>
|
||||
|
@ -90,7 +90,7 @@
|
|||
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="reserved-syntax">hierarchy_location</span><span class="plain-syntax">)</span>
|
||||
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="reserved-syntax">hierarchy_attachment_point</span><span class="plain-syntax">)</span>
|
||||
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="reserved-syntax">package_request</span><span class="plain-syntax">)</span>
|
||||
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="reserved-syntax">module_package</span><span class="plain-syntax">)</span>
|
||||
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="reserved-syntax">module_request</span><span class="plain-syntax">)</span>
|
||||
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="reserved-syntax">submodule_identity</span><span class="plain-syntax">)</span>
|
||||
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="reserved-syntax">submodule_request</span><span class="plain-syntax">)</span>
|
||||
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="reserved-syntax">inter_schema</span><span class="plain-syntax">)</span>
|
||||
|
@ -144,14 +144,36 @@
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">Writers::register_logger</span><span class="plain-syntax">(</span><span class="character-syntax">'X'</span><span class="plain-syntax">, </span><a href="1-pck.html#SP4" class="function-link"><span class="function-syntax">Packaging::log</span></a><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="1-bm.html#SP3">§3</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP4" class="paragraph-anchor"></a><b>§4. The end. </b></p>
|
||||
<p class="commentary firstcommentary"><a id="SP4" class="paragraph-anchor"></a><b>§4. Initialising. </b>The following is a component part of the <span class="extract"><span class="extract-syntax">inter_tree</span></span> structure, and is comprised
|
||||
of four subcomponents of its own. That makes a lot of working data, but none of
|
||||
it changes the meaning of an Inter tree: it exists as workspace needed by the
|
||||
functions in this module for constructing trees.
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">typedef</span><span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">building_site</span><span class="plain-syntax"> {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">site_structure_data</span><span class="plain-syntax"> </span><span class="identifier-syntax">strdata</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">site_packaging_data</span><span class="plain-syntax"> </span><span class="identifier-syntax">spdata</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">site_production_data</span><span class="plain-syntax"> </span><span class="identifier-syntax">sprdata</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">site_primitives_data</span><span class="plain-syntax"> </span><span class="identifier-syntax">spridata</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">} </span><span class="reserved-syntax">building_site</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">BuildingModule::clear_data</span><span class="plain-syntax">(</span><span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ls.html#SP2" class="function-link"><span class="function-syntax">LargeScale::clear_data</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="3-prd.html#SP2" class="function-link"><span class="function-syntax">Produce::clear_prdata</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-pck.html#SP1" class="function-link"><span class="function-syntax">Packaging::clear_pdata</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP1" class="function-link"><span class="function-syntax">Primitives::clear_pdata</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>The structure building_site is accessed in 1/ls, 1/ip, 1/hl, 1/pck, 3/prd.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP5" class="paragraph-anchor"></a><b>§5. The end. </b></p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">BuildingModule::end</span><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="P-wtmd.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresscurrentchapter">1</li><li class="progresscurrent">bm</li><li class="progresssection"><a href="1-bs.html">bs</a></li><li class="progresssection"><a href="1-ip.html">ip</a></li><li class="progresssection"><a href="1-hl.html">hl</a></li><li class="progresssection"><a href="1-trn.html">trn</a></li><li class="progresssection"><a href="1-pck.html">pck</a></li><li class="progresssection"><a href="1-pt.html">pt</a></li><li class="progresssection"><a href="1-in.html">in</a></li><li class="progresschapter"><a href="2-is.html">2</a></li><li class="progresschapter"><a href="3-prd.html">3</a></li><li class="progressnext"><a href="1-bs.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="P-wtmd.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresscurrentchapter">1</li><li class="progresscurrent">bm</li><li class="progresssection"><a href="1-ls.html">ls</a></li><li class="progresssection"><a href="1-ip.html">ip</a></li><li class="progresssection"><a href="1-hl.html">hl</a></li><li class="progresssection"><a href="1-trn.html">trn</a></li><li class="progresssection"><a href="1-pck.html">pck</a></li><li class="progresssection"><a href="1-pt.html">pt</a></li><li class="progresssection"><a href="1-in.html">in</a></li><li class="progresschapter"><a href="2-is.html">2</a></li><li class="progresschapter"><a href="3-prd.html">3</a></li><li class="progressnext"><a href="1-ls.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -1,344 +0,0 @@
|
|||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<title>Building Site</title>
|
||||
<link href="../docs-assets/Breadcrumbs.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<meta name="viewport" content="width=device-width initial-scale=1">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta http-equiv="Content-Language" content="en-gb">
|
||||
|
||||
<link href="../docs-assets/Contents.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Progress.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Navigation.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Fonts.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Base.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<script>
|
||||
function togglePopup(material_id) {
|
||||
var popup = document.getElementById(material_id);
|
||||
popup.classList.toggle("show");
|
||||
}
|
||||
</script>
|
||||
|
||||
<link href="../docs-assets/Popups.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Colours.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
|
||||
</head>
|
||||
<body class="commentary-font">
|
||||
<nav role="navigation">
|
||||
<h1><a href="../index.html">
|
||||
<img src="../docs-assets/Inform.png" height=72">
|
||||
</a></h1>
|
||||
<ul><li><a href="../compiler.html">compiler tools</a></li>
|
||||
<li><a href="../other.html">other tools</a></li>
|
||||
<li><a href="../extensions.html">extensions and kits</a></li>
|
||||
<li><a href="../units.html">unit test tools</a></li>
|
||||
</ul><h2>Compiler Webs</h2><ul>
|
||||
<li><a href="../inbuild/index.html">inbuild</a></li>
|
||||
<li><a href="../inform7/index.html">inform7</a></li>
|
||||
<li><a href="../inter/index.html">inter</a></li>
|
||||
</ul><h2>Inbuild Modules</h2><ul>
|
||||
<li><a href="../supervisor-module/index.html">supervisor</a></li>
|
||||
</ul><h2>Inform7 Modules</h2><ul>
|
||||
<li><a href="../core-module/index.html">core</a></li>
|
||||
<li><a href="../assertions-module/index.html">assertions</a></li>
|
||||
<li><a href="../values-module/index.html">values</a></li>
|
||||
<li><a href="../knowledge-module/index.html">knowledge</a></li>
|
||||
<li><a href="../imperative-module/index.html">imperative</a></li>
|
||||
<li><a href="../runtime-module/index.html">runtime</a></li>
|
||||
<li><a href="../if-module/index.html">if</a></li>
|
||||
<li><a href="../multimedia-module/index.html">multimedia</a></li>
|
||||
<li><a href="../index-module/index.html">index</a></li>
|
||||
</ul><h2>Inter Modules</h2><ul>
|
||||
<li><a href="../bytecode-module/index.html">bytecode</a></li>
|
||||
<li><a href="index.html"><span class="selectedlink">building</span></a></li>
|
||||
<li><a href="../pipeline-module/index.html">pipeline</a></li>
|
||||
<li><a href="../final-module/index.html">final</a></li>
|
||||
</ul><h2>Services</h2><ul>
|
||||
<li><a href="../arch-module/index.html">arch</a></li>
|
||||
<li><a href="../calculus-module/index.html">calculus</a></li>
|
||||
<li><a href="../html-module/index.html">html</a></li>
|
||||
<li><a href="../inflections-module/index.html">inflections</a></li>
|
||||
<li><a href="../kinds-module/index.html">kinds</a></li>
|
||||
<li><a href="../linguistics-module/index.html">linguistics</a></li>
|
||||
<li><a href="../problems-module/index.html">problems</a></li>
|
||||
<li><a href="../syntax-module/index.html">syntax</a></li>
|
||||
<li><a href="../words-module/index.html">words</a></li>
|
||||
<li><a href="../../../inweb/docs/foundation-module/index.html">foundation</a></li>
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
<main role="main">
|
||||
<!--Weave of 'Building Site' generated by Inweb-->
|
||||
<div class="breadcrumbs">
|
||||
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../compiler.html">Inter Modules</a></li><li><a href="index.html">building</a></li><li><a href="index.html#1">Chapter 1: Architecture</a></li><li><b>Building Site</b></li></ul></div>
|
||||
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>§1. </b></p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">typedef</span><span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">building_site</span><span class="plain-syntax"> {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">inter_package</span><span class="plain-syntax"> *</span><span class="identifier-syntax">main_package</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">package_request</span><span class="plain-syntax"> *</span><span class="identifier-syntax">main_request</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">inter_package</span><span class="plain-syntax"> *</span><span class="identifier-syntax">connectors_package</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">package_request</span><span class="plain-syntax"> *</span><span class="identifier-syntax">connectors_request</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">inter_package</span><span class="plain-syntax"> *</span><span class="identifier-syntax">architecture_package</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">package_request</span><span class="plain-syntax"> *</span><span class="identifier-syntax">architecture_request</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">inter_bookmark</span><span class="plain-syntax"> </span><span class="identifier-syntax">architecture_bookmark</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">inter_bookmark</span><span class="plain-syntax"> </span><span class="identifier-syntax">pragmas_bookmark</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">inter_bookmark</span><span class="plain-syntax"> </span><span class="identifier-syntax">package_types_bookmark</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">primitives_by_BIP</span><span class="plain-syntax">[</span><span class="constant-syntax">MAX_BIPS</span><span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">site_packaging_data</span><span class="plain-syntax"> </span><span class="identifier-syntax">spdata</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">site_production_data</span><span class="plain-syntax"> </span><span class="identifier-syntax">sprdata</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">} </span><span class="reserved-syntax">building_site</span><span class="plain-syntax">;</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>The structure building_site is accessed in 1/hl, 1/pck, 3/prd and here.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>§2. </b></p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Site::clear</span><span class="plain-syntax">(</span><span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">building_site</span><span class="plain-syntax"> *</span><span class="identifier-syntax">B</span><span class="plain-syntax"> = &(</span><span class="identifier-syntax">I</span><span class="plain-syntax">-></span><span class="identifier-syntax">site</span><span class="plain-syntax">);</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">B</span><span class="plain-syntax">-></span><span class="element-syntax">main_package</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">B</span><span class="plain-syntax">-></span><span class="element-syntax">main_request</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">B</span><span class="plain-syntax">-></span><span class="element-syntax">connectors_package</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">B</span><span class="plain-syntax">-></span><span class="element-syntax">connectors_request</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">B</span><span class="plain-syntax">-></span><span class="element-syntax">architecture_package</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">B</span><span class="plain-syntax">-></span><span class="element-syntax">architecture_request</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">B</span><span class="plain-syntax">-></span><span class="element-syntax">architecture_bookmark</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Inter::Bookmarks::at_start_of_this_repository</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">);</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">B</span><span class="plain-syntax">-></span><span class="element-syntax">pragmas_bookmark</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Inter::Bookmarks::at_start_of_this_repository</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">B</span><span class="plain-syntax">-></span><span class="element-syntax">package_types_bookmark</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Inter::Bookmarks::at_start_of_this_repository</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">);</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax">=0; </span><span class="identifier-syntax">i</span><span class="plain-syntax"><</span><span class="constant-syntax">MAX_BIPS</span><span class="plain-syntax">; </span><span class="identifier-syntax">i</span><span class="plain-syntax">++) </span><span class="identifier-syntax">B</span><span class="plain-syntax">-></span><span class="element-syntax">primitives_by_BIP</span><span class="plain-syntax">[</span><span class="identifier-syntax">i</span><span class="plain-syntax">] = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="plain-syntax"> </span><a href="3-prd.html#SP2" class="function-link"><span class="function-syntax">Produce::clear_prdata</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-pck.html#SP1" class="function-link"><span class="function-syntax">Packaging::clear_pdata</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="identifier-syntax">inter_bookmark</span><span class="plain-syntax"> *</span><span class="function-syntax">Site::pragmas</span><span class="plain-syntax">(</span><span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> &(</span><span class="identifier-syntax">I</span><span class="plain-syntax">-></span><span class="identifier-syntax">site</span><span class="plain-syntax">.</span><span class="element-syntax">pragmas_bookmark</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Site::set_pragmas</span><button class="popup" onclick="togglePopup('usagePopup1')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup1">Usage of <span class="code-font"><span class="function-syntax">Site::set_pragmas</span></span>:<br/>Packaging - <a href="1-pck.html#SP12">§12</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">inter_bookmark</span><span class="plain-syntax"> </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="plain-syntax">-></span><span class="identifier-syntax">site</span><span class="plain-syntax">.</span><span class="element-syntax">pragmas_bookmark</span><span class="plain-syntax"> = </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
<span class="identifier-syntax">inter_bookmark</span><span class="plain-syntax"> *</span><span class="function-syntax">Site::package_types</span><button class="popup" onclick="togglePopup('usagePopup2')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup2">Usage of <span class="code-font"><span class="function-syntax">Site::package_types</span></span>:<br/>Package Types - <a href="1-pt.html#SP1">§1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> &(</span><span class="identifier-syntax">I</span><span class="plain-syntax">-></span><span class="identifier-syntax">site</span><span class="plain-syntax">.</span><span class="element-syntax">package_types_bookmark</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Site::set_package_types</span><button class="popup" onclick="togglePopup('usagePopup3')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup3">Usage of <span class="code-font"><span class="function-syntax">Site::set_package_types</span></span>:<br/>Packaging - <a href="1-pck.html#SP12">§12</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">inter_bookmark</span><span class="plain-syntax"> </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="plain-syntax">-></span><span class="identifier-syntax">site</span><span class="plain-syntax">.</span><span class="element-syntax">package_types_bookmark</span><span class="plain-syntax"> = </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="identifier-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="function-syntax">Site::get_opcode</span><button class="popup" onclick="togglePopup('usagePopup4')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup4">Usage of <span class="code-font"><span class="function-syntax">Site::get_opcode</span></span>:<br/>Inter Primitives - <a href="1-ip.html#SP1">§1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">inter_ti</span><span class="plain-syntax"> </span><span class="identifier-syntax">bip</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="plain-syntax">-></span><span class="identifier-syntax">site</span><span class="plain-syntax">.</span><span class="element-syntax">primitives_by_BIP</span><span class="plain-syntax">[</span><span class="identifier-syntax">bip</span><span class="plain-syntax">];</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Site::set_opcode</span><button class="popup" onclick="togglePopup('usagePopup5')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup5">Usage of <span class="code-font"><span class="function-syntax">Site::set_opcode</span></span>:<br/>Inter Primitives - <a href="1-ip.html#SP1">§1</a>, <a href="1-ip.html#SP2">§2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">inter_ti</span><span class="plain-syntax"> </span><span class="identifier-syntax">bip</span><span class="plain-syntax">, </span><span class="identifier-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">S</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="plain-syntax">-></span><span class="identifier-syntax">site</span><span class="plain-syntax">.</span><span class="element-syntax">primitives_by_BIP</span><span class="plain-syntax">[</span><span class="identifier-syntax">bip</span><span class="plain-syntax">] = </span><span class="identifier-syntax">S</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Site::note_package_name</span><span class="plain-syntax">(</span><span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">inter_package</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pack</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">N</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">N</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"main"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">I</span><span class="plain-syntax">-></span><span class="identifier-syntax">site</span><span class="plain-syntax">.</span><span class="element-syntax">main_package</span><span class="plain-syntax"> = </span><span class="identifier-syntax">pack</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">N</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"connectors"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">I</span><span class="plain-syntax">-></span><span class="identifier-syntax">site</span><span class="plain-syntax">.</span><span class="element-syntax">connectors_package</span><span class="plain-syntax"> = </span><span class="identifier-syntax">pack</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">N</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"veneer"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">I</span><span class="plain-syntax">-></span><span class="identifier-syntax">site</span><span class="plain-syntax">.</span><span class="element-syntax">architecture_package</span><span class="plain-syntax"> = </span><span class="identifier-syntax">pack</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="identifier-syntax">inter_package</span><span class="plain-syntax"> *</span><span class="function-syntax">Site::main_package</span><span class="plain-syntax">(</span><span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">I</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">I</span><span class="plain-syntax">-></span><span class="identifier-syntax">site</span><span class="plain-syntax">.</span><span class="element-syntax">main_package</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><a href="1-pck.html#SP14" class="function-link"><span class="function-syntax">Packaging::incarnate</span></a><span class="plain-syntax">(</span><a href="1-bs.html#SP2" class="function-link"><span class="function-syntax">Site::main_request</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="plain-syntax">-></span><span class="identifier-syntax">site</span><span class="plain-syntax">.</span><span class="element-syntax">main_package</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="identifier-syntax">inter_package</span><span class="plain-syntax"> *</span><span class="function-syntax">Site::main_package_if_it_exists</span><button class="popup" onclick="togglePopup('usagePopup6')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup6">Usage of <span class="code-font"><span class="function-syntax">Site::main_package_if_it_exists</span></span>:<br/>Producing Inter - <a href="3-prd.html#SP2">§2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">I</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="plain-syntax">-></span><span class="identifier-syntax">site</span><span class="plain-syntax">.</span><span class="element-syntax">main_package</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">package_request</span><span class="plain-syntax"> *</span><span class="function-syntax">Site::main_request</span><button class="popup" onclick="togglePopup('usagePopup7')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup7">Usage of <span class="code-font"><span class="function-syntax">Site::main_request</span></span>:<br/>Packaging - <a href="1-pck.html#SP12">§12</a>, <a href="1-pck.html#SP15">§15</a><br/>Producing Inter - <a href="3-prd.html#SP3">§3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">I</span><span class="plain-syntax">-></span><span class="identifier-syntax">site</span><span class="plain-syntax">.</span><span class="element-syntax">main_request</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="plain-syntax">-></span><span class="identifier-syntax">site</span><span class="plain-syntax">.</span><span class="element-syntax">main_request</span><span class="plain-syntax"> =</span>
|
||||
<span class="plain-syntax"> </span><a href="1-pck.html#SP3" class="function-link"><span class="function-syntax">Packaging::request</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><a href="1-in.html#SP5" class="function-link"><span class="function-syntax">InterNames::explicitly_named</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"main"</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">),</span>
|
||||
<span class="plain-syntax"> </span><a href="1-pt.html#SP1" class="function-link"><span class="function-syntax">PackageTypes::get</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"_plain"</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="plain-syntax">-></span><span class="identifier-syntax">site</span><span class="plain-syntax">.</span><span class="element-syntax">main_request</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="identifier-syntax">inter_package</span><span class="plain-syntax"> *</span><span class="function-syntax">Site::connectors_package_if_it_exists</span><button class="popup" onclick="togglePopup('usagePopup8')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup8">Usage of <span class="code-font"><span class="function-syntax">Site::connectors_package_if_it_exists</span></span>:<br/>Producing Inter - <a href="3-prd.html#SP2">§2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">I</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="plain-syntax">-></span><span class="identifier-syntax">site</span><span class="plain-syntax">.</span><span class="element-syntax">connectors_package</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="identifier-syntax">inter_package</span><span class="plain-syntax"> *</span><span class="function-syntax">Site::ensure_connectors_package</span><span class="plain-syntax">(</span><span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">I</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">I</span><span class="plain-syntax">-></span><span class="identifier-syntax">site</span><span class="plain-syntax">.</span><span class="element-syntax">connectors_package</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><a href="1-pck.html#SP14" class="function-link"><span class="function-syntax">Packaging::incarnate</span></a><span class="plain-syntax">(</span><a href="1-bs.html#SP2" class="function-link"><span class="function-syntax">Site::connectors_request</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Inter::Packages::make_linklike</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">-></span><span class="identifier-syntax">site</span><span class="plain-syntax">.</span><span class="element-syntax">connectors_package</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="plain-syntax">-></span><span class="identifier-syntax">site</span><span class="plain-syntax">.</span><span class="element-syntax">connectors_package</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">package_request</span><span class="plain-syntax"> *</span><span class="function-syntax">Site::connectors_request</span><button class="popup" onclick="togglePopup('usagePopup9')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup9">Usage of <span class="code-font"><span class="function-syntax">Site::connectors_request</span></span>:<br/>Inter Namespace - <a href="1-in.html#SP5">§5</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">I</span><span class="plain-syntax">-></span><span class="identifier-syntax">site</span><span class="plain-syntax">.</span><span class="element-syntax">connectors_request</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">module_package</span><span class="plain-syntax"> *</span><span class="identifier-syntax">T</span><span class="plain-syntax"> = </span><a href="1-pck.html#SP15" class="function-link"><span class="function-syntax">Packaging::get_unit</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"connectors"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"_linkage"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="plain-syntax">-></span><span class="identifier-syntax">site</span><span class="plain-syntax">.</span><span class="element-syntax">connectors_request</span><span class="plain-syntax"> = </span><span class="identifier-syntax">T</span><span class="plain-syntax">-></span><span class="element-syntax">the_package</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="plain-syntax">-></span><span class="identifier-syntax">site</span><span class="plain-syntax">.</span><span class="element-syntax">connectors_request</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">package_request</span><span class="plain-syntax"> *</span><span class="function-syntax">Site::architecture_request</span><button class="popup" onclick="togglePopup('usagePopup10')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup10">Usage of <span class="code-font"><span class="function-syntax">Site::architecture_request</span></span>:<br/>Hierarchy Locations - <a href="1-hl.html#SP2">§2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">I</span><span class="plain-syntax">-></span><span class="identifier-syntax">site</span><span class="plain-syntax">.</span><span class="element-syntax">architecture_request</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">module_package</span><span class="plain-syntax"> *</span><span class="identifier-syntax">T</span><span class="plain-syntax"> = </span><a href="1-pck.html#SP15" class="function-link"><span class="function-syntax">Packaging::get_unit</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"veneer"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"_linkage"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="plain-syntax">-></span><span class="identifier-syntax">site</span><span class="plain-syntax">.</span><span class="element-syntax">architecture_request</span><span class="plain-syntax"> = </span><span class="identifier-syntax">T</span><span class="plain-syntax">-></span><span class="element-syntax">the_package</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">packaging_state</span><span class="plain-syntax"> </span><span class="identifier-syntax">save</span><span class="plain-syntax"> = </span><a href="1-pck.html#SP13" class="function-link"><span class="function-syntax">Packaging::enter</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">-></span><span class="identifier-syntax">site</span><span class="plain-syntax">.</span><span class="element-syntax">architecture_request</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="plain-syntax">-></span><span class="identifier-syntax">site</span><span class="plain-syntax">.</span><span class="element-syntax">architecture_bookmark</span><span class="plain-syntax"> = </span><a href="1-pck.html#SP11" class="function-link"><span class="function-syntax">Packaging::bubble</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-pck.html#SP13" class="function-link"><span class="function-syntax">Packaging::exit</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">save</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="plain-syntax">-></span><span class="identifier-syntax">site</span><span class="plain-syntax">.</span><span class="element-syntax">architecture_request</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="identifier-syntax">inter_package</span><span class="plain-syntax"> *</span><span class="function-syntax">Site::architecture_package_if_it_exists</span><span class="plain-syntax">(</span><span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">I</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="plain-syntax">-></span><span class="identifier-syntax">site</span><span class="plain-syntax">.</span><span class="element-syntax">architecture_package</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="identifier-syntax">inter_package</span><span class="plain-syntax"> *</span><span class="function-syntax">Site::architecture_package</span><button class="popup" onclick="togglePopup('usagePopup11')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup11">Usage of <span class="code-font"><span class="function-syntax">Site::architecture_package</span></span>:<br/>Emitting Inter Schemas - <a href="2-eis.html#SP2_1">§2.1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">I</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">I</span><span class="plain-syntax">-></span><span class="identifier-syntax">site</span><span class="plain-syntax">.</span><span class="element-syntax">architecture_package</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><a href="1-pck.html#SP14" class="function-link"><span class="function-syntax">Packaging::incarnate</span></a><span class="plain-syntax">(</span><a href="1-bs.html#SP2" class="function-link"><span class="function-syntax">Site::architecture_request</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="plain-syntax">-></span><span class="identifier-syntax">site</span><span class="plain-syntax">.</span><span class="element-syntax">architecture_package</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="identifier-syntax">inter_bookmark</span><span class="plain-syntax"> *</span><span class="function-syntax">Site::architecture_bookmark</span><span class="plain-syntax">(</span><span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><a href="1-bs.html#SP2" class="function-link"><span class="function-syntax">Site::architecture_request</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> &(</span><span class="identifier-syntax">I</span><span class="plain-syntax">-></span><span class="identifier-syntax">site</span><span class="plain-syntax">.</span><span class="element-syntax">architecture_bookmark</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="identifier-syntax">dictionary</span><span class="plain-syntax"> *</span><span class="identifier-syntax">create_these_architectural_symbols_on_demand</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="identifier-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="function-syntax">Site::find_architectural_symbol</span><button class="popup" onclick="togglePopup('usagePopup12')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup12">Usage of <span class="code-font"><span class="function-syntax">Site::find_architectural_symbol</span></span>:<br/>Emitting Inter Schemas - <a href="2-eis.html#SP3_10_1">§3.10.1</a>, <a href="2-eis.html#SP4">§4</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">N</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">uks</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_package</span><span class="plain-syntax"> *</span><span class="identifier-syntax">arch</span><span class="plain-syntax"> = </span><a href="1-bs.html#SP2" class="function-link"><span class="function-syntax">Site::architecture_package</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_symbols_table</span><span class="plain-syntax"> *</span><span class="identifier-syntax">tab</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Inter::Packages::scope</span><span class="plain-syntax">(</span><span class="identifier-syntax">arch</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">S</span><span class="plain-syntax"> = </span><span class="identifier-syntax">InterSymbolsTables::symbol_from_name</span><span class="plain-syntax">(</span><span class="identifier-syntax">tab</span><span class="plain-syntax">, </span><span class="identifier-syntax">N</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">S</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">create_these_architectural_symbols_on_demand</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">create_these_architectural_symbols_on_demand</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Dictionaries::new</span><span class="plain-syntax">(16, </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Dictionaries::create</span><span class="plain-syntax">(</span><span class="identifier-syntax">create_these_architectural_symbols_on_demand</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"#dictionary_table"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Dictionaries::create</span><span class="plain-syntax">(</span><span class="identifier-syntax">create_these_architectural_symbols_on_demand</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"#actions_table"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Dictionaries::create</span><span class="plain-syntax">(</span><span class="identifier-syntax">create_these_architectural_symbols_on_demand</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"#grammar_table"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Dictionaries::create</span><span class="plain-syntax">(</span><span class="identifier-syntax">create_these_architectural_symbols_on_demand</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"self"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Dictionaries::create</span><span class="plain-syntax">(</span><span class="identifier-syntax">create_these_architectural_symbols_on_demand</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Routine"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Dictionaries::create</span><span class="plain-syntax">(</span><span class="identifier-syntax">create_these_architectural_symbols_on_demand</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"String"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Dictionaries::create</span><span class="plain-syntax">(</span><span class="identifier-syntax">create_these_architectural_symbols_on_demand</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Class"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Dictionaries::create</span><span class="plain-syntax">(</span><span class="identifier-syntax">create_these_architectural_symbols_on_demand</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Object"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Dictionaries::find</span><span class="plain-syntax">(</span><span class="identifier-syntax">create_these_architectural_symbols_on_demand</span><span class="plain-syntax">, </span><span class="identifier-syntax">N</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">S</span><span class="plain-syntax"> = </span><a href="1-bs.html#SP2" class="function-link"><span class="function-syntax">Site::arch_constant</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">N</span><span class="plain-syntax">, </span><span class="identifier-syntax">uks</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Inter::Symbols::annotate_i</span><span class="plain-syntax">(</span><span class="identifier-syntax">S</span><span class="plain-syntax">, </span><span class="identifier-syntax">VENEER_IANN</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">S</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="identifier-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="function-syntax">Site::arch_constant</span><button class="popup" onclick="togglePopup('usagePopup13')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup13">Usage of <span class="code-font"><span class="function-syntax">Site::arch_constant</span></span>:<br/><a href="1-bs.html#SP4">§4</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">N</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">uks</span><span class="plain-syntax">, </span><span class="identifier-syntax">inter_ti</span><span class="plain-syntax"> </span><span class="identifier-syntax">val</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_package</span><span class="plain-syntax"> *</span><span class="identifier-syntax">arch</span><span class="plain-syntax"> = </span><a href="1-bs.html#SP2" class="function-link"><span class="function-syntax">Site::architecture_package</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_symbols_table</span><span class="plain-syntax"> *</span><span class="identifier-syntax">tab</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Inter::Packages::scope</span><span class="plain-syntax">(</span><span class="identifier-syntax">arch</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">S</span><span class="plain-syntax"> = </span><span class="identifier-syntax">InterSymbolsTables::symbol_from_name_creating</span><span class="plain-syntax">(</span><span class="identifier-syntax">tab</span><span class="plain-syntax">, </span><span class="identifier-syntax">N</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Inter::Symbols::annotate_i</span><span class="plain-syntax">(</span><span class="identifier-syntax">S</span><span class="plain-syntax">, </span><span class="identifier-syntax">ARCHITECTURAL_IANN</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_bookmark</span><span class="plain-syntax"> *</span><span class="identifier-syntax">IBM</span><span class="plain-syntax"> = </span><a href="1-bs.html#SP2" class="function-link"><span class="function-syntax">Site::architecture_bookmark</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="3-prd.html#SP2" class="function-link"><span class="function-syntax">Produce::guard</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">Inter::Constant::new_numerical</span><span class="plain-syntax">(</span><span class="identifier-syntax">IBM</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">InterSymbolsTables::id_from_symbol</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">arch</span><span class="plain-syntax">, </span><span class="identifier-syntax">S</span><span class="plain-syntax">),</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">InterSymbolsTables::id_from_symbol</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">arch</span><span class="plain-syntax">, </span><span class="identifier-syntax">uks</span><span class="plain-syntax">),</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LITERAL_IVAL</span><span class="plain-syntax">, </span><span class="identifier-syntax">val</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> (</span><span class="identifier-syntax">inter_ti</span><span class="plain-syntax">) </span><span class="identifier-syntax">Inter::Bookmarks::baseline</span><span class="plain-syntax">(</span><span class="identifier-syntax">IBM</span><span class="plain-syntax">) + </span><span class="constant-syntax">1</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">S</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="identifier-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="function-syntax">Site::arch_constant_hex</span><button class="popup" onclick="togglePopup('usagePopup14')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup14">Usage of <span class="code-font"><span class="function-syntax">Site::arch_constant_hex</span></span>:<br/><a href="1-bs.html#SP4">§4</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">N</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">uks</span><span class="plain-syntax">, </span><span class="identifier-syntax">inter_ti</span><span class="plain-syntax"> </span><span class="identifier-syntax">val</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">S</span><span class="plain-syntax"> = </span><a href="1-bs.html#SP2" class="function-link"><span class="function-syntax">Site::arch_constant</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">N</span><span class="plain-syntax">, </span><span class="identifier-syntax">uks</span><span class="plain-syntax">, </span><span class="identifier-syntax">val</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Inter::Symbols::annotate_i</span><span class="plain-syntax">(</span><span class="identifier-syntax">S</span><span class="plain-syntax">, </span><span class="identifier-syntax">HEX_IANN</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">S</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="identifier-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="function-syntax">Site::arch_constant_signed</span><button class="popup" onclick="togglePopup('usagePopup15')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup15">Usage of <span class="code-font"><span class="function-syntax">Site::arch_constant_signed</span></span>:<br/><a href="1-bs.html#SP4">§4</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">N</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">uks</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">val</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">S</span><span class="plain-syntax"> = </span><a href="1-bs.html#SP2" class="function-link"><span class="function-syntax">Site::arch_constant</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">N</span><span class="plain-syntax">, </span><span class="identifier-syntax">uks</span><span class="plain-syntax">, (</span><span class="identifier-syntax">inter_ti</span><span class="plain-syntax">) </span><span class="identifier-syntax">val</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Inter::Symbols::annotate_i</span><span class="plain-syntax">(</span><span class="identifier-syntax">S</span><span class="plain-syntax">, </span><span class="identifier-syntax">SIGNED_IANN</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">S</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP3" class="paragraph-anchor"></a><b>§3. </b>These constants mostly have obvious meanings, but a few notes:
|
||||
</p>
|
||||
|
||||
<ul class="items"><li>(1) <span class="extract"><span class="extract-syntax">NULL</span></span>, in our runtime, is -1, and not 0 as it would be in C. This is
|
||||
emitted as "unchecked" to avoid the value being rejected as being too large,
|
||||
as it would be if it were viewed as a signed rather than unsigned integer.
|
||||
</li><li>(2) <span class="extract"><span class="extract-syntax">IMPROBABLE_VALUE</span></span> is one which is unlikely even if possible to be a
|
||||
genuine I7 value. The efficiency of runtime code handling tables depends on
|
||||
how well chosen this is: it would ran badly if we chose 1, for instance.
|
||||
</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP4" class="paragraph-anchor"></a><b>§4. </b>Lastly, we define the constants <span class="extract"><span class="extract-syntax">WORDSIZE</span></span>, <span class="extract"><span class="extract-syntax">DEBUG</span></span> (if applicable) and
|
||||
either <span class="extract"><span class="extract-syntax">TARGET_ZCODE</span></span> or <span class="extract"><span class="extract-syntax">TARGET_GLULX</span></span>, as appropriate. These really now mean
|
||||
"target 16-bit" or "target 32-bit", and their names are a hangover from when
|
||||
Inform 7 could only work with Inform 6. The reason we need to define these
|
||||
is so that if a kit is parsed from source and added to this tree, we will then
|
||||
be able to resolve conditional compilation matter placed inside, e.g.,
|
||||
<span class="extract"><span class="extract-syntax">#ifdef TARGET_ZCODE;</span></span> ... <span class="extract"><span class="extract-syntax">#endif;</span></span> directives.
|
||||
</p>
|
||||
|
||||
<p class="commentary">For now, at least, these live in the package <span class="extract"><span class="extract-syntax">main/veneer</span></span>.
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Site::make_architectural_definitions</span><span class="plain-syntax">(</span><span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_architecture</span><span class="plain-syntax"> *</span><span class="identifier-syntax">current_architecture</span><span class="plain-syntax">, </span><span class="identifier-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">uks</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">current_architecture</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"no architecture set"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">Z</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Architectures::is_16_bit</span><span class="plain-syntax">(</span><span class="identifier-syntax">current_architecture</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">D</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Architectures::debug_enabled</span><span class="plain-syntax">(</span><span class="identifier-syntax">current_architecture</span><span class="plain-syntax">);</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Z</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><a href="1-bs.html#SP2" class="function-link"><span class="function-syntax">Site::arch_constant</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"WORDSIZE"</span><span class="plain-syntax">, </span><span class="identifier-syntax">uks</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-bs.html#SP2" class="function-link"><span class="function-syntax">Site::arch_constant_hex</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"NULL"</span><span class="plain-syntax">, </span><span class="identifier-syntax">uks</span><span class="plain-syntax">, </span><span class="constant-syntax">0xffff</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-bs.html#SP2" class="function-link"><span class="function-syntax">Site::arch_constant_hex</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"WORD_HIGHBIT"</span><span class="plain-syntax">, </span><span class="identifier-syntax">uks</span><span class="plain-syntax">, </span><span class="constant-syntax">0x8000</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-bs.html#SP2" class="function-link"><span class="function-syntax">Site::arch_constant_hex</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"WORD_NEXTTOHIGHBIT"</span><span class="plain-syntax">, </span><span class="identifier-syntax">uks</span><span class="plain-syntax">, </span><span class="constant-syntax">0x4000</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-bs.html#SP2" class="function-link"><span class="function-syntax">Site::arch_constant_hex</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"IMPROBABLE_VALUE"</span><span class="plain-syntax">, </span><span class="identifier-syntax">uks</span><span class="plain-syntax">, </span><span class="constant-syntax">0x7fe3</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-bs.html#SP2" class="function-link"><span class="function-syntax">Site::arch_constant</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"MAX_POSITIVE_NUMBER"</span><span class="plain-syntax">, </span><span class="identifier-syntax">uks</span><span class="plain-syntax">, </span><span class="constant-syntax">32767</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-bs.html#SP2" class="function-link"><span class="function-syntax">Site::arch_constant_signed</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"MIN_NEGATIVE_NUMBER"</span><span class="plain-syntax">, </span><span class="identifier-syntax">uks</span><span class="plain-syntax">, -32768);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-bs.html#SP2" class="function-link"><span class="function-syntax">Site::arch_constant</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"TARGET_ZCODE"</span><span class="plain-syntax">, </span><span class="identifier-syntax">uks</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
|
||||
<span class="plain-syntax"> </span><a href="1-bs.html#SP2" class="function-link"><span class="function-syntax">Site::arch_constant</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"WORDSIZE"</span><span class="plain-syntax">, </span><span class="identifier-syntax">uks</span><span class="plain-syntax">, </span><span class="constant-syntax">4</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-bs.html#SP2" class="function-link"><span class="function-syntax">Site::arch_constant_hex</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"NULL"</span><span class="plain-syntax">, </span><span class="identifier-syntax">uks</span><span class="plain-syntax">, </span><span class="constant-syntax">0xffffffff</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-bs.html#SP2" class="function-link"><span class="function-syntax">Site::arch_constant_hex</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"WORD_HIGHBIT"</span><span class="plain-syntax">, </span><span class="identifier-syntax">uks</span><span class="plain-syntax">, </span><span class="constant-syntax">0x80000000</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-bs.html#SP2" class="function-link"><span class="function-syntax">Site::arch_constant_hex</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"WORD_NEXTTOHIGHBIT"</span><span class="plain-syntax">, </span><span class="identifier-syntax">uks</span><span class="plain-syntax">, </span><span class="constant-syntax">0x40000000</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-bs.html#SP2" class="function-link"><span class="function-syntax">Site::arch_constant_hex</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"IMPROBABLE_VALUE"</span><span class="plain-syntax">, </span><span class="identifier-syntax">uks</span><span class="plain-syntax">, </span><span class="constant-syntax">0xdeadce11</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-bs.html#SP2" class="function-link"><span class="function-syntax">Site::arch_constant</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"MAX_POSITIVE_NUMBER"</span><span class="plain-syntax">, </span><span class="identifier-syntax">uks</span><span class="plain-syntax">, </span><span class="constant-syntax">2147483647</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-bs.html#SP2" class="function-link"><span class="function-syntax">Site::arch_constant_signed</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"MIN_NEGATIVE_NUMBER"</span><span class="plain-syntax">, </span><span class="identifier-syntax">uks</span><span class="plain-syntax">, -2147483648);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-bs.html#SP2" class="function-link"><span class="function-syntax">Site::arch_constant</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"INDIV_PROP_START"</span><span class="plain-syntax">, </span><span class="identifier-syntax">uks</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-bs.html#SP2" class="function-link"><span class="function-syntax">Site::arch_constant</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"TARGET_GLULX"</span><span class="plain-syntax">, </span><span class="identifier-syntax">uks</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">D</span><span class="plain-syntax">) </span><a href="1-bs.html#SP2" class="function-link"><span class="function-syntax">Site::arch_constant</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"DEBUG"</span><span class="plain-syntax">, </span><span class="identifier-syntax">uks</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="1-bm.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresscurrentchapter">1</li><li class="progresssection"><a href="1-bm.html">bm</a></li><li class="progresscurrent">bs</li><li class="progresssection"><a href="1-ip.html">ip</a></li><li class="progresssection"><a href="1-hl.html">hl</a></li><li class="progresssection"><a href="1-trn.html">trn</a></li><li class="progresssection"><a href="1-pck.html">pck</a></li><li class="progresssection"><a href="1-pt.html">pt</a></li><li class="progresssection"><a href="1-in.html">in</a></li><li class="progresschapter"><a href="2-is.html">2</a></li><li class="progresschapter"><a href="3-prd.html">3</a></li><li class="progressnext"><a href="1-ip.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -118,20 +118,20 @@ following fields set.
|
|||
|
||||
<span class="reserved-syntax">location_requirement</span><span class="plain-syntax"> </span><span class="function-syntax">HierarchyLocations::completion_submodule</span><span class="plain-syntax">(</span><span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="reserved-syntax">submodule_identity</span><span class="plain-syntax"> *</span><span class="identifier-syntax">sid</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">location_requirement</span><span class="plain-syntax"> </span><span class="identifier-syntax">req</span><span class="plain-syntax"> = </span><a href="1-hl.html#SP1" class="function-link"><span class="function-syntax">HierarchyLocations::blank</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">req</span><span class="plain-syntax">.</span><span class="element-syntax">this_exact_package</span><span class="plain-syntax"> = </span><a href="1-pck.html#SP17" class="function-link"><span class="function-syntax">Packaging::completion_submodule</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">sid</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">req</span><span class="plain-syntax">.</span><span class="element-syntax">this_exact_package</span><span class="plain-syntax"> = </span><a href="1-ls.html#SP13" class="function-link"><span class="function-syntax">LargeScale::completion_submodule</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">sid</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">req</span><span class="plain-syntax">.</span><span class="element-syntax">must_be_main_source_text</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">req</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">location_requirement</span><span class="plain-syntax"> </span><span class="function-syntax">HierarchyLocations::generic_submodule</span><span class="plain-syntax">(</span><span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="reserved-syntax">submodule_identity</span><span class="plain-syntax"> *</span><span class="identifier-syntax">sid</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">location_requirement</span><span class="plain-syntax"> </span><span class="identifier-syntax">req</span><span class="plain-syntax"> = </span><a href="1-hl.html#SP1" class="function-link"><span class="function-syntax">HierarchyLocations::blank</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">req</span><span class="plain-syntax">.</span><span class="element-syntax">this_exact_package</span><span class="plain-syntax"> = </span><a href="1-pck.html#SP17" class="function-link"><span class="function-syntax">Packaging::generic_submodule</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">sid</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">req</span><span class="plain-syntax">.</span><span class="element-syntax">this_exact_package</span><span class="plain-syntax"> = </span><a href="1-ls.html#SP13" class="function-link"><span class="function-syntax">LargeScale::generic_submodule</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">sid</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">req</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">location_requirement</span><span class="plain-syntax"> </span><span class="function-syntax">HierarchyLocations::synoptic_submodule</span><span class="plain-syntax">(</span><span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="reserved-syntax">submodule_identity</span><span class="plain-syntax"> *</span><span class="identifier-syntax">sid</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">location_requirement</span><span class="plain-syntax"> </span><span class="identifier-syntax">req</span><span class="plain-syntax"> = </span><a href="1-hl.html#SP1" class="function-link"><span class="function-syntax">HierarchyLocations::blank</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">req</span><span class="plain-syntax">.</span><span class="element-syntax">this_exact_package</span><span class="plain-syntax"> = </span><a href="1-pck.html#SP17" class="function-link"><span class="function-syntax">Packaging::synoptic_submodule</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">sid</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">req</span><span class="plain-syntax">.</span><span class="element-syntax">this_exact_package</span><span class="plain-syntax"> = </span><a href="1-ls.html#SP13" class="function-link"><span class="function-syntax">LargeScale::synoptic_submodule</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">sid</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">req</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
|
@ -148,7 +148,7 @@ following fields set.
|
|||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">location_requirement</span><span class="plain-syntax"> </span><span class="function-syntax">HierarchyLocations::the_veneer</span><span class="plain-syntax">(</span><span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="1-hl.html#SP2" class="function-link"><span class="function-syntax">HierarchyLocations::this_package</span></a><span class="plain-syntax">(</span><a href="1-bs.html#SP2" class="function-link"><span class="function-syntax">Site::architecture_request</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="1-hl.html#SP2" class="function-link"><span class="function-syntax">HierarchyLocations::this_package</span></a><span class="plain-syntax">(</span><a href="1-ls.html#SP6" class="function-link"><span class="function-syntax">LargeScale::architecture_request</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">location_requirement</span><span class="plain-syntax"> </span><span class="function-syntax">HierarchyLocations::this_package</span><button class="popup" onclick="togglePopup('usagePopup2')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup2">Usage of <span class="code-font"><span class="function-syntax">HierarchyLocations::this_package</span></span>:<br/><a href="1-hl.html#SP3">§3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">package_request</span><span class="plain-syntax"> *</span><span class="identifier-syntax">P</span><span class="plain-syntax">) {</span>
|
||||
|
@ -283,7 +283,7 @@ following fields set.
|
|||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="function-syntax">HierarchyLocations::function</span><span class="plain-syntax">(</span><span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="reserved-syntax">package_request</span><span class="plain-syntax"> *</span><span class="identifier-syntax">R</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">name</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">trans</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">iname</span><span class="plain-syntax"> = </span><a href="1-pck.html#SP19" class="function-link"><span class="function-syntax">Packaging::function</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><a href="1-in.html#SP5" class="function-link"><span class="function-syntax">InterNames::explicitly_named</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">name</span><span class="plain-syntax">, </span><span class="identifier-syntax">R</span><span class="plain-syntax">), </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">iname</span><span class="plain-syntax"> = </span><a href="1-pck.html#SP15" class="function-link"><span class="function-syntax">Packaging::function</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><a href="1-in.html#SP5" class="function-link"><span class="function-syntax">InterNames::explicitly_named</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">name</span><span class="plain-syntax">, </span><span class="identifier-syntax">R</span><span class="plain-syntax">), </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">trans</span><span class="plain-syntax">) </span><a href="3-prd.html#SP2" class="function-link"><span class="function-syntax">Produce::change_translation</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">iname</span><span class="plain-syntax">, </span><span class="identifier-syntax">trans</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">iname</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
@ -305,11 +305,11 @@ following fields set.
|
|||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"package can't be found"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::len</span><span class="plain-syntax">(</span><span class="identifier-syntax">hl</span><span class="plain-syntax">-></span><span class="element-syntax">function_package_name</span><span class="plain-syntax">) > </span><span class="constant-syntax">0</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">hl</span><span class="plain-syntax">-></span><span class="element-syntax">equates_to_iname</span><span class="plain-syntax"> = </span><a href="1-pck.html#SP19" class="function-link"><span class="function-syntax">Packaging::function_text</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">hl</span><span class="plain-syntax">-></span><span class="element-syntax">equates_to_iname</span><span class="plain-syntax"> = </span><a href="1-pck.html#SP15" class="function-link"><span class="function-syntax">Packaging::function_text</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><a href="1-in.html#SP5" class="function-link"><span class="function-syntax">InterNames::explicitly_named</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">hl</span><span class="plain-syntax">-></span><span class="element-syntax">function_package_name</span><span class="plain-syntax">, </span><span class="identifier-syntax">hl</span><span class="plain-syntax">-></span><span class="element-syntax">requirements</span><span class="plain-syntax">.</span><span class="element-syntax">this_exact_package</span><span class="plain-syntax">),</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">hl</span><span class="plain-syntax">-></span><span class="element-syntax">access_name</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::len</span><span class="plain-syntax">(</span><span class="identifier-syntax">hl</span><span class="plain-syntax">-></span><span class="element-syntax">datum_package_name</span><span class="plain-syntax">) > </span><span class="constant-syntax">0</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">hl</span><span class="plain-syntax">-></span><span class="element-syntax">equates_to_iname</span><span class="plain-syntax"> = </span><a href="1-pck.html#SP20" class="function-link"><span class="function-syntax">Packaging::datum_text</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">hl</span><span class="plain-syntax">-></span><span class="element-syntax">equates_to_iname</span><span class="plain-syntax"> = </span><a href="1-pck.html#SP16" class="function-link"><span class="function-syntax">Packaging::datum_text</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><a href="1-in.html#SP5" class="function-link"><span class="function-syntax">InterNames::explicitly_named</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">hl</span><span class="plain-syntax">-></span><span class="element-syntax">datum_package_name</span><span class="plain-syntax">, </span><span class="identifier-syntax">hl</span><span class="plain-syntax">-></span><span class="element-syntax">requirements</span><span class="plain-syntax">.</span><span class="element-syntax">this_exact_package</span><span class="plain-syntax">),</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">hl</span><span class="plain-syntax">-></span><span class="element-syntax">access_name</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">hl</span><span class="plain-syntax">-></span><span class="element-syntax">requirements</span><span class="plain-syntax">.</span><span class="element-syntax">this_exact_package</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">hl</span><span class="plain-syntax">-></span><span class="element-syntax">equates_to_iname</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">)) {</span>
|
||||
|
@ -374,7 +374,7 @@ following fields set.
|
|||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::len</span><span class="plain-syntax">(</span><span class="identifier-syntax">hl</span><span class="plain-syntax">-></span><span class="element-syntax">function_package_name</span><span class="plain-syntax">) > </span><span class="constant-syntax">0</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">iname</span><span class="plain-syntax"> = </span><a href="1-pck.html#SP19" class="function-link"><span class="function-syntax">Packaging::function</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">iname</span><span class="plain-syntax"> = </span><a href="1-pck.html#SP15" class="function-link"><span class="function-syntax">Packaging::function</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><a href="1-in.html#SP5" class="function-link"><span class="function-syntax">InterNames::explicitly_named</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">hl</span><span class="plain-syntax">-></span><span class="element-syntax">function_package_name</span><span class="plain-syntax">, </span><span class="identifier-syntax">P</span><span class="plain-syntax">), </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">hl</span><span class="plain-syntax">-></span><span class="element-syntax">trans</span><span class="plain-syntax">.</span><span class="element-syntax">by_imposition</span><span class="plain-syntax">) </span><span class="identifier-syntax">iname</span><span class="plain-syntax"> = </span><a href="1-in.html#SP5" class="function-link"><span class="function-syntax">InterNames::explicitly_named_with_memo</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">imposed_name</span><span class="plain-syntax">, </span><span class="identifier-syntax">P</span><span class="plain-syntax">, </span><span class="identifier-syntax">W</span><span class="plain-syntax">);</span>
|
||||
|
@ -438,7 +438,8 @@ following fields set.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">hap</span><span class="plain-syntax">-></span><span class="element-syntax">requirements</span><span class="plain-syntax">.</span><span class="element-syntax">must_be_main_source_text</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">R</span><span class="plain-syntax"> = </span><span class="identifier-syntax">hap</span><span class="plain-syntax">-></span><span class="element-syntax">requirements</span><span class="plain-syntax">.</span><span class="element-syntax">this_exact_package</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">hap</span><span class="plain-syntax">-></span><span class="element-syntax">requirements</span><span class="plain-syntax">.</span><span class="identifier-syntax">any_submodule_package_of_this_identity</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">R</span><span class="plain-syntax"> = </span><a href="1-pck.html#SP17" class="function-link"><span class="function-syntax">Packaging::request_submodule</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">C</span><span class="plain-syntax">, </span><span class="identifier-syntax">hap</span><span class="plain-syntax">-></span><span class="element-syntax">requirements</span><span class="plain-syntax">.</span><span class="element-syntax">any_submodule_package_of_this_identity</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">C</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">R</span><span class="plain-syntax"> = </span><a href="1-ls.html#SP13" class="function-link"><span class="function-syntax">LargeScale::generic_submodule</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">hap</span><span class="plain-syntax">-></span><span class="element-syntax">requirements</span><span class="plain-syntax">.</span><span class="element-syntax">any_submodule_package_of_this_identity</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="identifier-syntax">R</span><span class="plain-syntax"> = </span><a href="1-ls.html#SP14" class="function-link"><span class="function-syntax">LargeScale::request_submodule_of</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">CompilationUnits::to_module_package</span><span class="plain-syntax">(</span><span class="identifier-syntax">C</span><span class="plain-syntax">), </span><span class="identifier-syntax">hap</span><span class="plain-syntax">-></span><span class="element-syntax">requirements</span><span class="plain-syntax">.</span><span class="element-syntax">any_submodule_package_of_this_identity</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">hap</span><span class="plain-syntax">-></span><span class="element-syntax">requirements</span><span class="plain-syntax">.</span><span class="identifier-syntax">this_exact_package</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">R</span><span class="plain-syntax"> = </span><span class="identifier-syntax">hap</span><span class="plain-syntax">-></span><span class="element-syntax">requirements</span><span class="plain-syntax">.</span><span class="element-syntax">this_exact_package</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">hap</span><span class="plain-syntax">-></span><span class="element-syntax">requirements</span><span class="plain-syntax">.</span><span class="identifier-syntax">this_exact_package_not_yet_created</span><span class="plain-syntax"> >= </span><span class="constant-syntax">0</span><span class="plain-syntax">) {</span>
|
||||
|
@ -454,7 +455,7 @@ following fields set.
|
|||
</pre>
|
||||
<ul class="endnotetexts"><li>The structure hierarchy_attachment_point is accessed in 1/pck, 1/in and here.</li></ul>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="1-ip.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresscurrentchapter">1</li><li class="progresssection"><a href="1-bm.html">bm</a></li><li class="progresssection"><a href="1-bs.html">bs</a></li><li class="progresssection"><a href="1-ip.html">ip</a></li><li class="progresscurrent">hl</li><li class="progresssection"><a href="1-trn.html">trn</a></li><li class="progresssection"><a href="1-pck.html">pck</a></li><li class="progresssection"><a href="1-pt.html">pt</a></li><li class="progresssection"><a href="1-in.html">in</a></li><li class="progresschapter"><a href="2-is.html">2</a></li><li class="progresschapter"><a href="3-prd.html">3</a></li><li class="progressnext"><a href="1-trn.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="1-ip.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresscurrentchapter">1</li><li class="progresssection"><a href="1-bm.html">bm</a></li><li class="progresssection"><a href="1-ls.html">ls</a></li><li class="progresssection"><a href="1-ip.html">ip</a></li><li class="progresscurrent">hl</li><li class="progresssection"><a href="1-trn.html">trn</a></li><li class="progresssection"><a href="1-pck.html">pck</a></li><li class="progresssection"><a href="1-pt.html">pt</a></li><li class="progresssection"><a href="1-in.html">in</a></li><li class="progresschapter"><a href="2-is.html">2</a></li><li class="progresschapter"><a href="3-prd.html">3</a></li><li class="progressnext"><a href="1-trn.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -230,12 +230,12 @@ a memo to attach):
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="1-in.html#SP4" class="function-link"><span class="function-syntax">InterNames::new</span></a><span class="plain-syntax">(</span><a href="1-in.html#SP1" class="function-link"><span class="function-syntax">InterNames::single_use_generator</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">name</span><span class="plain-syntax">), </span><span class="identifier-syntax">R</span><span class="plain-syntax">, </span><span class="identifier-syntax">W</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="function-syntax">InterNames::explicitly_named</span><button class="popup" onclick="togglePopup('usagePopup6')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup6">Usage of <span class="code-font"><span class="function-syntax">InterNames::explicitly_named</span></span>:<br/>Building Site - <a href="1-bs.html#SP2">§2</a><br/>Hierarchy Locations - <a href="1-hl.html#SP3">§3</a>, <a href="1-hl.html#SP3_1">§3.1</a>, <a href="1-hl.html#SP4">§4</a><br/>Packaging - <a href="1-pck.html#SP15">§15</a>, <a href="1-pck.html#SP18">§18</a>, <a href="1-pck.html#SP19">§19</a>, <a href="1-pck.html#SP20">§20</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">name</span><span class="plain-syntax">, </span><span class="reserved-syntax">package_request</span><span class="plain-syntax"> *</span><span class="identifier-syntax">R</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="function-syntax">InterNames::explicitly_named</span><button class="popup" onclick="togglePopup('usagePopup6')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup6">Usage of <span class="code-font"><span class="function-syntax">InterNames::explicitly_named</span></span>:<br/>Large-Scale Structure - <a href="1-ls.html#SP4">§4</a>, <a href="1-ls.html#SP5">§5</a>, <a href="1-ls.html#SP6">§6</a>, <a href="1-ls.html#SP11">§11</a>, <a href="1-ls.html#SP14">§14</a><br/>Hierarchy Locations - <a href="1-hl.html#SP3">§3</a>, <a href="1-hl.html#SP3_1">§3.1</a>, <a href="1-hl.html#SP4">§4</a><br/>Packaging - <a href="1-pck.html#SP15">§15</a>, <a href="1-pck.html#SP16">§16</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">name</span><span class="plain-syntax">, </span><span class="reserved-syntax">package_request</span><span class="plain-syntax"> *</span><span class="identifier-syntax">R</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="1-in.html#SP5" class="function-link"><span class="function-syntax">InterNames::explicitly_named_with_memo</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">name</span><span class="plain-syntax">, </span><span class="identifier-syntax">R</span><span class="plain-syntax">, </span><span class="identifier-syntax">EMPTY_WORDING</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="function-syntax">InterNames::explicitly_named_in_template</span><button class="popup" onclick="togglePopup('usagePopup7')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup7">Usage of <span class="code-font"><span class="function-syntax">InterNames::explicitly_named_in_template</span></span>:<br/>Hierarchy Locations - <a href="1-hl.html#SP3">§3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">name</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">iname</span><span class="plain-syntax"> = </span><a href="1-in.html#SP5" class="function-link"><span class="function-syntax">InterNames::explicitly_named</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">name</span><span class="plain-syntax">, </span><a href="1-bs.html#SP2" class="function-link"><span class="function-syntax">Site::connectors_request</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">iname</span><span class="plain-syntax"> = </span><a href="1-in.html#SP5" class="function-link"><span class="function-syntax">InterNames::explicitly_named</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">name</span><span class="plain-syntax">, </span><a href="1-ls.html#SP5" class="function-link"><span class="function-syntax">LargeScale::connectors_request</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">plug</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Wiring::find_plug</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">name</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">plug</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">plug</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Wiring::plug</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">name</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">iname</span><span class="plain-syntax">-></span><span class="identifier-syntax">symbol</span><span class="plain-syntax"> = </span><span class="identifier-syntax">plug</span><span class="plain-syntax">;</span>
|
||||
|
@ -275,7 +275,7 @@ a memo to attach):
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">package_request</span><span class="plain-syntax"> *</span><span class="function-syntax">InterNames::location</span><button class="popup" onclick="togglePopup('usagePopup11')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup11">Usage of <span class="code-font"><span class="function-syntax">InterNames::location</span></span>:<br/>Hierarchy Locations - <a href="1-hl.html#SP3">§3</a><br/>Packaging - <a href="1-pck.html#SP3">§3</a>, <a href="1-pck.html#SP13">§13</a>, <a href="1-pck.html#SP19">§19</a><br/>Producing Inter - <a href="3-prd.html#SP3">§3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">iname</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">package_request</span><span class="plain-syntax"> *</span><span class="function-syntax">InterNames::location</span><button class="popup" onclick="togglePopup('usagePopup11')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup11">Usage of <span class="code-font"><span class="function-syntax">InterNames::location</span></span>:<br/>Hierarchy Locations - <a href="1-hl.html#SP3">§3</a><br/>Packaging - <a href="1-pck.html#SP3">§3</a>, <a href="1-pck.html#SP13">§13</a>, <a href="1-pck.html#SP15">§15</a><br/>Producing Inter - <a href="3-prd.html#SP3">§3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">iname</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">iname</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">iname</span><span class="plain-syntax">-></span><span class="element-syntax">location_in_hierarchy</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
@ -326,7 +326,7 @@ automatically here:
|
|||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="1-pt.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresscurrentchapter">1</li><li class="progresssection"><a href="1-bm.html">bm</a></li><li class="progresssection"><a href="1-bs.html">bs</a></li><li class="progresssection"><a href="1-ip.html">ip</a></li><li class="progresssection"><a href="1-hl.html">hl</a></li><li class="progresssection"><a href="1-trn.html">trn</a></li><li class="progresssection"><a href="1-pck.html">pck</a></li><li class="progresssection"><a href="1-pt.html">pt</a></li><li class="progresscurrent">in</li><li class="progresschapter"><a href="2-is.html">2</a></li><li class="progresschapter"><a href="3-prd.html">3</a></li><li class="progressnext"><a href="2-is.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="1-pt.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresscurrentchapter">1</li><li class="progresssection"><a href="1-bm.html">bm</a></li><li class="progresssection"><a href="1-ls.html">ls</a></li><li class="progresssection"><a href="1-ip.html">ip</a></li><li class="progresssection"><a href="1-hl.html">hl</a></li><li class="progresssection"><a href="1-trn.html">trn</a></li><li class="progresssection"><a href="1-pck.html">pck</a></li><li class="progresssection"><a href="1-pt.html">pt</a></li><li class="progresscurrent">in</li><li class="progresschapter"><a href="2-is.html">2</a></li><li class="progresschapter"><a href="3-prd.html">3</a></li><li class="progressnext"><a href="2-is.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -74,107 +74,142 @@ function togglePopup(material_id) {
|
|||
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>§1. </b></p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Primitives::emit</span><button class="popup" onclick="togglePopup('usagePopup1')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup1">Usage of <span class="code-font"><span class="function-syntax">Primitives::emit</span></span>:<br/>Packaging - <a href="1-pck.html#SP12">§12</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">inter_bookmark</span><span class="plain-syntax"> *</span><span class="identifier-syntax">IBM</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP1" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!font"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val -> void"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP1" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!style"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val -> void"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP1" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!print"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val -> void"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP1" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!printnl"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"void -> void"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP1" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!printchar"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val -> void"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP1" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!printobj"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val -> void"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP1" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!printnumber"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val -> void"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP1" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!printdword"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val -> void"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP1" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!printstring"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val -> void"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP1" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!box"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val -> void"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP1" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!push"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val -> void"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP1" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!pull"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"ref -> void"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP1" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!postincrement"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"ref -> val"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP1" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!preincrement"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"ref -> val"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP1" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!postdecrement"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"ref -> val"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP1" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!predecrement"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"ref -> val"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP1" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!return"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val -> void"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP1" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!quit"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"void -> void"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP1" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!restore"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"lab -> void"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP1" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!spaces"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val -> void"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP1" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!break"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"void -> void"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP1" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!continue"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"void -> void"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP1" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!jump"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"lab -> void"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP1" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!move"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val val -> void"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP1" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!remove"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val -> void"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP1" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!store"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"ref val -> val"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP1" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!setbit"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"ref val -> void"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP1" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!clearbit"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"ref val -> void"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP1" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!modulo"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val val -> val"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP1" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!lookup"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val val -> val"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP1" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!lookupbyte"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val val -> val"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP1" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!not"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val -> val"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP1" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!and"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val val -> val"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP1" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!or"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val val -> val"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP1" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!alternative"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val val -> val"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP1" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!alternativecase"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val val -> val"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP1" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!bitwiseand"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val val -> val"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP1" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!bitwiseor"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val val -> val"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP1" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!bitwisenot"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val -> val"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP1" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!eq"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val val -> val"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP1" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!ne"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val val -> val"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP1" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!gt"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val val -> val"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP1" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!ge"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val val -> val"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP1" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!lt"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val val -> val"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP1" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!le"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val val -> val"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP1" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!in"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val val -> val"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP1" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!notin"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val val -> val"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP1" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!ofclass"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val val -> val"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP1" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!sequential"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val val -> val"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP1" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!ternarysequential"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val val val -> val"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP1" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!plus"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val val -> val"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP1" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!minus"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val val -> val"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP1" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!unaryminus"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val -> val"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP1" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!times"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val val -> val"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP1" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!divide"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val val -> val"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP1" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!if"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val code -> void"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP1" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!ifdebug"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"code -> void"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP1" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!ifstrict"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"code -> void"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP1" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!ifelse"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val code code -> void"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP1" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!while"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val code -> void"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP1" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!do"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val code -> void"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP1" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!for"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val val val code -> void"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP1" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!objectloop"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"ref val val code -> void"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP1" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!objectloopx"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"ref val code -> void"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP1" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!switch"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val code -> void"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP1" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!case"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val code -> void"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP1" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!default"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"code -> void"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP1" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!indirect0v"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val -> void"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP1" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!indirect1v"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val val -> void"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP1" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!indirect2v"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val val val -> void"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP1" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!indirect3v"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val val val val -> void"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP1" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!indirect4v"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val val val val val -> void"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP1" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!indirect5v"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val val val val val val -> void"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP1" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!indirect0"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val -> val"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP1" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!indirect1"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val val -> val"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP1" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!indirect2"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val val val -> val"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP1" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!indirect3"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val val val val -> val"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP1" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!indirect4"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val val val val val -> val"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP1" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!indirect5"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val val val val val val -> val"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP1" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!message0"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val val -> val"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP1" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!message1"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val val val -> val"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP1" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!message2"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val val val val -> val"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP1" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!message3"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val val val val val -> val"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP1" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!externalcall"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val val -> val"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP1" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!propertyarray"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val val val -> val"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP1" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!propertylength"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val val val -> val"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP1" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!propertyexists"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val val val -> val"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP1" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!propertyvalue"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val val val -> val"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP1" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!random"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val -> val"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP1" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!child"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val -> val"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP1" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!children"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val -> val"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP1" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!sibling"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val -> val"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP1" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!parent"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val -> val"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP1" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!metaclass"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val -> val"</span><span class="plain-syntax">);</span>
|
||||
<span class="reserved-syntax">typedef</span><span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">site_primitives_data</span><span class="plain-syntax"> {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">primitives_by_BIP</span><span class="plain-syntax">[</span><span class="constant-syntax">MAX_BIPS</span><span class="plain-syntax">];</span>
|
||||
<span class="plain-syntax">} </span><span class="reserved-syntax">site_primitives_data</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Primitives::clear_pdata</span><button class="popup" onclick="togglePopup('usagePopup1')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup1">Usage of <span class="code-font"><span class="function-syntax">Primitives::clear_pdata</span></span>:<br/>Building Module - <a href="1-bm.html#SP4">§4</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">building_site</span><span class="plain-syntax"> *</span><span class="identifier-syntax">B</span><span class="plain-syntax"> = &(</span><span class="identifier-syntax">I</span><span class="plain-syntax">-></span><span class="identifier-syntax">site</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax">=0; </span><span class="identifier-syntax">i</span><span class="plain-syntax"><</span><span class="constant-syntax">MAX_BIPS</span><span class="plain-syntax">; </span><span class="identifier-syntax">i</span><span class="plain-syntax">++) </span><span class="identifier-syntax">B</span><span class="plain-syntax">-></span><span class="element-syntax">spridata</span><span class="plain-syntax">.</span><span class="element-syntax">primitives_by_BIP</span><span class="plain-syntax">[</span><span class="identifier-syntax">i</span><span class="plain-syntax">] = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="identifier-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="function-syntax">Primitives::get</span><button class="popup" onclick="togglePopup('usagePopup2')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup2">Usage of <span class="code-font"><span class="function-syntax">Primitives::get</span></span>:<br/>Producing Inter - <a href="3-prd.html#SP2">§2</a>, <a href="3-prd.html#SP3">§3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">inter_ti</span><span class="plain-syntax"> </span><span class="identifier-syntax">bip</span><span class="plain-syntax">) {</span>
|
||||
<span class="identifier-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="function-syntax">Primitives::from_BIP</span><button class="popup" onclick="togglePopup('usagePopup2')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup2">Usage of <span class="code-font"><span class="function-syntax">Primitives::from_BIP</span></span>:<br/><a href="1-ip.html#SP3">§3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">inter_ti</span><span class="plain-syntax"> </span><span class="identifier-syntax">bip</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="plain-syntax">-></span><span class="identifier-syntax">site</span><span class="plain-syntax">.</span><span class="element-syntax">spridata</span><span class="plain-syntax">.</span><span class="element-syntax">primitives_by_BIP</span><span class="plain-syntax">[</span><span class="identifier-syntax">bip</span><span class="plain-syntax">];</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Primitives::index</span><button class="popup" onclick="togglePopup('usagePopup3')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup3">Usage of <span class="code-font"><span class="function-syntax">Primitives::index</span></span>:<br/><a href="1-ip.html#SP3">§3</a>, <a href="1-ip.html#SP4">§4</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">inter_ti</span><span class="plain-syntax"> </span><span class="identifier-syntax">bip</span><span class="plain-syntax">, </span><span class="identifier-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">S</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="plain-syntax">-></span><span class="identifier-syntax">site</span><span class="plain-syntax">.</span><span class="element-syntax">spridata</span><span class="plain-syntax">.</span><span class="element-syntax">primitives_by_BIP</span><span class="plain-syntax">[</span><span class="identifier-syntax">bip</span><span class="plain-syntax">] = </span><span class="identifier-syntax">S</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>The structure site_primitives_data is private to this section.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>§2. </b></p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">typedef</span><span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">inform7_primitive</span><span class="plain-syntax"> {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">BIP</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">name</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">signature</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">} </span><span class="reserved-syntax">inform7_primitive</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="reserved-syntax">inform7_primitive</span><span class="plain-syntax"> </span><span class="identifier-syntax">standard_inform7_primitives</span><span class="plain-syntax">[] = {</span>
|
||||
<span class="plain-syntax"> { </span><span class="constant-syntax">0</span><span class="plain-syntax">, </span><span class="string-syntax">"!example"</span><span class="plain-syntax">, </span><span class="string-syntax">"val -> void"</span><span class="plain-syntax"> },</span>
|
||||
<span class="plain-syntax">};</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>The structure inform7_primitive is private to this section.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP3" class="paragraph-anchor"></a><b>§3. </b></p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Primitives::emit</span><button class="popup" onclick="togglePopup('usagePopup4')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup4">Usage of <span class="code-font"><span class="function-syntax">Primitives::emit</span></span>:<br/>Packaging - <a href="1-pck.html#SP12">§12</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">inter_bookmark</span><span class="plain-syntax"> *</span><span class="identifier-syntax">IBM</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP3" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!font"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val -> void"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP3" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!style"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val -> void"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP3" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!print"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val -> void"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP3" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!printnl"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"void -> void"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP3" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!printchar"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val -> void"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP3" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!printobj"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val -> void"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP3" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!printnumber"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val -> void"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP3" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!printdword"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val -> void"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP3" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!printstring"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val -> void"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP3" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!box"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val -> void"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP3" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!push"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val -> void"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP3" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!pull"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"ref -> void"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP3" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!postincrement"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"ref -> val"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP3" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!preincrement"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"ref -> val"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP3" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!postdecrement"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"ref -> val"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP3" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!predecrement"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"ref -> val"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP3" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!return"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val -> void"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP3" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!quit"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"void -> void"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP3" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!restore"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"lab -> void"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP3" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!spaces"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val -> void"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP3" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!break"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"void -> void"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP3" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!continue"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"void -> void"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP3" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!jump"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"lab -> void"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP3" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!move"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val val -> void"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP3" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!remove"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val -> void"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP3" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!store"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"ref val -> val"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP3" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!setbit"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"ref val -> void"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP3" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!clearbit"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"ref val -> void"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP3" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!modulo"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val val -> val"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP3" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!lookup"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val val -> val"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP3" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!lookupbyte"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val val -> val"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP3" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!not"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val -> val"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP3" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!and"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val val -> val"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP3" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!or"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val val -> val"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP3" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!alternative"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val val -> val"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP3" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!alternativecase"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val val -> val"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP3" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!bitwiseand"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val val -> val"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP3" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!bitwiseor"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val val -> val"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP3" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!bitwisenot"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val -> val"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP3" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!eq"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val val -> val"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP3" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!ne"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val val -> val"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP3" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!gt"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val val -> val"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP3" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!ge"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val val -> val"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP3" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!lt"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val val -> val"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP3" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!le"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val val -> val"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP3" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!in"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val val -> val"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP3" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!notin"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val val -> val"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP3" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!ofclass"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val val -> val"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP3" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!sequential"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val val -> val"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP3" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!ternarysequential"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val val val -> val"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP3" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!plus"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val val -> val"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP3" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!minus"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val val -> val"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP3" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!unaryminus"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val -> val"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP3" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!times"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val val -> val"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP3" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!divide"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val val -> val"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP3" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!if"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val code -> void"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP3" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!ifdebug"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"code -> void"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP3" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!ifstrict"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"code -> void"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP3" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!ifelse"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val code code -> void"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP3" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!while"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val code -> void"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP3" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!do"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val code -> void"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP3" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!for"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val val val code -> void"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP3" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!objectloop"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"ref val val code -> void"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP3" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!objectloopx"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"ref val code -> void"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP3" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!switch"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val code -> void"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP3" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!case"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val code -> void"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP3" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!default"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"code -> void"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP3" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!indirect0v"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val -> void"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP3" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!indirect1v"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val val -> void"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP3" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!indirect2v"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val val val -> void"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP3" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!indirect3v"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val val val val -> void"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP3" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!indirect4v"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val val val val val -> void"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP3" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!indirect5v"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val val val val val val -> void"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP3" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!indirect0"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val -> val"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP3" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!indirect1"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val val -> val"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP3" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!indirect2"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val val val -> val"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP3" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!indirect3"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val val val val -> val"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP3" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!indirect4"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val val val val val -> val"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP3" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!indirect5"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val val val val val val -> val"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP3" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!message0"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val val -> val"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP3" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!message1"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val val val -> val"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP3" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!message2"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val val val val -> val"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP3" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!message3"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val val val val val -> val"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP3" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!externalcall"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val val -> val"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP3" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!propertyarray"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val val val -> val"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP3" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!propertylength"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val val val -> val"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP3" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!propertyexists"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val val val -> val"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP3" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!propertyvalue"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val val val -> val"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP3" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!random"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val -> val"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP3" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!child"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val -> val"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP3" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!children"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val -> val"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP3" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!sibling"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val -> val"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP3" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!parent"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val -> val"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP3" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!metaclass"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val -> val"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="identifier-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="function-syntax">Primitives::get</span><button class="popup" onclick="togglePopup('usagePopup5')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup5">Usage of <span class="code-font"><span class="function-syntax">Primitives::get</span></span>:<br/>Producing Inter - <a href="3-prd.html#SP2">§2</a>, <a href="3-prd.html#SP3">§3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">inter_ti</span><span class="plain-syntax"> </span><span class="identifier-syntax">bip</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">I</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"no tree"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">bip</span><span class="plain-syntax"> < </span><span class="constant-syntax">1</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">bip</span><span class="plain-syntax"> >= </span><span class="constant-syntax">MAX_BIPS</span><span class="plain-syntax">)) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"bip out of range"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="1-bs.html#SP2" class="function-link"><span class="function-syntax">Site::get_opcode</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">bip</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="1-ip.html#SP1" class="function-link"><span class="function-syntax">Primitives::from_BIP</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">bip</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Primitives::emit_one</span><span class="plain-syntax">(</span><span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">inter_bookmark</span><span class="plain-syntax"> *</span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prim</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">category</span><span class="plain-syntax">) {</span>
|
||||
|
@ -183,10 +218,10 @@ function togglePopup(material_id) {
|
|||
<span class="plain-syntax"> </span><a href="3-prd.html#SP2" class="function-link"><span class="function-syntax">Produce::guard</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">Inter::Defn::read_construct_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">prim_command</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_error_message</span><span class="plain-syntax"> *</span><span class="identifier-syntax">E</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">S</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Inter::Textual::find_symbol</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">InterTree::global_scope</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">), </span><span class="identifier-syntax">prim</span><span class="plain-syntax">, </span><span class="identifier-syntax">PRIMITIVE_IST</span><span class="plain-syntax">, &</span><span class="identifier-syntax">E</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_ti</span><span class="plain-syntax"> </span><span class="identifier-syntax">bip</span><span class="plain-syntax"> = </span><a href="1-ip.html#SP2" class="function-link"><span class="function-syntax">Primitives::to_bip</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">S</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_ti</span><span class="plain-syntax"> </span><span class="identifier-syntax">bip</span><span class="plain-syntax"> = </span><a href="1-ip.html#SP4" class="function-link"><span class="function-syntax">Primitives::to_bip</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">S</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">bip</span><span class="plain-syntax"> == </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"missing bip"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">bip</span><span class="plain-syntax"> >= </span><span class="constant-syntax">MAX_BIPS</span><span class="plain-syntax">) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"unsafely high bip"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-bs.html#SP2" class="function-link"><span class="function-syntax">Site::set_opcode</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">bip</span><span class="plain-syntax">, </span><span class="identifier-syntax">S</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP1" class="function-link"><span class="function-syntax">Primitives::index</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">bip</span><span class="plain-syntax">, </span><span class="identifier-syntax">S</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="3-prd.html#SP2" class="function-link"><span class="function-syntax">Produce::guard</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">E</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">DISCARD_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">prim_command</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
@ -237,7 +272,7 @@ function togglePopup(material_id) {
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>§2. </b></p>
|
||||
<p class="commentary firstcommentary"><a id="SP4" class="paragraph-anchor"></a><b>§4. </b></p>
|
||||
|
||||
<pre class="definitions code-font"><span class="definition-keyword">define</span> <span class="constant-syntax">MAX_BIPS</span><span class="plain-syntax"> </span><span class="constant-syntax">200</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">NOT_BIP</span><span class="plain-syntax"> </span><span class="identifier-syntax">from</span><span class="plain-syntax"> </span><span class="constant-syntax">1</span>
|
||||
|
@ -337,7 +372,7 @@ function togglePopup(material_id) {
|
|||
<span class="definition-keyword">enum</span> <span class="constant-syntax">METACLASS_BIP</span>
|
||||
</pre>
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="function-syntax">Primitives::name</span><button class="popup" onclick="togglePopup('usagePopup3')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup3">Usage of <span class="code-font"><span class="function-syntax">Primitives::name</span></span>:<br/>Inter Schemas - <a href="2-is.html#SP16">§16</a>, <a href="2-is.html#SP28">§28</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_ti</span><span class="plain-syntax"> </span><span class="identifier-syntax">bip</span><span class="plain-syntax">) {</span>
|
||||
<span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="function-syntax">Primitives::name</span><button class="popup" onclick="togglePopup('usagePopup6')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup6">Usage of <span class="code-font"><span class="function-syntax">Primitives::name</span></span>:<br/>Inter Schemas - <a href="2-is.html#SP16">§16</a>, <a href="2-is.html#SP28">§28</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_ti</span><span class="plain-syntax"> </span><span class="identifier-syntax">bip</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">switch</span><span class="plain-syntax"> (</span><span class="identifier-syntax">bip</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">NOT_BIP:</span><span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="string-syntax">"!not"</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">AND_BIP:</span><span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="string-syntax">"!and"</span><span class="plain-syntax">;</span>
|
||||
|
@ -439,16 +474,16 @@ function togglePopup(material_id) {
|
|||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Primitives::scan_tree</span><span class="plain-syntax">(</span><span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">InterTree::traverse_root_only</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><a href="1-ip.html#SP2" class="function-link"><span class="function-syntax">Primitives::scan_visitor</span></a><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">PRIMITIVE_IST</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">InterTree::traverse_root_only</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><a href="1-ip.html#SP4" class="function-link"><span class="function-syntax">Primitives::scan_visitor</span></a><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">PRIMITIVE_IST</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Primitives::scan_visitor</span><span class="plain-syntax">(</span><span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">inter_tree_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">P</span><span class="plain-syntax">, </span><span class="reserved-syntax">void</span><span class="plain-syntax"> *</span><span class="identifier-syntax">v_state</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prim_name</span><span class="plain-syntax"> = </span><span class="identifier-syntax">InterSymbolsTables::symbol_from_frame_data</span><span class="plain-syntax">(</span><span class="identifier-syntax">P</span><span class="plain-syntax">, </span><span class="identifier-syntax">DEFN_PRIM_IFLD</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_ti</span><span class="plain-syntax"> </span><span class="identifier-syntax">bip</span><span class="plain-syntax"> = </span><a href="1-ip.html#SP2" class="function-link"><span class="function-syntax">Primitives::to_bip</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">prim_name</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">bip</span><span class="plain-syntax">) </span><a href="1-bs.html#SP2" class="function-link"><span class="function-syntax">Site::set_opcode</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">bip</span><span class="plain-syntax">, </span><span class="identifier-syntax">prim_name</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_ti</span><span class="plain-syntax"> </span><span class="identifier-syntax">bip</span><span class="plain-syntax"> = </span><a href="1-ip.html#SP4" class="function-link"><span class="function-syntax">Primitives::to_bip</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">prim_name</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">bip</span><span class="plain-syntax">) </span><a href="1-ip.html#SP1" class="function-link"><span class="function-syntax">Primitives::index</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">bip</span><span class="plain-syntax">, </span><span class="identifier-syntax">prim_name</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="identifier-syntax">inter_ti</span><span class="plain-syntax"> </span><span class="function-syntax">Primitives::to_bip</span><button class="popup" onclick="togglePopup('usagePopup4')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup4">Usage of <span class="code-font"><span class="function-syntax">Primitives::to_bip</span></span>:<br/><a href="1-ip.html#SP1">§1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">symb</span><span class="plain-syntax">) {</span>
|
||||
<span class="identifier-syntax">inter_ti</span><span class="plain-syntax"> </span><span class="function-syntax">Primitives::to_bip</span><button class="popup" onclick="togglePopup('usagePopup7')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup7">Usage of <span class="code-font"><span class="function-syntax">Primitives::to_bip</span></span>:<br/><a href="1-ip.html#SP3">§3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">symb</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">symb</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">B</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Inter::Symbols::read_annotation</span><span class="plain-syntax">(</span><span class="identifier-syntax">symb</span><span class="plain-syntax">, </span><span class="identifier-syntax">BIP_CODE_IANN</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_ti</span><span class="plain-syntax"> </span><span class="identifier-syntax">bip</span><span class="plain-syntax"> = (</span><span class="identifier-syntax">B</span><span class="plain-syntax"> > </span><span class="constant-syntax">0</span><span class="plain-syntax">)?((</span><span class="identifier-syntax">inter_ti</span><span class="plain-syntax">) </span><span class="identifier-syntax">B</span><span class="plain-syntax">):0;</span>
|
||||
|
@ -554,9 +589,17 @@ function togglePopup(material_id) {
|
|||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Primitives::emit_pragma</span><span class="plain-syntax">(</span><span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">target</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">content</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_ti</span><span class="plain-syntax"> </span><span class="identifier-syntax">ID</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Inter::Warehouse::create_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">InterTree::warehouse</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">), </span><span class="identifier-syntax">InterTree::root_package</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Str::copy</span><span class="plain-syntax">(</span><span class="identifier-syntax">Inter::Warehouse::get_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">InterTree::warehouse</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">), </span><span class="identifier-syntax">ID</span><span class="plain-syntax">), </span><span class="identifier-syntax">content</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">target_name</span><span class="plain-syntax"> =</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">InterSymbolsTables::symbol_from_name_creating</span><span class="plain-syntax">(</span><span class="identifier-syntax">InterTree::global_scope</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">), </span><span class="identifier-syntax">target</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="3-prd.html#SP2" class="function-link"><span class="function-syntax">Produce::guard</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">Inter::Pragma::new</span><span class="plain-syntax">(</span><a href="1-pck.html#SP1" class="function-link"><span class="function-syntax">Packaging::pragmas</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">), </span><span class="identifier-syntax">target_name</span><span class="plain-syntax">, </span><span class="identifier-syntax">ID</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="1-bs.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresscurrentchapter">1</li><li class="progresssection"><a href="1-bm.html">bm</a></li><li class="progresssection"><a href="1-bs.html">bs</a></li><li class="progresscurrent">ip</li><li class="progresssection"><a href="1-hl.html">hl</a></li><li class="progresssection"><a href="1-trn.html">trn</a></li><li class="progresssection"><a href="1-pck.html">pck</a></li><li class="progresssection"><a href="1-pt.html">pt</a></li><li class="progresssection"><a href="1-in.html">in</a></li><li class="progresschapter"><a href="2-is.html">2</a></li><li class="progresschapter"><a href="3-prd.html">3</a></li><li class="progressnext"><a href="1-hl.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="1-ls.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresscurrentchapter">1</li><li class="progresssection"><a href="1-bm.html">bm</a></li><li class="progresssection"><a href="1-ls.html">ls</a></li><li class="progresscurrent">ip</li><li class="progresssection"><a href="1-hl.html">hl</a></li><li class="progresssection"><a href="1-trn.html">trn</a></li><li class="progresssection"><a href="1-pck.html">pck</a></li><li class="progresssection"><a href="1-pt.html">pt</a></li><li class="progresssection"><a href="1-in.html">in</a></li><li class="progresschapter"><a href="2-is.html">2</a></li><li class="progresschapter"><a href="3-prd.html">3</a></li><li class="progressnext"><a href="1-hl.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
468
docs/building-module/1-ls.html
Normal file
468
docs/building-module/1-ls.html
Normal file
|
@ -0,0 +1,468 @@
|
|||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<title>Large-Scale Structure</title>
|
||||
<link href="../docs-assets/Breadcrumbs.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<meta name="viewport" content="width=device-width initial-scale=1">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta http-equiv="Content-Language" content="en-gb">
|
||||
|
||||
<link href="../docs-assets/Contents.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Progress.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Navigation.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Fonts.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Base.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<script>
|
||||
function togglePopup(material_id) {
|
||||
var popup = document.getElementById(material_id);
|
||||
popup.classList.toggle("show");
|
||||
}
|
||||
</script>
|
||||
|
||||
<link href="../docs-assets/Popups.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Colours.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
|
||||
</head>
|
||||
<body class="commentary-font">
|
||||
<nav role="navigation">
|
||||
<h1><a href="../index.html">
|
||||
<img src="../docs-assets/Inform.png" height=72">
|
||||
</a></h1>
|
||||
<ul><li><a href="../compiler.html">compiler tools</a></li>
|
||||
<li><a href="../other.html">other tools</a></li>
|
||||
<li><a href="../extensions.html">extensions and kits</a></li>
|
||||
<li><a href="../units.html">unit test tools</a></li>
|
||||
</ul><h2>Compiler Webs</h2><ul>
|
||||
<li><a href="../inbuild/index.html">inbuild</a></li>
|
||||
<li><a href="../inform7/index.html">inform7</a></li>
|
||||
<li><a href="../inter/index.html">inter</a></li>
|
||||
</ul><h2>Inbuild Modules</h2><ul>
|
||||
<li><a href="../supervisor-module/index.html">supervisor</a></li>
|
||||
</ul><h2>Inform7 Modules</h2><ul>
|
||||
<li><a href="../core-module/index.html">core</a></li>
|
||||
<li><a href="../assertions-module/index.html">assertions</a></li>
|
||||
<li><a href="../values-module/index.html">values</a></li>
|
||||
<li><a href="../knowledge-module/index.html">knowledge</a></li>
|
||||
<li><a href="../imperative-module/index.html">imperative</a></li>
|
||||
<li><a href="../runtime-module/index.html">runtime</a></li>
|
||||
<li><a href="../if-module/index.html">if</a></li>
|
||||
<li><a href="../multimedia-module/index.html">multimedia</a></li>
|
||||
<li><a href="../index-module/index.html">index</a></li>
|
||||
</ul><h2>Inter Modules</h2><ul>
|
||||
<li><a href="../bytecode-module/index.html">bytecode</a></li>
|
||||
<li><a href="index.html"><span class="selectedlink">building</span></a></li>
|
||||
<li><a href="../pipeline-module/index.html">pipeline</a></li>
|
||||
<li><a href="../final-module/index.html">final</a></li>
|
||||
</ul><h2>Services</h2><ul>
|
||||
<li><a href="../arch-module/index.html">arch</a></li>
|
||||
<li><a href="../calculus-module/index.html">calculus</a></li>
|
||||
<li><a href="../html-module/index.html">html</a></li>
|
||||
<li><a href="../inflections-module/index.html">inflections</a></li>
|
||||
<li><a href="../kinds-module/index.html">kinds</a></li>
|
||||
<li><a href="../linguistics-module/index.html">linguistics</a></li>
|
||||
<li><a href="../problems-module/index.html">problems</a></li>
|
||||
<li><a href="../syntax-module/index.html">syntax</a></li>
|
||||
<li><a href="../words-module/index.html">words</a></li>
|
||||
<li><a href="../../../inweb/docs/foundation-module/index.html">foundation</a></li>
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
<main role="main">
|
||||
<!--Weave of 'Large-Scale Structure' generated by Inweb-->
|
||||
<div class="breadcrumbs">
|
||||
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../compiler.html">Inter Modules</a></li><li><a href="index.html">building</a></li><li><a href="index.html#1">Chapter 1: Architecture</a></li><li><b>Large-Scale Structure</b></li></ul></div>
|
||||
<p class="purpose">To manage the main, connectors and architecture packages of an Inter tree, together with its major building blocks: modules and their submodules.</p>
|
||||
|
||||
<ul class="toc"><li><a href="1-ls.html#SP1">§1. Structure data</a></li><li><a href="1-ls.html#SP4">§4. main</a></li><li><a href="1-ls.html#SP5">§5. connectors</a></li><li><a href="1-ls.html#SP6">§6. architectural</a></li><li><a href="1-ls.html#SP10">§10. Modules</a></li><li><a href="1-ls.html#SP12">§12. Submodules</a></li></ul><hr class="tocbar">
|
||||
|
||||
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>§1. Structure data. </b>See <a href="P-wtmd.html" class="internal">What This Module Does</a> for a description of the conventions set
|
||||
by the functions below. Our task in this section is basically to make
|
||||
<span class="extract"><span class="extract-syntax">/main</span></span>, <span class="extract"><span class="extract-syntax">/main/connectors</span></span> and <span class="extract"><span class="extract-syntax">/main/architecture</span></span>, together with
|
||||
modules such as <span class="extract"><span class="extract-syntax">/main/BasicInformKit</span></span>, and their submodules, such as
|
||||
<span class="extract"><span class="extract-syntax">/main/BasicInformKit/activities</span></span>.
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">typedef</span><span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">site_structure_data</span><span class="plain-syntax"> {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">inter_package</span><span class="plain-syntax"> *</span><span class="identifier-syntax">main_package</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">package_request</span><span class="plain-syntax"> *</span><span class="identifier-syntax">main_request</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">inter_package</span><span class="plain-syntax"> *</span><span class="identifier-syntax">connectors_package</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">package_request</span><span class="plain-syntax"> *</span><span class="identifier-syntax">connectors_request</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">inter_package</span><span class="plain-syntax"> *</span><span class="identifier-syntax">architecture_package</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">package_request</span><span class="plain-syntax"> *</span><span class="identifier-syntax">architecture_request</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">inter_bookmark</span><span class="plain-syntax"> </span><span class="identifier-syntax">architecture_bookmark</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">dictionary</span><span class="plain-syntax"> *</span><span class="identifier-syntax">modules_indexed_by_name</span><span class="plain-syntax">; </span><span class="comment-syntax"> of </span><span class="extract"><span class="extract-syntax">module_request</span></span>
|
||||
<span class="plain-syntax">} </span><span class="reserved-syntax">site_structure_data</span><span class="plain-syntax">;</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>The structure site_structure_data is private to this section.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>§2. </b></p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">LargeScale::clear_data</span><button class="popup" onclick="togglePopup('usagePopup1')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup1">Usage of <span class="code-font"><span class="function-syntax">LargeScale::clear_data</span></span>:<br/>Building Module - <a href="1-bm.html#SP4">§4</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">building_site</span><span class="plain-syntax"> *</span><span class="identifier-syntax">B</span><span class="plain-syntax"> = &(</span><span class="identifier-syntax">I</span><span class="plain-syntax">-></span><span class="identifier-syntax">site</span><span class="plain-syntax">);</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">B</span><span class="plain-syntax">-></span><span class="element-syntax">strdata</span><span class="plain-syntax">.</span><span class="element-syntax">main_package</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">B</span><span class="plain-syntax">-></span><span class="element-syntax">strdata</span><span class="plain-syntax">.</span><span class="element-syntax">main_request</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">B</span><span class="plain-syntax">-></span><span class="element-syntax">strdata</span><span class="plain-syntax">.</span><span class="element-syntax">connectors_package</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">B</span><span class="plain-syntax">-></span><span class="element-syntax">strdata</span><span class="plain-syntax">.</span><span class="element-syntax">connectors_request</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">B</span><span class="plain-syntax">-></span><span class="element-syntax">strdata</span><span class="plain-syntax">.</span><span class="element-syntax">architecture_package</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">B</span><span class="plain-syntax">-></span><span class="element-syntax">strdata</span><span class="plain-syntax">.</span><span class="element-syntax">architecture_request</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">B</span><span class="plain-syntax">-></span><span class="element-syntax">strdata</span><span class="plain-syntax">.</span><span class="element-syntax">architecture_bookmark</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Inter::Bookmarks::at_start_of_this_repository</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">);</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">B</span><span class="plain-syntax">-></span><span class="element-syntax">strdata</span><span class="plain-syntax">.</span><span class="element-syntax">modules_indexed_by_name</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Dictionaries::new</span><span class="plain-syntax">(32, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP3" class="paragraph-anchor"></a><b>§3. </b>The three special packages <span class="extract"><span class="extract-syntax">main</span></span>, <span class="extract"><span class="extract-syntax">connectors</span></span> and <span class="extract"><span class="extract-syntax">architectural</span></span> will be
|
||||
created as needed. But we do not set the <span class="extract"><span class="extract-syntax">main_package</span></span>, <span class="extract"><span class="extract-syntax">connectors_package</span></span>
|
||||
or <span class="extract"><span class="extract-syntax">architecture_package</span></span> fields when they are created: instead we set these
|
||||
fields whenever we detect that a package now exists with the relevant names.
|
||||
This is so that the fields are correctly set even when an Inter tree is being
|
||||
redd in from an external file, rather than only when created anew in memory.
|
||||
</p>
|
||||
|
||||
<p class="commentary">It follows that <span class="extract"><span class="extract-syntax">main</span></span>, <span class="extract"><span class="extract-syntax">connectors</span></span> and <span class="extract"><span class="extract-syntax">architectural</span></span> are reserved package
|
||||
names, which cannot be used anywhere else in the tree.
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">LargeScale::note_package_name</span><span class="plain-syntax">(</span><span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">inter_package</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pack</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">N</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">N</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"main"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">I</span><span class="plain-syntax">-></span><span class="identifier-syntax">site</span><span class="plain-syntax">.</span><span class="element-syntax">strdata</span><span class="plain-syntax">.</span><span class="element-syntax">main_package</span><span class="plain-syntax"> = </span><span class="identifier-syntax">pack</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">N</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"connectors"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">I</span><span class="plain-syntax">-></span><span class="identifier-syntax">site</span><span class="plain-syntax">.</span><span class="element-syntax">strdata</span><span class="plain-syntax">.</span><span class="element-syntax">connectors_package</span><span class="plain-syntax"> = </span><span class="identifier-syntax">pack</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">N</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"architectural"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">I</span><span class="plain-syntax">-></span><span class="identifier-syntax">site</span><span class="plain-syntax">.</span><span class="element-syntax">strdata</span><span class="plain-syntax">.</span><span class="element-syntax">architecture_package</span><span class="plain-syntax"> = </span><span class="identifier-syntax">pack</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP4" class="paragraph-anchor"></a><b>§4. main. </b>Here are functions to read <span class="extract"><span class="extract-syntax">main</span></span>, possibly creating if necessary:
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="identifier-syntax">inter_package</span><span class="plain-syntax"> *</span><span class="function-syntax">LargeScale::main_package_if_it_exists</span><button class="popup" onclick="togglePopup('usagePopup2')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup2">Usage of <span class="code-font"><span class="function-syntax">LargeScale::main_package_if_it_exists</span></span>:<br/>Producing Inter - <a href="3-prd.html#SP2">§2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">I</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="plain-syntax">-></span><span class="identifier-syntax">site</span><span class="plain-syntax">.</span><span class="element-syntax">strdata</span><span class="plain-syntax">.</span><span class="element-syntax">main_package</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="identifier-syntax">inter_package</span><span class="plain-syntax"> *</span><span class="function-syntax">LargeScale::main_package</span><span class="plain-syntax">(</span><span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">I</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">I</span><span class="plain-syntax">-></span><span class="identifier-syntax">site</span><span class="plain-syntax">.</span><span class="element-syntax">strdata</span><span class="plain-syntax">.</span><span class="element-syntax">main_package</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><a href="1-pck.html#SP14" class="function-link"><span class="function-syntax">Packaging::incarnate</span></a><span class="plain-syntax">(</span><a href="1-ls.html#SP4" class="function-link"><span class="function-syntax">LargeScale::main_request</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="plain-syntax">-></span><span class="identifier-syntax">site</span><span class="plain-syntax">.</span><span class="element-syntax">strdata</span><span class="plain-syntax">.</span><span class="element-syntax">main_package</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">package_request</span><span class="plain-syntax"> *</span><span class="function-syntax">LargeScale::main_request</span><button class="popup" onclick="togglePopup('usagePopup3')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup3">Usage of <span class="code-font"><span class="function-syntax">LargeScale::main_request</span></span>:<br/><a href="1-ls.html#SP5">§5</a>, <a href="1-ls.html#SP6">§6</a>, <a href="1-ls.html#SP11">§11</a><br/>Packaging - <a href="1-pck.html#SP12">§12</a><br/>Producing Inter - <a href="3-prd.html#SP3">§3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">I</span><span class="plain-syntax">-></span><span class="identifier-syntax">site</span><span class="plain-syntax">.</span><span class="element-syntax">strdata</span><span class="plain-syntax">.</span><span class="element-syntax">main_request</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="plain-syntax">-></span><span class="identifier-syntax">site</span><span class="plain-syntax">.</span><span class="element-syntax">strdata</span><span class="plain-syntax">.</span><span class="element-syntax">main_request</span><span class="plain-syntax"> =</span>
|
||||
<span class="plain-syntax"> </span><a href="1-pck.html#SP3" class="function-link"><span class="function-syntax">Packaging::request</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><a href="1-in.html#SP5" class="function-link"><span class="function-syntax">InterNames::explicitly_named</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"main"</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">),</span>
|
||||
<span class="plain-syntax"> </span><a href="1-pt.html#SP1" class="function-link"><span class="function-syntax">PackageTypes::get</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"_plain"</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="plain-syntax">-></span><span class="identifier-syntax">site</span><span class="plain-syntax">.</span><span class="element-syntax">strdata</span><span class="plain-syntax">.</span><span class="element-syntax">main_request</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP5" class="paragraph-anchor"></a><b>§5. connectors. </b></p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="identifier-syntax">inter_package</span><span class="plain-syntax"> *</span><span class="function-syntax">LargeScale::connectors_package_if_it_exists</span><button class="popup" onclick="togglePopup('usagePopup4')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup4">Usage of <span class="code-font"><span class="function-syntax">LargeScale::connectors_package_if_it_exists</span></span>:<br/>Producing Inter - <a href="3-prd.html#SP2">§2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">I</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="plain-syntax">-></span><span class="identifier-syntax">site</span><span class="plain-syntax">.</span><span class="element-syntax">strdata</span><span class="plain-syntax">.</span><span class="element-syntax">connectors_package</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="identifier-syntax">inter_package</span><span class="plain-syntax"> *</span><span class="function-syntax">LargeScale::ensure_connectors_package</span><span class="plain-syntax">(</span><span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">I</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">I</span><span class="plain-syntax">-></span><span class="identifier-syntax">site</span><span class="plain-syntax">.</span><span class="element-syntax">strdata</span><span class="plain-syntax">.</span><span class="element-syntax">connectors_package</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><a href="1-pck.html#SP14" class="function-link"><span class="function-syntax">Packaging::incarnate</span></a><span class="plain-syntax">(</span><a href="1-ls.html#SP5" class="function-link"><span class="function-syntax">LargeScale::connectors_request</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">));</span>
|
||||
<span class="comment-syntax"> Inter::Packages::make_linklike(I->site.strdata.connectors_package);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="plain-syntax">-></span><span class="identifier-syntax">site</span><span class="plain-syntax">.</span><span class="element-syntax">strdata</span><span class="plain-syntax">.</span><span class="element-syntax">connectors_package</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">package_request</span><span class="plain-syntax"> *</span><span class="function-syntax">LargeScale::connectors_request</span><button class="popup" onclick="togglePopup('usagePopup5')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup5">Usage of <span class="code-font"><span class="function-syntax">LargeScale::connectors_request</span></span>:<br/>Inter Namespace - <a href="1-in.html#SP5">§5</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">I</span><span class="plain-syntax">-></span><span class="identifier-syntax">site</span><span class="plain-syntax">.</span><span class="element-syntax">strdata</span><span class="plain-syntax">.</span><span class="element-syntax">connectors_request</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="plain-syntax">-></span><span class="identifier-syntax">site</span><span class="plain-syntax">.</span><span class="element-syntax">strdata</span><span class="plain-syntax">.</span><span class="element-syntax">connectors_request</span><span class="plain-syntax"> =</span>
|
||||
<span class="plain-syntax"> </span><a href="1-pck.html#SP3" class="function-link"><span class="function-syntax">Packaging::request</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><a href="1-in.html#SP5" class="function-link"><span class="function-syntax">InterNames::explicitly_named</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"connectors"</span><span class="plain-syntax">, </span><a href="1-ls.html#SP4" class="function-link"><span class="function-syntax">LargeScale::main_request</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">)),</span>
|
||||
<span class="plain-syntax"> </span><a href="1-pt.html#SP1" class="function-link"><span class="function-syntax">PackageTypes::get</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"_linkage"</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="plain-syntax">-></span><span class="identifier-syntax">site</span><span class="plain-syntax">.</span><span class="element-syntax">strdata</span><span class="plain-syntax">.</span><span class="element-syntax">connectors_request</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP6" class="paragraph-anchor"></a><b>§6. architectural. </b>This is the only one of the big three which we put any material into in this
|
||||
section of code; so we need a bookmark for where that material goes.
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="identifier-syntax">inter_package</span><span class="plain-syntax"> *</span><span class="function-syntax">LargeScale::architecture_package_if_it_exists</span><span class="plain-syntax">(</span><span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">I</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="plain-syntax">-></span><span class="identifier-syntax">site</span><span class="plain-syntax">.</span><span class="element-syntax">strdata</span><span class="plain-syntax">.</span><span class="element-syntax">architecture_package</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="identifier-syntax">inter_package</span><span class="plain-syntax"> *</span><span class="function-syntax">LargeScale::architecture_package</span><button class="popup" onclick="togglePopup('usagePopup6')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup6">Usage of <span class="code-font"><span class="function-syntax">LargeScale::architecture_package</span></span>:<br/><a href="1-ls.html#SP7">§7</a>, <a href="1-ls.html#SP9">§9</a><br/>Emitting Inter Schemas - <a href="2-eis.html#SP2_1">§2.1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">I</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">I</span><span class="plain-syntax">-></span><span class="identifier-syntax">site</span><span class="plain-syntax">.</span><span class="element-syntax">strdata</span><span class="plain-syntax">.</span><span class="element-syntax">architecture_package</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><a href="1-pck.html#SP14" class="function-link"><span class="function-syntax">Packaging::incarnate</span></a><span class="plain-syntax">(</span><a href="1-ls.html#SP6" class="function-link"><span class="function-syntax">LargeScale::architecture_request</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="plain-syntax">-></span><span class="identifier-syntax">site</span><span class="plain-syntax">.</span><span class="element-syntax">strdata</span><span class="plain-syntax">.</span><span class="element-syntax">architecture_package</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">package_request</span><span class="plain-syntax"> *</span><span class="function-syntax">LargeScale::architecture_request</span><button class="popup" onclick="togglePopup('usagePopup7')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup7">Usage of <span class="code-font"><span class="function-syntax">LargeScale::architecture_request</span></span>:<br/>Hierarchy Locations - <a href="1-hl.html#SP2">§2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">I</span><span class="plain-syntax">-></span><span class="identifier-syntax">site</span><span class="plain-syntax">.</span><span class="element-syntax">strdata</span><span class="plain-syntax">.</span><span class="element-syntax">architecture_request</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="plain-syntax">-></span><span class="identifier-syntax">site</span><span class="plain-syntax">.</span><span class="element-syntax">strdata</span><span class="plain-syntax">.</span><span class="element-syntax">architecture_request</span><span class="plain-syntax"> =</span>
|
||||
<span class="plain-syntax"> </span><a href="1-pck.html#SP3" class="function-link"><span class="function-syntax">Packaging::request</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><a href="1-in.html#SP5" class="function-link"><span class="function-syntax">InterNames::explicitly_named</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"architectural"</span><span class="plain-syntax">, </span><a href="1-ls.html#SP4" class="function-link"><span class="function-syntax">LargeScale::main_request</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">)),</span>
|
||||
<span class="plain-syntax"> </span><a href="1-pt.html#SP1" class="function-link"><span class="function-syntax">PackageTypes::get</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"_linkage"</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">packaging_state</span><span class="plain-syntax"> </span><span class="identifier-syntax">save</span><span class="plain-syntax"> = </span><a href="1-pck.html#SP13" class="function-link"><span class="function-syntax">Packaging::enter</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">-></span><span class="identifier-syntax">site</span><span class="plain-syntax">.</span><span class="element-syntax">strdata</span><span class="plain-syntax">.</span><span class="element-syntax">architecture_request</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="plain-syntax">-></span><span class="identifier-syntax">site</span><span class="plain-syntax">.</span><span class="element-syntax">strdata</span><span class="plain-syntax">.</span><span class="element-syntax">architecture_bookmark</span><span class="plain-syntax"> = </span><a href="1-pck.html#SP11" class="function-link"><span class="function-syntax">Packaging::bubble</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-pck.html#SP13" class="function-link"><span class="function-syntax">Packaging::exit</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">save</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="plain-syntax">-></span><span class="identifier-syntax">site</span><span class="plain-syntax">.</span><span class="element-syntax">strdata</span><span class="plain-syntax">.</span><span class="element-syntax">architecture_request</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP7" class="paragraph-anchor"></a><b>§7. </b>There are two sorts of constant in <span class="extract"><span class="extract-syntax">architectural</span></span>. One set is created only
|
||||
on demand: if you look for <span class="extract"><span class="extract-syntax">#grammar_table</span></span> you will find it, but if you never
|
||||
look then it will never exist. These are used only for a handful of values
|
||||
which are redefined by the <a href="../final-module/index.html" class="internal">final</a> code-generator anyway: here we define
|
||||
them as 0 — meaninglessly, but they have to be set to something. They are
|
||||
not, in fact, all constants — <span class="extract"><span class="extract-syntax">self</span></span> is a variable at runtime — but again,
|
||||
it's for the code-generator to define them as it would like, on a platform
|
||||
by platform basis.
|
||||
</p>
|
||||
|
||||
<p class="commentary">Such symbols are the only ones given the <span class="extract"><span class="extract-syntax">VENEER_IANN</span></span> annotation; the term
|
||||
veneer alludes to Inform 6's practice of creating a few built-in definitions
|
||||
which form the "veneer" of the story file it is generating.
|
||||
</p>
|
||||
|
||||
<p class="commentary">For speed, the names of the permitted veneer symbols are stored in a dictionary.
|
||||
(This may not in fact be worth the overhead any longer: at one time there were
|
||||
many more of these.)
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="identifier-syntax">dictionary</span><span class="plain-syntax"> *</span><span class="identifier-syntax">create_these_architectural_symbols_on_demand</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="identifier-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="function-syntax">LargeScale::find_architectural_symbol</span><button class="popup" onclick="togglePopup('usagePopup8')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup8">Usage of <span class="code-font"><span class="function-syntax">LargeScale::find_architectural_symbol</span></span>:<br/>Emitting Inter Schemas - <a href="2-eis.html#SP3_10_1">§3.10.1</a>, <a href="2-eis.html#SP4">§4</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">N</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">uks</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_package</span><span class="plain-syntax"> *</span><span class="identifier-syntax">arch</span><span class="plain-syntax"> = </span><a href="1-ls.html#SP6" class="function-link"><span class="function-syntax">LargeScale::architecture_package</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_symbols_table</span><span class="plain-syntax"> *</span><span class="identifier-syntax">tab</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Inter::Packages::scope</span><span class="plain-syntax">(</span><span class="identifier-syntax">arch</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">S</span><span class="plain-syntax"> = </span><span class="identifier-syntax">InterSymbolsTables::symbol_from_name</span><span class="plain-syntax">(</span><span class="identifier-syntax">tab</span><span class="plain-syntax">, </span><span class="identifier-syntax">N</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">S</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">create_these_architectural_symbols_on_demand</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">create_these_architectural_symbols_on_demand</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Dictionaries::new</span><span class="plain-syntax">(16, </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Dictionaries::create</span><span class="plain-syntax">(</span><span class="identifier-syntax">create_these_architectural_symbols_on_demand</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"#dictionary_table"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Dictionaries::create</span><span class="plain-syntax">(</span><span class="identifier-syntax">create_these_architectural_symbols_on_demand</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"#actions_table"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Dictionaries::create</span><span class="plain-syntax">(</span><span class="identifier-syntax">create_these_architectural_symbols_on_demand</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"#grammar_table"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Dictionaries::create</span><span class="plain-syntax">(</span><span class="identifier-syntax">create_these_architectural_symbols_on_demand</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"self"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Dictionaries::create</span><span class="plain-syntax">(</span><span class="identifier-syntax">create_these_architectural_symbols_on_demand</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Routine"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Dictionaries::create</span><span class="plain-syntax">(</span><span class="identifier-syntax">create_these_architectural_symbols_on_demand</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"String"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Dictionaries::create</span><span class="plain-syntax">(</span><span class="identifier-syntax">create_these_architectural_symbols_on_demand</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Class"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Dictionaries::create</span><span class="plain-syntax">(</span><span class="identifier-syntax">create_these_architectural_symbols_on_demand</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Object"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Dictionaries::find</span><span class="plain-syntax">(</span><span class="identifier-syntax">create_these_architectural_symbols_on_demand</span><span class="plain-syntax">, </span><span class="identifier-syntax">N</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">S</span><span class="plain-syntax"> = </span><a href="1-ls.html#SP9" class="function-link"><span class="function-syntax">LargeScale::arch_constant</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">N</span><span class="plain-syntax">, </span><span class="identifier-syntax">uks</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Inter::Symbols::annotate_i</span><span class="plain-syntax">(</span><span class="identifier-syntax">S</span><span class="plain-syntax">, </span><span class="identifier-syntax">VENEER_IANN</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">S</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP8" class="paragraph-anchor"></a><b>§8. </b>The other architectural constants are the ones depending on the architecture
|
||||
being compiled to. These always exist, and their values are known at compile time.
|
||||
</p>
|
||||
|
||||
<p class="commentary">They mostly have obvious meanings, but a few notes:
|
||||
</p>
|
||||
|
||||
<ul class="items"><li>(1) <span class="extract"><span class="extract-syntax">WORDSIZE</span></span> is the number of bytes in a word.
|
||||
</li><li>(2) <span class="extract"><span class="extract-syntax">NULL</span></span>, in our runtime, is -1, and not 0 as it would be in C.
|
||||
</li><li>(3) <span class="extract"><span class="extract-syntax">IMPROBABLE_VALUE</span></span> is one which is unlikely even if possible to be a
|
||||
genuine I7 value. The efficiency of runtime code handling tables depends on
|
||||
how well chosen this is: it would ran badly if we chose 1, for instance.
|
||||
</li><li>(4) Exactly one of the symbols <span class="extract"><span class="extract-syntax">TARGET_ZCODE</span></span> or <span class="extract"><span class="extract-syntax">TARGET_GLULX</span></span> is defined,
|
||||
and given the notional value 1, though its only purpose is to enable conditional
|
||||
compilation to work (see <a href="../pipeline-module/3-rccs.html" class="internal">Resolve Conditional Compilation Stage (in pipeline)</a>);
|
||||
so its importance is whether or not it is defined, not what value it has. Note
|
||||
that these names are now a little anachronistic, and they should perhaps be
|
||||
renamed <span class="extract"><span class="extract-syntax">TARGET_16BIT</span></span> and <span class="extract"><span class="extract-syntax">TARGET_32BIT</span></span> respectively. For example, C code
|
||||
can happily be generated from an Inter tree containing <span class="extract"><span class="extract-syntax">TARGET_GLULX</span></span>, even
|
||||
though that code will never produce a program running on the Glulx VM.
|
||||
</li><li>(5) And similarly for <span class="extract"><span class="extract-syntax">DEBUG</span></span>, which again exists to enable conditional
|
||||
compilation when building kits.
|
||||
</li></ul>
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">LargeScale::make_architectural_definitions</span><span class="plain-syntax">(</span><span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_architecture</span><span class="plain-syntax"> *</span><span class="identifier-syntax">current_architecture</span><span class="plain-syntax">, </span><span class="identifier-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">uks</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">current_architecture</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"no architecture set"</span><span class="plain-syntax">);</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Architectures::is_16_bit</span><span class="plain-syntax">(</span><span class="identifier-syntax">current_architecture</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ls.html#SP9" class="function-link"><span class="function-syntax">LargeScale::arch_constant</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"WORDSIZE"</span><span class="plain-syntax">, </span><span class="identifier-syntax">uks</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ls.html#SP9" class="function-link"><span class="function-syntax">LargeScale::arch_constant_hex</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"NULL"</span><span class="plain-syntax">, </span><span class="identifier-syntax">uks</span><span class="plain-syntax">, </span><span class="constant-syntax">0xffff</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ls.html#SP9" class="function-link"><span class="function-syntax">LargeScale::arch_constant_hex</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"WORD_HIGHBIT"</span><span class="plain-syntax">, </span><span class="identifier-syntax">uks</span><span class="plain-syntax">, </span><span class="constant-syntax">0x8000</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ls.html#SP9" class="function-link"><span class="function-syntax">LargeScale::arch_constant_hex</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"WORD_NEXTTOHIGHBIT"</span><span class="plain-syntax">, </span><span class="identifier-syntax">uks</span><span class="plain-syntax">, </span><span class="constant-syntax">0x4000</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ls.html#SP9" class="function-link"><span class="function-syntax">LargeScale::arch_constant_hex</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"IMPROBABLE_VALUE"</span><span class="plain-syntax">, </span><span class="identifier-syntax">uks</span><span class="plain-syntax">, </span><span class="constant-syntax">0x7fe3</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ls.html#SP9" class="function-link"><span class="function-syntax">LargeScale::arch_constant</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"MAX_POSITIVE_NUMBER"</span><span class="plain-syntax">, </span><span class="identifier-syntax">uks</span><span class="plain-syntax">, </span><span class="constant-syntax">32767</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ls.html#SP9" class="function-link"><span class="function-syntax">LargeScale::arch_constant_signed</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"MIN_NEGATIVE_NUMBER"</span><span class="plain-syntax">, </span><span class="identifier-syntax">uks</span><span class="plain-syntax">, -32768);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ls.html#SP9" class="function-link"><span class="function-syntax">LargeScale::arch_constant</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"TARGET_ZCODE"</span><span class="plain-syntax">, </span><span class="identifier-syntax">uks</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ls.html#SP9" class="function-link"><span class="function-syntax">LargeScale::arch_constant</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"WORDSIZE"</span><span class="plain-syntax">, </span><span class="identifier-syntax">uks</span><span class="plain-syntax">, </span><span class="constant-syntax">4</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ls.html#SP9" class="function-link"><span class="function-syntax">LargeScale::arch_constant_hex</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"NULL"</span><span class="plain-syntax">, </span><span class="identifier-syntax">uks</span><span class="plain-syntax">, </span><span class="constant-syntax">0xffffffff</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ls.html#SP9" class="function-link"><span class="function-syntax">LargeScale::arch_constant_hex</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"WORD_HIGHBIT"</span><span class="plain-syntax">, </span><span class="identifier-syntax">uks</span><span class="plain-syntax">, </span><span class="constant-syntax">0x80000000</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ls.html#SP9" class="function-link"><span class="function-syntax">LargeScale::arch_constant_hex</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"WORD_NEXTTOHIGHBIT"</span><span class="plain-syntax">, </span><span class="identifier-syntax">uks</span><span class="plain-syntax">, </span><span class="constant-syntax">0x40000000</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ls.html#SP9" class="function-link"><span class="function-syntax">LargeScale::arch_constant_hex</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"IMPROBABLE_VALUE"</span><span class="plain-syntax">, </span><span class="identifier-syntax">uks</span><span class="plain-syntax">, </span><span class="constant-syntax">0xdeadce11</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ls.html#SP9" class="function-link"><span class="function-syntax">LargeScale::arch_constant</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"MAX_POSITIVE_NUMBER"</span><span class="plain-syntax">, </span><span class="identifier-syntax">uks</span><span class="plain-syntax">, </span><span class="constant-syntax">2147483647</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ls.html#SP9" class="function-link"><span class="function-syntax">LargeScale::arch_constant_signed</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"MIN_NEGATIVE_NUMBER"</span><span class="plain-syntax">, </span><span class="identifier-syntax">uks</span><span class="plain-syntax">, -2147483648);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ls.html#SP9" class="function-link"><span class="function-syntax">LargeScale::arch_constant</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"TARGET_GLULX"</span><span class="plain-syntax">, </span><span class="identifier-syntax">uks</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Architectures::debug_enabled</span><span class="plain-syntax">(</span><span class="identifier-syntax">current_architecture</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ls.html#SP9" class="function-link"><span class="function-syntax">LargeScale::arch_constant</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"DEBUG"</span><span class="plain-syntax">, </span><span class="identifier-syntax">uks</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP9" class="paragraph-anchor"></a><b>§9. </b>The functions above use the following tiny API to create architectural constants:
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="identifier-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="function-syntax">LargeScale::arch_constant</span><button class="popup" onclick="togglePopup('usagePopup9')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup9">Usage of <span class="code-font"><span class="function-syntax">LargeScale::arch_constant</span></span>:<br/><a href="1-ls.html#SP7">§7</a>, <a href="1-ls.html#SP8">§8</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">N</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">uks</span><span class="plain-syntax">, </span><span class="identifier-syntax">inter_ti</span><span class="plain-syntax"> </span><span class="identifier-syntax">val</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_package</span><span class="plain-syntax"> *</span><span class="identifier-syntax">arch</span><span class="plain-syntax"> = </span><a href="1-ls.html#SP6" class="function-link"><span class="function-syntax">LargeScale::architecture_package</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_symbols_table</span><span class="plain-syntax"> *</span><span class="identifier-syntax">tab</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Inter::Packages::scope</span><span class="plain-syntax">(</span><span class="identifier-syntax">arch</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">S</span><span class="plain-syntax"> = </span><span class="identifier-syntax">InterSymbolsTables::symbol_from_name_creating</span><span class="plain-syntax">(</span><span class="identifier-syntax">tab</span><span class="plain-syntax">, </span><span class="identifier-syntax">N</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Inter::Symbols::annotate_i</span><span class="plain-syntax">(</span><span class="identifier-syntax">S</span><span class="plain-syntax">, </span><span class="identifier-syntax">ARCHITECTURAL_IANN</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_bookmark</span><span class="plain-syntax"> *</span><span class="identifier-syntax">IBM</span><span class="plain-syntax"> = &(</span><span class="identifier-syntax">I</span><span class="plain-syntax">-></span><span class="identifier-syntax">site</span><span class="plain-syntax">.</span><span class="element-syntax">strdata</span><span class="plain-syntax">.</span><span class="element-syntax">architecture_bookmark</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="3-prd.html#SP2" class="function-link"><span class="function-syntax">Produce::guard</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">Inter::Constant::new_numerical</span><span class="plain-syntax">(</span><span class="identifier-syntax">IBM</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">InterSymbolsTables::id_from_symbol</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">arch</span><span class="plain-syntax">, </span><span class="identifier-syntax">S</span><span class="plain-syntax">),</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">InterSymbolsTables::id_from_symbol</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">arch</span><span class="plain-syntax">, </span><span class="identifier-syntax">uks</span><span class="plain-syntax">),</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LITERAL_IVAL</span><span class="plain-syntax">, </span><span class="identifier-syntax">val</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> (</span><span class="identifier-syntax">inter_ti</span><span class="plain-syntax">) </span><span class="identifier-syntax">Inter::Bookmarks::baseline</span><span class="plain-syntax">(</span><span class="identifier-syntax">IBM</span><span class="plain-syntax">) + </span><span class="constant-syntax">1</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">S</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="identifier-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="function-syntax">LargeScale::arch_constant_hex</span><button class="popup" onclick="togglePopup('usagePopup10')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup10">Usage of <span class="code-font"><span class="function-syntax">LargeScale::arch_constant_hex</span></span>:<br/><a href="1-ls.html#SP8">§8</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">N</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">uks</span><span class="plain-syntax">, </span><span class="identifier-syntax">inter_ti</span><span class="plain-syntax"> </span><span class="identifier-syntax">val</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">S</span><span class="plain-syntax"> = </span><a href="1-ls.html#SP9" class="function-link"><span class="function-syntax">LargeScale::arch_constant</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">N</span><span class="plain-syntax">, </span><span class="identifier-syntax">uks</span><span class="plain-syntax">, </span><span class="identifier-syntax">val</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Inter::Symbols::annotate_i</span><span class="plain-syntax">(</span><span class="identifier-syntax">S</span><span class="plain-syntax">, </span><span class="identifier-syntax">HEX_IANN</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">S</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="identifier-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="function-syntax">LargeScale::arch_constant_signed</span><button class="popup" onclick="togglePopup('usagePopup11')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup11">Usage of <span class="code-font"><span class="function-syntax">LargeScale::arch_constant_signed</span></span>:<br/><a href="1-ls.html#SP8">§8</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">N</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">uks</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">val</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">S</span><span class="plain-syntax"> = </span><a href="1-ls.html#SP9" class="function-link"><span class="function-syntax">LargeScale::arch_constant</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">N</span><span class="plain-syntax">, </span><span class="identifier-syntax">uks</span><span class="plain-syntax">, (</span><span class="identifier-syntax">inter_ti</span><span class="plain-syntax">) </span><span class="identifier-syntax">val</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Inter::Symbols::annotate_i</span><span class="plain-syntax">(</span><span class="identifier-syntax">S</span><span class="plain-syntax">, </span><span class="identifier-syntax">SIGNED_IANN</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">S</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP10" class="paragraph-anchor"></a><b>§10. Modules. </b>Modules are identified by name, and each one produces an instance of the
|
||||
following.
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">typedef</span><span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">module_request</span><span class="plain-syntax"> {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">package_request</span><span class="plain-syntax"> *</span><span class="identifier-syntax">where_found</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">linked_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">submodules</span><span class="plain-syntax">; </span><span class="comment-syntax"> of </span><span class="extract"><span class="extract-syntax">submodule_request</span></span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">CLASS_DEFINITION</span>
|
||||
<span class="plain-syntax">} </span><span class="reserved-syntax">module_request</span><span class="plain-syntax">;</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>The structure module_request is private to this section.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP11" class="paragraph-anchor"></a><b>§11. </b>The tree's module dictionary is used to ensure that repeated calls with the
|
||||
same module name return the same <span class="extract"><span class="extract-syntax">module_request</span></span>.
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">module_request</span><span class="plain-syntax"> *</span><span class="function-syntax">LargeScale::module_request</span><button class="popup" onclick="togglePopup('usagePopup12')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup12">Usage of <span class="code-font"><span class="function-syntax">LargeScale::module_request</span></span>:<br/><a href="1-ls.html#SP13">§13</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">name</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">dictionary</span><span class="plain-syntax"> *</span><span class="identifier-syntax">D</span><span class="plain-syntax"> = </span><span class="identifier-syntax">I</span><span class="plain-syntax">-></span><span class="identifier-syntax">site</span><span class="plain-syntax">.</span><span class="element-syntax">strdata</span><span class="plain-syntax">.</span><span class="element-syntax">modules_indexed_by_name</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Dictionaries::find</span><span class="plain-syntax">(</span><span class="identifier-syntax">D</span><span class="plain-syntax">, </span><span class="identifier-syntax">name</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> (</span><span class="reserved-syntax">module_request</span><span class="plain-syntax"> *) </span><span class="identifier-syntax">Dictionaries::read_value</span><span class="plain-syntax">(</span><span class="identifier-syntax">D</span><span class="plain-syntax">, </span><span class="identifier-syntax">name</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">module_request</span><span class="plain-syntax"> *</span><span class="identifier-syntax">new_module</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CREATE</span><span class="plain-syntax">(</span><span class="reserved-syntax">module_request</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">new_module</span><span class="plain-syntax">-></span><span class="element-syntax">where_found</span><span class="plain-syntax"> =</span>
|
||||
<span class="plain-syntax"> </span><a href="1-pck.html#SP3" class="function-link"><span class="function-syntax">Packaging::request</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><a href="1-in.html#SP5" class="function-link"><span class="function-syntax">InterNames::explicitly_named</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">name</span><span class="plain-syntax">, </span><a href="1-ls.html#SP4" class="function-link"><span class="function-syntax">LargeScale::main_request</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">)),</span>
|
||||
<span class="plain-syntax"> </span><a href="1-pt.html#SP1" class="function-link"><span class="function-syntax">PackageTypes::get</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"_module"</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">new_module</span><span class="plain-syntax">-></span><span class="element-syntax">submodules</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NEW_LINKED_LIST</span><span class="plain-syntax">(</span><span class="reserved-syntax">submodule_request</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Dictionaries::create</span><span class="plain-syntax">(</span><span class="identifier-syntax">D</span><span class="plain-syntax">, </span><span class="identifier-syntax">name</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Dictionaries::write_value</span><span class="plain-syntax">(</span><span class="identifier-syntax">D</span><span class="plain-syntax">, </span><span class="identifier-syntax">name</span><span class="plain-syntax">, (</span><span class="reserved-syntax">void</span><span class="plain-syntax"> *) </span><span class="identifier-syntax">new_module</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">new_module</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP12" class="paragraph-anchor"></a><b>§12. Submodules. </b>The idea here is that each module could define, say, some variables, placing
|
||||
them in a submodule for that purpose. As a result, there will be a "variables only"
|
||||
submodule found in several modules. Such flavours of submodule are preset —
|
||||
we allow only a few of these: see <a href="../runtime-module/2-hrr.html" class="internal">Hierarchy (in runtime)</a> for the set used by
|
||||
<a href="../inform7/index.html" class="internal">inform7</a> — and they must be specified in advance of use, with the following.
|
||||
</p>
|
||||
|
||||
<p class="commentary">For the moment, at least, <span class="extract"><span class="extract-syntax">submodule_identity</span></span> is really just a textual name
|
||||
like <span class="extract"><span class="extract-syntax">variables</span></span> but in a fancy wrapper.
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">typedef</span><span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">submodule_identity</span><span class="plain-syntax"> {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">submodule_name</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">CLASS_DEFINITION</span>
|
||||
<span class="plain-syntax">} </span><span class="reserved-syntax">submodule_identity</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="reserved-syntax">submodule_identity</span><span class="plain-syntax"> *</span><span class="function-syntax">LargeScale::register_submodule_identity</span><span class="plain-syntax">(</span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">name</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">submodule_identity</span><span class="plain-syntax"> *</span><span class="identifier-syntax">sid</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER</span><span class="plain-syntax">(</span><span class="identifier-syntax">sid</span><span class="plain-syntax">, </span><span class="reserved-syntax">submodule_identity</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">sid</span><span class="plain-syntax">-></span><span class="element-syntax">submodule_name</span><span class="plain-syntax">, </span><span class="identifier-syntax">name</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">sid</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">sid</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CREATE</span><span class="plain-syntax">(</span><span class="reserved-syntax">submodule_identity</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">sid</span><span class="plain-syntax">-></span><span class="element-syntax">submodule_name</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Str::duplicate</span><span class="plain-syntax">(</span><span class="identifier-syntax">name</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">sid</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>The structure submodule_identity is private to this section.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP13" class="paragraph-anchor"></a><b>§13. </b>Armed with such an identity, the following can be called to return the relevant
|
||||
submodule of a given module, creating it if it does not already exist.
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">package_request</span><span class="plain-syntax"> *</span><span class="function-syntax">LargeScale::generic_submodule</span><button class="popup" onclick="togglePopup('usagePopup13')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup13">Usage of <span class="code-font"><span class="function-syntax">LargeScale::generic_submodule</span></span>:<br/>Hierarchy Locations - <a href="1-hl.html#SP2">§2</a>, <a href="1-hl.html#SP5">§5</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="reserved-syntax">submodule_identity</span><span class="plain-syntax"> *</span><span class="identifier-syntax">sid</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="1-ls.html#SP14" class="function-link"><span class="function-syntax">LargeScale::request_submodule_of</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><a href="1-ls.html#SP11" class="function-link"><span class="function-syntax">LargeScale::module_request</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"generic"</span><span class="plain-syntax">), </span><span class="identifier-syntax">sid</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">package_request</span><span class="plain-syntax"> *</span><span class="function-syntax">LargeScale::synoptic_submodule</span><button class="popup" onclick="togglePopup('usagePopup14')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup14">Usage of <span class="code-font"><span class="function-syntax">LargeScale::synoptic_submodule</span></span>:<br/>Hierarchy Locations - <a href="1-hl.html#SP2">§2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="reserved-syntax">submodule_identity</span><span class="plain-syntax"> *</span><span class="identifier-syntax">sid</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="1-ls.html#SP14" class="function-link"><span class="function-syntax">LargeScale::request_submodule_of</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><a href="1-ls.html#SP11" class="function-link"><span class="function-syntax">LargeScale::module_request</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"synoptic"</span><span class="plain-syntax">), </span><span class="identifier-syntax">sid</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">package_request</span><span class="plain-syntax"> *</span><span class="function-syntax">LargeScale::completion_submodule</span><button class="popup" onclick="togglePopup('usagePopup15')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup15">Usage of <span class="code-font"><span class="function-syntax">LargeScale::completion_submodule</span></span>:<br/>Hierarchy Locations - <a href="1-hl.html#SP2">§2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="reserved-syntax">submodule_identity</span><span class="plain-syntax"> *</span><span class="identifier-syntax">sid</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="1-ls.html#SP14" class="function-link"><span class="function-syntax">LargeScale::request_submodule_of</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><a href="1-ls.html#SP11" class="function-link"><span class="function-syntax">LargeScale::module_request</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"completion"</span><span class="plain-syntax">), </span><span class="identifier-syntax">sid</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP14" class="paragraph-anchor"></a><b>§14. </b>Those in turn all make use of this back-end function:
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">typedef</span><span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">submodule_request</span><span class="plain-syntax"> {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">package_request</span><span class="plain-syntax"> *</span><span class="identifier-syntax">where_found</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">submodule_identity</span><span class="plain-syntax"> *</span><span class="identifier-syntax">which_submodule</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">CLASS_DEFINITION</span>
|
||||
<span class="plain-syntax">} </span><span class="reserved-syntax">submodule_request</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="reserved-syntax">package_request</span><span class="plain-syntax"> *</span><span class="function-syntax">LargeScale::request_submodule_of</span><button class="popup" onclick="togglePopup('usagePopup16')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup16">Usage of <span class="code-font"><span class="function-syntax">LargeScale::request_submodule_of</span></span>:<br/><a href="1-ls.html#SP13">§13</a><br/>Hierarchy Locations - <a href="1-hl.html#SP5">§5</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="reserved-syntax">module_request</span><span class="plain-syntax"> *</span><span class="identifier-syntax">M</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">submodule_identity</span><span class="plain-syntax"> *</span><span class="identifier-syntax">sid</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">submodule_request</span><span class="plain-syntax"> *</span><span class="identifier-syntax">sr</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER_LINKED_LIST</span><span class="plain-syntax">(</span><span class="identifier-syntax">sr</span><span class="plain-syntax">, </span><span class="reserved-syntax">submodule_request</span><span class="plain-syntax">, </span><span class="identifier-syntax">M</span><span class="plain-syntax">-></span><span class="element-syntax">submodules</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">sid</span><span class="plain-syntax"> == </span><span class="identifier-syntax">sr</span><span class="plain-syntax">-></span><span class="element-syntax">which_submodule</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">sr</span><span class="plain-syntax">-></span><span class="element-syntax">where_found</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">iname</span><span class="plain-syntax"> = </span><a href="1-in.html#SP5" class="function-link"><span class="function-syntax">InterNames::explicitly_named</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">sid</span><span class="plain-syntax">-></span><span class="element-syntax">submodule_name</span><span class="plain-syntax">, </span><span class="identifier-syntax">M</span><span class="plain-syntax">-></span><span class="element-syntax">where_found</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">sr</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CREATE</span><span class="plain-syntax">(</span><span class="reserved-syntax">submodule_request</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">sr</span><span class="plain-syntax">-></span><span class="element-syntax">which_submodule</span><span class="plain-syntax"> = </span><span class="identifier-syntax">sid</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">sr</span><span class="plain-syntax">-></span><span class="element-syntax">where_found</span><span class="plain-syntax"> = </span><a href="1-pck.html#SP3" class="function-link"><span class="function-syntax">Packaging::request</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">iname</span><span class="plain-syntax">, </span><a href="1-pt.html#SP1" class="function-link"><span class="function-syntax">PackageTypes::get</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"_submodule"</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ADD_TO_LINKED_LIST</span><span class="plain-syntax">(</span><span class="identifier-syntax">sr</span><span class="plain-syntax">, </span><span class="reserved-syntax">submodule_request</span><span class="plain-syntax">, </span><span class="identifier-syntax">M</span><span class="plain-syntax">-></span><span class="element-syntax">submodules</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">sr</span><span class="plain-syntax">-></span><span class="element-syntax">where_found</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>The structure submodule_request is private to this section.</li></ul>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="1-bm.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresscurrentchapter">1</li><li class="progresssection"><a href="1-bm.html">bm</a></li><li class="progresscurrent">ls</li><li class="progresssection"><a href="1-ip.html">ip</a></li><li class="progresssection"><a href="1-hl.html">hl</a></li><li class="progresssection"><a href="1-trn.html">trn</a></li><li class="progresssection"><a href="1-pck.html">pck</a></li><li class="progresssection"><a href="1-pt.html">pt</a></li><li class="progresssection"><a href="1-in.html">in</a></li><li class="progresschapter"><a href="2-is.html">2</a></li><li class="progresschapter"><a href="3-prd.html">3</a></li><li class="progressnext"><a href="1-ip.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -73,7 +73,7 @@ function togglePopup(material_id) {
|
|||
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../compiler.html">Inter Modules</a></li><li><a href="index.html">building</a></li><li><a href="index.html#1">Chapter 1: Architecture</a></li><li><b>Packaging</b></li></ul></div>
|
||||
<p class="purpose">To manage requests to build Inter packages, and then to generate inames within them; and to create modules and submodules.</p>
|
||||
|
||||
<ul class="toc"><li><a href="1-pck.html#SP2">§2. Package requests</a></li><li><a href="1-pck.html#SP11">§11. Bubbles</a></li><li><a href="1-pck.html#SP12">§12. Outside the packages</a></li><li><a href="1-pck.html#SP13">§13. Entry and exit</a></li><li><a href="1-pck.html#SP14">§14. Incarnation</a></li><li><a href="1-pck.html#SP15">§15. Modules</a></li><li><a href="1-pck.html#SP16">§16. Submodules</a></li><li><a href="1-pck.html#SP19">§19. Functions</a></li></ul><hr class="tocbar">
|
||||
<ul class="toc"><li><a href="1-pck.html#SP2">§2. Package requests</a></li><li><a href="1-pck.html#SP11">§11. Bubbles</a></li><li><a href="1-pck.html#SP12">§12. Outside the packages</a></li><li><a href="1-pck.html#SP13">§13. Entry and exit</a></li><li><a href="1-pck.html#SP14">§14. Incarnation</a></li><li><a href="1-pck.html#SP15">§15. Functions</a></li></ul><hr class="tocbar">
|
||||
|
||||
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>§1. </b>The maximum here is beyond plenty: it's not the maximum hierarchical depth
|
||||
of the Inter output, it's the maximum number of times that Inform interrupts
|
||||
|
@ -96,18 +96,34 @@ itself during compilation.
|
|||
<span class="plain-syntax"> #</span><span class="identifier-syntax">define</span><span class="plain-syntax"> </span><span class="identifier-syntax">NO_DEFINED_HAP_VALUES</span><span class="plain-syntax"> </span><span class="constant-syntax">1</span>
|
||||
<span class="plain-syntax"> #</span><span class="identifier-syntax">endif</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">hierarchy_attachment_point</span><span class="plain-syntax"> *</span><span class="identifier-syntax">haps_indexed_by_id</span><span class="plain-syntax">[</span><span class="identifier-syntax">NO_DEFINED_HAP_VALUES</span><span class="plain-syntax">];</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">dictionary</span><span class="plain-syntax"> *</span><span class="identifier-syntax">modules_indexed_by_name</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">inter_bookmark</span><span class="plain-syntax"> </span><span class="identifier-syntax">pragmas_bookmark</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">inter_bookmark</span><span class="plain-syntax"> </span><span class="identifier-syntax">package_types_bookmark</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">} </span><span class="reserved-syntax">site_packaging_data</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Packaging::clear_pdata</span><button class="popup" onclick="togglePopup('usagePopup1')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup1">Usage of <span class="code-font"><span class="function-syntax">Packaging::clear_pdata</span></span>:<br/>Building Site - <a href="1-bs.html#SP2">§2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Packaging::clear_pdata</span><button class="popup" onclick="togglePopup('usagePopup1')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup1">Usage of <span class="code-font"><span class="function-syntax">Packaging::clear_pdata</span></span>:<br/>Building Module - <a href="1-bm.html#SP4">§4</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">building_site</span><span class="plain-syntax"> *</span><span class="identifier-syntax">B</span><span class="plain-syntax"> = &(</span><span class="identifier-syntax">I</span><span class="plain-syntax">-></span><span class="identifier-syntax">site</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">B</span><span class="plain-syntax">-></span><span class="element-syntax">spdata</span><span class="plain-syntax">.</span><span class="element-syntax">current_state</span><span class="plain-syntax"> = </span><a href="1-pck.html#SP7" class="function-link"><span class="function-syntax">Packaging::stateless</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">B</span><span class="plain-syntax">-></span><span class="element-syntax">spdata</span><span class="plain-syntax">.</span><span class="element-syntax">packaging_entry_sp</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax">=0; </span><span class="identifier-syntax">i</span><span class="plain-syntax"><</span><span class="identifier-syntax">NO_DEFINED_HL_VALUES</span><span class="plain-syntax">; </span><span class="identifier-syntax">i</span><span class="plain-syntax">++) </span><span class="identifier-syntax">B</span><span class="plain-syntax">-></span><span class="element-syntax">spdata</span><span class="plain-syntax">.</span><span class="element-syntax">hls_indexed_by_id</span><span class="plain-syntax">[</span><span class="identifier-syntax">i</span><span class="plain-syntax">] = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">B</span><span class="plain-syntax">-></span><span class="element-syntax">spdata</span><span class="plain-syntax">.</span><span class="element-syntax">hls_indexed_by_name</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Dictionaries::new</span><span class="plain-syntax">(512, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax">=0; </span><span class="identifier-syntax">i</span><span class="plain-syntax"><</span><span class="identifier-syntax">NO_DEFINED_HAP_VALUES</span><span class="plain-syntax">; </span><span class="identifier-syntax">i</span><span class="plain-syntax">++) </span><span class="identifier-syntax">B</span><span class="plain-syntax">-></span><span class="element-syntax">spdata</span><span class="plain-syntax">.</span><span class="element-syntax">haps_indexed_by_id</span><span class="plain-syntax">[</span><span class="identifier-syntax">i</span><span class="plain-syntax">] = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">B</span><span class="plain-syntax">-></span><span class="element-syntax">spdata</span><span class="plain-syntax">.</span><span class="element-syntax">modules_indexed_by_name</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><a href="1-pck.html#SP10" class="function-link"><span class="function-syntax">Packaging::initialise_state</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">);</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">B</span><span class="plain-syntax">-></span><span class="element-syntax">spdata</span><span class="plain-syntax">.</span><span class="element-syntax">pragmas_bookmark</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Inter::Bookmarks::at_start_of_this_repository</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">B</span><span class="plain-syntax">-></span><span class="element-syntax">spdata</span><span class="plain-syntax">.</span><span class="element-syntax">package_types_bookmark</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Inter::Bookmarks::at_start_of_this_repository</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="identifier-syntax">inter_bookmark</span><span class="plain-syntax"> *</span><span class="function-syntax">Packaging::pragmas</span><button class="popup" onclick="togglePopup('usagePopup2')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup2">Usage of <span class="code-font"><span class="function-syntax">Packaging::pragmas</span></span>:<br/>Inter Primitives - <a href="1-ip.html#SP4">§4</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> &(</span><span class="identifier-syntax">I</span><span class="plain-syntax">-></span><span class="identifier-syntax">site</span><span class="plain-syntax">.</span><span class="element-syntax">spdata</span><span class="plain-syntax">.</span><span class="element-syntax">pragmas_bookmark</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Packaging::set_pragmas</span><button class="popup" onclick="togglePopup('usagePopup3')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup3">Usage of <span class="code-font"><span class="function-syntax">Packaging::set_pragmas</span></span>:<br/><a href="1-pck.html#SP12">§12</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">inter_bookmark</span><span class="plain-syntax"> </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="plain-syntax">-></span><span class="identifier-syntax">site</span><span class="plain-syntax">.</span><span class="element-syntax">spdata</span><span class="plain-syntax">.</span><span class="element-syntax">pragmas_bookmark</span><span class="plain-syntax"> = </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
<span class="identifier-syntax">inter_bookmark</span><span class="plain-syntax"> *</span><span class="function-syntax">Packaging::package_types</span><button class="popup" onclick="togglePopup('usagePopup4')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup4">Usage of <span class="code-font"><span class="function-syntax">Packaging::package_types</span></span>:<br/>Package Types - <a href="1-pt.html#SP1">§1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> &(</span><span class="identifier-syntax">I</span><span class="plain-syntax">-></span><span class="identifier-syntax">site</span><span class="plain-syntax">.</span><span class="element-syntax">spdata</span><span class="plain-syntax">.</span><span class="element-syntax">package_types_bookmark</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Packaging::set_package_types</span><button class="popup" onclick="togglePopup('usagePopup5')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup5">Usage of <span class="code-font"><span class="function-syntax">Packaging::set_package_types</span></span>:<br/><a href="1-pck.html#SP12">§12</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">inter_bookmark</span><span class="plain-syntax"> </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="plain-syntax">-></span><span class="identifier-syntax">site</span><span class="plain-syntax">.</span><span class="element-syntax">spdata</span><span class="plain-syntax">.</span><span class="element-syntax">package_types_bookmark</span><span class="plain-syntax"> = </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>The structure site_packaging_data is accessed in 1/hl and here.</li></ul>
|
||||
|
@ -135,7 +151,7 @@ called "incarnation".
|
|||
<p class="commentary firstcommentary"><a id="SP3" class="paragraph-anchor"></a><b>§3. </b></p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">package_request</span><span class="plain-syntax"> *</span><span class="function-syntax">Packaging::request</span><button class="popup" onclick="togglePopup('usagePopup2')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup2">Usage of <span class="code-font"><span class="function-syntax">Packaging::request</span></span>:<br/><a href="1-pck.html#SP15">§15</a>, <a href="1-pck.html#SP18">§18</a>, <a href="1-pck.html#SP19">§19</a>, <a href="1-pck.html#SP20">§20</a><br/>Building Site - <a href="1-bs.html#SP2">§2</a><br/>Hierarchy Locations - <a href="1-hl.html#SP4">§4</a>, <a href="1-hl.html#SP5">§5</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="reserved-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">name</span><span class="plain-syntax">, </span><span class="identifier-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pt</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">package_request</span><span class="plain-syntax"> *</span><span class="function-syntax">Packaging::request</span><button class="popup" onclick="togglePopup('usagePopup6')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup6">Usage of <span class="code-font"><span class="function-syntax">Packaging::request</span></span>:<br/><a href="1-pck.html#SP15">§15</a>, <a href="1-pck.html#SP16">§16</a><br/>Large-Scale Structure - <a href="1-ls.html#SP4">§4</a>, <a href="1-ls.html#SP5">§5</a>, <a href="1-ls.html#SP6">§6</a>, <a href="1-ls.html#SP11">§11</a>, <a href="1-ls.html#SP14">§14</a><br/>Hierarchy Locations - <a href="1-hl.html#SP4">§4</a>, <a href="1-hl.html#SP5">§5</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="reserved-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">name</span><span class="plain-syntax">, </span><span class="identifier-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pt</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">package_request</span><span class="plain-syntax"> *</span><span class="identifier-syntax">R</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CREATE</span><span class="plain-syntax">(</span><span class="reserved-syntax">package_request</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">R</span><span class="plain-syntax">-></span><span class="element-syntax">for_tree</span><span class="plain-syntax"> = </span><span class="identifier-syntax">I</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">R</span><span class="plain-syntax">-></span><span class="element-syntax">eventual_name</span><span class="plain-syntax"> = </span><span class="identifier-syntax">name</span><span class="plain-syntax">;</span>
|
||||
|
@ -154,7 +170,7 @@ than forward slashes are used as dividers.
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Packaging::log</span><button class="popup" onclick="togglePopup('usagePopup3')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup3">Usage of <span class="code-font"><span class="function-syntax">Packaging::log</span></span>:<br/>Building Module - <a href="1-bm.html#SP3_3">§3.3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">void</span><span class="plain-syntax"> *</span><span class="identifier-syntax">vR</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Packaging::log</span><button class="popup" onclick="togglePopup('usagePopup7')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup7">Usage of <span class="code-font"><span class="function-syntax">Packaging::log</span></span>:<br/>Building Module - <a href="1-bm.html#SP3_3">§3.3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">void</span><span class="plain-syntax"> *</span><span class="identifier-syntax">vR</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">package_request</span><span class="plain-syntax"> *</span><span class="identifier-syntax">R</span><span class="plain-syntax"> = (</span><span class="reserved-syntax">package_request</span><span class="plain-syntax"> *) </span><span class="identifier-syntax">vR</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">R</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">"<null-package>"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
|
||||
|
@ -176,7 +192,7 @@ sequence of inames <span class="extract"><span class="extract-syntax">acorn1</sp
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="function-syntax">Packaging::make_iname_within</span><button class="popup" onclick="togglePopup('usagePopup4')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup4">Usage of <span class="code-font"><span class="function-syntax">Packaging::make_iname_within</span></span>:<br/>Hierarchy Locations - <a href="1-hl.html#SP5">§5</a><br/>Producing Inter - <a href="3-prd.html#SP3">§3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">package_request</span><span class="plain-syntax"> *</span><span class="identifier-syntax">R</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">what_for</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="function-syntax">Packaging::make_iname_within</span><button class="popup" onclick="togglePopup('usagePopup8')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup8">Usage of <span class="code-font"><span class="function-syntax">Packaging::make_iname_within</span></span>:<br/>Hierarchy Locations - <a href="1-hl.html#SP5">§5</a><br/>Producing Inter - <a href="3-prd.html#SP3">§3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">package_request</span><span class="plain-syntax"> *</span><span class="identifier-syntax">R</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">what_for</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">R</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"no request"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">R</span><span class="plain-syntax">-></span><span class="identifier-syntax">iname_generators</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">R</span><span class="plain-syntax">-></span><span class="identifier-syntax">iname_generators</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NEW_LINKED_LIST</span><span class="plain-syntax">(</span><span class="reserved-syntax">inter_name_generator</span><span class="plain-syntax">);</span>
|
||||
|
@ -210,7 +226,7 @@ in an uninitialised state — though in fact they will not).
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">packaging_state</span><span class="plain-syntax"> </span><span class="function-syntax">Packaging::stateless</span><button class="popup" onclick="togglePopup('usagePopup5')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup5">Usage of <span class="code-font"><span class="function-syntax">Packaging::stateless</span></span>:<br/><a href="1-pck.html#SP1">§1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">packaging_state</span><span class="plain-syntax"> </span><span class="function-syntax">Packaging::stateless</span><button class="popup" onclick="togglePopup('usagePopup9')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup9">Usage of <span class="code-font"><span class="function-syntax">Packaging::stateless</span></span>:<br/><a href="1-pck.html#SP1">§1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">packaging_state</span><span class="plain-syntax"> </span><span class="identifier-syntax">PS</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PS</span><span class="plain-syntax">.</span><span class="element-syntax">saved_IRS</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PS</span><span class="plain-syntax">.</span><span class="element-syntax">saved_enclosure</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
|
@ -221,11 +237,11 @@ in an uninitialised state — though in fact they will not).
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="identifier-syntax">inter_bookmark</span><span class="plain-syntax"> *</span><span class="function-syntax">Packaging::at</span><button class="popup" onclick="togglePopup('usagePopup6')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup6">Usage of <span class="code-font"><span class="function-syntax">Packaging::at</span></span>:<br/><a href="1-pck.html#SP11">§11</a>, <a href="1-pck.html#SP12">§12</a>, <a href="1-pck.html#SP14">§14</a><br/>Producing Inter - <a href="3-prd.html#SP2">§2</a>, <a href="3-prd.html#SP3">§3</a>, <a href="3-prd.html#SP4">§4</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">) {</span>
|
||||
<span class="identifier-syntax">inter_bookmark</span><span class="plain-syntax"> *</span><span class="function-syntax">Packaging::at</span><button class="popup" onclick="togglePopup('usagePopup10')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup10">Usage of <span class="code-font"><span class="function-syntax">Packaging::at</span></span>:<br/><a href="1-pck.html#SP11">§11</a>, <a href="1-pck.html#SP12">§12</a>, <a href="1-pck.html#SP14">§14</a><br/>Producing Inter - <a href="3-prd.html#SP2">§2</a>, <a href="3-prd.html#SP3">§3</a>, <a href="3-prd.html#SP4">§4</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="plain-syntax">-></span><span class="identifier-syntax">site</span><span class="plain-syntax">.</span><span class="element-syntax">spdata</span><span class="plain-syntax">.</span><span class="element-syntax">current_state</span><span class="plain-syntax">.</span><span class="element-syntax">saved_IRS</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">package_request</span><span class="plain-syntax"> *</span><span class="function-syntax">Packaging::enclosure</span><button class="popup" onclick="togglePopup('usagePopup7')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup7">Usage of <span class="code-font"><span class="function-syntax">Packaging::enclosure</span></span>:<br/><a href="1-pck.html#SP13">§13</a>, <a href="1-pck.html#SP14">§14</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">package_request</span><span class="plain-syntax"> *</span><span class="function-syntax">Packaging::enclosure</span><button class="popup" onclick="togglePopup('usagePopup11')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup11">Usage of <span class="code-font"><span class="function-syntax">Packaging::enclosure</span></span>:<br/><a href="1-pck.html#SP13">§13</a>, <a href="1-pck.html#SP14">§14</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="plain-syntax">-></span><span class="identifier-syntax">site</span><span class="plain-syntax">.</span><span class="element-syntax">spdata</span><span class="plain-syntax">.</span><span class="element-syntax">current_state</span><span class="plain-syntax">.</span><span class="element-syntax">saved_enclosure</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
|
@ -236,14 +252,14 @@ IBM structures.
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="identifier-syntax">inter_bookmark</span><span class="plain-syntax"> *</span><span class="function-syntax">Packaging::push_IRS</span><button class="popup" onclick="togglePopup('usagePopup8')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup8">Usage of <span class="code-font"><span class="function-syntax">Packaging::push_IRS</span></span>:<br/><a href="1-pck.html#SP10">§10</a>, <a href="1-pck.html#SP13">§13</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">inter_bookmark</span><span class="plain-syntax"> </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">) {</span>
|
||||
<span class="identifier-syntax">inter_bookmark</span><span class="plain-syntax"> *</span><span class="function-syntax">Packaging::push_IRS</span><button class="popup" onclick="togglePopup('usagePopup12')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup12">Usage of <span class="code-font"><span class="function-syntax">Packaging::push_IRS</span></span>:<br/><a href="1-pck.html#SP10">§10</a>, <a href="1-pck.html#SP13">§13</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">inter_bookmark</span><span class="plain-syntax"> </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">I</span><span class="plain-syntax">-></span><span class="identifier-syntax">site</span><span class="plain-syntax">.</span><span class="element-syntax">spdata</span><span class="plain-syntax">.</span><span class="element-syntax">packaging_entry_sp</span><span class="plain-syntax"> >= </span><span class="constant-syntax">MAX_PACKAGING_ENTRY_DEPTH</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"packaging entry too deep"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="plain-syntax">-></span><span class="identifier-syntax">site</span><span class="plain-syntax">.</span><span class="element-syntax">spdata</span><span class="plain-syntax">.</span><span class="element-syntax">packaging_entry_stack</span><span class="plain-syntax">[</span><span class="identifier-syntax">I</span><span class="plain-syntax">-></span><span class="identifier-syntax">site</span><span class="plain-syntax">.</span><span class="element-syntax">spdata</span><span class="plain-syntax">.</span><span class="element-syntax">packaging_entry_sp</span><span class="plain-syntax">] = </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> &(</span><span class="identifier-syntax">I</span><span class="plain-syntax">-></span><span class="identifier-syntax">site</span><span class="plain-syntax">.</span><span class="element-syntax">spdata</span><span class="plain-syntax">.</span><span class="element-syntax">packaging_entry_stack</span><span class="plain-syntax">[</span><span class="identifier-syntax">I</span><span class="plain-syntax">-></span><span class="identifier-syntax">site</span><span class="plain-syntax">.</span><span class="element-syntax">spdata</span><span class="plain-syntax">.</span><span class="element-syntax">packaging_entry_sp</span><span class="plain-syntax">++]);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Packaging::pop_IRS</span><button class="popup" onclick="togglePopup('usagePopup9')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup9">Usage of <span class="code-font"><span class="function-syntax">Packaging::pop_IRS</span></span>:<br/><a href="1-pck.html#SP13">§13</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Packaging::pop_IRS</span><button class="popup" onclick="togglePopup('usagePopup13')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup13">Usage of <span class="code-font"><span class="function-syntax">Packaging::pop_IRS</span></span>:<br/><a href="1-pck.html#SP13">§13</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">I</span><span class="plain-syntax">-></span><span class="identifier-syntax">site</span><span class="plain-syntax">.</span><span class="element-syntax">spdata</span><span class="plain-syntax">.</span><span class="element-syntax">packaging_entry_sp</span><span class="plain-syntax"> <= </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"package stack underflow"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="plain-syntax">-></span><span class="identifier-syntax">site</span><span class="plain-syntax">.</span><span class="element-syntax">spdata</span><span class="plain-syntax">.</span><span class="element-syntax">packaging_entry_sp</span><span class="plain-syntax">--;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
@ -256,13 +272,13 @@ very early on, the enclosure is always an enclosing package.)
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Packaging::initialise_state</span><button class="popup" onclick="togglePopup('usagePopup10')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup10">Usage of <span class="code-font"><span class="function-syntax">Packaging::initialise_state</span></span>:<br/><a href="1-pck.html#SP1">§1</a>, <a href="1-pck.html#SP12">§12</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Packaging::initialise_state</span><button class="popup" onclick="togglePopup('usagePopup14')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup14">Usage of <span class="code-font"><span class="function-syntax">Packaging::initialise_state</span></span>:<br/><a href="1-pck.html#SP1">§1</a>, <a href="1-pck.html#SP12">§12</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="plain-syntax">-></span><span class="identifier-syntax">site</span><span class="plain-syntax">.</span><span class="element-syntax">spdata</span><span class="plain-syntax">.</span><span class="element-syntax">current_state</span><span class="plain-syntax">.</span><span class="identifier-syntax">saved_IRS</span><span class="plain-syntax"> =</span>
|
||||
<span class="plain-syntax"> </span><a href="1-pck.html#SP9" class="function-link"><span class="function-syntax">Packaging::push_IRS</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">Inter::Bookmarks::at_start_of_this_repository</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="plain-syntax">-></span><span class="identifier-syntax">site</span><span class="plain-syntax">.</span><span class="element-syntax">spdata</span><span class="plain-syntax">.</span><span class="element-syntax">current_state</span><span class="plain-syntax">.</span><span class="identifier-syntax">saved_enclosure</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Packaging::set_state</span><button class="popup" onclick="togglePopup('usagePopup11')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup11">Usage of <span class="code-font"><span class="function-syntax">Packaging::set_state</span></span>:<br/><a href="1-pck.html#SP13">§13</a>, <a href="1-pck.html#SP14">§14</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">inter_bookmark</span><span class="plain-syntax"> *</span><span class="identifier-syntax">to</span><span class="plain-syntax">, </span><span class="reserved-syntax">package_request</span><span class="plain-syntax"> *</span><span class="identifier-syntax">PR</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Packaging::set_state</span><button class="popup" onclick="togglePopup('usagePopup15')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup15">Usage of <span class="code-font"><span class="function-syntax">Packaging::set_state</span></span>:<br/><a href="1-pck.html#SP13">§13</a>, <a href="1-pck.html#SP14">§14</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">inter_bookmark</span><span class="plain-syntax"> *</span><span class="identifier-syntax">to</span><span class="plain-syntax">, </span><span class="reserved-syntax">package_request</span><span class="plain-syntax"> *</span><span class="identifier-syntax">PR</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="plain-syntax">-></span><span class="identifier-syntax">site</span><span class="plain-syntax">.</span><span class="element-syntax">spdata</span><span class="plain-syntax">.</span><span class="element-syntax">current_state</span><span class="plain-syntax">.</span><span class="identifier-syntax">saved_IRS</span><span class="plain-syntax"> = </span><span class="identifier-syntax">to</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">while</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">PR</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">PR</span><span class="plain-syntax">-></span><span class="element-syntax">parent_request</span><span class="plain-syntax">) &&</span>
|
||||
<span class="plain-syntax"> (</span><span class="identifier-syntax">Inter::Symbols::read_annotation</span><span class="plain-syntax">(</span><span class="identifier-syntax">PR</span><span class="plain-syntax">-></span><span class="element-syntax">eventual_type</span><span class="plain-syntax">, </span><span class="identifier-syntax">ENCLOSING_IANN</span><span class="plain-syntax">) != </span><span class="constant-syntax">1</span><span class="plain-syntax">))</span>
|
||||
|
@ -284,7 +300,7 @@ material will be placed between them.
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="identifier-syntax">inter_bookmark</span><span class="plain-syntax"> </span><span class="function-syntax">Packaging::bubble</span><button class="popup" onclick="togglePopup('usagePopup12')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup12">Usage of <span class="code-font"><span class="function-syntax">Packaging::bubble</span></span>:<br/><a href="1-pck.html#SP12">§12</a>, <a href="1-pck.html#SP13">§13</a>, <a href="1-pck.html#SP14">§14</a><br/>Building Site - <a href="1-bs.html#SP2">§2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">) {</span>
|
||||
<span class="identifier-syntax">inter_bookmark</span><span class="plain-syntax"> </span><span class="function-syntax">Packaging::bubble</span><button class="popup" onclick="togglePopup('usagePopup16')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup16">Usage of <span class="code-font"><span class="function-syntax">Packaging::bubble</span></span>:<br/><a href="1-pck.html#SP12">§12</a>, <a href="1-pck.html#SP13">§13</a>, <a href="1-pck.html#SP14">§14</a><br/>Large-Scale Structure - <a href="1-ls.html#SP6">§6</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><a href="3-prd.html#SP2" class="function-link"><span class="function-syntax">Produce::nop</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_bookmark</span><span class="plain-syntax"> </span><span class="identifier-syntax">b</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Inter::Bookmarks::snapshot</span><span class="plain-syntax">(</span><a href="1-pck.html#SP8" class="function-link"><span class="function-syntax">Packaging::at</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><a href="3-prd.html#SP2" class="function-link"><span class="function-syntax">Produce::nop</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">);</span>
|
||||
|
@ -309,19 +325,19 @@ room to insert those resources, then incarnate <span class="extract"><span class
|
|||
<span class="plain-syntax"> </span><a href="3-prd.html#SP2" class="function-link"><span class="function-syntax">Produce::version</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
|
||||
|
||||
<span class="plain-syntax"> </span><a href="3-prd.html#SP2" class="function-link"><span class="function-syntax">Produce::comment</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Package types:"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-bs.html#SP2" class="function-link"><span class="function-syntax">Site::set_package_types</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><a href="1-pck.html#SP11" class="function-link"><span class="function-syntax">Packaging::bubble</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><a href="1-pck.html#SP1" class="function-link"><span class="function-syntax">Packaging::set_package_types</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><a href="1-pck.html#SP11" class="function-link"><span class="function-syntax">Packaging::bubble</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">));</span>
|
||||
|
||||
<span class="plain-syntax"> </span><a href="3-prd.html#SP2" class="function-link"><span class="function-syntax">Produce::comment</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Pragmas:"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-bs.html#SP2" class="function-link"><span class="function-syntax">Site::set_pragmas</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><a href="1-pck.html#SP11" class="function-link"><span class="function-syntax">Packaging::bubble</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><a href="1-pck.html#SP1" class="function-link"><span class="function-syntax">Packaging::set_pragmas</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><a href="1-pck.html#SP11" class="function-link"><span class="function-syntax">Packaging::bubble</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">));</span>
|
||||
|
||||
<span class="plain-syntax"> </span><a href="3-prd.html#SP2" class="function-link"><span class="function-syntax">Produce::comment</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Primitives:"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP1" class="function-link"><span class="function-syntax">Primitives::emit</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><a href="1-pck.html#SP8" class="function-link"><span class="function-syntax">Packaging::at</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP3" class="function-link"><span class="function-syntax">Primitives::emit</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><a href="1-pck.html#SP8" class="function-link"><span class="function-syntax">Packaging::at</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">));</span>
|
||||
|
||||
<span class="plain-syntax"> </span><a href="1-pt.html#SP1" class="function-link"><span class="function-syntax">PackageTypes::get</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"_plain"</span><span class="plain-syntax">); </span><span class="comment-syntax"> To ensure this is the first emitted ptype</span>
|
||||
<span class="plain-syntax"> </span><a href="1-pt.html#SP1" class="function-link"><span class="function-syntax">PackageTypes::get</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"_code"</span><span class="plain-syntax">); </span><span class="comment-syntax"> And this the second</span>
|
||||
<span class="plain-syntax"> </span><a href="1-pt.html#SP1" class="function-link"><span class="function-syntax">PackageTypes::get</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"_linkage"</span><span class="plain-syntax">); </span><span class="comment-syntax"> And this the third</span>
|
||||
|
||||
<span class="plain-syntax"> </span><a href="1-pck.html#SP13" class="function-link"><span class="function-syntax">Packaging::enter</span></a><span class="plain-syntax">(</span><a href="1-bs.html#SP2" class="function-link"><span class="function-syntax">Site::main_request</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">)); </span><span class="comment-syntax"> Which we never exit</span>
|
||||
<span class="plain-syntax"> </span><a href="1-pck.html#SP13" class="function-link"><span class="function-syntax">Packaging::enter</span></a><span class="plain-syntax">(</span><a href="1-ls.html#SP4" class="function-link"><span class="function-syntax">LargeScale::main_request</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">)); </span><span class="comment-syntax"> Which we never exit</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP13" class="paragraph-anchor"></a><b>§13. Entry and exit. </b>Each PR contains a "write position". This is where emitted Inter code will go;
|
||||
|
@ -338,11 +354,11 @@ is never followed by an exit.)
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">packaging_state</span><span class="plain-syntax"> </span><span class="function-syntax">Packaging::enter_home_of</span><button class="popup" onclick="togglePopup('usagePopup13')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup13">Usage of <span class="code-font"><span class="function-syntax">Packaging::enter_home_of</span></span>:<br/>Producing Inter - <a href="3-prd.html#SP3">§3</a>, <a href="3-prd.html#SP4">§4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">N</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">packaging_state</span><span class="plain-syntax"> </span><span class="function-syntax">Packaging::enter_home_of</span><button class="popup" onclick="togglePopup('usagePopup17')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup17">Usage of <span class="code-font"><span class="function-syntax">Packaging::enter_home_of</span></span>:<br/>Producing Inter - <a href="3-prd.html#SP3">§3</a>, <a href="3-prd.html#SP4">§4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">N</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="1-pck.html#SP13" class="function-link"><span class="function-syntax">Packaging::enter</span></a><span class="plain-syntax">(</span><a href="1-in.html#SP7" class="function-link"><span class="function-syntax">InterNames::location</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">N</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">packaging_state</span><span class="plain-syntax"> </span><span class="function-syntax">Packaging::enter</span><button class="popup" onclick="togglePopup('usagePopup14')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup14">Usage of <span class="code-font"><span class="function-syntax">Packaging::enter</span></span>:<br/><a href="1-pck.html#SP12">§12</a><br/>Building Site - <a href="1-bs.html#SP2">§2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">package_request</span><span class="plain-syntax"> *</span><span class="identifier-syntax">R</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">packaging_state</span><span class="plain-syntax"> </span><span class="function-syntax">Packaging::enter</span><button class="popup" onclick="togglePopup('usagePopup18')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup18">Usage of <span class="code-font"><span class="function-syntax">Packaging::enter</span></span>:<br/><a href="1-pck.html#SP12">§12</a><br/>Large-Scale Structure - <a href="1-ls.html#SP6">§6</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">package_request</span><span class="plain-syntax"> *</span><span class="identifier-syntax">R</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOGIF</span><span class="plain-syntax">(</span><span class="identifier-syntax">PACKAGING</span><span class="plain-syntax">, </span><span class="string-syntax">"Entering $X\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">R</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">packaging_state</span><span class="plain-syntax"> </span><span class="identifier-syntax">save</span><span class="plain-syntax"> = </span><span class="identifier-syntax">R</span><span class="plain-syntax">-></span><span class="element-syntax">for_tree</span><span class="plain-syntax">-></span><span class="identifier-syntax">site</span><span class="plain-syntax">.</span><span class="element-syntax">spdata</span><span class="plain-syntax">.</span><span class="element-syntax">current_state</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><a href="1-pck.html#SP14" class="function-link"><span class="function-syntax">Packaging::incarnate</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">R</span><span class="plain-syntax">);</span>
|
||||
|
@ -353,7 +369,7 @@ is never followed by an exit.)
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">save</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Packaging::exit</span><button class="popup" onclick="togglePopup('usagePopup15')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup15">Usage of <span class="code-font"><span class="function-syntax">Packaging::exit</span></span>:<br/>Building Site - <a href="1-bs.html#SP2">§2</a><br/>Producing Inter - <a href="3-prd.html#SP3">§3</a>, <a href="3-prd.html#SP4">§4</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="reserved-syntax">packaging_state</span><span class="plain-syntax"> </span><span class="identifier-syntax">save</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Packaging::exit</span><button class="popup" onclick="togglePopup('usagePopup19')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup19">Usage of <span class="code-font"><span class="function-syntax">Packaging::exit</span></span>:<br/>Large-Scale Structure - <a href="1-ls.html#SP6">§6</a><br/>Producing Inter - <a href="3-prd.html#SP3">§3</a>, <a href="3-prd.html#SP4">§4</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="reserved-syntax">packaging_state</span><span class="plain-syntax"> </span><span class="identifier-syntax">save</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><a href="1-pck.html#SP10" class="function-link"><span class="function-syntax">Packaging::set_state</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">save</span><span class="plain-syntax">.</span><span class="identifier-syntax">saved_IRS</span><span class="plain-syntax">, </span><span class="identifier-syntax">save</span><span class="plain-syntax">.</span><span class="element-syntax">saved_enclosure</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-pck.html#SP9" class="function-link"><span class="function-syntax">Packaging::pop_IRS</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOGIF</span><span class="plain-syntax">(</span><span class="identifier-syntax">PACKAGING</span><span class="plain-syntax">, </span><span class="string-syntax">"[%d] Back to $X\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="plain-syntax">-></span><span class="identifier-syntax">site</span><span class="plain-syntax">.</span><span class="element-syntax">spdata</span><span class="plain-syntax">.</span><span class="element-syntax">packaging_entry_sp</span><span class="plain-syntax">, </span><a href="1-pck.html#SP8" class="function-link"><span class="function-syntax">Packaging::enclosure</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">));</span>
|
||||
|
@ -367,7 +383,7 @@ specification.
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="identifier-syntax">inter_package</span><span class="plain-syntax"> *</span><span class="function-syntax">Packaging::incarnate</span><button class="popup" onclick="togglePopup('usagePopup16')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup16">Usage of <span class="code-font"><span class="function-syntax">Packaging::incarnate</span></span>:<br/><a href="1-pck.html#SP13">§13</a><br/>Building Site - <a href="1-bs.html#SP2">§2</a><br/>Inter Namespace - <a href="1-in.html#SP7">§7</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">package_request</span><span class="plain-syntax"> *</span><span class="identifier-syntax">R</span><span class="plain-syntax">) {</span>
|
||||
<span class="identifier-syntax">inter_package</span><span class="plain-syntax"> *</span><span class="function-syntax">Packaging::incarnate</span><button class="popup" onclick="togglePopup('usagePopup20')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup20">Usage of <span class="code-font"><span class="function-syntax">Packaging::incarnate</span></span>:<br/><a href="1-pck.html#SP13">§13</a><br/>Large-Scale Structure - <a href="1-ls.html#SP4">§4</a>, <a href="1-ls.html#SP5">§5</a>, <a href="1-ls.html#SP6">§6</a><br/>Inter Namespace - <a href="1-in.html#SP7">§7</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">package_request</span><span class="plain-syntax"> *</span><span class="identifier-syntax">R</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">R</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"can't incarnate null request"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">R</span><span class="plain-syntax">-></span><span class="identifier-syntax">actual_package</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOGIF</span><span class="plain-syntax">(</span><span class="identifier-syntax">PACKAGING</span><span class="plain-syntax">, </span><span class="string-syntax">"Request to make incarnate $X\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">R</span><span class="plain-syntax">);</span>
|
||||
|
@ -396,124 +412,13 @@ specification.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">R</span><span class="plain-syntax">-></span><span class="element-syntax">actual_package</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP15" class="paragraph-anchor"></a><b>§15. Modules. </b>With the code above, then, we can get the Inter hierarchy of packages set up
|
||||
as far as creating <span class="extract"><span class="extract-syntax">main</span></span>. After that the Hierarchy code takes over, but it
|
||||
calls the routines below to assist. It will want to create a number of "modules"
|
||||
and, within them, "submodules".
|
||||
</p>
|
||||
|
||||
<p class="commentary">Modules are identified by name: <span class="extract"><span class="extract-syntax">generic</span></span>, <span class="extract"><span class="extract-syntax">Standard_Rules</span></span>, and so on. The
|
||||
following creates modules on demand.
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">typedef</span><span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">module_package</span><span class="plain-syntax"> {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">package_request</span><span class="plain-syntax"> *</span><span class="identifier-syntax">the_package</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">linked_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">submodules</span><span class="plain-syntax">; </span><span class="comment-syntax"> of </span><span class="extract"><span class="extract-syntax">submodule_request</span></span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">CLASS_DEFINITION</span>
|
||||
<span class="plain-syntax">} </span><span class="reserved-syntax">module_package</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="reserved-syntax">module_package</span><span class="plain-syntax"> *</span><span class="function-syntax">Packaging::get_unit</span><button class="popup" onclick="togglePopup('usagePopup17')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup17">Usage of <span class="code-font"><span class="function-syntax">Packaging::get_unit</span></span>:<br/><a href="1-pck.html#SP17">§17</a><br/>Building Site - <a href="1-bs.html#SP2">§2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">name</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">unit_type</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">I</span><span class="plain-syntax">-></span><span class="identifier-syntax">site</span><span class="plain-syntax">.</span><span class="element-syntax">spdata</span><span class="plain-syntax">.</span><span class="element-syntax">modules_indexed_by_name</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="plain-syntax">-></span><span class="identifier-syntax">site</span><span class="plain-syntax">.</span><span class="element-syntax">spdata</span><span class="plain-syntax">.</span><span class="element-syntax">modules_indexed_by_name</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Dictionaries::new</span><span class="plain-syntax">(512, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">dictionary</span><span class="plain-syntax"> *</span><span class="identifier-syntax">D</span><span class="plain-syntax"> = </span><span class="identifier-syntax">I</span><span class="plain-syntax">-></span><span class="identifier-syntax">site</span><span class="plain-syntax">.</span><span class="element-syntax">spdata</span><span class="plain-syntax">.</span><span class="element-syntax">modules_indexed_by_name</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Dictionaries::find</span><span class="plain-syntax">(</span><span class="identifier-syntax">D</span><span class="plain-syntax">, </span><span class="identifier-syntax">name</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> (</span><span class="reserved-syntax">module_package</span><span class="plain-syntax"> *) </span><span class="identifier-syntax">Dictionaries::read_value</span><span class="plain-syntax">(</span><span class="identifier-syntax">D</span><span class="plain-syntax">, </span><span class="identifier-syntax">name</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">module_package</span><span class="plain-syntax"> *</span><span class="identifier-syntax">new_module</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CREATE</span><span class="plain-syntax">(</span><span class="reserved-syntax">module_package</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">new_module</span><span class="plain-syntax">-></span><span class="element-syntax">the_package</span><span class="plain-syntax"> =</span>
|
||||
<span class="plain-syntax"> </span><a href="1-pck.html#SP3" class="function-link"><span class="function-syntax">Packaging::request</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><a href="1-in.html#SP5" class="function-link"><span class="function-syntax">InterNames::explicitly_named</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">name</span><span class="plain-syntax">, </span><a href="1-bs.html#SP2" class="function-link"><span class="function-syntax">Site::main_request</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">)),</span>
|
||||
<span class="plain-syntax"> </span><a href="1-pt.html#SP1" class="function-link"><span class="function-syntax">PackageTypes::get</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">unit_type</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">new_module</span><span class="plain-syntax">-></span><span class="element-syntax">submodules</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NEW_LINKED_LIST</span><span class="plain-syntax">(</span><span class="reserved-syntax">submodule_request</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Dictionaries::create</span><span class="plain-syntax">(</span><span class="identifier-syntax">D</span><span class="plain-syntax">, </span><span class="identifier-syntax">name</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Dictionaries::write_value</span><span class="plain-syntax">(</span><span class="identifier-syntax">D</span><span class="plain-syntax">, </span><span class="identifier-syntax">name</span><span class="plain-syntax">, (</span><span class="reserved-syntax">void</span><span class="plain-syntax"> *) </span><span class="identifier-syntax">new_module</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">new_module</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>The structure module_package is accessed in 1/bs and here.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP16" class="paragraph-anchor"></a><b>§16. Submodules. </b>Submodules have names such as <span class="extract"><span class="extract-syntax">properties</span></span>, and the idea is that the same submodule
|
||||
(or rather, submodules with the same name) can be found in multiple modules. The
|
||||
different sorts of submodule are identified by <span class="extract"><span class="extract-syntax">submodule_identity</span></span> pointers, though
|
||||
as it turns out, this is presently just a wrapper for a name.
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">typedef</span><span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">submodule_identity</span><span class="plain-syntax"> {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">submodule_name</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">CLASS_DEFINITION</span>
|
||||
<span class="plain-syntax">} </span><span class="reserved-syntax">submodule_identity</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="reserved-syntax">submodule_identity</span><span class="plain-syntax"> *</span><span class="function-syntax">Packaging::register_submodule</span><span class="plain-syntax">(</span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">name</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">submodule_identity</span><span class="plain-syntax"> *</span><span class="identifier-syntax">sid</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER</span><span class="plain-syntax">(</span><span class="identifier-syntax">sid</span><span class="plain-syntax">, </span><span class="reserved-syntax">submodule_identity</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">sid</span><span class="plain-syntax">-></span><span class="element-syntax">submodule_name</span><span class="plain-syntax">, </span><span class="identifier-syntax">name</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">sid</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">sid</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CREATE</span><span class="plain-syntax">(</span><span class="reserved-syntax">submodule_identity</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">sid</span><span class="plain-syntax">-></span><span class="element-syntax">submodule_name</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Str::duplicate</span><span class="plain-syntax">(</span><span class="identifier-syntax">name</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">sid</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>The structure submodule_identity is private to this section.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP17" class="paragraph-anchor"></a><b>§17. </b>Once the Hierarchy code has registered a submodule, it can request an existing
|
||||
module to have this submodule. It should call one of the following four functions:
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax">#</span><span class="identifier-syntax">ifdef</span><span class="plain-syntax"> </span><span class="identifier-syntax">CORE_MODULE</span>
|
||||
<span class="reserved-syntax">package_request</span><span class="plain-syntax"> *</span><span class="function-syntax">Packaging::request_submodule</span><button class="popup" onclick="togglePopup('usagePopup18')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup18">Usage of <span class="code-font"><span class="function-syntax">Packaging::request_submodule</span></span>:<br/>Hierarchy Locations - <a href="1-hl.html#SP5">§5</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">compilation_unit</span><span class="plain-syntax"> *</span><span class="identifier-syntax">C</span><span class="plain-syntax">, </span><span class="reserved-syntax">submodule_identity</span><span class="plain-syntax"> *</span><span class="identifier-syntax">sid</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">C</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="1-pck.html#SP17" class="function-link"><span class="function-syntax">Packaging::generic_submodule</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">sid</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="1-pck.html#SP18" class="function-link"><span class="function-syntax">Packaging::new_submodule_inner</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">CompilationUnits::to_module_package</span><span class="plain-syntax">(</span><span class="identifier-syntax">C</span><span class="plain-syntax">), </span><span class="identifier-syntax">sid</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">package_request</span><span class="plain-syntax"> *</span><span class="function-syntax">Packaging::local_submodule</span><span class="plain-syntax">(</span><span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="reserved-syntax">submodule_identity</span><span class="plain-syntax"> *</span><span class="identifier-syntax">sid</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="1-pck.html#SP17" class="function-link"><span class="function-syntax">Packaging::request_submodule</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">CompilationUnits::find</span><span class="plain-syntax">(</span><span class="identifier-syntax">current_sentence</span><span class="plain-syntax">), </span><span class="identifier-syntax">sid</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
<span class="plain-syntax">#</span><span class="identifier-syntax">endif</span>
|
||||
|
||||
<span class="reserved-syntax">package_request</span><span class="plain-syntax"> *</span><span class="function-syntax">Packaging::generic_submodule</span><button class="popup" onclick="togglePopup('usagePopup19')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup19">Usage of <span class="code-font"><span class="function-syntax">Packaging::generic_submodule</span></span>:<br/>Hierarchy Locations - <a href="1-hl.html#SP2">§2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="reserved-syntax">submodule_identity</span><span class="plain-syntax"> *</span><span class="identifier-syntax">sid</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="1-pck.html#SP18" class="function-link"><span class="function-syntax">Packaging::new_submodule_inner</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><a href="1-pck.html#SP15" class="function-link"><span class="function-syntax">Packaging::get_unit</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"generic"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"_module"</span><span class="plain-syntax">), </span><span class="identifier-syntax">sid</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">package_request</span><span class="plain-syntax"> *</span><span class="function-syntax">Packaging::synoptic_submodule</span><button class="popup" onclick="togglePopup('usagePopup20')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup20">Usage of <span class="code-font"><span class="function-syntax">Packaging::synoptic_submodule</span></span>:<br/>Hierarchy Locations - <a href="1-hl.html#SP2">§2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="reserved-syntax">submodule_identity</span><span class="plain-syntax"> *</span><span class="identifier-syntax">sid</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="1-pck.html#SP18" class="function-link"><span class="function-syntax">Packaging::new_submodule_inner</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><a href="1-pck.html#SP15" class="function-link"><span class="function-syntax">Packaging::get_unit</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"synoptic"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"_module"</span><span class="plain-syntax">), </span><span class="identifier-syntax">sid</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">package_request</span><span class="plain-syntax"> *</span><span class="function-syntax">Packaging::completion_submodule</span><button class="popup" onclick="togglePopup('usagePopup21')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup21">Usage of <span class="code-font"><span class="function-syntax">Packaging::completion_submodule</span></span>:<br/>Hierarchy Locations - <a href="1-hl.html#SP2">§2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="reserved-syntax">submodule_identity</span><span class="plain-syntax"> *</span><span class="identifier-syntax">sid</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="1-pck.html#SP18" class="function-link"><span class="function-syntax">Packaging::new_submodule_inner</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><a href="1-pck.html#SP15" class="function-link"><span class="function-syntax">Packaging::get_unit</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"completion"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"_module"</span><span class="plain-syntax">), </span><span class="identifier-syntax">sid</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP18" class="paragraph-anchor"></a><b>§18. </b>Those in turn all make use of this back-end function:
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">typedef</span><span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">submodule_request</span><span class="plain-syntax"> {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">submodule_identity</span><span class="plain-syntax"> *</span><span class="identifier-syntax">which_submodule</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">package_request</span><span class="plain-syntax"> *</span><span class="identifier-syntax">where_found</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">CLASS_DEFINITION</span>
|
||||
<span class="plain-syntax">} </span><span class="reserved-syntax">submodule_request</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="reserved-syntax">package_request</span><span class="plain-syntax"> *</span><span class="function-syntax">Packaging::new_submodule_inner</span><button class="popup" onclick="togglePopup('usagePopup22')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup22">Usage of <span class="code-font"><span class="function-syntax">Packaging::new_submodule_inner</span></span>:<br/><a href="1-pck.html#SP17">§17</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="reserved-syntax">module_package</span><span class="plain-syntax"> *</span><span class="identifier-syntax">M</span><span class="plain-syntax">, </span><span class="reserved-syntax">submodule_identity</span><span class="plain-syntax"> *</span><span class="identifier-syntax">sid</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">submodule_request</span><span class="plain-syntax"> *</span><span class="identifier-syntax">sr</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER_LINKED_LIST</span><span class="plain-syntax">(</span><span class="identifier-syntax">sr</span><span class="plain-syntax">, </span><span class="reserved-syntax">submodule_request</span><span class="plain-syntax">, </span><span class="identifier-syntax">M</span><span class="plain-syntax">-></span><span class="element-syntax">submodules</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">sid</span><span class="plain-syntax"> == </span><span class="identifier-syntax">sr</span><span class="plain-syntax">-></span><span class="element-syntax">which_submodule</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">sr</span><span class="plain-syntax">-></span><span class="element-syntax">where_found</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">iname</span><span class="plain-syntax"> = </span><a href="1-in.html#SP5" class="function-link"><span class="function-syntax">InterNames::explicitly_named</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">sid</span><span class="plain-syntax">-></span><span class="element-syntax">submodule_name</span><span class="plain-syntax">, </span><span class="identifier-syntax">M</span><span class="plain-syntax">-></span><span class="element-syntax">the_package</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">sr</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CREATE</span><span class="plain-syntax">(</span><span class="reserved-syntax">submodule_request</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">sr</span><span class="plain-syntax">-></span><span class="element-syntax">which_submodule</span><span class="plain-syntax"> = </span><span class="identifier-syntax">sid</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">sr</span><span class="plain-syntax">-></span><span class="element-syntax">where_found</span><span class="plain-syntax"> = </span><a href="1-pck.html#SP3" class="function-link"><span class="function-syntax">Packaging::request</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">iname</span><span class="plain-syntax">, </span><a href="1-pt.html#SP1" class="function-link"><span class="function-syntax">PackageTypes::get</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"_submodule"</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ADD_TO_LINKED_LIST</span><span class="plain-syntax">(</span><span class="identifier-syntax">sr</span><span class="plain-syntax">, </span><span class="reserved-syntax">submodule_request</span><span class="plain-syntax">, </span><span class="identifier-syntax">M</span><span class="plain-syntax">-></span><span class="element-syntax">submodules</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">sr</span><span class="plain-syntax">-></span><span class="element-syntax">where_found</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>The structure submodule_request is private to this section.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP19" class="paragraph-anchor"></a><b>§19. Functions. </b>Inter code has a standard layout for functions: an outer, enclosing, package of type
|
||||
<p class="commentary firstcommentary"><a id="SP15" class="paragraph-anchor"></a><b>§15. Functions. </b>Inter code has a standard layout for functions: an outer, enclosing, package of type
|
||||
<span class="extract"><span class="extract-syntax">_function</span></span>, inside which is an iname <span class="extract"><span class="extract-syntax">call</span></span> for the actual code to call. All such
|
||||
functions are produced by the following routines:
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="function-syntax">Packaging::function</span><button class="popup" onclick="togglePopup('usagePopup23')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup23">Usage of <span class="code-font"><span class="function-syntax">Packaging::function</span></span>:<br/>Hierarchy Locations - <a href="1-hl.html#SP3">§3</a>, <a href="1-hl.html#SP3_1">§3.1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="reserved-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">function_iname</span><span class="plain-syntax">, </span><span class="reserved-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">temp_iname</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="function-syntax">Packaging::function</span><button class="popup" onclick="togglePopup('usagePopup21')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup21">Usage of <span class="code-font"><span class="function-syntax">Packaging::function</span></span>:<br/>Hierarchy Locations - <a href="1-hl.html#SP3">§3</a>, <a href="1-hl.html#SP3_1">§3.1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="reserved-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">function_iname</span><span class="plain-syntax">, </span><span class="reserved-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">temp_iname</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">package_request</span><span class="plain-syntax"> *</span><span class="identifier-syntax">P</span><span class="plain-syntax"> = </span><a href="1-pck.html#SP3" class="function-link"><span class="function-syntax">Packaging::request</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">function_iname</span><span class="plain-syntax">, </span><a href="1-pt.html#SP2" class="function-link"><span class="function-syntax">PackageTypes::function</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">iname</span><span class="plain-syntax"> = </span><a href="1-in.html#SP5" class="function-link"><span class="function-syntax">InterNames::explicitly_named</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"call"</span><span class="plain-syntax">, </span><span class="identifier-syntax">P</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">temp_iname</span><span class="plain-syntax">) {</span>
|
||||
|
@ -525,7 +430,7 @@ functions are produced by the following routines:
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">iname</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="function-syntax">Packaging::function_text</span><button class="popup" onclick="togglePopup('usagePopup24')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup24">Usage of <span class="code-font"><span class="function-syntax">Packaging::function_text</span></span>:<br/>Hierarchy Locations - <a href="1-hl.html#SP3">§3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="reserved-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">function_iname</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">translation</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="function-syntax">Packaging::function_text</span><button class="popup" onclick="togglePopup('usagePopup22')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup22">Usage of <span class="code-font"><span class="function-syntax">Packaging::function_text</span></span>:<br/>Hierarchy Locations - <a href="1-hl.html#SP3">§3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="reserved-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">function_iname</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">translation</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">package_request</span><span class="plain-syntax"> *</span><span class="identifier-syntax">P</span><span class="plain-syntax"> = </span><a href="1-pck.html#SP3" class="function-link"><span class="function-syntax">Packaging::request</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">function_iname</span><span class="plain-syntax">, </span><a href="1-pt.html#SP2" class="function-link"><span class="function-syntax">PackageTypes::function</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">iname</span><span class="plain-syntax"> = </span><a href="1-in.html#SP5" class="function-link"><span class="function-syntax">InterNames::explicitly_named</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"call"</span><span class="plain-syntax">, </span><span class="identifier-syntax">P</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">translation</span><span class="plain-syntax">)</span>
|
||||
|
@ -533,7 +438,7 @@ functions are produced by the following routines:
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">iname</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Packaging::housed_in_function</span><button class="popup" onclick="togglePopup('usagePopup25')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup25">Usage of <span class="code-font"><span class="function-syntax">Packaging::housed_in_function</span></span>:<br/>Producing Inter - <a href="3-prd.html#SP3">§3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="reserved-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">iname</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Packaging::housed_in_function</span><button class="popup" onclick="togglePopup('usagePopup23')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup23">Usage of <span class="code-font"><span class="function-syntax">Packaging::housed_in_function</span></span>:<br/>Producing Inter - <a href="3-prd.html#SP3">§3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="reserved-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">iname</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">iname</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">package_request</span><span class="plain-syntax"> *</span><span class="identifier-syntax">P</span><span class="plain-syntax"> = </span><a href="1-in.html#SP7" class="function-link"><span class="function-syntax">InterNames::location</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">iname</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">P</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
|
@ -541,18 +446,18 @@ functions are produced by the following routines:
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP20" class="paragraph-anchor"></a><b>§20. </b>Datum is very similar.
|
||||
<p class="commentary firstcommentary"><a id="SP16" class="paragraph-anchor"></a><b>§16. </b>Datum is very similar.
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="function-syntax">Packaging::datum_text</span><button class="popup" onclick="togglePopup('usagePopup26')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup26">Usage of <span class="code-font"><span class="function-syntax">Packaging::datum_text</span></span>:<br/>Hierarchy Locations - <a href="1-hl.html#SP3">§3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="reserved-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">function_iname</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">translation</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="function-syntax">Packaging::datum_text</span><button class="popup" onclick="togglePopup('usagePopup24')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup24">Usage of <span class="code-font"><span class="function-syntax">Packaging::datum_text</span></span>:<br/>Hierarchy Locations - <a href="1-hl.html#SP3">§3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="reserved-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">function_iname</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">translation</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">package_request</span><span class="plain-syntax"> *</span><span class="identifier-syntax">P</span><span class="plain-syntax"> = </span><a href="1-pck.html#SP3" class="function-link"><span class="function-syntax">Packaging::request</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">function_iname</span><span class="plain-syntax">, </span><a href="1-pt.html#SP1" class="function-link"><span class="function-syntax">PackageTypes::get</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"_data"</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">iname</span><span class="plain-syntax"> = </span><a href="1-in.html#SP5" class="function-link"><span class="function-syntax">InterNames::explicitly_named</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">translation</span><span class="plain-syntax">, </span><span class="identifier-syntax">P</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">iname</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="1-trn.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresscurrentchapter">1</li><li class="progresssection"><a href="1-bm.html">bm</a></li><li class="progresssection"><a href="1-bs.html">bs</a></li><li class="progresssection"><a href="1-ip.html">ip</a></li><li class="progresssection"><a href="1-hl.html">hl</a></li><li class="progresssection"><a href="1-trn.html">trn</a></li><li class="progresscurrent">pck</li><li class="progresssection"><a href="1-pt.html">pt</a></li><li class="progresssection"><a href="1-in.html">in</a></li><li class="progresschapter"><a href="2-is.html">2</a></li><li class="progresschapter"><a href="3-prd.html">3</a></li><li class="progressnext"><a href="1-pt.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="1-trn.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresscurrentchapter">1</li><li class="progresssection"><a href="1-bm.html">bm</a></li><li class="progresssection"><a href="1-ls.html">ls</a></li><li class="progresssection"><a href="1-ip.html">ip</a></li><li class="progresssection"><a href="1-hl.html">hl</a></li><li class="progresssection"><a href="1-trn.html">trn</a></li><li class="progresscurrent">pck</li><li class="progresssection"><a href="1-pt.html">pt</a></li><li class="progresssection"><a href="1-in.html">in</a></li><li class="progresschapter"><a href="2-is.html">2</a></li><li class="progresschapter"><a href="3-prd.html">3</a></li><li class="progressnext"><a href="1-pt.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -87,7 +87,7 @@ Instead we use the following function:
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="identifier-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="function-syntax">PackageTypes::get</span><button class="popup" onclick="togglePopup('usagePopup1')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup1">Usage of <span class="code-font"><span class="function-syntax">PackageTypes::get</span></span>:<br/><a href="1-pt.html#SP2">§2</a><br/>Building Site - <a href="1-bs.html#SP2">§2</a><br/>Hierarchy Locations - <a href="1-hl.html#SP3">§3</a>, <a href="1-hl.html#SP4">§4</a>, <a href="1-hl.html#SP5">§5</a><br/>Packaging - <a href="1-pck.html#SP12">§12</a>, <a href="1-pck.html#SP15">§15</a>, <a href="1-pck.html#SP18">§18</a>, <a href="1-pck.html#SP20">§20</a><br/>Producing Inter - <a href="3-prd.html#SP3">§3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">name</span><span class="plain-syntax">) {</span>
|
||||
<span class="identifier-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="function-syntax">PackageTypes::get</span><button class="popup" onclick="togglePopup('usagePopup1')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup1">Usage of <span class="code-font"><span class="function-syntax">PackageTypes::get</span></span>:<br/><a href="1-pt.html#SP2">§2</a><br/>Large-Scale Structure - <a href="1-ls.html#SP4">§4</a>, <a href="1-ls.html#SP5">§5</a>, <a href="1-ls.html#SP6">§6</a>, <a href="1-ls.html#SP11">§11</a>, <a href="1-ls.html#SP14">§14</a><br/>Hierarchy Locations - <a href="1-hl.html#SP3">§3</a>, <a href="1-hl.html#SP4">§4</a>, <a href="1-hl.html#SP5">§5</a><br/>Packaging - <a href="1-pck.html#SP12">§12</a>, <a href="1-pck.html#SP16">§16</a><br/>Producing Inter - <a href="3-prd.html#SP3">§3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">name</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_symbols_table</span><span class="plain-syntax"> *</span><span class="identifier-syntax">scope</span><span class="plain-syntax"> = </span><span class="identifier-syntax">InterTree::global_scope</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">);</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ptype</span><span class="plain-syntax"> = </span><span class="identifier-syntax">InterSymbolsTables::symbol_from_name</span><span class="plain-syntax">(</span><span class="identifier-syntax">scope</span><span class="plain-syntax">, </span><span class="identifier-syntax">name</span><span class="plain-syntax">);</span>
|
||||
|
@ -96,7 +96,7 @@ Instead we use the following function:
|
|||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="1-pt.html#SP1_1" class="named-paragraph-link"><span class="named-paragraph">Decide if this package type is to be enclosing</span><span class="named-paragraph-number">1.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ptype</span><span class="plain-syntax"> = </span><a href="3-prd.html#SP2" class="function-link"><span class="function-syntax">Produce::new_symbol</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">scope</span><span class="plain-syntax">, </span><span class="identifier-syntax">name</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="3-prd.html#SP2" class="function-link"><span class="function-syntax">Produce::guard</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">Inter::PackageType::new_packagetype</span><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><a href="1-bs.html#SP2" class="function-link"><span class="function-syntax">Site::package_types</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">), </span><span class="identifier-syntax">ptype</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><a href="1-pck.html#SP1" class="function-link"><span class="function-syntax">Packaging::package_types</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">), </span><span class="identifier-syntax">ptype</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">enclose</span><span class="plain-syntax">) </span><a href="3-prd.html#SP2" class="function-link"><span class="function-syntax">Produce::annotate_symbol_i</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ptype</span><span class="plain-syntax">, </span><span class="identifier-syntax">ENCLOSING_IANN</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
|
@ -131,12 +131,12 @@ want to optimise this by cacheing the result:
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="identifier-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="function-syntax">PackageTypes::function</span><button class="popup" onclick="togglePopup('usagePopup2')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup2">Usage of <span class="code-font"><span class="function-syntax">PackageTypes::function</span></span>:<br/>Packaging - <a href="1-pck.html#SP19">§19</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">) {</span>
|
||||
<span class="identifier-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="function-syntax">PackageTypes::function</span><button class="popup" onclick="togglePopup('usagePopup2')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup2">Usage of <span class="code-font"><span class="function-syntax">PackageTypes::function</span></span>:<br/>Packaging - <a href="1-pck.html#SP15">§15</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="1-pt.html#SP1" class="function-link"><span class="function-syntax">PackageTypes::get</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"_function"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="1-pck.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresscurrentchapter">1</li><li class="progresssection"><a href="1-bm.html">bm</a></li><li class="progresssection"><a href="1-bs.html">bs</a></li><li class="progresssection"><a href="1-ip.html">ip</a></li><li class="progresssection"><a href="1-hl.html">hl</a></li><li class="progresssection"><a href="1-trn.html">trn</a></li><li class="progresssection"><a href="1-pck.html">pck</a></li><li class="progresscurrent">pt</li><li class="progresssection"><a href="1-in.html">in</a></li><li class="progresschapter"><a href="2-is.html">2</a></li><li class="progresschapter"><a href="3-prd.html">3</a></li><li class="progressnext"><a href="1-in.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="1-pck.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresscurrentchapter">1</li><li class="progresssection"><a href="1-bm.html">bm</a></li><li class="progresssection"><a href="1-ls.html">ls</a></li><li class="progresssection"><a href="1-ip.html">ip</a></li><li class="progresssection"><a href="1-hl.html">hl</a></li><li class="progresssection"><a href="1-trn.html">trn</a></li><li class="progresssection"><a href="1-pck.html">pck</a></li><li class="progresscurrent">pt</li><li class="progresssection"><a href="1-in.html">in</a></li><li class="progresschapter"><a href="2-is.html">2</a></li><li class="progresschapter"><a href="3-prd.html">3</a></li><li class="progressnext"><a href="1-in.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -143,7 +143,7 @@ a stand-alone section just to give these functions legible names.
|
|||
</pre>
|
||||
<ul class="endnotetexts"><li>The structure name_translation is accessed in 1/hl and here.</li></ul>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="1-hl.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresscurrentchapter">1</li><li class="progresssection"><a href="1-bm.html">bm</a></li><li class="progresssection"><a href="1-bs.html">bs</a></li><li class="progresssection"><a href="1-ip.html">ip</a></li><li class="progresssection"><a href="1-hl.html">hl</a></li><li class="progresscurrent">trn</li><li class="progresssection"><a href="1-pck.html">pck</a></li><li class="progresssection"><a href="1-pt.html">pt</a></li><li class="progresssection"><a href="1-in.html">in</a></li><li class="progresschapter"><a href="2-is.html">2</a></li><li class="progresschapter"><a href="3-prd.html">3</a></li><li class="progressnext"><a href="1-pck.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="1-hl.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresscurrentchapter">1</li><li class="progresssection"><a href="1-bm.html">bm</a></li><li class="progresssection"><a href="1-ls.html">ls</a></li><li class="progresssection"><a href="1-ip.html">ip</a></li><li class="progresssection"><a href="1-hl.html">hl</a></li><li class="progresscurrent">trn</li><li class="progresssection"><a href="1-pck.html">pck</a></li><li class="progresssection"><a href="1-pt.html">pt</a></li><li class="progresssection"><a href="1-in.html">in</a></li><li class="progresschapter"><a href="2-is.html">2</a></li><li class="progresschapter"><a href="3-prd.html">3</a></li><li class="progressnext"><a href="1-pck.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -162,7 +162,7 @@ function togglePopup(material_id) {
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">symbol_to_check</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"STRICT_MODE"</span><span class="plain-syntax">)) { </span><span class="identifier-syntax">def</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">; }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">symb</span><span class="plain-syntax"> = </span><a href="2-eis.html#SP4" class="function-link"><span class="function-syntax">EmitInterSchemas::find_identifier_text</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">symbol_to_check</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Inter::Packages::scope</span><span class="plain-syntax">(</span><a href="1-bs.html#SP2" class="function-link"><span class="function-syntax">Site::architecture_package</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">)),</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Inter::Packages::scope</span><span class="plain-syntax">(</span><a href="1-ls.html#SP6" class="function-link"><span class="function-syntax">LargeScale::architecture_package</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">)),</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">second_call</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">symb</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Wiring::cable_end</span><span class="plain-syntax">(</span><span class="identifier-syntax">symb</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOGIF</span><span class="plain-syntax">(</span><span class="identifier-syntax">SCHEMA_COMPILATION</span><span class="plain-syntax">, </span><span class="string-syntax">"Symb is $3\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">symb</span><span class="plain-syntax">);</span>
|
||||
|
@ -590,7 +590,7 @@ function togglePopup(material_id) {
|
|||
<span class="plain-syntax"> </span><a href="3-prd.html#SP4" class="function-link"><span class="function-syntax">Produce::val_iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_value</span><span class="plain-syntax">, </span><span class="identifier-syntax">RTKindDeclarations::iname</span><span class="plain-syntax">(</span><span class="identifier-syntax">K_object</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> #</span><span class="identifier-syntax">endif</span>
|
||||
<span class="plain-syntax"> #</span><span class="identifier-syntax">ifndef</span><span class="plain-syntax"> </span><span class="identifier-syntax">CORE_MODULE</span>
|
||||
<span class="plain-syntax"> </span><a href="3-prd.html#SP4" class="function-link"><span class="function-syntax">Produce::val_symbol</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_value</span><span class="plain-syntax">, </span><a href="1-bs.html#SP2" class="function-link"><span class="function-syntax">Site::find_architectural_symbol</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Object"</span><span class="plain-syntax">, </span><a href="3-prd.html#SP4" class="function-link"><span class="function-syntax">Produce::kind_to_symbol</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">NULL</span><span class="plain-syntax">)));</span>
|
||||
<span class="plain-syntax"> </span><a href="3-prd.html#SP4" class="function-link"><span class="function-syntax">Produce::val_symbol</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_value</span><span class="plain-syntax">, </span><a href="1-ls.html#SP7" class="function-link"><span class="function-syntax">LargeScale::find_architectural_symbol</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Object"</span><span class="plain-syntax">, </span><a href="3-prd.html#SP4" class="function-link"><span class="function-syntax">Produce::kind_to_symbol</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">NULL</span><span class="plain-syntax">)));</span>
|
||||
<span class="plain-syntax"> #</span><span class="identifier-syntax">endif</span>
|
||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"objectloop without visible variable"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
|
@ -738,7 +738,7 @@ function togglePopup(material_id) {
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">S</span><span class="plain-syntax"> = </span><a href="3-prd.html#SP4" class="function-link"><span class="function-syntax">Produce::seek_symbol</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">second_call</span><span class="plain-syntax">, </span><span class="identifier-syntax">name</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">S</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">S</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">S</span><span class="plain-syntax"> = </span><a href="1-bs.html#SP2" class="function-link"><span class="function-syntax">Site::find_architectural_symbol</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">name</span><span class="plain-syntax">, </span><a href="3-prd.html#SP4" class="function-link"><span class="function-syntax">Produce::kind_to_symbol</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">NULL</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">S</span><span class="plain-syntax"> = </span><a href="1-ls.html#SP7" class="function-link"><span class="function-syntax">LargeScale::find_architectural_symbol</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">name</span><span class="plain-syntax">, </span><a href="3-prd.html#SP4" class="function-link"><span class="function-syntax">Produce::kind_to_symbol</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">NULL</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">S</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">S</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">S</span><span class="plain-syntax"> = </span><a href="3-prd.html#SP4" class="function-link"><span class="function-syntax">Produce::seek_symbol</span></a><span class="plain-syntax">(</span><a href="3-prd.html#SP2" class="function-link"><span class="function-syntax">Produce::connectors_scope</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">), </span><span class="identifier-syntax">name</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">S</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">S</span><span class="plain-syntax">;</span>
|
||||
|
|
|
@ -543,10 +543,10 @@ we go to some trouble here.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">d</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">; </span><span class="identifier-syntax">d</span><span class="plain-syntax"> < </span><span class="identifier-syntax">depth</span><span class="plain-syntax">; </span><span class="identifier-syntax">d</span><span class="plain-syntax">++) </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">" "</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">switch</span><span class="plain-syntax"> (</span><span class="identifier-syntax">isn</span><span class="plain-syntax">-></span><span class="element-syntax">isn_type</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">STATEMENT_ISNT:</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">"* (statement) %S\n"</span><span class="plain-syntax">, </span><a href="1-ip.html#SP2" class="function-link"><span class="function-syntax">Primitives::name</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">isn</span><span class="plain-syntax">-></span><span class="element-syntax">isn_clarifier</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">"* (statement) %S\n"</span><span class="plain-syntax">, </span><a href="1-ip.html#SP4" class="function-link"><span class="function-syntax">Primitives::name</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">isn</span><span class="plain-syntax">-></span><span class="element-syntax">isn_clarifier</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">OPERATION_ISNT:</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">"* (operation) %S\n"</span><span class="plain-syntax">, </span><a href="1-ip.html#SP2" class="function-link"><span class="function-syntax">Primitives::name</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">isn</span><span class="plain-syntax">-></span><span class="element-syntax">isn_clarifier</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">"* (operation) %S\n"</span><span class="plain-syntax">, </span><a href="1-ip.html#SP4" class="function-link"><span class="function-syntax">Primitives::name</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">isn</span><span class="plain-syntax">-></span><span class="element-syntax">isn_clarifier</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">CODE_ISNT:</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">"* (code)"</span><span class="plain-syntax">);</span>
|
||||
|
@ -2859,7 +2859,7 @@ these out at the start of each iteration.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">has_operand_after</span><span class="plain-syntax">) </span><span class="identifier-syntax">a</span><span class="plain-syntax">++;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">a</span><span class="plain-syntax"> != </span><a href="2-is.html#SP32" class="function-link"><span class="function-syntax">InterSchemas::arity</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">isn</span><span class="plain-syntax">-></span><span class="element-syntax">isn_clarifier</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">"Seem to have arity %d with isn %S which needs %d\n"</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">a</span><span class="plain-syntax">, </span><a href="1-ip.html#SP2" class="function-link"><span class="function-syntax">Primitives::name</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">isn</span><span class="plain-syntax">-></span><span class="element-syntax">isn_clarifier</span><span class="plain-syntax">),</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">a</span><span class="plain-syntax">, </span><a href="1-ip.html#SP4" class="function-link"><span class="function-syntax">Primitives::name</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">isn</span><span class="plain-syntax">-></span><span class="element-syntax">isn_clarifier</span><span class="plain-syntax">),</span>
|
||||
<span class="plain-syntax"> </span><a href="2-is.html#SP32" class="function-link"><span class="function-syntax">InterSchemas::arity</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">isn</span><span class="plain-syntax">-></span><span class="element-syntax">isn_clarifier</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">"$1\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">isn</span><span class="plain-syntax">-></span><span class="element-syntax">parent_schema</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"bad arity"</span><span class="plain-syntax">);</span>
|
||||
|
|
|
@ -89,7 +89,7 @@ function togglePopup(material_id) {
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">inter_package</span><span class="plain-syntax"> *</span><span class="identifier-syntax">current_inter_routine</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">} </span><span class="reserved-syntax">site_production_data</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Produce::clear_prdata</span><button class="popup" onclick="togglePopup('usagePopup1')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup1">Usage of <span class="code-font"><span class="function-syntax">Produce::clear_prdata</span></span>:<br/>Building Site - <a href="1-bs.html#SP2">§2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Produce::clear_prdata</span><button class="popup" onclick="togglePopup('usagePopup1')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup1">Usage of <span class="code-font"><span class="function-syntax">Produce::clear_prdata</span></span>:<br/>Building Module - <a href="1-bm.html#SP4">§4</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">building_site</span><span class="plain-syntax"> *</span><span class="identifier-syntax">B</span><span class="plain-syntax"> = &(</span><span class="identifier-syntax">I</span><span class="plain-syntax">-></span><span class="identifier-syntax">site</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">B</span><span class="plain-syntax">-></span><span class="element-syntax">sprdata</span><span class="plain-syntax">.</span><span class="element-syntax">begin_bookmark</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Inter::Bookmarks::at_start_of_this_repository</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">B</span><span class="plain-syntax">-></span><span class="element-syntax">sprdata</span><span class="plain-syntax">.</span><span class="element-syntax">locals_bookmark</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Inter::Bookmarks::at_start_of_this_repository</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">);</span>
|
||||
|
@ -102,7 +102,7 @@ function togglePopup(material_id) {
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="plain-syntax">-></span><span class="identifier-syntax">site</span><span class="plain-syntax">.</span><span class="element-syntax">sprdata</span><span class="plain-syntax">.</span><span class="element-syntax">current_inter_routine</span><span class="plain-syntax"> = </span><span class="identifier-syntax">P</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Produce::guard</span><button class="popup" onclick="togglePopup('usagePopup3')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup3">Usage of <span class="code-font"><span class="function-syntax">Produce::guard</span></span>:<br/><a href="3-prd.html#SP3">§3</a>, <a href="3-prd.html#SP4">§4</a>, <a href="3-prd.html#SP5">§5</a><br/>Building Site - <a href="1-bs.html#SP2">§2</a><br/>Inter Primitives - <a href="1-ip.html#SP1">§1</a><br/>Package Types - <a href="1-pt.html#SP1">§1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_error_message</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ERR</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Produce::guard</span><button class="popup" onclick="togglePopup('usagePopup3')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup3">Usage of <span class="code-font"><span class="function-syntax">Produce::guard</span></span>:<br/><a href="3-prd.html#SP3">§3</a>, <a href="3-prd.html#SP4">§4</a>, <a href="3-prd.html#SP5">§5</a><br/>Large-Scale Structure - <a href="1-ls.html#SP9">§9</a><br/>Inter Primitives - <a href="1-ip.html#SP3">§3</a>, <a href="1-ip.html#SP4">§4</a><br/>Package Types - <a href="1-pt.html#SP1">§1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_error_message</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ERR</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">ERR</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">problem_count</span><span class="plain-syntax"> == </span><span class="constant-syntax">0</span><span class="plain-syntax">)) { </span><span class="identifier-syntax">Inter::Errors::issue</span><span class="plain-syntax">(</span><span class="identifier-syntax">ERR</span><span class="plain-syntax">); </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"inter error"</span><span class="plain-syntax">); }</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
|
@ -121,15 +121,15 @@ function togglePopup(material_id) {
|
|||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="identifier-syntax">inter_symbols_table</span><span class="plain-syntax"> *</span><span class="function-syntax">Produce::main_scope</span><button class="popup" onclick="togglePopup('usagePopup6')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup6">Usage of <span class="code-font"><span class="function-syntax">Produce::main_scope</span></span>:<br/>Emitting Inter Schemas - <a href="2-eis.html#SP4">§4</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">Inter::Packages::scope</span><span class="plain-syntax">(</span><a href="1-bs.html#SP2" class="function-link"><span class="function-syntax">Site::main_package_if_it_exists</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">Inter::Packages::scope</span><span class="plain-syntax">(</span><a href="1-ls.html#SP4" class="function-link"><span class="function-syntax">LargeScale::main_package_if_it_exists</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="identifier-syntax">inter_symbols_table</span><span class="plain-syntax"> *</span><span class="function-syntax">Produce::connectors_scope</span><button class="popup" onclick="togglePopup('usagePopup7')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup7">Usage of <span class="code-font"><span class="function-syntax">Produce::connectors_scope</span></span>:<br/>Emitting Inter Schemas - <a href="2-eis.html#SP4">§4</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">Inter::Packages::scope</span><span class="plain-syntax">(</span><a href="1-bs.html#SP2" class="function-link"><span class="function-syntax">Site::connectors_package_if_it_exists</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">Inter::Packages::scope</span><span class="plain-syntax">(</span><a href="1-ls.html#SP5" class="function-link"><span class="function-syntax">LargeScale::connectors_package_if_it_exists</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="identifier-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="function-syntax">Produce::opcode</span><span class="plain-syntax">(</span><span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">inter_ti</span><span class="plain-syntax"> </span><span class="identifier-syntax">bip</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="1-ip.html#SP1" class="function-link"><span class="function-syntax">Primitives::get</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">bip</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="1-ip.html#SP3" class="function-link"><span class="function-syntax">Primitives::get</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">bip</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="identifier-syntax">inter_ti</span><span class="plain-syntax"> </span><span class="function-syntax">Produce::baseline</span><button class="popup" onclick="togglePopup('usagePopup8')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup8">Usage of <span class="code-font"><span class="function-syntax">Produce::baseline</span></span>:<br/><a href="3-prd.html#SP3">§3</a>, <a href="3-prd.html#SP4">§4</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_bookmark</span><span class="plain-syntax"> *</span><span class="identifier-syntax">IBM</span><span class="plain-syntax">) {</span>
|
||||
|
@ -211,7 +211,7 @@ function togglePopup(material_id) {
|
|||
<span class="plain-syntax">}</span>
|
||||
|
||||
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Produce::change_translation</span><button class="popup" onclick="togglePopup('usagePopup16')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup16">Usage of <span class="code-font"><span class="function-syntax">Produce::change_translation</span></span>:<br/>Hierarchy Locations - <a href="1-hl.html#SP3">§3</a>, <a href="1-hl.html#SP3_1">§3.1</a><br/>Packaging - <a href="1-pck.html#SP19">§19</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">iname</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">new_text</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Produce::change_translation</span><button class="popup" onclick="togglePopup('usagePopup16')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup16">Usage of <span class="code-font"><span class="function-syntax">Produce::change_translation</span></span>:<br/>Hierarchy Locations - <a href="1-hl.html#SP3">§3</a>, <a href="1-hl.html#SP3_1">§3.1</a><br/>Packaging - <a href="1-pck.html#SP15">§15</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">iname</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">new_text</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Inter::Symbols::set_translate</span><span class="plain-syntax">(</span><a href="1-in.html#SP8" class="function-link"><span class="function-syntax">InterNames::to_symbol</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">iname</span><span class="plain-syntax">), </span><span class="identifier-syntax">new_text</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
|
@ -265,14 +265,14 @@ function togglePopup(material_id) {
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">save</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> *</span><span class="identifier-syntax">save</span><span class="plain-syntax"> = </span><a href="1-pck.html#SP13" class="function-link"><span class="function-syntax">Packaging::enter_home_of</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">iname</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">package_request</span><span class="plain-syntax"> *</span><span class="identifier-syntax">R</span><span class="plain-syntax"> = </span><a href="1-in.html#SP7" class="function-link"><span class="function-syntax">InterNames::location</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">iname</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">R</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">R</span><span class="plain-syntax"> == </span><a href="1-bs.html#SP2" class="function-link"><span class="function-syntax">Site::main_request</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">))) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">R</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">R</span><span class="plain-syntax"> == </span><a href="1-ls.html#SP4" class="function-link"><span class="function-syntax">LargeScale::main_request</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">))) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">"Routine outside of package: %n\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">iname</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"routine outside of package"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">block_iname</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="1-pck.html#SP19" class="function-link"><span class="function-syntax">Packaging::housed_in_function</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">iname</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="1-pck.html#SP15" class="function-link"><span class="function-syntax">Packaging::housed_in_function</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">iname</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">block_iname</span><span class="plain-syntax"> = </span><a href="1-pck.html#SP5" class="function-link"><span class="function-syntax">Packaging::make_iname_within</span></a><span class="plain-syntax">(</span><a href="1-in.html#SP7" class="function-link"><span class="function-syntax">InterNames::location</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">iname</span><span class="plain-syntax">), </span><span class="identifier-syntax">I</span><span class="string-syntax">"block"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"routine outside function package"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_bookmark</span><span class="plain-syntax"> </span><span class="identifier-syntax">save_ib</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Inter::Bookmarks::snapshot</span><span class="plain-syntax">(</span><a href="1-pck.html#SP8" class="function-link"><span class="function-syntax">Packaging::at</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">));</span>
|
||||
|
@ -294,7 +294,7 @@ function togglePopup(material_id) {
|
|||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="function-syntax">Produce::kernel</span><span class="plain-syntax">(</span><span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="reserved-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">public_name</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="1-pck.html#SP19" class="function-link"><span class="function-syntax">Packaging::housed_in_function</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">public_name</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="1-pck.html#SP15" class="function-link"><span class="function-syntax">Packaging::housed_in_function</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">public_name</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"routine not housed in function"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">package_request</span><span class="plain-syntax"> *</span><span class="identifier-syntax">P</span><span class="plain-syntax"> = </span><a href="1-in.html#SP7" class="function-link"><span class="function-syntax">InterNames::location</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">public_name</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">kernel_name</span><span class="plain-syntax"> = </span><a href="1-pck.html#SP5" class="function-link"><span class="function-syntax">Packaging::make_iname_within</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">P</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"kernel"</span><span class="plain-syntax">);</span>
|
||||
|
@ -394,7 +394,7 @@ function togglePopup(material_id) {
|
|||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Produce::inv_primitive</span><button class="popup" onclick="togglePopup('usagePopup27')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup27">Usage of <span class="code-font"><span class="function-syntax">Produce::inv_primitive</span></span>:<br/>Emitting Inter Schemas - <a href="2-eis.html#SP3_4">§3.4</a>, <a href="2-eis.html#SP3_5">§3.5</a>, <a href="2-eis.html#SP3_6">§3.6</a>, <a href="2-eis.html#SP3_7">§3.7</a>, <a href="2-eis.html#SP3_8">§3.8</a>, <a href="2-eis.html#SP3_9">§3.9</a>, <a href="2-eis.html#SP3_10">§3.10</a>, <a href="2-eis.html#SP3_11">§3.11</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">inter_ti</span><span class="plain-syntax"> </span><span class="identifier-syntax">bip</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prim_symb</span><span class="plain-syntax"> = </span><a href="1-ip.html#SP1" class="function-link"><span class="function-syntax">Primitives::get</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">bip</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prim_symb</span><span class="plain-syntax"> = </span><a href="1-ip.html#SP3" class="function-link"><span class="function-syntax">Primitives::get</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">bip</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">prim_symb</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">STDERR</span><span class="plain-syntax">, </span><span class="string-syntax">"BIP = %d\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">bip</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"undefined primitive"</span><span class="plain-syntax">);</span>
|
||||
|
|
|
@ -12,6 +12,11 @@
|
|||
<link href="../docs-assets/Navigation.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Fonts.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Base.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<script src="http://code.jquery.com/jquery-1.12.4.min.js"
|
||||
integrity="sha256-ZosEbRLbNQzLpnKIkEdrPv7lOy9C27hHQ+Xp8a4MxAQ=" crossorigin="anonymous"></script>
|
||||
|
||||
<script src="../docs-assets/Bigfoot.js"></script>
|
||||
<link href="../docs-assets/Bigfoot.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Colours.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
|
||||
</head>
|
||||
|
@ -65,7 +70,7 @@
|
|||
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../compiler.html">Inter Modules</a></li><li><a href="index.html">building</a></li><li><a href="index.html#P">Preliminaries</a></li><li><b>What This Module Does</b></li></ul></div>
|
||||
<p class="purpose">An overview of the building module's role and abilities.</p>
|
||||
|
||||
<ul class="toc"><li><a href="P-wtmd.html#SP1">§1. Prerequisites</a></li><li><a href="P-wtmd.html#SP2">§2. Services for builders</a></li></ul><hr class="tocbar">
|
||||
<ul class="toc"><li><a href="P-wtmd.html#SP1">§1. Prerequisites</a></li><li><a href="P-wtmd.html#SP2">§2. Services for builders</a></li><li><a href="P-wtmd.html#SP3">§3. Structural conventions</a></li></ul><hr class="tocbar">
|
||||
|
||||
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>§1. Prerequisites. </b>The building module is a part of the Inform compiler toolset. It is
|
||||
presented as a literate program or "web". Before diving in:
|
||||
|
@ -81,12 +86,93 @@ and where functions have names like <span class="extract"><span class="extract-s
|
|||
uses a module of utility functions called <a href="../../../inweb/docs/foundation-module/index.html" class="internal">foundation</a>.
|
||||
For more, see <a href="../../../inweb/docs/foundation-module/P-abgtf.html" class="internal">A Brief Guide to Foundation (in foundation)</a>.
|
||||
</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>§2. Services for builders. </b>This module is essentially middleware. It does none of the proactive business
|
||||
of compiling, but instead acts as a bridge to the low-level functions in
|
||||
the <a href="../bytecode-module/index.html" class="internal">bytecode</a> module, allowing them to be used with much greater ease.
|
||||
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>§2. Services for builders. </b>This module is essentially middleware. It acts as a bridge to the low-level
|
||||
functions in the <a href="../bytecode-module/index.html" class="internal">bytecode</a> module, allowing them to be used with much
|
||||
greater ease and consistency.
|
||||
</p>
|
||||
|
||||
<p class="commentary">In particular, Inter code is fundamentally a mass of <span class="extract"><span class="extract-syntax">inter_package</span></span>s, which
|
||||
<p class="commentary">In particular, the functions here enforce a number of conventions about how an
|
||||
Inter tree is laid out. Indiscriminate use of <a href="../bytecode-module/index.html" class="internal">bytecode</a> functions would allow
|
||||
other layouts to be made, but we want to be systematic.
|
||||
</p>
|
||||
|
||||
<p class="commentary">This module needs plenty of working data, and stashes that data inside the
|
||||
<span class="extract"><span class="extract-syntax">inter_tree</span></span> structure it is working on: in a compoment of that structure called
|
||||
a <a href="1-bm.html#SP4" class="internal">building_site</a>. Whereas the main data ih an <span class="extract"><span class="extract-syntax">inter_tree</span></span> affects the meaning
|
||||
of the tree, i.e., makes a difference as to what program the tree represents,
|
||||
the contents of the <a href="1-bm.html#SP4" class="internal">building_site</a> component are only used to make it, and
|
||||
are ignored by the <a href="../final-module/index.html" class="internal">final</a> code-generator.
|
||||
</p>
|
||||
|
||||
<p class="commentary firstcommentary"><a id="SP3" class="paragraph-anchor"></a><b>§3. Structural conventions. </b>An inter tree is fundamentally a set of resources stored in a nested set of
|
||||
<span class="extract"><span class="extract-syntax">inter_package</span></span> boxes.
|
||||
</p>
|
||||
|
||||
<ul class="items"><li>● The following resources are stored at the root level (i.e., not inside of
|
||||
any package) and nowhere else:
|
||||
<ul class="items"><li>● Package type declarations. Inter can support a nearly arbitrary set of
|
||||
different package types, and the <a href="../bytecode-module/index.html" class="internal">bytecode</a> functions make no assumptions.
|
||||
In <a href="1-pt.html" class="internal">Package Types</a>, however, we //present a single standard set of package
|
||||
types used by Inform code.
|
||||
</li><li>● Primitive declarations. See <a href="1-ip.html" class="internal">Inter Primitives</a>. Again, Inter can in
|
||||
principle support a variety of different "instruction sets", but this module
|
||||
presents a single standardised instruction set.
|
||||
</li><li>● Compiler pragmas. These are marginal tweaks on a platform-by-platform basis
|
||||
and use of them is minimal, but see <a href="1-ip.html#SP4" class="internal">Primitives::emit_pragma</a>.
|
||||
</li></ul>
|
||||
<li>● Everything else is inside a single top-level package called <span class="extract"><span class="extract-syntax">main</span></span>, which
|
||||
has package type <span class="extract"><span class="extract-syntax">_plain</span></span>.
|
||||
</li><li>● <span class="extract"><span class="extract-syntax">main</span></span> contains only packages, and of only two types:
|
||||
<ul class="items"><li>● "Modules", which are packages of type <span class="extract"><span class="extract-syntax">_module</span></span>. These occur nowhere else
|
||||
in the tree.
|
||||
</li><li>● "Linkages", which are packages of type <span class="extract"><span class="extract-syntax">_linkage</span></span>. These occur nowhere else
|
||||
in the tree.
|
||||
</li></ul>
|
||||
<li>● <a href="../inform7/index.html" class="internal">inform7</a> compiles the material in each compilation unit to a module
|
||||
named for that unit. That is:
|
||||
<ul class="items"><li>● The module <span class="extract"><span class="extract-syntax">source_text</span></span> contains material from the main source text.
|
||||
</li><li>● Each extension included produces a module, named, for example,
|
||||
<span class="extract"><span class="extract-syntax">locksmith_by_emily_short</span></span>.
|
||||
</li></ul>
|
||||
<li>● Each kit produces a module, named after it. Any Inter tree produced by
|
||||
<a href="../inform7/index.html" class="internal">inform7</a> will always contain the module <span class="extract"><span class="extract-syntax">BasicInformKit</span></span>, for example.
|
||||
</li><li>● <a href="../inform7/index.html" class="internal">inform7</a> generates an additional module called <span class="extract"><span class="extract-syntax">generic</span></span>, holding
|
||||
generic definitions — material which is the same regardless of what is
|
||||
being compiled.
|
||||
</li><li>● <a href="../inform7/index.html" class="internal">inform7</a> generates an additional module called <span class="extract"><span class="extract-syntax">completion</span></span>, holding
|
||||
resources put together from across different compilation units.<sup id="fnref:1"><a href="#fn:1" rel="footnote">1</a></sup>
|
||||
</li><li>● <a href="../inter/index.html" class="internal">inter</a> generates an additional module called <span class="extract"><span class="extract-syntax">synoptic</span></span>, made during
|
||||
linking, which contains resources collated from or cross-referencing
|
||||
everything else.
|
||||
</li><li>● Modules contain only further packages, called "submodules" and with the
|
||||
package type <span class="extract"><span class="extract-syntax">_submodule</span></span>. The Inform tools use a standard set of names for
|
||||
such submodules: for example, in any module the resources defining its
|
||||
global variables are in a submodule called <span class="extract"><span class="extract-syntax">variables</span></span>. (If it defines no
|
||||
variables, the submodule will not be present.)
|
||||
</li><li>● There are just two different linkages — packages with special contents
|
||||
and which the linking steps of <a href="../pipeline-module/index.html" class="internal">pipeline</a> treat differently from modules.
|
||||
<ul class="items"><li>● <span class="extract"><span class="extract-syntax">architecture</span></span> has no subpackages, and contains only constant definitions,
|
||||
drawn from a fixed and limited set. These definitions depend on, and indeed
|
||||
express, the target architecture: for example, <span class="extract"><span class="extract-syntax">WORDSIZE</span></span>, the number of
|
||||
bytes per word, is defined here. Symbols here behave uniquely in linking:
|
||||
when two trees are linked together, they will each have an <span class="extract"><span class="extract-syntax">architecture</span></span>
|
||||
package, and symbols in them will simply be identified with each other.
|
||||
Thus the <span class="extract"><span class="extract-syntax">WORDSIZE</span></span> defined in the main Inform 7 tree will be considered
|
||||
the same symbol as the <span class="extract"><span class="extract-syntax">WORDSIZE</span></span> defined in the tree for BasicInformKit.
|
||||
</li><li>● <span class="extract"><span class="extract-syntax">connectors</span></span> has no subpackages and no resources other than symbols.
|
||||
It holds plugs and sockets enabling the Inter tree to be linked with other
|
||||
Inter trees; during linking, these are removed when their purposes has been
|
||||
served, so that after a successful link, <span class="extract"><span class="extract-syntax">connectors</span></span> will always be empty.
|
||||
</li></ul>
|
||||
</li></ul>
|
||||
<p class="commentary">See <a href="1-ls.html" class="internal">Large-Scale Structure</a> for the code which builds all of the above
|
||||
packages (though not their contents).
|
||||
</p>
|
||||
|
||||
<ul class="footnotetexts"><li class="footnote" id="fn:1"><p class="inwebfootnote"><sup id="fnref:1"><a href="#fn:1" rel="footnote">1</a></sup> Ideally <span class="extract"><span class="extract-syntax">completion</span></span> would not exist, and everything in it would be made
|
||||
as part of <span class="extract"><span class="extract-syntax">synoptic</span></span> during linking, but at present this is too difficult.
|
||||
<a href="#fnref:1" title="return to text"> ↩</a></p></li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP4" class="paragraph-anchor"></a><b>§4. </b>In particular, Inter code is fundamentally a mass of <span class="extract"><span class="extract-syntax">inter_package</span></span>s, which
|
||||
cross-reference each other using <span class="extract"><span class="extract-syntax">inter_symbol</span></span>s. But of course it cannot all
|
||||
be made simultaneously. What we need is a more flexible way to describe things
|
||||
in the Inter tree: both those which have already been made, and also those
|
||||
|
@ -107,9 +193,9 @@ ceases to be virtual and comes into being: this is called "incarnation".
|
|||
to call a <span class="extract"><span class="extract-syntax">symbol_request</span></span>.
|
||||
</p>
|
||||
|
||||
<p class="commentary firstcommentary"><a id="SP3" class="paragraph-anchor"></a><b>§3. </b>Since what is built by the code in this module is Inter code, which forms up
|
||||
<p class="commentary firstcommentary"><a id="SP5" class="paragraph-anchor"></a><b>§5. </b>Since what is built by the code in this module is Inter code, which forms up
|
||||
into trees, the metaphor should perhaps be "garden", but in fact we call a
|
||||
context for making Inter a <a href="1-bs.html#SP1" class="internal">building_site</a>.
|
||||
context for making Inter a <a href="1-bm.html#SP4" class="internal">building_site</a>.
|
||||
</p>
|
||||
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
|
|
|
@ -84,9 +84,9 @@
|
|||
<span class="sectionpurpose">Setting up the use of this module.</span></p>
|
||||
</li>
|
||||
<li>
|
||||
<p class="sectionentry"><a href="1-bs.html">
|
||||
<spon class="sectiontitle">Building Site</span></a> -
|
||||
<span class="sectionpurpose"></span></p>
|
||||
<p class="sectionentry"><a href="1-ls.html">
|
||||
<spon class="sectiontitle">Large-Scale Structure</span></a> -
|
||||
<span class="sectionpurpose">To manage the main, connectors and architecture packages of an Inter tree, together with its major building blocks: modules and their submodules.</span></p>
|
||||
</li>
|
||||
<li>
|
||||
<p class="sectionentry"><a href="1-ip.html">
|
||||
|
|
|
@ -76,7 +76,7 @@
|
|||
<span class="plain-syntax"> </span><a href="../../../inweb/docs/foundation-module/3-cla.html#SP8" class="function-link"><span class="function-syntax">CommandLine::read</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">argc</span><span class="plain-syntax">, </span><span class="identifier-syntax">argv</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, &</span><a href="1-pc.html#SP3" class="function-link"><span class="function-syntax">Main::respond</span></a><span class="plain-syntax">, &</span><a href="1-pc.html#SP3" class="function-link"><span class="function-syntax">Main::ignore</span></a><span class="plain-syntax">);</span>
|
||||
|
||||
<span class="plain-syntax"> </span><a href="../words-module/1-wm.html#SP3" class="function-link"><span class="function-syntax">WordsModule::end</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><a href="../building-module/1-bm.html#SP4" class="function-link"><span class="function-syntax">BuildingModule::end</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><a href="../building-module/1-bm.html#SP5" class="function-link"><span class="function-syntax">BuildingModule::end</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><a href="../bytecode-module/1-bm2.html#SP3" class="function-link"><span class="function-syntax">BytecodeModule::end</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><a href="../../../inweb/docs/foundation-module/1-fm.html#SP9" class="function-link"><span class="function-syntax">Foundation::end</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
|
|
|
@ -59,7 +59,7 @@ function togglePopup(material_id) {
|
|||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Unit::run</span><button class="popup" onclick="togglePopup('usagePopup1')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup1">Usage of <span class="code-font"><span class="function-syntax">Unit::run</span></span>:<br/>Program Control - <a href="1-pc.html#SP3">§3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">filename</span><span class="plain-syntax"> *</span><span class="identifier-syntax">F</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">dummy</span><span class="plain-syntax"> = </span><a href="../bytecode-module/2-it.html#SP2" class="function-link"><span class="function-syntax">InterTree::new</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inter_bookmark</span><span class="plain-syntax"> </span><span class="identifier-syntax">IBM</span><span class="plain-syntax"> = </span><a href="../bytecode-module/2-bkm.html#SP1" class="function-link"><span class="function-syntax">Inter::Bookmarks::at_start_of_this_repository</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">dummy</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="../building-module/1-ip.html#SP1" class="function-link"><span class="function-syntax">Primitives::emit</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">dummy</span><span class="plain-syntax">, &</span><span class="identifier-syntax">IBM</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="../building-module/1-ip.html#SP3" class="function-link"><span class="function-syntax">Primitives::emit</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">dummy</span><span class="plain-syntax">, &</span><span class="identifier-syntax">IBM</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="../../../inweb/docs/foundation-module/2-str.html#SP20" class="function-link"><span class="function-syntax">Streams::enable_debugging</span></a><span class="plain-syntax">(</span><span class="constant-syntax">STDOUT</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">FORMER_DL</span><span class="plain-syntax"> = </span><span class="identifier-syntax">DL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">DL</span><span class="plain-syntax"> = </span><span class="constant-syntax">STDOUT</span><span class="plain-syntax">;</span>
|
||||
|
|
|
@ -171,7 +171,7 @@ function togglePopup(material_id) {
|
|||
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">unique_plug_number</span><span class="plain-syntax"> = </span><span class="constant-syntax">1</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="function-syntax">Wiring::plug</span><button class="popup" onclick="togglePopup('usagePopup11')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup11">Usage of <span class="code-font"><span class="function-syntax">Wiring::plug</span></span>:<br/>Transmigration - <a href="2-trn.html#SP3">§3</a>, <a href="2-trn.html#SP3_3">§3.3</a>, <a href="2-trn.html#SP4_1">§4.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">wanted</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inter_package</span><span class="plain-syntax"> *</span><span class="identifier-syntax">connectors</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Site::ensure_connectors_package</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inter_package</span><span class="plain-syntax"> *</span><span class="identifier-syntax">connectors</span><span class="plain-syntax"> = </span><span class="identifier-syntax">LargeScale::ensure_connectors_package</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">PN</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">PN</span><span class="plain-syntax">, </span><span class="string-syntax">"plug_%05d"</span><span class="plain-syntax">, </span><span class="identifier-syntax">unique_plug_number</span><span class="plain-syntax">++);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">plug</span><span class="plain-syntax"> = </span><a href="2-st.html#SP5" class="function-link"><span class="function-syntax">InterSymbolsTables::create_with_unique_name</span></a><span class="plain-syntax">(</span>
|
||||
|
@ -183,7 +183,7 @@ function togglePopup(material_id) {
|
|||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="function-syntax">Wiring::socket</span><button class="popup" onclick="togglePopup('usagePopup12')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup12">Usage of <span class="code-font"><span class="function-syntax">Wiring::socket</span></span>:<br/>Transmigration - <a href="2-trn.html#SP1">§1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">socket_name</span><span class="plain-syntax">, </span><span class="reserved-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">to</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inter_package</span><span class="plain-syntax"> *</span><span class="identifier-syntax">connectors</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Site::ensure_connectors_package</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inter_package</span><span class="plain-syntax"> *</span><span class="identifier-syntax">connectors</span><span class="plain-syntax"> = </span><span class="identifier-syntax">LargeScale::ensure_connectors_package</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">socket</span><span class="plain-syntax"> = </span><a href="2-st.html#SP5" class="function-link"><span class="function-syntax">InterSymbolsTables::create_with_unique_name</span></a><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pck.html#SP3" class="function-link"><span class="function-syntax">Inter::Packages::scope</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">connectors</span><span class="plain-syntax">), </span><span class="identifier-syntax">socket_name</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-cnn.html#SP1" class="function-link"><span class="function-syntax">Wiring::convert_to_socket</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">socket</span><span class="plain-syntax">, </span><span class="identifier-syntax">to</span><span class="plain-syntax">);</span>
|
||||
|
@ -192,20 +192,20 @@ function togglePopup(material_id) {
|
|||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="function-syntax">Wiring::find_socket</span><button class="popup" onclick="togglePopup('usagePopup13')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup13">Usage of <span class="code-font"><span class="function-syntax">Wiring::find_socket</span></span>:<br/><a href="2-cnn.html#SP2">§2</a><br/>Transmigration - <a href="2-trn.html#SP1">§1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">identifier</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inter_package</span><span class="plain-syntax"> *</span><span class="identifier-syntax">connectors</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Site::connectors_package_if_it_exists</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inter_package</span><span class="plain-syntax"> *</span><span class="identifier-syntax">connectors</span><span class="plain-syntax"> = </span><span class="identifier-syntax">LargeScale::connectors_package_if_it_exists</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">connectors</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">S</span><span class="plain-syntax"> = </span><a href="2-st.html#SP4" class="function-link"><span class="function-syntax">InterSymbolsTables::symbol_from_name_not_equating</span></a><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pck.html#SP3" class="function-link"><span class="function-syntax">Inter::Packages::scope</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">Site::connectors_package_if_it_exists</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">)), </span><span class="identifier-syntax">identifier</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pck.html#SP3" class="function-link"><span class="function-syntax">Inter::Packages::scope</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">LargeScale::connectors_package_if_it_exists</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">)), </span><span class="identifier-syntax">identifier</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">S</span><span class="plain-syntax">) && (</span><a href="2-sym.html#SP2" class="function-link"><span class="function-syntax">Inter::Symbols::get_scope</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">S</span><span class="plain-syntax">) == </span><span class="constant-syntax">SOCKET_ISYMS</span><span class="plain-syntax">)) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">S</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="function-syntax">Wiring::find_plug</span><button class="popup" onclick="togglePopup('usagePopup14')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup14">Usage of <span class="code-font"><span class="function-syntax">Wiring::find_plug</span></span>:<br/>Transmigration - <a href="2-trn.html#SP3">§3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">identifier</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inter_package</span><span class="plain-syntax"> *</span><span class="identifier-syntax">connectors</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Site::connectors_package_if_it_exists</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inter_package</span><span class="plain-syntax"> *</span><span class="identifier-syntax">connectors</span><span class="plain-syntax"> = </span><span class="identifier-syntax">LargeScale::connectors_package_if_it_exists</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">connectors</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">S</span><span class="plain-syntax"> = </span><a href="2-st.html#SP4" class="function-link"><span class="function-syntax">InterSymbolsTables::symbol_from_name_not_equating</span></a><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pck.html#SP3" class="function-link"><span class="function-syntax">Inter::Packages::scope</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">Site::connectors_package_if_it_exists</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">)), </span><span class="identifier-syntax">identifier</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pck.html#SP3" class="function-link"><span class="function-syntax">Inter::Packages::scope</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">LargeScale::connectors_package_if_it_exists</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">)), </span><span class="identifier-syntax">identifier</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">S</span><span class="plain-syntax">) && (</span><a href="2-sym.html#SP2" class="function-link"><span class="function-syntax">Inter::Symbols::get_scope</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">S</span><span class="plain-syntax">) == </span><span class="constant-syntax">PLUG_ISYMS</span><span class="plain-syntax">)) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">S</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
|
@ -266,7 +266,7 @@ the actual definition, and all will be well.
|
|||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Wiring::connect_plugs_to_sockets</span><span class="plain-syntax">(</span><span class="reserved-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inter_package</span><span class="plain-syntax"> *</span><span class="identifier-syntax">connectors</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Site::connectors_package_if_it_exists</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inter_package</span><span class="plain-syntax"> *</span><span class="identifier-syntax">connectors</span><span class="plain-syntax"> = </span><span class="identifier-syntax">LargeScale::connectors_package_if_it_exists</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">connectors</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inter_symbols_table</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ST</span><span class="plain-syntax"> = </span><a href="2-pck.html#SP3" class="function-link"><span class="function-syntax">Inter::Packages::scope</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">connectors</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax">=0; </span><span class="identifier-syntax">i</span><span class="function-syntax"><ST-></span><span class="element-syntax">size</span><span class="plain-syntax">; </span><span class="identifier-syntax">i</span><span class="plain-syntax">++) {</span>
|
||||
|
|
|
@ -105,7 +105,7 @@ function togglePopup(material_id) {
|
|||
<span class="plain-syntax"> </span><a href="2-pck.html#SP3" class="function-link"><span class="function-syntax">Inter::Packages::set_scope</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">-></span><span class="element-syntax">root_package</span><span class="plain-syntax">, </span><span class="identifier-syntax">globals</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="plain-syntax">-></span><span class="element-syntax">root_node</span><span class="plain-syntax">-></span><span class="element-syntax">package</span><span class="plain-syntax"> = </span><span class="identifier-syntax">I</span><span class="plain-syntax">-></span><span class="element-syntax">root_package</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><a href="2-tw.html#SP3" class="function-link"><span class="function-syntax">Inter::Warehouse::attribute_resource</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">-></span><span class="element-syntax">housed</span><span class="plain-syntax">, </span><span class="identifier-syntax">N</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="plain-syntax">-></span><span class="element-syntax">root_package</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Site::clear</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">BuildingModule::clear_data</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="plain-syntax">-></span><span class="element-syntax">history_bits</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
@ -369,7 +369,7 @@ function togglePopup(material_id) {
|
|||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">InterTree::traverse</span><button class="popup" onclick="togglePopup('usagePopup17')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup17">Usage of <span class="code-font"><span class="function-syntax">InterTree::traverse</span></span>:<br/>Symbols Tables - <a href="2-st.html#SP10">§10</a><br/>Transmigration - <a href="2-trn.html#SP1_4">§1.4</a>, <a href="2-trn.html#SP1_5">§1.5</a><br/>Definition - <a href="3-dfn.html#SP4">§4</a><br/>Inter in Binary Files - <a href="3-iibf.html#SP1_1_5">§1.1.5</a><br/>Inter in Text Files - <a href="3-iitf.html#SP1">§1</a>, <a href="3-iitf.html#SP2">§2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">from</span><span class="plain-syntax">, </span><span class="reserved-syntax">void</span><span class="plain-syntax"> (*</span><span class="identifier-syntax">visitor</span><span class="plain-syntax">)(</span><span class="reserved-syntax">inter_tree</span><span class="plain-syntax"> *, </span><span class="reserved-syntax">inter_tree_node</span><span class="plain-syntax"> *, </span><span class="reserved-syntax">void</span><span class="plain-syntax"> *), </span><span class="reserved-syntax">void</span><span class="plain-syntax"> *</span><span class="identifier-syntax">state</span><span class="plain-syntax">, </span><span class="reserved-syntax">inter_package</span><span class="plain-syntax"> *</span><span class="identifier-syntax">mp</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">filter</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">mp</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">mp</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Site::main_package_if_it_exists</span><span class="plain-syntax">(</span><span class="identifier-syntax">from</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">mp</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">mp</span><span class="plain-syntax"> = </span><span class="identifier-syntax">LargeScale::main_package_if_it_exists</span><span class="plain-syntax">(</span><span class="identifier-syntax">from</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">mp</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inter_tree_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">D</span><span class="plain-syntax"> = </span><a href="2-pck.html#SP3" class="function-link"><span class="function-syntax">Inter::Packages::definition</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">mp</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">filter</span><span class="plain-syntax"> == </span><span class="constant-syntax">0</span><span class="plain-syntax">) ||</span>
|
||||
|
|
|
@ -191,7 +191,7 @@ function togglePopup(material_id) {
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">N</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"null package name"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">P</span><span class="plain-syntax">-></span><span class="element-syntax">package_name_t</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Str::duplicate</span><span class="plain-syntax">(</span><span class="identifier-syntax">N</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::len</span><span class="plain-syntax">(</span><span class="identifier-syntax">N</span><span class="plain-syntax">) > </span><span class="constant-syntax">0</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Site::note_package_name</span><span class="plain-syntax">(</span><a href="2-pck.html#SP3" class="function-link"><span class="function-syntax">Inter::Packages::tree</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">P</span><span class="plain-syntax">), </span><span class="identifier-syntax">P</span><span class="plain-syntax">, </span><span class="identifier-syntax">N</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LargeScale::note_package_name</span><span class="plain-syntax">(</span><a href="2-pck.html#SP3" class="function-link"><span class="function-syntax">Inter::Packages::tree</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">P</span><span class="plain-syntax">), </span><span class="identifier-syntax">P</span><span class="plain-syntax">, </span><span class="identifier-syntax">N</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pck.html#SP3" class="function-link"><span class="function-syntax">Inter::Packages::add_subpackage_name</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">Q</span><span class="plain-syntax">, </span><span class="identifier-syntax">P</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
@ -241,11 +241,11 @@ function togglePopup(material_id) {
|
|||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="function-syntax">Inter::Packages::search_main_exhaustively</span><span class="plain-syntax">(</span><span class="reserved-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">S</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="2-pck.html#SP3" class="function-link"><span class="function-syntax">Inter::Packages::search_exhaustively</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">Site::main_package</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">), </span><span class="identifier-syntax">S</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="2-pck.html#SP3" class="function-link"><span class="function-syntax">Inter::Packages::search_exhaustively</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">LargeScale::main_package</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">), </span><span class="identifier-syntax">S</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="function-syntax">Inter::Packages::search_resources</span><button class="popup" onclick="togglePopup('usagePopup18')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup18">Usage of <span class="code-font"><span class="function-syntax">Inter::Packages::search_resources</span></span>:<br/>Transmigration - <a href="2-trn.html#SP3_3">§3.3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">S</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inter_package</span><span class="plain-syntax"> *</span><span class="identifier-syntax">main_package</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Site::main_package_if_it_exists</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inter_package</span><span class="plain-syntax"> *</span><span class="identifier-syntax">main_package</span><span class="plain-syntax"> = </span><span class="identifier-syntax">LargeScale::main_package_if_it_exists</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">main_package</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inter_tree_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">D</span><span class="plain-syntax"> = </span><a href="2-pck.html#SP3" class="function-link"><span class="function-syntax">Inter::Packages::definition</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">main_package</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_THROUGH_INTER_CHILDREN</span><span class="plain-syntax">(</span><span class="identifier-syntax">C</span><span class="plain-syntax">, </span><span class="identifier-syntax">D</span><span class="plain-syntax">) {</span>
|
||||
|
|
|
@ -224,7 +224,7 @@ function togglePopup(material_id) {
|
|||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="function-syntax">InterSymbolsTables::symbol_from_name_in_main</span><span class="plain-syntax">(</span><span class="reserved-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">S</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="2-st.html#SP4" class="function-link"><span class="function-syntax">InterSymbolsTables::symbol_from_name</span></a><span class="plain-syntax">(</span><a href="2-pck.html#SP3" class="function-link"><span class="function-syntax">Inter::Packages::scope</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">Site::main_package_if_it_exists</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">)), </span><span class="identifier-syntax">S</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="2-st.html#SP4" class="function-link"><span class="function-syntax">InterSymbolsTables::symbol_from_name</span></a><span class="plain-syntax">(</span><a href="2-pck.html#SP3" class="function-link"><span class="function-syntax">Inter::Packages::scope</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">LargeScale::main_package_if_it_exists</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">)), </span><span class="identifier-syntax">S</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="function-syntax">InterSymbolsTables::symbol_from_name_in_basics</span><span class="plain-syntax">(</span><span class="reserved-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">S</span><span class="plain-syntax">) {</span>
|
||||
|
@ -234,7 +234,7 @@ function togglePopup(material_id) {
|
|||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="function-syntax">InterSymbolsTables::symbol_from_name_in_veneer</span><span class="plain-syntax">(</span><span class="reserved-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">S</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inter_package</span><span class="plain-syntax"> *</span><span class="identifier-syntax">P</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Site::architecture_package_if_it_exists</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inter_package</span><span class="plain-syntax"> *</span><span class="identifier-syntax">P</span><span class="plain-syntax"> = </span><span class="identifier-syntax">LargeScale::architecture_package_if_it_exists</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">P</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="2-st.html#SP4" class="function-link"><span class="function-syntax">InterSymbolsTables::symbol_from_name</span></a><span class="plain-syntax">(</span><a href="2-pck.html#SP3" class="function-link"><span class="function-syntax">Inter::Packages::scope</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">P</span><span class="plain-syntax">), </span><span class="identifier-syntax">S</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
|
|
@ -99,9 +99,6 @@ function togglePopup(material_id) {
|
|||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="function-syntax">Inter::Symbols::new</span><button class="popup" onclick="togglePopup('usagePopup1')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup1">Usage of <span class="code-font"><span class="function-syntax">Inter::Symbols::new</span></span>:<br/>Symbols Tables - <a href="2-st.html#SP3">§3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">name</span><span class="plain-syntax">, </span><span class="reserved-syntax">inter_symbols_table</span><span class="plain-syntax"> *</span><span class="identifier-syntax">T</span><span class="plain-syntax">, </span><span class="constant-syntax">inter_ti</span><span class="plain-syntax"> </span><span class="identifier-syntax">ID</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::len</span><span class="plain-syntax">(</span><span class="identifier-syntax">name</span><span class="plain-syntax">) == </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"symbol cannot have empty text as identifier"</span><span class="plain-syntax">);</span>
|
||||
|
||||
<span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">name</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"MAX_POSITIVE_NUMBER_1"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"MPN1"</span><span class="plain-syntax">);</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">symb</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CREATE</span><span class="plain-syntax">(</span><span class="reserved-syntax">inter_symbol</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">symb</span><span class="plain-syntax">-></span><span class="identifier-syntax">owning_table</span><span class="plain-syntax"> = </span><span class="identifier-syntax">T</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">symb</span><span class="plain-syntax">-></span><span class="identifier-syntax">symbol_ID</span><span class="plain-syntax"> = </span><span class="identifier-syntax">ID</span><span class="plain-syntax">;</span>
|
||||
|
|
|
@ -98,7 +98,7 @@ function togglePopup(material_id) {
|
|||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-trn.html#SP1_3" class="named-paragraph-link"><span class="named-paragraph">Physically move the subtree to its new home</span><span class="named-paragraph-number">1.3</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-trn.html#SP1_4" class="named-paragraph-link"><span class="named-paragraph">Correct any references from the migrant to the origin</span><span class="named-paragraph-number">1.4</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">tidy_origin</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="2-trn.html#SP1_5" class="named-paragraph-link"><span class="named-paragraph">Correct any references from the origin to the migrant</span><span class="named-paragraph-number">1.5</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inter_package</span><span class="plain-syntax"> *</span><span class="identifier-syntax">connectors</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Site::connectors_package_if_it_exists</span><span class="plain-syntax">(</span><span class="identifier-syntax">origin_tree</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inter_package</span><span class="plain-syntax"> *</span><span class="identifier-syntax">connectors</span><span class="plain-syntax"> = </span><span class="identifier-syntax">LargeScale::connectors_package_if_it_exists</span><span class="plain-syntax">(</span><span class="identifier-syntax">origin_tree</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">connectors</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inter_symbols_table</span><span class="plain-syntax"> *</span><span class="identifier-syntax">T</span><span class="plain-syntax"> = </span><a href="2-pck.html#SP3" class="function-link"><span class="function-syntax">Inter::Packages::scope</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">connectors</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">T</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"package with no symbols"</span><span class="plain-syntax">);</span>
|
||||
|
@ -136,7 +136,7 @@ function togglePopup(material_id) {
|
|||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">"\n\n\nList of sockets in origin tree:\n"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inter_package</span><span class="plain-syntax"> *</span><span class="identifier-syntax">connectors</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Site::connectors_package_if_it_exists</span><span class="plain-syntax">(</span><span class="identifier-syntax">origin_tree</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inter_package</span><span class="plain-syntax"> *</span><span class="identifier-syntax">connectors</span><span class="plain-syntax"> = </span><span class="identifier-syntax">LargeScale::connectors_package_if_it_exists</span><span class="plain-syntax">(</span><span class="identifier-syntax">origin_tree</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">connectors</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inter_symbols_table</span><span class="plain-syntax"> *</span><span class="identifier-syntax">T</span><span class="plain-syntax"> = </span><a href="2-pck.html#SP3" class="function-link"><span class="function-syntax">Inter::Packages::scope</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">connectors</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">T</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"package with no symbols"</span><span class="plain-syntax">);</span>
|
||||
|
@ -256,7 +256,7 @@ function togglePopup(material_id) {
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">target</span><span class="plain-syntax"> = </span><a href="2-cnn.html#SP1" class="function-link"><span class="function-syntax">Wiring::cable_end</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">symb</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="2-sym.html#SP4" class="function-link"><span class="function-syntax">Inter::Symbols::read_annotation</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">target</span><span class="plain-syntax">, </span><span class="constant-syntax">ARCHITECTURAL_IANN</span><span class="plain-syntax">) > </span><span class="constant-syntax">0</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><a href="2-cnn.html#SP1" class="function-link"><span class="function-syntax">Wiring::wire_to</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">symb</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Site::find_architectural_symbol</span><span class="plain-syntax">(</span><span class="identifier-syntax">ipct</span><span class="plain-syntax">-></span><span class="element-syntax">destination</span><span class="plain-syntax">-></span><span class="element-syntax">package_head</span><span class="plain-syntax">-></span><span class="element-syntax">tree</span><span class="plain-syntax">, </span><span class="identifier-syntax">target</span><span class="plain-syntax">-></span><span class="element-syntax">symbol_name</span><span class="plain-syntax">, </span><span class="identifier-syntax">Produce::kind_to_symbol</span><span class="plain-syntax">(</span><span class="identifier-syntax">NULL</span><span class="plain-syntax">)));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LargeScale::find_architectural_symbol</span><span class="plain-syntax">(</span><span class="identifier-syntax">ipct</span><span class="plain-syntax">-></span><span class="element-syntax">destination</span><span class="plain-syntax">-></span><span class="element-syntax">package_head</span><span class="plain-syntax">-></span><span class="element-syntax">tree</span><span class="plain-syntax">, </span><span class="identifier-syntax">target</span><span class="plain-syntax">-></span><span class="element-syntax">symbol_name</span><span class="plain-syntax">, </span><span class="identifier-syntax">Produce::kind_to_symbol</span><span class="plain-syntax">(</span><span class="identifier-syntax">NULL</span><span class="plain-syntax">)));</span>
|
||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="2-sym.html#SP2" class="function-link"><span class="function-syntax">Inter::Symbols::get_scope</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">target</span><span class="plain-syntax">) == </span><span class="constant-syntax">PLUG_ISYMS</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">equivalent</span><span class="plain-syntax"> = </span><a href="2-trn.html#SP1" class="function-link"><span class="function-syntax">Inter::Transmigration::cached_equivalent</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">target</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">equivalent</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) {</span>
|
||||
|
|
|
@ -158,7 +158,7 @@ object.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">gen</span><span class="plain-syntax">-></span><span class="element-syntax">from</span><span class="plain-syntax"> = </span><span class="identifier-syntax">I</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">gen</span><span class="plain-syntax">-></span><span class="element-syntax">generator</span><span class="plain-syntax"> = </span><span class="identifier-syntax">generator</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">just</span><span class="plain-syntax">) </span><span class="identifier-syntax">gen</span><span class="plain-syntax">-></span><span class="element-syntax">just_this_package</span><span class="plain-syntax"> = </span><span class="identifier-syntax">just</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="identifier-syntax">gen</span><span class="plain-syntax">-></span><span class="element-syntax">just_this_package</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Site::main_package</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="identifier-syntax">gen</span><span class="plain-syntax">-></span><span class="element-syntax">just_this_package</span><span class="plain-syntax"> = </span><span class="identifier-syntax">LargeScale::main_package</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">gen</span><span class="plain-syntax">-></span><span class="element-syntax">segmentation</span><span class="plain-syntax"> = </span><a href="2-cg.html#SP7" class="function-link"><span class="function-syntax">CodeGen::new_segmentation_data</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">gen</span><span class="plain-syntax">-></span><span class="element-syntax">void_level</span><span class="plain-syntax"> = -1;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">gen</span><span class="plain-syntax">-></span><span class="element-syntax">literal_text_mode</span><span class="plain-syntax"> = </span><span class="constant-syntax">REGULAR_LTM</span><span class="plain-syntax">;</span>
|
||||
|
|
|
@ -283,14 +283,15 @@ Document for a specification.
|
|||
<span class="plain-syntax"> </span><a href="2-cg.html#SP10" class="function-link"><span class="function-syntax">CodeGen::deselect</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">, </span><span class="identifier-syntax">saved</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-fi6.html#SP4">§4</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP5" class="paragraph-anchor"></a><b>§5. </b>Pragmas are interpreted as ICL directives — ICL being the Inform Configuration
|
||||
Language part of Inform 6, which basically allows maxima in the compiler to be
|
||||
tweaked. These go at the top of the source code and typically look like this:
|
||||
<p class="commentary firstcommentary"><a id="SP5" class="paragraph-anchor"></a><b>§5. </b>Pragmas are interpreted as ICL directives — ICL being the Inform
|
||||
Configuration Language part of Inform 6, a mini-language for controlling the I6
|
||||
compiler, able to set command-line switches, memory settings and so on. I6
|
||||
ordinarily discards lines beginning with exclamation marks as comments, but at
|
||||
the very top of the file, lines beginning <span class="extract"><span class="extract-syntax">!%</span></span> are read as ICL commands: as soon
|
||||
as any line (including a blank line) doesn't have this signature, I6 exits ICL
|
||||
mode.
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="comment-syntax"> $MAX_NUM_STATIC_STRINGS=500000</span>
|
||||
</pre>
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">I6Target::offer_pragma</span><button class="popup" onclick="togglePopup('usagePopup4')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup4">Usage of <span class="code-font"><span class="function-syntax">I6Target::offer_pragma</span></span>:<br/><a href="4-fi6.html#SP1">§1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">code_generator</span><span class="plain-syntax"> *</span><span class="identifier-syntax">gtr</span><span class="plain-syntax">, </span><span class="reserved-syntax">code_generation</span><span class="plain-syntax"> *</span><span class="identifier-syntax">gen</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_tree_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">P</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">tag</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">content</span><span class="plain-syntax">) {</span>
|
||||
|
|
|
@ -177,7 +177,6 @@ for example.
|
|||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">Str::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">const_name</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"WORDSIZE"</span><span class="plain-syntax">)) ||</span>
|
||||
<span class="plain-syntax"> (</span><span class="identifier-syntax">Str::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">const_name</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"TARGET_ZCODE"</span><span class="plain-syntax">)) ||</span>
|
||||
<span class="plain-syntax"> (</span><span class="identifier-syntax">Str::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">const_name</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"INDIV_PROP_START"</span><span class="plain-syntax">)) ||</span>
|
||||
<span class="plain-syntax"> (</span><span class="identifier-syntax">Str::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">const_name</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"TARGET_GLULX"</span><span class="plain-syntax">)) ||</span>
|
||||
<span class="plain-syntax"> (</span><span class="identifier-syntax">Str::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">const_name</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"DICT_WORD_SIZE"</span><span class="plain-syntax">)) ||</span>
|
||||
<span class="plain-syntax"> (</span><span class="identifier-syntax">Str::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">const_name</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"DEBUG"</span><span class="plain-syntax">)) ||</span>
|
||||
|
|
|
@ -85,7 +85,7 @@ function togglePopup(material_id) {
|
|||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-ns.html#SP1_1" class="named-paragraph-link"><span class="named-paragraph">Make the main package</span><span class="named-paragraph-number">1.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-ns.html#SP1_2" class="named-paragraph-link"><span class="named-paragraph">Add another few package types which we will need when linking</span><span class="named-paragraph-number">1.2</span></a></span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_package</span><span class="plain-syntax"> *</span><span class="identifier-syntax">main_p</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Site::main_package</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_package</span><span class="plain-syntax"> *</span><span class="identifier-syntax">main_p</span><span class="plain-syntax"> = </span><span class="identifier-syntax">LargeScale::main_package</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_bookmark</span><span class="plain-syntax"> </span><span class="identifier-syntax">in_main</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Inter::Bookmarks::at_end_of_this_package</span><span class="plain-syntax">(</span><span class="identifier-syntax">main_p</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_package</span><span class="plain-syntax"> *</span><span class="identifier-syntax">generic_p</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, *</span><span class="identifier-syntax">generic_kinds_p</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Inter::Package::new_package_named</span><span class="plain-syntax">(&</span><span class="identifier-syntax">in_main</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"generic"</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">,</span>
|
||||
|
@ -103,7 +103,7 @@ function togglePopup(material_id) {
|
|||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-ns.html#SP1_7" class="named-paragraph-link"><span class="named-paragraph">Create the boolean kind</span><span class="named-paragraph-number">1.7</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-ns.html#SP1_8" class="named-paragraph-link"><span class="named-paragraph">Create the string kind</span><span class="named-paragraph-number">1.8</span></a></span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Site::make_architectural_definitions</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><a href="1-pm.html#SP4" class="function-link"><span class="function-syntax">PipelineModule::get_architecture</span></a><span class="plain-syntax">(),</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LargeScale::make_architectural_definitions</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><a href="1-pm.html#SP4" class="function-link"><span class="function-syntax">PipelineModule::get_architecture</span></a><span class="plain-syntax">(),</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">unchecked_kind_symbol</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
@ -246,54 +246,6 @@ end up being basically the same thing.)
|
|||
<span class="plain-syntax"> (</span><span class="identifier-syntax">inter_ti</span><span class="plain-syntax">) </span><span class="identifier-syntax">Inter::Bookmarks::baseline</span><span class="plain-syntax">(&</span><span class="identifier-syntax">in_generic_kinds</span><span class="plain-syntax">) + </span><span class="constant-syntax">1</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="2-ns.html#SP1">§1</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP_1" class="paragraph-anchor"></a><b>§.1. </b>Lastly, we define the constants <span class="extract"><span class="extract-syntax">WORDSIZE</span></span>, <span class="extract"><span class="extract-syntax">DEBUG</span></span> (if applicable) and
|
||||
either <span class="extract"><span class="extract-syntax">TARGET_ZCODE</span></span> or <span class="extract"><span class="extract-syntax">TARGET_GLULX</span></span>, as appropriate. These really now mean
|
||||
"target 16-bit" or "target 32-bit", and their names are a hangover from when
|
||||
Inform 7 could only work with Inform 6. The reason we need to define these
|
||||
is so that if a kit is parsed from source and added to this tree, we will then
|
||||
be able to resolve conditional compilation matter placed inside, e.g.,
|
||||
<span class="extract"><span class="extract-syntax">#ifdef TARGET_ZCODE;</span></span> ... <span class="extract"><span class="extract-syntax">#endif;</span></span> directives.
|
||||
</p>
|
||||
|
||||
<p class="commentary">For now, at least, these live in the package <span class="extract"><span class="extract-syntax">main/veneer</span></span>.
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Define some architecture constants</span><span class="named-paragraph-number">.1</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_package</span><span class="plain-syntax"> *</span><span class="identifier-syntax">veneer_p</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Site::architecture_package</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_bookmark</span><span class="plain-syntax"> *</span><span class="identifier-syntax">in_veneer</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Site::architecture_bookmark</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">vi_unchecked</span><span class="plain-syntax"> =</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">InterSymbolsTables::create_with_unique_name</span><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Inter::Bookmarks::scope</span><span class="plain-syntax">(</span><span class="identifier-syntax">in_veneer</span><span class="plain-syntax">), </span><span class="identifier-syntax">I</span><span class="string-syntax">"K_unchecked"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Wiring::wire_to</span><span class="plain-syntax">(</span><span class="identifier-syntax">vi_unchecked</span><span class="plain-syntax">, </span><span class="identifier-syntax">unchecked_kind_symbol</span><span class="plain-syntax">);</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">con_name</span><span class="plain-syntax"> = </span><span class="identifier-syntax">InterSymbolsTables::create_with_unique_name</span><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Inter::Bookmarks::scope</span><span class="plain-syntax">(</span><span class="identifier-syntax">in_veneer</span><span class="plain-syntax">), </span><span class="identifier-syntax">I</span><span class="string-syntax">"WORDSIZE"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Inter::Constant::new_numerical</span><span class="plain-syntax">(</span><span class="identifier-syntax">in_veneer</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">InterSymbolsTables::id_from_symbol</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">veneer_p</span><span class="plain-syntax">, </span><span class="identifier-syntax">con_name</span><span class="plain-syntax">),</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">InterSymbolsTables::id_from_symbol</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">veneer_p</span><span class="plain-syntax">, </span><span class="identifier-syntax">vi_unchecked</span><span class="plain-syntax">),</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LITERAL_IVAL</span><span class="plain-syntax">, (</span><span class="identifier-syntax">Z</span><span class="plain-syntax">)?2:4,</span>
|
||||
<span class="plain-syntax"> (</span><span class="identifier-syntax">inter_ti</span><span class="plain-syntax">) </span><span class="identifier-syntax">Inter::Bookmarks::baseline</span><span class="plain-syntax">(</span><span class="identifier-syntax">in_veneer</span><span class="plain-syntax">) + </span><span class="constant-syntax">1</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">target_name</span><span class="plain-syntax"> = </span><span class="identifier-syntax">InterSymbolsTables::create_with_unique_name</span><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Inter::Bookmarks::scope</span><span class="plain-syntax">(</span><span class="identifier-syntax">in_veneer</span><span class="plain-syntax">), (</span><span class="identifier-syntax">Z</span><span class="plain-syntax">)?</span><span class="identifier-syntax">I</span><span class="string-syntax">"TARGET_ZCODE"</span><span class="plain-syntax">:</span><span class="identifier-syntax">I</span><span class="string-syntax">"TARGET_GLULX"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Inter::Constant::new_numerical</span><span class="plain-syntax">(</span><span class="identifier-syntax">in_veneer</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">InterSymbolsTables::id_from_symbol</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">veneer_p</span><span class="plain-syntax">, </span><span class="identifier-syntax">target_name</span><span class="plain-syntax">),</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">InterSymbolsTables::id_from_symbol</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">veneer_p</span><span class="plain-syntax">, </span><span class="identifier-syntax">vi_unchecked</span><span class="plain-syntax">),</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LITERAL_IVAL</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> (</span><span class="identifier-syntax">inter_ti</span><span class="plain-syntax">) </span><span class="identifier-syntax">Inter::Bookmarks::baseline</span><span class="plain-syntax">(</span><span class="identifier-syntax">in_veneer</span><span class="plain-syntax">) + </span><span class="constant-syntax">1</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">D</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">D_name</span><span class="plain-syntax"> = </span><span class="identifier-syntax">InterSymbolsTables::create_with_unique_name</span><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Inter::Bookmarks::scope</span><span class="plain-syntax">(</span><span class="identifier-syntax">in_veneer</span><span class="plain-syntax">), </span><span class="identifier-syntax">I</span><span class="string-syntax">"DEBUG"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Inter::Constant::new_numerical</span><span class="plain-syntax">(</span><span class="identifier-syntax">in_veneer</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">InterSymbolsTables::id_from_symbol</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">veneer_p</span><span class="plain-syntax">, </span><span class="identifier-syntax">D_name</span><span class="plain-syntax">),</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">InterSymbolsTables::id_from_symbol</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">veneer_p</span><span class="plain-syntax">, </span><span class="identifier-syntax">vi_unchecked</span><span class="plain-syntax">),</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LITERAL_IVAL</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> (</span><span class="identifier-syntax">inter_ti</span><span class="plain-syntax">) </span><span class="identifier-syntax">Inter::Bookmarks::baseline</span><span class="plain-syntax">(</span><span class="identifier-syntax">in_veneer</span><span class="plain-syntax">) + </span><span class="constant-syntax">1</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is never used.</li></ul>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="2-pe.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-pm.html">1</a></li><li class="progresscurrentchapter">2</li><li class="progresssection"><a href="2-pp.html">pp</a></li><li class="progresssection"><a href="2-rp.html">rp</a></li><li class="progresssection"><a href="2-pe.html">pe</a></li><li class="progresscurrent">ns</li><li class="progresssection"><a href="2-rmwss.html">rmwss</a></li><li class="progresschapter"><a href="3-ps.html">3</a></li><li class="progresschapter"><a href="4-lbks.html">4</a></li><li class="progresschapter"><a href="5-msms.html">5</a></li><li class="progresschapter"><a href="6-erms.html">6</a></li><li class="progressnext"><a href="2-rmwss.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
|
|
@ -119,7 +119,7 @@ function togglePopup(material_id) {
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Regexp::dispose_of</span><span class="plain-syntax">(&</span><span class="identifier-syntax">mr</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Inter::Transmigration::move</span><span class="plain-syntax">(</span><span class="identifier-syntax">pack</span><span class="plain-syntax">, </span><span class="identifier-syntax">Site::main_package</span><span class="plain-syntax">(</span><span class="identifier-syntax">step</span><span class="plain-syntax">-></span><span class="element-syntax">ephemera</span><span class="plain-syntax">.</span><span class="element-syntax">tree</span><span class="plain-syntax">), </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Inter::Transmigration::move</span><span class="plain-syntax">(</span><span class="identifier-syntax">pack</span><span class="plain-syntax">, </span><span class="identifier-syntax">LargeScale::main_package</span><span class="plain-syntax">(</span><span class="identifier-syntax">step</span><span class="plain-syntax">-></span><span class="element-syntax">ephemera</span><span class="plain-syntax">.</span><span class="element-syntax">tree</span><span class="plain-syntax">), </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
|
|
|
@ -1070,10 +1070,10 @@ unlikely to happen: see above.
|
|||
<span class="identifier-syntax">inter_bookmark</span><span class="plain-syntax"> </span><span class="function-syntax">CompileSplatsStage::make_submodule</span><button class="popup" onclick="togglePopup('usagePopup7')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup7">Usage of <span class="code-font"><span class="function-syntax">CompileSplatsStage::make_submodule</span></span>:<br/><a href="3-css.html#SP3_1_3_1_1">§3.1.3.1.1</a>, <a href="3-css.html#SP3_1_3_1_4_5_3_1">§3.1.3.1.4.5.3.1</a>, <a href="3-css.html#SP3_2_3">§3.2.3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="reserved-syntax">pipeline_step</span><span class="plain-syntax"> *</span><span class="identifier-syntax">step</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">name</span><span class="plain-syntax">, </span><span class="identifier-syntax">inter_tree_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">P</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="2-rp.html#SP5" class="function-link"><span class="function-syntax">RunningPipelines::get_symbol</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">step</span><span class="plain-syntax">, </span><span class="constant-syntax">submodule_ptype_RPSYM</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_package</span><span class="plain-syntax"> *</span><span class="identifier-syntax">module_package</span><span class="plain-syntax"> =</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_package</span><span class="plain-syntax"> *</span><span class="identifier-syntax">module_pack</span><span class="plain-syntax"> =</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">step</span><span class="plain-syntax">-></span><span class="element-syntax">pipeline</span><span class="plain-syntax">-></span><span class="element-syntax">ephemera</span><span class="plain-syntax">.</span><span class="element-syntax">assimilation_modules</span><span class="plain-syntax">[</span><span class="identifier-syntax">step</span><span class="plain-syntax">-></span><span class="element-syntax">tree_argument</span><span class="plain-syntax">];</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">module_package</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_package</span><span class="plain-syntax"> *</span><span class="identifier-syntax">submodule_package</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Inter::Packages::by_name</span><span class="plain-syntax">(</span><span class="identifier-syntax">module_package</span><span class="plain-syntax">, </span><span class="identifier-syntax">name</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">module_pack</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_package</span><span class="plain-syntax"> *</span><span class="identifier-syntax">submodule_package</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Inter::Packages::by_name</span><span class="plain-syntax">(</span><span class="identifier-syntax">module_pack</span><span class="plain-syntax">, </span><span class="identifier-syntax">name</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">submodule_package</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_bookmark</span><span class="plain-syntax"> </span><span class="identifier-syntax">IBM</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Inter::Bookmarks::after_this_node</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">P</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">submodule_package</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Produce::new_package_named</span><span class="plain-syntax">(&</span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">name</span><span class="plain-syntax">,</span>
|
||||
|
@ -1421,8 +1421,8 @@ actually works out the numerical value of \(x + y\).
|
|||
|
||||
<p class="commentary">Why do we do this? Why not simply calculate now, and get an explicit answer?
|
||||
The trouble is that one of \(x\) or \(y\) might be some symbol whose value is itself
|
||||
created by the downstream compiler, such as the address <span class="extract"><span class="extract-syntax">INDIV_PROP_START</span></span>.
|
||||
The meaning of this is the same on all platforms: the value is not.
|
||||
created by the downstream compiler. The meaning of this is the same on all
|
||||
platforms: the value is not.
|
||||
</p>
|
||||
|
||||
<p class="commentary">There would be a case for optimising the following function to fold constants
|
||||
|
@ -1514,7 +1514,7 @@ linker stage worry about what it means later on.
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">result_s</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Site::find_architectural_symbol</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">t</span><span class="plain-syntax">-></span><span class="identifier-syntax">material</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">result_s</span><span class="plain-syntax"> = </span><span class="identifier-syntax">LargeScale::find_architectural_symbol</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">t</span><span class="plain-syntax">-></span><span class="identifier-syntax">material</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><a href="2-rp.html#SP5" class="function-link"><span class="function-syntax">RunningPipelines::get_symbol</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">step</span><span class="plain-syntax">, </span><span class="constant-syntax">unchecked_kind_RPSYM</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">result_s</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">result_s</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">result_s</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Wiring::find_socket</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">t</span><span class="plain-syntax">-></span><span class="identifier-syntax">material</span><span class="plain-syntax">);</span>
|
||||
|
@ -1600,9 +1600,9 @@ kit <span class="extract"><span class="extract-syntax">CommandParserKit</span></
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::new_cip</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, &(</span><span class="identifier-syntax">req</span><span class="plain-syntax">-></span><span class="element-syntax">position</span><span class="plain-syntax">)), </span><span class="identifier-syntax">Inter::Bookmarks::snapshot</span><span class="plain-syntax">(</span><span class="identifier-syntax">Packaging::at</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">)));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">value_holster</span><span class="plain-syntax"> </span><span class="identifier-syntax">VH</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Holsters::new</span><span class="plain-syntax">(</span><span class="identifier-syntax">INTER_VOID_VHMODE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_symbols_table</span><span class="plain-syntax"> *</span><span class="identifier-syntax">scope1</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Inter::Packages::scope</span><span class="plain-syntax">(</span><span class="identifier-syntax">req</span><span class="plain-syntax">-></span><span class="element-syntax">block_package</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_package</span><span class="plain-syntax"> *</span><span class="identifier-syntax">module_package</span><span class="plain-syntax"> =</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_package</span><span class="plain-syntax"> *</span><span class="identifier-syntax">module_pack</span><span class="plain-syntax"> =</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">step</span><span class="plain-syntax">-></span><span class="element-syntax">pipeline</span><span class="plain-syntax">-></span><span class="element-syntax">ephemera</span><span class="plain-syntax">.</span><span class="identifier-syntax">assimilation_modules</span><span class="plain-syntax">[</span><span class="identifier-syntax">step</span><span class="plain-syntax">-></span><span class="element-syntax">tree_argument</span><span class="plain-syntax">];</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_symbols_table</span><span class="plain-syntax"> *</span><span class="identifier-syntax">scope2</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Inter::Packages::scope</span><span class="plain-syntax">(</span><span class="identifier-syntax">module_package</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_symbols_table</span><span class="plain-syntax"> *</span><span class="identifier-syntax">scope2</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Inter::Packages::scope</span><span class="plain-syntax">(</span><span class="identifier-syntax">module_pack</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">EmitInterSchemas::emit</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, &</span><span class="identifier-syntax">VH</span><span class="plain-syntax">, </span><span class="identifier-syntax">sch</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">scope1</span><span class="plain-syntax">, </span><span class="identifier-syntax">scope2</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::pop_code_position</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::set_function</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
|
||||
|
|
|
@ -103,7 +103,7 @@ here, since this is not part of the Inform 7 compilation pipeline.
|
|||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">ParsingStages::run_load_kit_source</span><button class="popup" onclick="togglePopup('usagePopup2')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup2">Usage of <span class="code-font"><span class="function-syntax">ParsingStages::run_load_kit_source</span></span>:<br/><a href="3-ps.html#SP1">§1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">pipeline_step</span><span class="plain-syntax"> *</span><span class="identifier-syntax">step</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax"> = </span><span class="identifier-syntax">step</span><span class="plain-syntax">-></span><span class="element-syntax">ephemera</span><span class="plain-syntax">.</span><span class="element-syntax">tree</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_package</span><span class="plain-syntax"> *</span><span class="identifier-syntax">main_package</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Site::main_package</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_package</span><span class="plain-syntax"> *</span><span class="identifier-syntax">main_package</span><span class="plain-syntax"> = </span><span class="identifier-syntax">LargeScale::main_package</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-ps.html#SP2_1" class="named-paragraph-link"><span class="named-paragraph">Create a module to hold the Inter read in from this kit</span><span class="named-paragraph-number">2.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">simple_tangle_docket</span><span class="plain-syntax"> </span><span class="identifier-syntax">docket</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-ps.html#SP2_3" class="named-paragraph-link"><span class="named-paragraph">Make a suitable simple tangler docket</span><span class="named-paragraph-number">2.3</span></a></span><span class="plain-syntax">;</span>
|
||||
|
@ -188,7 +188,7 @@ in <span class="extract"><span class="extract-syntax">K/Sections</span></span>.
|
|||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_package</span><span class="plain-syntax"> *</span><span class="identifier-syntax">assimilation_package</span><span class="plain-syntax"> =</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">step</span><span class="plain-syntax">-></span><span class="element-syntax">pipeline</span><span class="plain-syntax">-></span><span class="element-syntax">ephemera</span><span class="plain-syntax">.</span><span class="identifier-syntax">assimilation_modules</span><span class="plain-syntax">[</span><span class="identifier-syntax">step</span><span class="plain-syntax">-></span><span class="element-syntax">tree_argument</span><span class="plain-syntax">];</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">assimilation_package</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">assimilation_package</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Site::main_package</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">assimilation_package</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">assimilation_package</span><span class="plain-syntax"> = </span><span class="identifier-syntax">LargeScale::main_package</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_bookmark</span><span class="plain-syntax"> </span><span class="identifier-syntax">assimilation_point</span><span class="plain-syntax"> =</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Inter::Bookmarks::at_end_of_this_package</span><span class="plain-syntax">(</span><span class="identifier-syntax">assimilation_package</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">docket</span><span class="plain-syntax"> = </span><span class="identifier-syntax">SimpleTangler::new_docket</span><span class="plain-syntax">(</span>
|
||||
|
|
|
@ -170,7 +170,7 @@ of the sidecar and put it into the main tree.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"unable to find attachment point package"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Inter::Transmigration::move</span><span class="plain-syntax">(</span><span class="identifier-syntax">pack</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Site::main_package</span><span class="plain-syntax">(</span><span class="identifier-syntax">step</span><span class="plain-syntax">-></span><span class="identifier-syntax">ephemera</span><span class="plain-syntax">.</span><span class="element-syntax">tree</span><span class="plain-syntax">), </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LargeScale::main_package</span><span class="plain-syntax">(</span><span class="identifier-syntax">step</span><span class="plain-syntax">-></span><span class="element-syntax">ephemera</span><span class="plain-syntax">.</span><span class="element-syntax">tree</span><span class="plain-syntax">), </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-lbks.html#SP3">§3</a>.</li></ul>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
|
|
|
@ -97,7 +97,7 @@ and report these errors efficiently, so we keep the bad names in both a dictiona
|
|||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">ShortenWiringStage::run</span><button class="popup" onclick="togglePopup('usagePopup2')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup2">Usage of <span class="code-font"><span class="function-syntax">ShortenWiringStage::run</span></span>:<br/><a href="4-sws.html#SP1">§1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">pipeline_step</span><span class="plain-syntax"> *</span><span class="identifier-syntax">step</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax"> = </span><span class="identifier-syntax">step</span><span class="plain-syntax">-></span><span class="element-syntax">ephemera</span><span class="plain-syntax">.</span><span class="element-syntax">tree</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-sws.html#SP2_1" class="named-paragraph-link"><span class="named-paragraph">Shorten the wiring and report loose plugs</span><span class="named-paragraph-number">2.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_package</span><span class="plain-syntax"> *</span><span class="identifier-syntax">connectors</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Site::connectors_package_if_it_exists</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_package</span><span class="plain-syntax"> *</span><span class="identifier-syntax">connectors</span><span class="plain-syntax"> = </span><span class="identifier-syntax">LargeScale::connectors_package_if_it_exists</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">connectors</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="4-sws.html#SP2_2" class="named-paragraph-link"><span class="named-paragraph">Remove the now unnecessary plugs and sockets</span><span class="named-paragraph-number">2.2</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
|
|
@ -108,8 +108,8 @@ definitions whose value is a literal text.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">TreeLists::sort</span><span class="plain-syntax">(</span><span class="identifier-syntax">inv</span><span class="plain-syntax">-></span><span class="element-syntax">text_nodes</span><span class="plain-syntax">, </span><a href="5-lt.html#SP2" class="function-link"><span class="function-syntax">SynopticText::cmp</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_package</span><span class="plain-syntax"> *</span><span class="identifier-syntax">texts_pack</span><span class="plain-syntax"> =</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Packaging::incarnate</span><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Packaging::synoptic_submodule</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Packaging::register_submodule</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"text"</span><span class="plain-syntax">)));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LargeScale::synoptic_submodule</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LargeScale::register_submodule_identity</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"text"</span><span class="plain-syntax">)));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_bookmark</span><span class="plain-syntax"> </span><span class="identifier-syntax">IBM</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Inter::Bookmarks::at_end_of_this_package</span><span class="plain-syntax">(</span><span class="identifier-syntax">texts_pack</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">latest_text</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">latest_s</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
|
|
|
@ -113,7 +113,7 @@ fuller explanation.
|
|||
</p>
|
||||
|
||||
<pre class="definitions code-font"><span class="definition-keyword">define</span> <span class="identifier-syntax">SYN_SUBMD</span><span class="plain-syntax">(</span><span class="identifier-syntax">r</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">req</span><span class="plain-syntax"> = </span><span class="identifier-syntax">HierarchyLocations::synoptic_submodule</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">Packaging::register_submodule</span><span class="plain-syntax">(</span><span class="identifier-syntax">r</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">req</span><span class="plain-syntax"> = </span><span class="identifier-syntax">HierarchyLocations::synoptic_submodule</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">LargeScale::register_submodule_identity</span><span class="plain-syntax">(</span><span class="identifier-syntax">r</span><span class="plain-syntax">));</span>
|
||||
<span class="definition-keyword">define</span> <span class="identifier-syntax">SYN_CONST</span><span class="plain-syntax">(</span><span class="identifier-syntax">id</span><span class="plain-syntax">, </span><span class="identifier-syntax">n</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HierarchyLocations::ctr</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">id</span><span class="plain-syntax">, </span><span class="identifier-syntax">n</span><span class="plain-syntax">, </span><span class="identifier-syntax">Translation::same</span><span class="plain-syntax">(), </span><span class="identifier-syntax">req</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">iname</span><span class="plain-syntax"> = </span><span class="identifier-syntax">HierarchyLocations::find</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">id</span><span class="plain-syntax">);</span>
|
||||
|
|
|
@ -78,12 +78,12 @@ function togglePopup(material_id) {
|
|||
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>§1. Units. </b>The source text is divided up into "compilation units". Each extension is its
|
||||
own compilation unit, and so is the main source text. This demarcation is also
|
||||
reflected in the Inter hierarchy, where each different compilation unit has its
|
||||
own sub-hierarchy, a <span class="extract"><span class="extract-syntax">module_package</span></span>.
|
||||
own sub-hierarchy, a <span class="extract"><span class="extract-syntax">module_request</span></span>.
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">typedef</span><span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">compilation_unit</span><span class="plain-syntax"> {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">module_package</span><span class="plain-syntax"> *</span><span class="identifier-syntax">to_module</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">module_request</span><span class="plain-syntax"> *</span><span class="identifier-syntax">to_module</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">head_node</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">extension_id</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">inform_extension</span><span class="plain-syntax"> *</span><span class="identifier-syntax">extension</span><span class="plain-syntax">;</span>
|
||||
|
@ -95,7 +95,7 @@ own sub-hierarchy, a <span class="extract"><span class="extract-syntax">module_p
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">"unit'%W'"</span><span class="plain-syntax">, </span><span class="identifier-syntax">Node::get_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">cu</span><span class="plain-syntax">-></span><span class="element-syntax">head_node</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="identifier-syntax">module_package</span><span class="plain-syntax"> *</span><span class="function-syntax">CompilationUnits::to_module_package</span><span class="plain-syntax">(</span><span class="reserved-syntax">compilation_unit</span><span class="plain-syntax"> *</span><span class="identifier-syntax">C</span><span class="plain-syntax">) {</span>
|
||||
<span class="identifier-syntax">module_request</span><span class="plain-syntax"> *</span><span class="function-syntax">CompilationUnits::to_module_package</span><span class="plain-syntax">(</span><span class="reserved-syntax">compilation_unit</span><span class="plain-syntax"> *</span><span class="identifier-syntax">C</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">C</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"no unit"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">C</span><span class="plain-syntax">-></span><span class="element-syntax">to_module</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
@ -131,7 +131,7 @@ can find them easily enough. This is done very early in compilation: see
|
|||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">pname</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-cu.html#SP2_1_3" class="named-paragraph-link"><span class="named-paragraph">Compose a name for the unit package this will lead to</span><span class="named-paragraph-number">2.1.3</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">module_package</span><span class="plain-syntax"> *</span><span class="identifier-syntax">M</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Packaging::get_unit</span><span class="plain-syntax">(</span><a href="2-emt.html#SP1" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">pname</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"_module"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">module_request</span><span class="plain-syntax"> *</span><span class="identifier-syntax">M</span><span class="plain-syntax"> = </span><span class="identifier-syntax">LargeScale::module_request</span><span class="plain-syntax">(</span><a href="2-emt.html#SP1" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">pname</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">id_iname</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-cu.html#SP2_1_1" class="named-paragraph-link"><span class="named-paragraph">Give M a category</span><span class="named-paragraph-number">2.1.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">ext</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="2-cu.html#SP2_1_2" class="named-paragraph-link"><span class="named-paragraph">Give M metadata indicating the source extension</span><span class="named-paragraph-number">2.1.2</span></a></span><span class="plain-syntax">;</span>
|
||||
|
@ -152,7 +152,7 @@ can find them easily enough. This is done very early in compilation: see
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_ti</span><span class="plain-syntax"> </span><span class="identifier-syntax">cat</span><span class="plain-syntax"> = </span><span class="constant-syntax">1</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">ext</span><span class="plain-syntax">) </span><span class="identifier-syntax">cat</span><span class="plain-syntax"> = </span><span class="constant-syntax">2</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Extensions::is_standard</span><span class="plain-syntax">(</span><span class="identifier-syntax">ext</span><span class="plain-syntax">)) </span><span class="identifier-syntax">cat</span><span class="plain-syntax"> = </span><span class="constant-syntax">3</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><a href="2-hrr.html#SP23" class="function-link"><span class="function-syntax">Hierarchy::apply_metadata_from_number</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">M</span><span class="plain-syntax">-></span><span class="identifier-syntax">the_package</span><span class="plain-syntax">, </span><span class="constant-syntax">EXT_CATEGORY_MD_HL</span><span class="plain-syntax">, </span><span class="identifier-syntax">cat</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-hrr.html#SP23" class="function-link"><span class="function-syntax">Hierarchy::apply_metadata_from_number</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">M</span><span class="plain-syntax">-></span><span class="identifier-syntax">where_found</span><span class="plain-syntax">, </span><span class="constant-syntax">EXT_CATEGORY_MD_HL</span><span class="plain-syntax">, </span><span class="identifier-syntax">cat</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="2-cu.html#SP2_1">§2.1</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP2_1_2" class="paragraph-anchor"></a><b>§2.1.2. </b>The extension credit consists of a single line, with name, version number
|
||||
|
@ -163,16 +163,16 @@ and author; together with any "extra credit" asked for by the extension.
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><a href="2-hrr.html#SP23" class="function-link"><span class="function-syntax">Hierarchy::apply_metadata</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">M</span><span class="plain-syntax">-></span><span class="identifier-syntax">the_package</span><span class="plain-syntax">, </span><span class="constant-syntax">EXT_AUTHOR_MD_HL</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><a href="2-hrr.html#SP23" class="function-link"><span class="function-syntax">Hierarchy::apply_metadata</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">M</span><span class="plain-syntax">-></span><span class="identifier-syntax">where_found</span><span class="plain-syntax">, </span><span class="constant-syntax">EXT_AUTHOR_MD_HL</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ext</span><span class="plain-syntax">-></span><span class="identifier-syntax">as_copy</span><span class="plain-syntax">-></span><span class="identifier-syntax">edition</span><span class="plain-syntax">-></span><span class="identifier-syntax">work</span><span class="plain-syntax">-></span><span class="identifier-syntax">raw_author_name</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-hrr.html#SP23" class="function-link"><span class="function-syntax">Hierarchy::apply_metadata</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">M</span><span class="plain-syntax">-></span><span class="identifier-syntax">the_package</span><span class="plain-syntax">, </span><span class="constant-syntax">EXT_TITLE_MD_HL</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><a href="2-hrr.html#SP23" class="function-link"><span class="function-syntax">Hierarchy::apply_metadata</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">M</span><span class="plain-syntax">-></span><span class="identifier-syntax">where_found</span><span class="plain-syntax">, </span><span class="constant-syntax">EXT_TITLE_MD_HL</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ext</span><span class="plain-syntax">-></span><span class="identifier-syntax">as_copy</span><span class="plain-syntax">-></span><span class="identifier-syntax">edition</span><span class="plain-syntax">-></span><span class="identifier-syntax">work</span><span class="plain-syntax">-></span><span class="identifier-syntax">raw_title</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">V</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">semantic_version_number</span><span class="plain-syntax"> </span><span class="identifier-syntax">N</span><span class="plain-syntax"> = </span><span class="identifier-syntax">ext</span><span class="plain-syntax">-></span><span class="identifier-syntax">as_copy</span><span class="plain-syntax">-></span><span class="identifier-syntax">edition</span><span class="plain-syntax">-></span><span class="identifier-syntax">version</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">V</span><span class="plain-syntax">, </span><span class="string-syntax">"%v"</span><span class="plain-syntax">, &</span><span class="identifier-syntax">N</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-hrr.html#SP23" class="function-link"><span class="function-syntax">Hierarchy::apply_metadata</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">M</span><span class="plain-syntax">-></span><span class="identifier-syntax">the_package</span><span class="plain-syntax">, </span><span class="constant-syntax">EXT_VERSION_MD_HL</span><span class="plain-syntax">, </span><span class="identifier-syntax">V</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-hrr.html#SP23" class="function-link"><span class="function-syntax">Hierarchy::apply_metadata</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">M</span><span class="plain-syntax">-></span><span class="identifier-syntax">where_found</span><span class="plain-syntax">, </span><span class="constant-syntax">EXT_VERSION_MD_HL</span><span class="plain-syntax">, </span><span class="identifier-syntax">V</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">DISCARD_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">V</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">id_iname</span><span class="plain-syntax"> = </span><a href="2-hrr.html#SP12" class="function-link"><span class="function-syntax">Hierarchy::make_iname_in</span></a><span class="plain-syntax">(</span><span class="constant-syntax">EXTENSION_ID_HL</span><span class="plain-syntax">, </span><span class="identifier-syntax">M</span><span class="plain-syntax">-></span><span class="identifier-syntax">the_package</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">id_iname</span><span class="plain-syntax"> = </span><a href="2-hrr.html#SP12" class="function-link"><span class="function-syntax">Hierarchy::make_iname_in</span></a><span class="plain-syntax">(</span><span class="constant-syntax">EXTENSION_ID_HL</span><span class="plain-syntax">, </span><span class="identifier-syntax">M</span><span class="plain-syntax">-></span><span class="identifier-syntax">where_found</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-emt.html#SP9" class="function-link"><span class="function-syntax">Emit::numeric_constant</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">id_iname</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">C</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">C</span><span class="plain-syntax">, </span><span class="string-syntax">"%S"</span><span class="plain-syntax">, </span><span class="identifier-syntax">ext</span><span class="plain-syntax">-></span><span class="identifier-syntax">as_copy</span><span class="plain-syntax">-></span><span class="identifier-syntax">edition</span><span class="plain-syntax">-></span><span class="identifier-syntax">work</span><span class="plain-syntax">-></span><span class="identifier-syntax">raw_title</span><span class="plain-syntax">);</span>
|
||||
|
@ -180,10 +180,10 @@ and author; together with any "extra credit" asked for by the extension.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">C</span><span class="plain-syntax">, </span><span class="string-syntax">" by %S"</span><span class="plain-syntax">, </span><span class="identifier-syntax">ext</span><span class="plain-syntax">-></span><span class="identifier-syntax">as_copy</span><span class="plain-syntax">-></span><span class="identifier-syntax">edition</span><span class="plain-syntax">-></span><span class="identifier-syntax">work</span><span class="plain-syntax">-></span><span class="identifier-syntax">raw_author_name</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::len</span><span class="plain-syntax">(</span><span class="identifier-syntax">ext</span><span class="plain-syntax">-></span><span class="identifier-syntax">extra_credit_as_lexed</span><span class="plain-syntax">) > </span><span class="constant-syntax">0</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">C</span><span class="plain-syntax">, </span><span class="string-syntax">" (%S)"</span><span class="plain-syntax">, </span><span class="identifier-syntax">ext</span><span class="plain-syntax">-></span><span class="identifier-syntax">extra_credit_as_lexed</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-hrr.html#SP23" class="function-link"><span class="function-syntax">Hierarchy::apply_metadata</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">M</span><span class="plain-syntax">-></span><span class="identifier-syntax">the_package</span><span class="plain-syntax">, </span><span class="constant-syntax">EXT_CREDIT_MD_HL</span><span class="plain-syntax">, </span><span class="identifier-syntax">C</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-hrr.html#SP23" class="function-link"><span class="function-syntax">Hierarchy::apply_metadata</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">M</span><span class="plain-syntax">-></span><span class="identifier-syntax">where_found</span><span class="plain-syntax">, </span><span class="constant-syntax">EXT_CREDIT_MD_HL</span><span class="plain-syntax">, </span><span class="identifier-syntax">C</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">DISCARD_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">C</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::len</span><span class="plain-syntax">(</span><span class="identifier-syntax">ext</span><span class="plain-syntax">-></span><span class="identifier-syntax">extra_credit_as_lexed</span><span class="plain-syntax">) > </span><span class="constant-syntax">0</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><a href="2-hrr.html#SP23" class="function-link"><span class="function-syntax">Hierarchy::apply_metadata</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">M</span><span class="plain-syntax">-></span><span class="identifier-syntax">the_package</span><span class="plain-syntax">, </span><span class="constant-syntax">EXT_EXTRA_CREDIT_MD_HL</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><a href="2-hrr.html#SP23" class="function-link"><span class="function-syntax">Hierarchy::apply_metadata</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">M</span><span class="plain-syntax">-></span><span class="identifier-syntax">where_found</span><span class="plain-syntax">, </span><span class="constant-syntax">EXT_EXTRA_CREDIT_MD_HL</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ext</span><span class="plain-syntax">-></span><span class="identifier-syntax">extra_credit_as_lexed</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">the_author_name</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">the_author_name</span><span class="plain-syntax">, </span><span class="string-syntax">"%S"</span><span class="plain-syntax">, </span><span class="identifier-syntax">ext</span><span class="plain-syntax">-></span><span class="identifier-syntax">as_copy</span><span class="plain-syntax">-></span><span class="identifier-syntax">edition</span><span class="plain-syntax">-></span><span class="identifier-syntax">work</span><span class="plain-syntax">-></span><span class="identifier-syntax">author_name</span><span class="plain-syntax">);</span>
|
||||
|
@ -194,8 +194,8 @@ and author; together with any "extra credit" asked for by the extension.
|
|||
<span class="plain-syntax"> ((</span><span class="identifier-syntax">general_authorial_modesty</span><span class="plain-syntax"> == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) || </span><span class="comment-syntax"> and (2a) author doesn't ask to be modest, or</span>
|
||||
<span class="plain-syntax"> (</span><span class="identifier-syntax">self_penned</span><span class="plain-syntax"> == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">))) </span><span class="comment-syntax"> (2b) didn't write this extension</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">modesty</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><a href="2-hrr.html#SP23" class="function-link"><span class="function-syntax">Hierarchy::apply_metadata_from_number</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">M</span><span class="plain-syntax">-></span><span class="identifier-syntax">the_package</span><span class="plain-syntax">, </span><span class="constant-syntax">EXT_MODESTY_MD_HL</span><span class="plain-syntax">, </span><span class="identifier-syntax">modesty</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-hrr.html#SP23" class="function-link"><span class="function-syntax">Hierarchy::apply_metadata_from_number</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">M</span><span class="plain-syntax">-></span><span class="identifier-syntax">the_package</span><span class="plain-syntax">, </span><span class="constant-syntax">EXT_WORD_COUNT_MD_HL</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><a href="2-hrr.html#SP23" class="function-link"><span class="function-syntax">Hierarchy::apply_metadata_from_number</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">M</span><span class="plain-syntax">-></span><span class="identifier-syntax">where_found</span><span class="plain-syntax">, </span><span class="constant-syntax">EXT_MODESTY_MD_HL</span><span class="plain-syntax">, </span><span class="identifier-syntax">modesty</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-hrr.html#SP23" class="function-link"><span class="function-syntax">Hierarchy::apply_metadata_from_number</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">M</span><span class="plain-syntax">-></span><span class="identifier-syntax">where_found</span><span class="plain-syntax">, </span><span class="constant-syntax">EXT_WORD_COUNT_MD_HL</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> (</span><span class="identifier-syntax">inter_ti</span><span class="plain-syntax">) </span><span class="identifier-syntax">TextFromFiles::total_word_count</span><span class="plain-syntax">(</span><span class="identifier-syntax">ext</span><span class="plain-syntax">-></span><span class="identifier-syntax">read_into_file</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">DISCARD_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">the_author_name</span><span class="plain-syntax">)</span>
|
||||
</pre>
|
||||
|
@ -232,7 +232,7 @@ used only for indexing.)
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER</span><span class="plain-syntax">(</span><span class="identifier-syntax">C</span><span class="plain-syntax">, </span><span class="reserved-syntax">compilation_unit</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inform_extension</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ext</span><span class="plain-syntax"> = </span><span class="identifier-syntax">C</span><span class="plain-syntax">-></span><span class="element-syntax">extension</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">ext</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">package_request</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pack</span><span class="plain-syntax"> = </span><span class="identifier-syntax">C</span><span class="plain-syntax">-></span><span class="element-syntax">to_module</span><span class="plain-syntax">-></span><span class="identifier-syntax">the_package</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">package_request</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pack</span><span class="plain-syntax"> = </span><span class="identifier-syntax">C</span><span class="plain-syntax">-></span><span class="element-syntax">to_module</span><span class="plain-syntax">-></span><span class="identifier-syntax">where_found</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><a href="2-hrr.html#SP23" class="function-link"><span class="function-syntax">Hierarchy::apply_metadata_from_number</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">pack</span><span class="plain-syntax">, </span><span class="constant-syntax">EXT_AT_MD_HL</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> (</span><span class="identifier-syntax">inter_ti</span><span class="plain-syntax">) </span><span class="identifier-syntax">Wordings::first_wn</span><span class="plain-syntax">(</span><span class="identifier-syntax">ext</span><span class="plain-syntax">-></span><span class="identifier-syntax">body_text</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">inc</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Extensions::get_inclusion_sentence</span><span class="plain-syntax">(</span><span class="identifier-syntax">ext</span><span class="plain-syntax">);</span>
|
||||
|
|
|
@ -83,9 +83,6 @@ on just one single tree.
|
|||
|
||||
<p class="commentary">Calling <span class="extract"><span class="extract-syntax">Packaging::outside_all_packages</span></span> makes a minimum of package types,
|
||||
creates the <span class="extract"><span class="extract-syntax">main</span></span> package, and so on, but leaves the tree basically still empty.
|
||||
We then give it three top-level modules to start off with: <span class="extract"><span class="extract-syntax">veneer</span></span>, <span class="extract"><span class="extract-syntax">generic</span></span>
|
||||
and <span class="extract"><span class="extract-syntax">synoptic</span></span>. These are needed early because <a href="2-hrr.html" class="internal">Hierarchy</a> uses them as
|
||||
reference points. But as newly-created packages they are initially empty.
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -94,8 +91,6 @@ reference points. But as newly-created packages they are initially empty.
|
|||
<span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="function-syntax">Emit::create_emission_tree</span><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">main_emission_tree</span><span class="plain-syntax"> = </span><span class="identifier-syntax">InterTree::new</span><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Packaging::outside_all_packages</span><span class="plain-syntax">(</span><span class="identifier-syntax">main_emission_tree</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Packaging::incarnate</span><span class="plain-syntax">(</span><span class="identifier-syntax">Packaging::get_unit</span><span class="plain-syntax">(</span><span class="identifier-syntax">main_emission_tree</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"generic"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"_module"</span><span class="plain-syntax">)-></span><span class="identifier-syntax">the_package</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Packaging::incarnate</span><span class="plain-syntax">(</span><span class="identifier-syntax">Packaging::get_unit</span><span class="plain-syntax">(</span><span class="identifier-syntax">main_emission_tree</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"synoptic"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"_module"</span><span class="plain-syntax">)-></span><span class="identifier-syntax">the_package</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">main_emission_tree</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
<span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="function-syntax">Emit::tree</span><button class="popup" onclick="togglePopup('usagePopup1')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup1">Usage of <span class="code-font"><span class="function-syntax">Emit::tree</span></span>:<br/><a href="2-emt.html#SP4">§4</a>, <a href="2-emt.html#SP5">§5</a>, <a href="2-emt.html#SP7">§7</a>, <a href="2-emt.html#SP8">§8</a>, <a href="2-emt.html#SP9">§9</a>, <a href="2-emt.html#SP10">§10</a>, <a href="2-emt.html#SP11">§11</a>, <a href="2-emt.html#SP12">§12</a>, <a href="2-emt.html#SP14">§14</a>, <a href="2-emt.html#SP15">§15</a>, <a href="2-emt.html#SP16">§16</a>, <a href="2-emt.html#SP17">§17</a>, <a href="2-emt.html#SP21">§21</a><br/>Hierarchy - <a href="2-hrr.html#SP1">§1</a>, <a href="2-hrr.html#SP2">§2</a>, <a href="2-hrr.html#SP8">§8</a>, <a href="2-hrr.html#SP9">§9</a>, <a href="2-hrr.html#SP11">§11</a>, <a href="2-hrr.html#SP12">§12</a>, <a href="2-hrr.html#SP13">§13</a>, <a href="2-hrr.html#SP14">§14</a>, <a href="2-hrr.html#SP15">§15</a>, <a href="2-hrr.html#SP16">§16</a>, <a href="2-hrr.html#SP17">§17</a>, <a href="2-hrr.html#SP18">§18</a>, <a href="2-hrr.html#SP19">§19</a>, <a href="2-hrr.html#SP20">§20</a>, <a href="2-hrr.html#SP21">§21</a>, <a href="2-hrr.html#SP22">§22</a><br/>Compilation Units - <a href="2-cu.html#SP2_1">§2.1</a><br/>Emit Code - <a href="2-ec.html#SP2">§2</a>, <a href="2-ec.html#SP3">§3</a>, <a href="2-ec.html#SP4">§4</a>, <a href="2-ec.html#SP5">§5</a>, <a href="2-ec.html#SP7">§7</a>, <a href="2-ec.html#SP9">§9</a>, <a href="2-ec.html#SP11">§11</a>, <a href="2-ec.html#SP12">§12</a>, <a href="2-ec.html#SP13">§13</a>, <a href="2-ec.html#SP14">§14</a>, <a href="2-ec.html#SP15">§15</a>, <a href="2-ec.html#SP16">§16</a><br/>Emit Arrays - <a href="2-ea.html#SP4">§4</a>, <a href="2-ea.html#SP6">§6</a><br/>Default Values - <a href="2-dv.html#SP1">§1</a><br/>Generic Module - <a href="3-gm.html#SP1">§1</a><br/>Enclosures - <a href="4-enc.html#SP1">§1</a><br/>Text Substitutions - <a href="4-ts.html#SP7_4">§7.4</a><br/>Rules - <a href="5-rls.html#SP6">§6</a><br/>Variables - <a href="5-vrb.html#SP6">§6</a>, <a href="5-vrb.html#SP15">§15</a><br/>Kind Constructors - <a href="5-kc.html#SP3">§3</a>, <a href="5-kc.html#SP4">§4</a>, <a href="5-kc.html#SP8">§8</a>, <a href="5-kc.html#SP10">§10</a><br/>Property Permissions - <a href="6-pp.html#SP2">§2</a>, <a href="6-pp.html#SP3">§3</a><br/>Property Values - <a href="6-pv.html#SP2">§2</a>, <a href="6-pv.html#SP2_2_1">§2.2.1</a><br/>Command Grammars - <a href="7-cg.html#SP6">§6</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
|
@ -106,7 +101,7 @@ reference points. But as newly-created packages they are initially empty.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">InterSymbolsTables::id_from_IRS_and_symbol</span><span class="plain-syntax">(</span><a href="2-emt.html#SP1" class="function-link"><span class="function-syntax">Emit::at</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">S</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="identifier-syntax">inter_warehouse</span><span class="plain-syntax"> *</span><span class="function-syntax">Emit::warehouse</span><button class="popup" onclick="togglePopup('usagePopup3')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup3">Usage of <span class="code-font"><span class="function-syntax">Emit::warehouse</span></span>:<br/><a href="2-emt.html#SP8">§8</a>, <a href="2-emt.html#SP10">§10</a>, <a href="2-emt.html#SP20">§20</a>, <a href="2-emt.html#SP21">§21</a><br/>Emit Code - <a href="2-ec.html#SP6">§6</a><br/>Emit Arrays - <a href="2-ea.html#SP5">§5</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="identifier-syntax">inter_warehouse</span><span class="plain-syntax"> *</span><span class="function-syntax">Emit::warehouse</span><button class="popup" onclick="togglePopup('usagePopup3')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup3">Usage of <span class="code-font"><span class="function-syntax">Emit::warehouse</span></span>:<br/><a href="2-emt.html#SP10">§10</a>, <a href="2-emt.html#SP20">§20</a>, <a href="2-emt.html#SP21">§21</a><br/>Emit Code - <a href="2-ec.html#SP6">§6</a><br/>Emit Arrays - <a href="2-ea.html#SP5">§5</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">InterTree::warehouse</span><span class="plain-syntax">(</span><a href="2-emt.html#SP1" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">());</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
|
@ -315,27 +310,10 @@ by all other targets. Here we generate only I6-target pragmas, which are command
|
|||
in I6's "Inform Control Language".
|
||||
</p>
|
||||
|
||||
<p class="commentary">This is a mini-language for controlling the I6 compiler, able to set
|
||||
command-line switches, memory settings and so on. I6 ordinarily discards lines
|
||||
beginning with exclamation marks as comments, but at the very top of the file,
|
||||
lines beginning <span class="extract"><span class="extract-syntax">!%</span></span> are read as ICL commands: as soon as any line (including
|
||||
a blank line) doesn't have this signature, I6 exits ICL mode.
|
||||
</p>
|
||||
|
||||
<p class="commentary">Pragmas occupy a fixed position in the global material at the root of the Inter
|
||||
tree, so there's no need to ask <a href="2-hrr.html" class="internal">Hierarchy</a> where these live.
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Emit::pragma</span><button class="popup" onclick="togglePopup('usagePopup17')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup17">Usage of <span class="code-font"><span class="function-syntax">Emit::pragma</span></span>:<br/>Use Options - <a href="3-uo.html#SP1_1">§1.1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">text</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax"> = </span><a href="2-emt.html#SP1" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_ti</span><span class="plain-syntax"> </span><span class="identifier-syntax">ID</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Inter::Warehouse::create_text</span><span class="plain-syntax">(</span><a href="2-emt.html#SP1" class="function-link"><span class="function-syntax">Emit::warehouse</span></a><span class="plain-syntax">(),</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">InterTree::root_package</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Str::copy</span><span class="plain-syntax">(</span><span class="identifier-syntax">Inter::Warehouse::get_text</span><span class="plain-syntax">(</span><a href="2-emt.html#SP1" class="function-link"><span class="function-syntax">Emit::warehouse</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">ID</span><span class="plain-syntax">), </span><span class="identifier-syntax">text</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">target_name</span><span class="plain-syntax"> =</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">InterSymbolsTables::symbol_from_name_creating</span><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">InterTree::global_scope</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">), </span><span class="identifier-syntax">I</span><span class="string-syntax">"Inform6"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::guard</span><span class="plain-syntax">(</span><span class="identifier-syntax">Inter::Pragma::new</span><span class="plain-syntax">(</span><span class="identifier-syntax">Site::pragmas</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">), </span><span class="identifier-syntax">target_name</span><span class="plain-syntax">, </span><span class="identifier-syntax">ID</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Primitives::emit_pragma</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Inform6"</span><span class="plain-syntax">, </span><span class="identifier-syntax">text</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP9" class="paragraph-anchor"></a><b>§9. Constants. </b>These functions make it easy to define a named value in Inter. If the value is
|
||||
|
|
|
@ -141,7 +141,7 @@ as their package type.
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">submodule_identity</span><span class="plain-syntax"> *</span><span class="identifier-syntax">activities</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Packaging::register_submodule</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"activities"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">submodule_identity</span><span class="plain-syntax"> *</span><span class="identifier-syntax">activities</span><span class="plain-syntax"> = </span><span class="identifier-syntax">LargeScale::register_submodule_identity</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"activities"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">H_BEGIN</span><span class="plain-syntax">(</span><span class="identifier-syntax">HierarchyLocations::local_submodule</span><span class="plain-syntax">(</span><span class="identifier-syntax">activities</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">H_BEGIN_AP</span><span class="plain-syntax">(</span><span class="constant-syntax">ACTIVITIES_HAP</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"activity"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"_activity"</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> ...</span>
|
||||
|
@ -253,6 +253,7 @@ and <a href="../pipeline-module/4-tsk.html" class="internal">The Standard Kits (
|
|||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Hierarchy::establish</span><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Packaging::incarnate</span><span class="plain-syntax">(</span><span class="identifier-syntax">LargeScale::module_request</span><span class="plain-syntax">(</span><a href="2-emt.html#SP1" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">I</span><span class="string-syntax">"generic"</span><span class="plain-syntax">)-></span><span class="identifier-syntax">where_found</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">SynopticHierarchy::establish</span><span class="plain-syntax">(</span><a href="2-emt.html#SP1" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">());</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">KitHierarchy::establish</span><span class="plain-syntax">(</span><a href="2-emt.html#SP1" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">());</span>
|
||||
<span class="plain-syntax"> </span><span class="constant-syntax">H_BEGIN_DECLARATIONS</span>
|
||||
|
@ -341,7 +342,7 @@ and <a href="../pipeline-module/4-tsk.html" class="internal">The Standard Kits (
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">submodule_identity</span><span class="plain-syntax"> *</span><span class="identifier-syntax">basics</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Packaging::register_submodule</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"basics"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">submodule_identity</span><span class="plain-syntax"> *</span><span class="identifier-syntax">basics</span><span class="plain-syntax"> = </span><span class="identifier-syntax">LargeScale::register_submodule_identity</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"basics"</span><span class="plain-syntax">);</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">H_BEGIN</span><span class="plain-syntax">(</span><span class="identifier-syntax">HierarchyLocations::completion_submodule</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">basics</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">H_C_T</span><span class="plain-syntax">(</span><span class="constant-syntax">I7_VERSION_NUMBER_HL</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"I7_VERSION_NUMBER"</span><span class="plain-syntax">)</span>
|
||||
|
@ -476,7 +477,7 @@ and <a href="../pipeline-module/4-tsk.html" class="internal">The Standard Kits (
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">submodule_identity</span><span class="plain-syntax"> *</span><span class="identifier-syntax">actions</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Packaging::register_submodule</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"actions"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">submodule_identity</span><span class="plain-syntax"> *</span><span class="identifier-syntax">actions</span><span class="plain-syntax"> = </span><span class="identifier-syntax">LargeScale::register_submodule_identity</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"actions"</span><span class="plain-syntax">);</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">H_BEGIN</span><span class="plain-syntax">(</span><span class="identifier-syntax">HierarchyLocations::local_submodule</span><span class="plain-syntax">(</span><span class="identifier-syntax">actions</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">H_BEGIN_AP</span><span class="plain-syntax">(</span><span class="constant-syntax">ACTIONS_HAP</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"action"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"_action"</span><span class="plain-syntax">)</span>
|
||||
|
@ -527,7 +528,7 @@ and <a href="../pipeline-module/4-tsk.html" class="internal">The Standard Kits (
|
|||
<span class="plain-syntax"> </span><span class="constant-syntax">H_END</span>
|
||||
<span class="plain-syntax"> </span><span class="constant-syntax">H_END</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">submodule_identity</span><span class="plain-syntax"> *</span><span class="identifier-syntax">naps</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Packaging::register_submodule</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"named_action_patterns"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">submodule_identity</span><span class="plain-syntax"> *</span><span class="identifier-syntax">naps</span><span class="plain-syntax"> = </span><span class="identifier-syntax">LargeScale::register_submodule_identity</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"named_action_patterns"</span><span class="plain-syntax">);</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">H_BEGIN</span><span class="plain-syntax">(</span><span class="identifier-syntax">HierarchyLocations::local_submodule</span><span class="plain-syntax">(</span><span class="identifier-syntax">naps</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">H_BEGIN_AP</span><span class="plain-syntax">(</span><span class="constant-syntax">NAMED_ACTION_PATTERNS_HAP</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"named_action_pattern"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"_named_action_pattern"</span><span class="plain-syntax">)</span>
|
||||
|
@ -570,7 +571,7 @@ and <a href="../pipeline-module/4-tsk.html" class="internal">The Standard Kits (
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">submodule_identity</span><span class="plain-syntax"> *</span><span class="identifier-syntax">activities</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Packaging::register_submodule</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"activities"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">submodule_identity</span><span class="plain-syntax"> *</span><span class="identifier-syntax">activities</span><span class="plain-syntax"> = </span><span class="identifier-syntax">LargeScale::register_submodule_identity</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"activities"</span><span class="plain-syntax">);</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">H_BEGIN</span><span class="plain-syntax">(</span><span class="identifier-syntax">HierarchyLocations::local_submodule</span><span class="plain-syntax">(</span><span class="identifier-syntax">activities</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">H_BEGIN_AP</span><span class="plain-syntax">(</span><span class="constant-syntax">ACTIVITIES_HAP</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"activity"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"_activity"</span><span class="plain-syntax">)</span>
|
||||
|
@ -617,7 +618,7 @@ and <a href="../pipeline-module/4-tsk.html" class="internal">The Standard Kits (
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">submodule_identity</span><span class="plain-syntax"> *</span><span class="identifier-syntax">adjectives</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Packaging::register_submodule</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"adjectives"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">submodule_identity</span><span class="plain-syntax"> *</span><span class="identifier-syntax">adjectives</span><span class="plain-syntax"> = </span><span class="identifier-syntax">LargeScale::register_submodule_identity</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"adjectives"</span><span class="plain-syntax">);</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">H_BEGIN</span><span class="plain-syntax">(</span><span class="identifier-syntax">HierarchyLocations::local_submodule</span><span class="plain-syntax">(</span><span class="identifier-syntax">adjectives</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">H_BEGIN_AP</span><span class="plain-syntax">(</span><span class="constant-syntax">ADJECTIVES_HAP</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"adjective"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"_adjective"</span><span class="plain-syntax">)</span>
|
||||
|
@ -662,7 +663,7 @@ and <a href="../pipeline-module/4-tsk.html" class="internal">The Standard Kits (
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">submodule_identity</span><span class="plain-syntax"> *</span><span class="identifier-syntax">bibliographic</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Packaging::register_submodule</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"bibliographic"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">submodule_identity</span><span class="plain-syntax"> *</span><span class="identifier-syntax">bibliographic</span><span class="plain-syntax"> = </span><span class="identifier-syntax">LargeScale::register_submodule_identity</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"bibliographic"</span><span class="plain-syntax">);</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">H_BEGIN</span><span class="plain-syntax">(</span><span class="identifier-syntax">HierarchyLocations::completion_submodule</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">bibliographic</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">H_C_T</span><span class="plain-syntax">(</span><span class="constant-syntax">UUID_ARRAY_HL</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"UUID_ARRAY"</span><span class="plain-syntax">)</span>
|
||||
|
@ -701,7 +702,7 @@ and <a href="../pipeline-module/4-tsk.html" class="internal">The Standard Kits (
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">submodule_identity</span><span class="plain-syntax"> *</span><span class="identifier-syntax">chronology</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Packaging::register_submodule</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"chronology"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">submodule_identity</span><span class="plain-syntax"> *</span><span class="identifier-syntax">chronology</span><span class="plain-syntax"> = </span><span class="identifier-syntax">LargeScale::register_submodule_identity</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"chronology"</span><span class="plain-syntax">);</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">H_BEGIN</span><span class="plain-syntax">(</span><span class="identifier-syntax">HierarchyLocations::local_submodule</span><span class="plain-syntax">(</span><span class="identifier-syntax">chronology</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">H_BEGIN_AP</span><span class="plain-syntax">(</span><span class="constant-syntax">PAST_TENSE_CONDS_HAP</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"past_condition"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"_past_condition"</span><span class="plain-syntax">)</span>
|
||||
|
@ -752,7 +753,7 @@ and <a href="../pipeline-module/4-tsk.html" class="internal">The Standard Kits (
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">submodule_identity</span><span class="plain-syntax"> *</span><span class="identifier-syntax">conjugations</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Packaging::register_submodule</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"conjugations"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">submodule_identity</span><span class="plain-syntax"> *</span><span class="identifier-syntax">conjugations</span><span class="plain-syntax"> = </span><span class="identifier-syntax">LargeScale::register_submodule_identity</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"conjugations"</span><span class="plain-syntax">);</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">H_BEGIN</span><span class="plain-syntax">(</span><span class="identifier-syntax">HierarchyLocations::generic_submodule</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">conjugations</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">H_C_T</span><span class="plain-syntax">(</span><span class="constant-syntax">CV_MEANING_HL</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"CV_MEANING"</span><span class="plain-syntax">)</span>
|
||||
|
@ -804,7 +805,7 @@ and <a href="../pipeline-module/4-tsk.html" class="internal">The Standard Kits (
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">submodule_identity</span><span class="plain-syntax"> *</span><span class="identifier-syntax">equations</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Packaging::register_submodule</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"equations"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">submodule_identity</span><span class="plain-syntax"> *</span><span class="identifier-syntax">equations</span><span class="plain-syntax"> = </span><span class="identifier-syntax">LargeScale::register_submodule_identity</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"equations"</span><span class="plain-syntax">);</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">H_BEGIN</span><span class="plain-syntax">(</span><span class="identifier-syntax">HierarchyLocations::local_submodule</span><span class="plain-syntax">(</span><span class="identifier-syntax">equations</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">H_BEGIN_AP</span><span class="plain-syntax">(</span><span class="constant-syntax">EQUATIONS_HAP</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"equation"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"_equation"</span><span class="plain-syntax">)</span>
|
||||
|
@ -826,7 +827,7 @@ and <a href="../pipeline-module/4-tsk.html" class="internal">The Standard Kits (
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">submodule_identity</span><span class="plain-syntax"> *</span><span class="identifier-syntax">external_files</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Packaging::register_submodule</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"external_files"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">submodule_identity</span><span class="plain-syntax"> *</span><span class="identifier-syntax">external_files</span><span class="plain-syntax"> = </span><span class="identifier-syntax">LargeScale::register_submodule_identity</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"external_files"</span><span class="plain-syntax">);</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">H_BEGIN</span><span class="plain-syntax">(</span><span class="identifier-syntax">HierarchyLocations::local_submodule</span><span class="plain-syntax">(</span><span class="identifier-syntax">external_files</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">H_BEGIN_AP</span><span class="plain-syntax">(</span><span class="constant-syntax">EXTERNAL_FILES_HAP</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"external_file"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"_external_file"</span><span class="plain-syntax">)</span>
|
||||
|
@ -906,7 +907,7 @@ and <a href="../pipeline-module/4-tsk.html" class="internal">The Standard Kits (
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">submodule_identity</span><span class="plain-syntax"> *</span><span class="identifier-syntax">grammar</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Packaging::register_submodule</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"grammar"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">submodule_identity</span><span class="plain-syntax"> *</span><span class="identifier-syntax">grammar</span><span class="plain-syntax"> = </span><span class="identifier-syntax">LargeScale::register_submodule_identity</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"grammar"</span><span class="plain-syntax">);</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">H_BEGIN</span><span class="plain-syntax">(</span><span class="identifier-syntax">HierarchyLocations::generic_submodule</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">grammar</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">H_C_T</span><span class="plain-syntax">(</span><span class="constant-syntax">REPARSE_CODE_HL</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"REPARSE_CODE"</span><span class="plain-syntax">)</span>
|
||||
|
@ -1086,7 +1087,7 @@ and <a href="../pipeline-module/4-tsk.html" class="internal">The Standard Kits (
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">submodule_identity</span><span class="plain-syntax"> *</span><span class="identifier-syntax">instances</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Packaging::register_submodule</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"instances"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">submodule_identity</span><span class="plain-syntax"> *</span><span class="identifier-syntax">instances</span><span class="plain-syntax"> = </span><span class="identifier-syntax">LargeScale::register_submodule_identity</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"instances"</span><span class="plain-syntax">);</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">H_BEGIN</span><span class="plain-syntax">(</span><span class="identifier-syntax">HierarchyLocations::local_submodule</span><span class="plain-syntax">(</span><span class="identifier-syntax">instances</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">H_BEGIN_AP</span><span class="plain-syntax">(</span><span class="constant-syntax">INSTANCES_HAP</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"instance"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"_instance"</span><span class="plain-syntax">)</span>
|
||||
|
@ -1198,7 +1199,7 @@ and <a href="../pipeline-module/4-tsk.html" class="internal">The Standard Kits (
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">submodule_identity</span><span class="plain-syntax"> *</span><span class="identifier-syntax">interactive_fiction</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Packaging::register_submodule</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"interactive_fiction"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">submodule_identity</span><span class="plain-syntax"> *</span><span class="identifier-syntax">interactive_fiction</span><span class="plain-syntax"> = </span><span class="identifier-syntax">LargeScale::register_submodule_identity</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"interactive_fiction"</span><span class="plain-syntax">);</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">H_BEGIN</span><span class="plain-syntax">(</span><span class="identifier-syntax">HierarchyLocations::generic_submodule</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">interactive_fiction</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">H_C_T</span><span class="plain-syntax">(</span><span class="constant-syntax">PLAYER_OBJECT_INIS_HL</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"PLAYER_OBJECT_INIS"</span><span class="plain-syntax">)</span>
|
||||
|
@ -1316,7 +1317,7 @@ and <a href="../pipeline-module/4-tsk.html" class="internal">The Standard Kits (
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">submodule_identity</span><span class="plain-syntax"> *</span><span class="identifier-syntax">kinds</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Packaging::register_submodule</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"kinds"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">submodule_identity</span><span class="plain-syntax"> *</span><span class="identifier-syntax">kinds</span><span class="plain-syntax"> = </span><span class="identifier-syntax">LargeScale::register_submodule_identity</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"kinds"</span><span class="plain-syntax">);</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">H_BEGIN</span><span class="plain-syntax">(</span><span class="identifier-syntax">HierarchyLocations::generic_submodule</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">kinds</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">H_C_T</span><span class="plain-syntax">(</span><span class="constant-syntax">K_UNCHECKED_HL</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"K_unchecked"</span><span class="plain-syntax">)</span>
|
||||
|
@ -1439,7 +1440,7 @@ and <a href="../pipeline-module/4-tsk.html" class="internal">The Standard Kits (
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">submodule_identity</span><span class="plain-syntax"> *</span><span class="identifier-syntax">literals</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Packaging::register_submodule</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"literal_patterns"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">submodule_identity</span><span class="plain-syntax"> *</span><span class="identifier-syntax">literals</span><span class="plain-syntax"> = </span><span class="identifier-syntax">LargeScale::register_submodule_identity</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"literal_patterns"</span><span class="plain-syntax">);</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">H_BEGIN</span><span class="plain-syntax">(</span><span class="identifier-syntax">HierarchyLocations::local_submodule</span><span class="plain-syntax">(</span><span class="identifier-syntax">literals</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">H_BEGIN_AP</span><span class="plain-syntax">(</span><span class="constant-syntax">LITERAL_PATTERNS_HAP</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"literal_pattern"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"_literal_pattern"</span><span class="plain-syntax">)</span>
|
||||
|
@ -1472,7 +1473,7 @@ and <a href="../pipeline-module/4-tsk.html" class="internal">The Standard Kits (
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">submodule_identity</span><span class="plain-syntax"> *</span><span class="identifier-syntax">hints</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Packaging::register_submodule</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"mapping_hints"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">submodule_identity</span><span class="plain-syntax"> *</span><span class="identifier-syntax">hints</span><span class="plain-syntax"> = </span><span class="identifier-syntax">LargeScale::register_submodule_identity</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"mapping_hints"</span><span class="plain-syntax">);</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">H_BEGIN</span><span class="plain-syntax">(</span><span class="identifier-syntax">HierarchyLocations::completion_submodule</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">hints</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">H_BEGIN_AP</span><span class="plain-syntax">(</span><span class="constant-syntax">MAPPING_HINTS_HAP</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"mapping_hint"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"_mapping_hint"</span><span class="plain-syntax">)</span>
|
||||
|
@ -1516,7 +1517,7 @@ and <a href="../pipeline-module/4-tsk.html" class="internal">The Standard Kits (
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">submodule_identity</span><span class="plain-syntax"> *</span><span class="identifier-syntax">phrases</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Packaging::register_submodule</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"phrases"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">submodule_identity</span><span class="plain-syntax"> *</span><span class="identifier-syntax">phrases</span><span class="plain-syntax"> = </span><span class="identifier-syntax">LargeScale::register_submodule_identity</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"phrases"</span><span class="plain-syntax">);</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">H_BEGIN</span><span class="plain-syntax">(</span><span class="identifier-syntax">HierarchyLocations::local_submodule</span><span class="plain-syntax">(</span><span class="identifier-syntax">phrases</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">H_BEGIN_AP</span><span class="plain-syntax">(</span><span class="constant-syntax">PHRASES_HAP</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"phrase"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"_to_phrase"</span><span class="plain-syntax">)</span>
|
||||
|
@ -1560,7 +1561,7 @@ and <a href="../pipeline-module/4-tsk.html" class="internal">The Standard Kits (
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">submodule_identity</span><span class="plain-syntax"> *</span><span class="identifier-syntax">properties</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Packaging::register_submodule</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"properties"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">submodule_identity</span><span class="plain-syntax"> *</span><span class="identifier-syntax">properties</span><span class="plain-syntax"> = </span><span class="identifier-syntax">LargeScale::register_submodule_identity</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"properties"</span><span class="plain-syntax">);</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">H_BEGIN</span><span class="plain-syntax">(</span><span class="identifier-syntax">HierarchyLocations::local_submodule</span><span class="plain-syntax">(</span><span class="identifier-syntax">properties</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">H_BEGIN_AP</span><span class="plain-syntax">(</span><span class="constant-syntax">PROPERTIES_HAP</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"property"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"_property"</span><span class="plain-syntax">)</span>
|
||||
|
@ -1617,7 +1618,7 @@ and <a href="../pipeline-module/4-tsk.html" class="internal">The Standard Kits (
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">submodule_identity</span><span class="plain-syntax"> *</span><span class="identifier-syntax">relations</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Packaging::register_submodule</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"relations"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">submodule_identity</span><span class="plain-syntax"> *</span><span class="identifier-syntax">relations</span><span class="plain-syntax"> = </span><span class="identifier-syntax">LargeScale::register_submodule_identity</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"relations"</span><span class="plain-syntax">);</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">H_BEGIN</span><span class="plain-syntax">(</span><span class="identifier-syntax">HierarchyLocations::generic_submodule</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">relations</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">H_C_T</span><span class="plain-syntax">(</span><span class="constant-syntax">RELS_ASSERT_FALSE_HL</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"RELS_ASSERT_FALSE"</span><span class="plain-syntax">)</span>
|
||||
|
@ -1716,7 +1717,7 @@ and <a href="../pipeline-module/4-tsk.html" class="internal">The Standard Kits (
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">submodule_identity</span><span class="plain-syntax"> *</span><span class="identifier-syntax">rulebooks</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Packaging::register_submodule</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"rulebooks"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">submodule_identity</span><span class="plain-syntax"> *</span><span class="identifier-syntax">rulebooks</span><span class="plain-syntax"> = </span><span class="identifier-syntax">LargeScale::register_submodule_identity</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"rulebooks"</span><span class="plain-syntax">);</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">H_BEGIN</span><span class="plain-syntax">(</span><span class="identifier-syntax">HierarchyLocations::local_submodule</span><span class="plain-syntax">(</span><span class="identifier-syntax">rulebooks</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">H_BEGIN_AP</span><span class="plain-syntax">(</span><span class="constant-syntax">OUTCOMES_HAP</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"rulebook_outcome"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"_outcome"</span><span class="plain-syntax">)</span>
|
||||
|
@ -1805,7 +1806,7 @@ and <a href="../pipeline-module/4-tsk.html" class="internal">The Standard Kits (
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">submodule_identity</span><span class="plain-syntax"> *</span><span class="identifier-syntax">rules</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Packaging::register_submodule</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"rules"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">submodule_identity</span><span class="plain-syntax"> *</span><span class="identifier-syntax">rules</span><span class="plain-syntax"> = </span><span class="identifier-syntax">LargeScale::register_submodule_identity</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"rules"</span><span class="plain-syntax">);</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">H_BEGIN</span><span class="plain-syntax">(</span><span class="identifier-syntax">HierarchyLocations::local_submodule</span><span class="plain-syntax">(</span><span class="identifier-syntax">rules</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">H_BEGIN_AP</span><span class="plain-syntax">(</span><span class="constant-syntax">RULES_HAP</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"rule"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"_rule"</span><span class="plain-syntax">)</span>
|
||||
|
@ -1875,7 +1876,7 @@ and <a href="../pipeline-module/4-tsk.html" class="internal">The Standard Kits (
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">submodule_identity</span><span class="plain-syntax"> *</span><span class="identifier-syntax">tables</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Packaging::register_submodule</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"tables"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">submodule_identity</span><span class="plain-syntax"> *</span><span class="identifier-syntax">tables</span><span class="plain-syntax"> = </span><span class="identifier-syntax">LargeScale::register_submodule_identity</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"tables"</span><span class="plain-syntax">);</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">H_BEGIN</span><span class="plain-syntax">(</span><span class="identifier-syntax">HierarchyLocations::local_submodule</span><span class="plain-syntax">(</span><span class="identifier-syntax">tables</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">H_BEGIN_AP</span><span class="plain-syntax">(</span><span class="constant-syntax">TABLES_HAP</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"table"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"_table"</span><span class="plain-syntax">)</span>
|
||||
|
@ -1904,7 +1905,7 @@ and <a href="../pipeline-module/4-tsk.html" class="internal">The Standard Kits (
|
|||
<span class="plain-syntax"> </span><span class="constant-syntax">H_END</span>
|
||||
<span class="plain-syntax"> </span><span class="constant-syntax">H_END</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">submodule_identity</span><span class="plain-syntax"> *</span><span class="identifier-syntax">table_columns</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Packaging::register_submodule</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"table_columns"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">submodule_identity</span><span class="plain-syntax"> *</span><span class="identifier-syntax">table_columns</span><span class="plain-syntax"> = </span><span class="identifier-syntax">LargeScale::register_submodule_identity</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"table_columns"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">H_BEGIN</span><span class="plain-syntax">(</span><span class="identifier-syntax">HierarchyLocations::local_submodule</span><span class="plain-syntax">(</span><span class="identifier-syntax">table_columns</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">H_BEGIN_AP</span><span class="plain-syntax">(</span><span class="constant-syntax">TABLE_COLUMNS_HAP</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"table_column"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"_table_column"</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">H_C_U</span><span class="plain-syntax">(</span><span class="constant-syntax">TABLE_COLUMN_ID_HL</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"table_column_id"</span><span class="plain-syntax">)</span>
|
||||
|
@ -1933,7 +1934,7 @@ and <a href="../pipeline-module/4-tsk.html" class="internal">The Standard Kits (
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">submodule_identity</span><span class="plain-syntax"> *</span><span class="identifier-syntax">use_options</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Packaging::register_submodule</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"use_options"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">submodule_identity</span><span class="plain-syntax"> *</span><span class="identifier-syntax">use_options</span><span class="plain-syntax"> = </span><span class="identifier-syntax">LargeScale::register_submodule_identity</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"use_options"</span><span class="plain-syntax">);</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">H_BEGIN</span><span class="plain-syntax">(</span><span class="identifier-syntax">HierarchyLocations::local_submodule</span><span class="plain-syntax">(</span><span class="identifier-syntax">use_options</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">H_BEGIN_AP</span><span class="plain-syntax">(</span><span class="constant-syntax">USE_OPTIONS_HAP</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"use_option"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"_use_option"</span><span class="plain-syntax">)</span>
|
||||
|
@ -1970,7 +1971,7 @@ and <a href="../pipeline-module/4-tsk.html" class="internal">The Standard Kits (
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">submodule_identity</span><span class="plain-syntax"> *</span><span class="identifier-syntax">variables</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Packaging::register_submodule</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"variables"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">submodule_identity</span><span class="plain-syntax"> *</span><span class="identifier-syntax">variables</span><span class="plain-syntax"> = </span><span class="identifier-syntax">LargeScale::register_submodule_identity</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"variables"</span><span class="plain-syntax">);</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">H_BEGIN</span><span class="plain-syntax">(</span><span class="identifier-syntax">HierarchyLocations::local_submodule</span><span class="plain-syntax">(</span><span class="identifier-syntax">variables</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">H_BEGIN_AP</span><span class="plain-syntax">(</span><span class="constant-syntax">VARIABLES_HAP</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"variable"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"_variable"</span><span class="plain-syntax">)</span>
|
||||
|
@ -2106,7 +2107,7 @@ and <a href="../pipeline-module/4-tsk.html" class="internal">The Standard Kits (
|
|||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="2-hrr.html#SP8_1">§8.1</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP8_2_1" class="paragraph-anchor"></a><b>§8.2.1. Architectural symbols. </b>These are built-in constants (and one built-in variable, <span class="extract"><span class="extract-syntax">self</span></span>) which come
|
||||
from the platform we are compiling to. See <a href="../building-module/1-bs.html" class="internal">Building Site (in building)</a>.
|
||||
from the platform we are compiling to. See <a href="../building-module/1-ls.html" class="internal">Large-Scale Structure (in building)</a>.
|
||||
</p>
|
||||
|
||||
<p class="commentary">There are other architectural symbols besides these, but these are the only
|
||||
|
|
|
@ -72,7 +72,7 @@
|
|||
<span class="plain-syntax"> </span><a href="2-emt.html#SP4" class="function-link"><span class="function-syntax">Emit::rudimentary_kinds</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">target_vm</span><span class="plain-syntax"> *</span><span class="identifier-syntax">VM</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Task::vm</span><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">VM</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"target VM not set yet"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Site::make_architectural_definitions</span><span class="plain-syntax">(</span><a href="2-emt.html#SP1" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(),</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LargeScale::make_architectural_definitions</span><span class="plain-syntax">(</span><a href="2-emt.html#SP1" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(),</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">TargetVMs::get_architecture</span><span class="plain-syntax">(</span><span class="identifier-syntax">VM</span><span class="plain-syntax">), </span><span class="identifier-syntax">unchecked_interk</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="5-cnj.html#SP1" class="function-link"><span class="function-syntax">RTVerbs::compile_generic_constants</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><a href="7-cg.html#SP1" class="function-link"><span class="function-syntax">RTCommandGrammars::compile_generic_constants</span></a><span class="plain-syntax">();</span>
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
Total memory consumption was 403896K = 394 MB
|
||||
Total memory consumption was 403885K = 394 MB
|
||||
|
||||
61.4% was used for 2024826 objects, in 380047 frames in 310 x 800K = 248000K = 242 MB:
|
||||
61.4% was used for 2024827 objects, in 380048 frames in 310 x 800K = 248000K = 242 MB:
|
||||
|
||||
10.1% inter_tree_node_array 58 x 8192 = 475136 objects, 41813824 bytes
|
||||
7.2% text_stream_array 5294 x 100 = 529400 objects, 29815808 bytes
|
||||
4.7% linked_list 34785 objects, 19479600 bytes
|
||||
4.7% linked_list 34783 objects, 19478480 bytes
|
||||
4.1% inter_symbol_array 139 x 1024 = 142336 objects, 17084768 bytes
|
||||
2.5% parse_node 129462 objects, 10356960 bytes
|
||||
1.7% verb_conjugation 160 objects, 7425280 bytes
|
||||
|
@ -18,7 +18,7 @@ Total memory consumption was 403896K = 394 MB
|
|||
0.4% package_request 21139 objects, 1860232 bytes
|
||||
0.4% vocabulary_entry_array 161 x 100 = 16100 objects, 1808352 bytes
|
||||
0.4% inter_symbols_table 26575 objects, 1700800 bytes
|
||||
0.3% dictionary 33312 objects, 1598976 bytes
|
||||
0.3% dictionary 33317 objects, 1599216 bytes
|
||||
0.3% match_trie_array 11 x 1000 = 11000 objects, 1496352 bytes
|
||||
0.3% i6_schema_array 23 x 100 = 2300 objects, 1380736 bytes
|
||||
0.3% dict_entry_array 423 x 100 = 42300 objects, 1367136 bytes
|
||||
|
@ -54,7 +54,7 @@ Total memory consumption was 403896K = 394 MB
|
|||
---- noun_usage 2402 objects, 96080 bytes
|
||||
---- anl_entry_array 2 x 1000 = 2000 objects, 96064 bytes
|
||||
---- preposition 273 objects, 87360 bytes
|
||||
---- inter_tree 6 objects, 83520 bytes
|
||||
---- inter_tree 6 objects, 83472 bytes
|
||||
---- lexical_cluster 2517 objects, 80544 bytes
|
||||
---- pcalc_term_array 2 x 1000 = 2000 objects, 80064 bytes
|
||||
---- kind_variable_declaration 1652 objects, 79296 bytes
|
||||
|
@ -160,8 +160,8 @@ Total memory consumption was 403896K = 394 MB
|
|||
---- inter_annotation_form 34 objects, 1360 bytes
|
||||
---- inter_tree_location_list 34 objects, 1360 bytes
|
||||
---- special_meaning_holder 33 objects, 1320 bytes
|
||||
---- table_column 16 objects, 1280 bytes
|
||||
---- constant_phrase 20 objects, 1280 bytes
|
||||
---- table_column 16 objects, 1280 bytes
|
||||
---- invocation_options_array 1 x 100 objects, 1224 bytes
|
||||
---- direction_inference_data 30 objects, 1200 bytes
|
||||
---- target_vm 8 objects, 1152 bytes
|
||||
|
@ -170,8 +170,8 @@ Total memory consumption was 403896K = 394 MB
|
|||
---- quantifier 16 objects, 1024 bytes
|
||||
---- inbuild_requirement 25 objects, 1000 bytes
|
||||
---- submodule_identity 31 objects, 992 bytes
|
||||
---- named_rulebook_outcome 15 objects, 960 bytes
|
||||
---- pipeline_stage 20 objects, 960 bytes
|
||||
---- named_rulebook_outcome 15 objects, 960 bytes
|
||||
---- control_structure_phrase 12 objects, 864 bytes
|
||||
---- cached_understanding 21 objects, 840 bytes
|
||||
---- phrase_option_array 1 x 100 objects, 824 bytes
|
||||
|
@ -179,23 +179,23 @@ Total memory consumption was 403896K = 394 MB
|
|||
---- internal_test 15 objects, 720 bytes
|
||||
---- inbuild_search_result 18 objects, 720 bytes
|
||||
---- inform_language 6 objects, 672 bytes
|
||||
---- relation_guard 5 objects, 640 bytes
|
||||
---- inter_warehouse_room 10 objects, 640 bytes
|
||||
---- relation_guard 5 objects, 640 bytes
|
||||
---- code_generation 1 object, 576 bytes
|
||||
---- rulebook_outcome 17 objects, 544 bytes
|
||||
---- small_word_set 11 objects, 528 bytes
|
||||
---- implication 13 objects, 520 bytes
|
||||
---- inform_kit 5 objects, 520 bytes
|
||||
---- implication 13 objects, 520 bytes
|
||||
---- equation 4 objects, 480 bytes
|
||||
---- i6_memory_setting 14 objects, 448 bytes
|
||||
---- inference_family 11 objects, 440 bytes
|
||||
---- module_package 10 objects, 400 bytes
|
||||
---- bp_family 12 objects, 384 bytes
|
||||
---- article_usage 8 objects, 384 bytes
|
||||
---- source_file 5 objects, 360 bytes
|
||||
---- inbuild_genre 7 objects, 336 bytes
|
||||
---- grammatical_category 8 objects, 320 bytes
|
||||
---- door_dir_notice 5 objects, 320 bytes
|
||||
---- module_request 8 objects, 320 bytes
|
||||
---- grammatical_category 8 objects, 320 bytes
|
||||
---- pronoun 8 objects, 320 bytes
|
||||
---- tree_inventory 1 object, 312 bytes
|
||||
---- build_step 4 objects, 288 bytes
|
||||
|
@ -209,11 +209,11 @@ Total memory consumption was 403896K = 394 MB
|
|||
---- adjective_meaning_family 7 objects, 224 bytes
|
||||
---- test_scenario 1 object, 216 bytes
|
||||
---- release_instructions 1 object, 208 bytes
|
||||
---- build_skill 5 objects, 200 bytes
|
||||
---- code_generator 5 objects, 200 bytes
|
||||
---- inform_project 1 object, 192 bytes
|
||||
---- build_skill 5 objects, 200 bytes
|
||||
---- kit_dependency 4 objects, 192 bytes
|
||||
---- plural_dictionary_entry 4 objects, 192 bytes
|
||||
---- inform_project 1 object, 192 bytes
|
||||
---- attachment_instruction 4 objects, 160 bytes
|
||||
---- inter_architecture 4 objects, 160 bytes
|
||||
---- imperative_defn_family 4 objects, 160 bytes
|
||||
|
@ -237,16 +237,16 @@ Total memory consumption was 403896K = 394 MB
|
|||
|
||||
38.5% was used for memory not allocated for objects:
|
||||
|
||||
20.1% text stream storage 83489680 bytes in 547381 claims
|
||||
4.4% dictionary storage 18364416 bytes in 33312 claims
|
||||
20.1% text stream storage 83488444 bytes in 547367 claims
|
||||
4.4% dictionary storage 18354176 bytes in 33317 claims
|
||||
---- sorting 736 bytes in 3 claims
|
||||
1.7% source text 7200000 bytes in 3 claims
|
||||
2.6% source text details 10800000 bytes in 2 claims
|
||||
---- documentation fragments 262144 bytes in 1 claim
|
||||
---- linguistic stock array 81920 bytes in 2 claims
|
||||
---- small word set array 105600 bytes in 22 claims
|
||||
1.0% inter symbols storage 4269600 bytes in 27683 claims
|
||||
4.0% inter bytecode storage 16802748 bytes in 14 claims
|
||||
1.0% inter symbols storage 4269104 bytes in 27682 claims
|
||||
4.0% inter bytecode storage 16802744 bytes in 14 claims
|
||||
3.9% inter links storage 16174208 bytes in 266 claims
|
||||
---- inter tree location list storage 191232 bytes in 32 claims
|
||||
0.4% instance-of-kind counting 1695204 bytes in 1 claim
|
||||
|
@ -255,5 +255,5 @@ Total memory consumption was 403896K = 394 MB
|
|||
---- code generation workspace for objects 1336 bytes in 4 claims
|
||||
---- emitter array storage 161792 bytes in 2062 claims
|
||||
|
||||
19.1% was overhead - 79298072 bytes = 77439K = 75 MB
|
||||
19.1% was overhead - 79299080 bytes = 77440K = 75 MB
|
||||
|
||||
|
|
|
@ -1,34 +1,34 @@
|
|||
100.0% in inform7 run
|
||||
57.3% in compilation to Inter
|
||||
41.4% in //Sequence::undertake_queued_tasks//
|
||||
56.8% in compilation to Inter
|
||||
41.0% in //Sequence::undertake_queued_tasks//
|
||||
3.5% in //MajorNodes::pre_pass//
|
||||
2.5% in //MajorNodes::pass_1//
|
||||
2.1% in //RTPhrasebook::compile_entries//
|
||||
1.3% in //ImperativeDefinitions::assess_all//
|
||||
1.2% in //RTKindConstructors::compile//
|
||||
2.6% in //MajorNodes::pass_1//
|
||||
2.0% in //RTPhrasebook::compile_entries//
|
||||
1.4% in //ImperativeDefinitions::assess_all//
|
||||
1.1% in //RTKindConstructors::compile//
|
||||
0.4% in //ImperativeDefinitions::compile_first_block//
|
||||
0.4% in //MajorNodes::pass_2//
|
||||
0.4% in //Sequence::undertake_queued_tasks//
|
||||
0.4% in //Sequence::undertake_queued_tasks//
|
||||
0.4% in //World::stage_V//
|
||||
0.3% in //ImperativeDefinitions::compile_first_block//
|
||||
0.1% in //CompletionModule::compile//
|
||||
0.1% in //InferenceSubjects::emit_all//
|
||||
0.1% in //RTKindConstructors::compile_permissions//
|
||||
0.1% in //Task::make_built_in_kind_constructors//
|
||||
0.1% in //World::stages_II_and_III//
|
||||
2.2% not specifically accounted for
|
||||
40.6% in running Inter pipeline
|
||||
10.7% in step preparation
|
||||
1.8% not specifically accounted for
|
||||
41.0% in running Inter pipeline
|
||||
10.3% in step preparation
|
||||
10.0% in inter step 6/14: make-synoptic-module
|
||||
8.1% in inter step 5/14: load-binary-kits
|
||||
7.0% in inter step 14/14: generate inform6 -> auto.inf
|
||||
1.5% in inter step 9/14: make-identifiers-unique
|
||||
0.3% in inter step 12/14: eliminate-redundant-operations
|
||||
0.3% in inter step 4/14: compile-splats
|
||||
0.3% in inter step 7/14: shorten-wiring
|
||||
8.3% in inter step 5/14: load-binary-kits
|
||||
7.1% in inter step 14/14: generate inform6 -> auto.inf
|
||||
1.6% in inter step 9/14: make-identifiers-unique
|
||||
0.2% in inter step 12/14: eliminate-redundant-operations
|
||||
0.2% in inter step 4/14: compile-splats
|
||||
0.2% in inter step 7/14: shorten-wiring
|
||||
0.1% in inter step 10/14: reconcile-verbs
|
||||
0.1% in inter step 11/14: eliminate-redundant-labels
|
||||
0.1% in inter step 8/14: detect-indirect-calls
|
||||
1.8% not specifically accounted for
|
||||
2.2% not specifically accounted for
|
||||
1.6% in supervisor
|
||||
0.4% not specifically accounted for
|
||||
0.5% not specifically accounted for
|
||||
|
|
|
@ -7,17 +7,11 @@ layer.
|
|||
@h Z-Machine Definitions.
|
||||
The Z-machine contains certain special constants and variables at fixed
|
||||
position in its "header"; the addresses of these are given below. See
|
||||
{\it The Z-Machine Standards Document}, version 1.0, for details.
|
||||
|
||||
|INDIV_PROP_START| is the lowest number of any "individual property",
|
||||
an I6 internal quantity defined by the compiler when the target is Glulx
|
||||
but not for Z.
|
||||
The Z-Machine Standards Document, version 1.0, for details.
|
||||
|
||||
=
|
||||
#Ifdef TARGET_ZCODE;
|
||||
|
||||
Constant INDIV_PROP_START 64;
|
||||
|
||||
! Offsets into Z-machine header:
|
||||
|
||||
Constant HDR_ZCODEVERSION = $00; ! byte
|
||||
|
|
|
@ -4107,15 +4107,16 @@ is a room in its own right, which is not really true. Note that it is not
|
|||
permitted to have properties other than the three named here: all other
|
||||
properties are redirected to the current location's object.
|
||||
|
||||
Properties with numbers under |INDIV_PROP_START| are "common properties".
|
||||
These come along with a table of default values, so that it is meaningful
|
||||
(in I6, anyway) to read them even when they are not provided (so that the
|
||||
address, returned by the |.&| operator, is zero).
|
||||
At one time this function correctly handled the case of a common property
|
||||
whose default value was itself a function which could be run; but this is
|
||||
now awkward to compile (since it needed the magic compiler-defimed constant
|
||||
INDIV_PROP_START, existing on Inform 6 for Glulx but not on other platforms),
|
||||
and in the Inform 7 world it was a facility never used.
|
||||
|
||||
=
|
||||
[ RunRoutines obj prop;
|
||||
if (obj == thedark) obj = real_location;
|
||||
if ((obj.&prop == 0) && (prop-->1 >= INDIV_PROP_START)) rfalse;
|
||||
if (obj.&prop == 0) rfalse;
|
||||
return obj.prop();
|
||||
];
|
||||
|
||||
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
File diff suppressed because it is too large
Load diff
|
@ -7,11 +7,11 @@ to is similarly divided up.
|
|||
The source text is divided up into "compilation units". Each extension is its
|
||||
own compilation unit, and so is the main source text. This demarcation is also
|
||||
reflected in the Inter hierarchy, where each different compilation unit has its
|
||||
own sub-hierarchy, a |module_package|.
|
||||
own sub-hierarchy, a |module_request|.
|
||||
|
||||
=
|
||||
typedef struct compilation_unit {
|
||||
struct module_package *to_module;
|
||||
struct module_request *to_module;
|
||||
struct parse_node *head_node;
|
||||
struct inter_name *extension_id;
|
||||
struct inform_extension *extension;
|
||||
|
@ -23,7 +23,7 @@ void CompilationUnits::log(compilation_unit *cu) {
|
|||
else LOG("unit'%W'", Node::get_text(cu->head_node));
|
||||
}
|
||||
|
||||
module_package *CompilationUnits::to_module_package(compilation_unit *C) {
|
||||
module_request *CompilationUnits::to_module_package(compilation_unit *C) {
|
||||
if (C == NULL) internal_error("no unit");
|
||||
return C->to_module;
|
||||
}
|
||||
|
@ -54,7 +54,7 @@ void CompilationUnits::look_for_cu(parse_node *p) {
|
|||
|
||||
TEMPORARY_TEXT(pname)
|
||||
@<Compose a name for the unit package this will lead to@>;
|
||||
module_package *M = Packaging::get_unit(Emit::tree(), pname, I"_module");
|
||||
module_request *M = LargeScale::module_request(Emit::tree(), pname);
|
||||
inter_name *id_iname = NULL;
|
||||
@<Give M a category@>;
|
||||
if (ext) @<Give M metadata indicating the source extension@>;
|
||||
|
@ -71,22 +71,22 @@ void CompilationUnits::look_for_cu(parse_node *p) {
|
|||
inter_ti cat = 1;
|
||||
if (ext) cat = 2;
|
||||
if (Extensions::is_standard(ext)) cat = 3;
|
||||
Hierarchy::apply_metadata_from_number(M->the_package, EXT_CATEGORY_MD_HL, cat);
|
||||
Hierarchy::apply_metadata_from_number(M->where_found, EXT_CATEGORY_MD_HL, cat);
|
||||
|
||||
@ The extension credit consists of a single line, with name, version number
|
||||
and author; together with any "extra credit" asked for by the extension.
|
||||
|
||||
@<Give M metadata indicating the source extension@> =
|
||||
Hierarchy::apply_metadata(M->the_package, EXT_AUTHOR_MD_HL,
|
||||
Hierarchy::apply_metadata(M->where_found, EXT_AUTHOR_MD_HL,
|
||||
ext->as_copy->edition->work->raw_author_name);
|
||||
Hierarchy::apply_metadata(M->the_package, EXT_TITLE_MD_HL,
|
||||
Hierarchy::apply_metadata(M->where_found, EXT_TITLE_MD_HL,
|
||||
ext->as_copy->edition->work->raw_title);
|
||||
TEMPORARY_TEXT(V)
|
||||
semantic_version_number N = ext->as_copy->edition->version;
|
||||
WRITE_TO(V, "%v", &N);
|
||||
Hierarchy::apply_metadata(M->the_package, EXT_VERSION_MD_HL, V);
|
||||
Hierarchy::apply_metadata(M->where_found, EXT_VERSION_MD_HL, V);
|
||||
DISCARD_TEXT(V)
|
||||
id_iname = Hierarchy::make_iname_in(EXTENSION_ID_HL, M->the_package);
|
||||
id_iname = Hierarchy::make_iname_in(EXTENSION_ID_HL, M->where_found);
|
||||
Emit::numeric_constant(id_iname, 0);
|
||||
TEMPORARY_TEXT(C)
|
||||
WRITE_TO(C, "%S", ext->as_copy->edition->work->raw_title);
|
||||
|
@ -94,10 +94,10 @@ and author; together with any "extra credit" asked for by the extension.
|
|||
WRITE_TO(C, " by %S", ext->as_copy->edition->work->raw_author_name);
|
||||
if (Str::len(ext->extra_credit_as_lexed) > 0)
|
||||
WRITE_TO(C, " (%S)", ext->extra_credit_as_lexed);
|
||||
Hierarchy::apply_metadata(M->the_package, EXT_CREDIT_MD_HL, C);
|
||||
Hierarchy::apply_metadata(M->where_found, EXT_CREDIT_MD_HL, C);
|
||||
DISCARD_TEXT(C)
|
||||
if (Str::len(ext->extra_credit_as_lexed) > 0)
|
||||
Hierarchy::apply_metadata(M->the_package, EXT_EXTRA_CREDIT_MD_HL,
|
||||
Hierarchy::apply_metadata(M->where_found, EXT_EXTRA_CREDIT_MD_HL,
|
||||
ext->extra_credit_as_lexed);
|
||||
TEMPORARY_TEXT(the_author_name)
|
||||
WRITE_TO(the_author_name, "%S", ext->as_copy->edition->work->author_name);
|
||||
|
@ -108,8 +108,8 @@ and author; together with any "extra credit" asked for by the extension.
|
|||
((general_authorial_modesty == FALSE) || /* and (2a) author doesn't ask to be modest, or */
|
||||
(self_penned == FALSE))) /* (2b) didn't write this extension */
|
||||
modesty = 0;
|
||||
Hierarchy::apply_metadata_from_number(M->the_package, EXT_MODESTY_MD_HL, modesty);
|
||||
Hierarchy::apply_metadata_from_number(M->the_package, EXT_WORD_COUNT_MD_HL,
|
||||
Hierarchy::apply_metadata_from_number(M->where_found, EXT_MODESTY_MD_HL, modesty);
|
||||
Hierarchy::apply_metadata_from_number(M->where_found, EXT_WORD_COUNT_MD_HL,
|
||||
(inter_ti) TextFromFiles::total_word_count(ext->read_into_file));
|
||||
DISCARD_TEXT(the_author_name)
|
||||
|
||||
|
@ -139,7 +139,7 @@ void CompilationUnits::complete_metadata(void) {
|
|||
LOOP_OVER(C, compilation_unit) {
|
||||
inform_extension *ext = C->extension;
|
||||
if (ext) {
|
||||
package_request *pack = C->to_module->the_package;
|
||||
package_request *pack = C->to_module->where_found;
|
||||
Hierarchy::apply_metadata_from_number(pack, EXT_AT_MD_HL,
|
||||
(inter_ti) Wordings::first_wn(ext->body_text));
|
||||
parse_node *inc = Extensions::get_inclusion_sentence(ext);
|
||||
|
|
|
@ -11,9 +11,6 @@ on just one single tree.
|
|||
|
||||
Calling |Packaging::outside_all_packages| makes a minimum of package types,
|
||||
creates the |main| package, and so on, but leaves the tree basically still empty.
|
||||
We then give it three top-level modules to start off with: |veneer|, |generic|
|
||||
and |synoptic|. These are needed early because //Hierarchy// uses them as
|
||||
reference points. But as newly-created packages they are initially empty.
|
||||
|
||||
=
|
||||
inter_tree *main_emission_tree = NULL;
|
||||
|
@ -21,8 +18,6 @@ inter_tree *main_emission_tree = NULL;
|
|||
inter_tree *Emit::create_emission_tree(void) {
|
||||
main_emission_tree = InterTree::new();
|
||||
Packaging::outside_all_packages(main_emission_tree);
|
||||
Packaging::incarnate(Packaging::get_unit(main_emission_tree, I"generic", I"_module")->the_package);
|
||||
Packaging::incarnate(Packaging::get_unit(main_emission_tree, I"synoptic", I"_module")->the_package);
|
||||
return main_emission_tree;
|
||||
}
|
||||
inter_tree *Emit::tree(void) {
|
||||
|
@ -237,25 +232,10 @@ through. These are specific to the target of compilation, and can be ignored
|
|||
by all other targets. Here we generate only I6-target pragmas, which are commands
|
||||
in I6's "Inform Control Language".
|
||||
|
||||
This is a mini-language for controlling the I6 compiler, able to set
|
||||
command-line switches, memory settings and so on. I6 ordinarily discards lines
|
||||
beginning with exclamation marks as comments, but at the very top of the file,
|
||||
lines beginning |!%| are read as ICL commands: as soon as any line (including
|
||||
a blank line) doesn't have this signature, I6 exits ICL mode.
|
||||
|
||||
Pragmas occupy a fixed position in the global material at the root of the Inter
|
||||
tree, so there's no need to ask //Hierarchy// where these live.
|
||||
|
||||
=
|
||||
void Emit::pragma(text_stream *text) {
|
||||
inter_tree *I = Emit::tree();
|
||||
inter_ti ID = Inter::Warehouse::create_text(Emit::warehouse(),
|
||||
InterTree::root_package(I));
|
||||
Str::copy(Inter::Warehouse::get_text(Emit::warehouse(), ID), text);
|
||||
inter_symbol *target_name =
|
||||
InterSymbolsTables::symbol_from_name_creating(
|
||||
InterTree::global_scope(I), I"Inform6");
|
||||
Produce::guard(Inter::Pragma::new(Site::pragmas(I), target_name, ID, 0, NULL));
|
||||
Primitives::emit_pragma(I, I"Inform6", text);
|
||||
}
|
||||
|
||||
@h Constants.
|
||||
|
|
|
@ -58,7 +58,7 @@ as their package type.
|
|||
|
||||
For example, this:
|
||||
= (text as InC)
|
||||
submodule_identity *activities = Packaging::register_submodule(I"activities");
|
||||
submodule_identity *activities = LargeScale::register_submodule_identity(I"activities");
|
||||
H_BEGIN(HierarchyLocations::local_submodule(activities))
|
||||
H_BEGIN_AP(ACTIVITIES_HAP, I"activity", I"_activity")
|
||||
...
|
||||
|
@ -160,6 +160,7 @@ and //pipeline: The Standard Kits//, but by very similar methods.
|
|||
|
||||
=
|
||||
void Hierarchy::establish(void) {
|
||||
Packaging::incarnate(LargeScale::module_request(Emit::tree(), I"generic")->where_found);
|
||||
SynopticHierarchy::establish(Emit::tree());
|
||||
KitHierarchy::establish(Emit::tree());
|
||||
H_BEGIN_DECLARATIONS
|
||||
|
@ -238,7 +239,7 @@ void Hierarchy::establish(void) {
|
|||
@e DEBUGGING_ASPECT_USED_MD_HL
|
||||
|
||||
@<Establish basics@> =
|
||||
submodule_identity *basics = Packaging::register_submodule(I"basics");
|
||||
submodule_identity *basics = LargeScale::register_submodule_identity(I"basics");
|
||||
|
||||
H_BEGIN(HierarchyLocations::completion_submodule(I, basics))
|
||||
H_C_T(I7_VERSION_NUMBER_HL, I"I7_VERSION_NUMBER")
|
||||
|
@ -365,7 +366,7 @@ void Hierarchy::establish(void) {
|
|||
@e NAPE_AT_MD_HL
|
||||
|
||||
@<Establish actions@> =
|
||||
submodule_identity *actions = Packaging::register_submodule(I"actions");
|
||||
submodule_identity *actions = LargeScale::register_submodule_identity(I"actions");
|
||||
|
||||
H_BEGIN(HierarchyLocations::local_submodule(actions))
|
||||
H_BEGIN_AP(ACTIONS_HAP, I"action", I"_action")
|
||||
|
@ -416,7 +417,7 @@ void Hierarchy::establish(void) {
|
|||
H_END
|
||||
H_END
|
||||
|
||||
submodule_identity *naps = Packaging::register_submodule(I"named_action_patterns");
|
||||
submodule_identity *naps = LargeScale::register_submodule_identity(I"named_action_patterns");
|
||||
|
||||
H_BEGIN(HierarchyLocations::local_submodule(naps))
|
||||
H_BEGIN_AP(NAMED_ACTION_PATTERNS_HAP, I"named_action_pattern", I"_named_action_pattern")
|
||||
|
@ -457,7 +458,7 @@ void Hierarchy::establish(void) {
|
|||
@e ACTIVITY_VARC_FN_HL
|
||||
|
||||
@<Establish activities@> =
|
||||
submodule_identity *activities = Packaging::register_submodule(I"activities");
|
||||
submodule_identity *activities = LargeScale::register_submodule_identity(I"activities");
|
||||
|
||||
H_BEGIN(HierarchyLocations::local_submodule(activities))
|
||||
H_BEGIN_AP(ACTIVITIES_HAP, I"activity", I"_activity")
|
||||
|
@ -500,7 +501,7 @@ void Hierarchy::establish(void) {
|
|||
@e TASK_FN_HL
|
||||
|
||||
@<Establish adjectives@> =
|
||||
submodule_identity *adjectives = Packaging::register_submodule(I"adjectives");
|
||||
submodule_identity *adjectives = LargeScale::register_submodule_identity(I"adjectives");
|
||||
|
||||
H_BEGIN(HierarchyLocations::local_submodule(adjectives))
|
||||
H_BEGIN_AP(ADJECTIVES_HAP, I"adjective", I"_adjective")
|
||||
|
@ -542,7 +543,7 @@ void Hierarchy::establish(void) {
|
|||
@e YEAR_MD_HL
|
||||
|
||||
@<Establish bibliographic@> =
|
||||
submodule_identity *bibliographic = Packaging::register_submodule(I"bibliographic");
|
||||
submodule_identity *bibliographic = LargeScale::register_submodule_identity(I"bibliographic");
|
||||
|
||||
H_BEGIN(HierarchyLocations::completion_submodule(I, bibliographic))
|
||||
H_C_T(UUID_ARRAY_HL, I"UUID_ARRAY")
|
||||
|
@ -578,7 +579,7 @@ void Hierarchy::establish(void) {
|
|||
@e AHC_FN_HL
|
||||
|
||||
@<Establish chronology@> =
|
||||
submodule_identity *chronology = Packaging::register_submodule(I"chronology");
|
||||
submodule_identity *chronology = LargeScale::register_submodule_identity(I"chronology");
|
||||
|
||||
H_BEGIN(HierarchyLocations::local_submodule(chronology))
|
||||
H_BEGIN_AP(PAST_TENSE_CONDS_HAP, I"past_condition", I"_past_condition")
|
||||
|
@ -626,7 +627,7 @@ void Hierarchy::establish(void) {
|
|||
@e PREPOSITION_AT_MD_HL
|
||||
|
||||
@<Establish conjugations@> =
|
||||
submodule_identity *conjugations = Packaging::register_submodule(I"conjugations");
|
||||
submodule_identity *conjugations = LargeScale::register_submodule_identity(I"conjugations");
|
||||
|
||||
H_BEGIN(HierarchyLocations::generic_submodule(I, conjugations))
|
||||
H_C_T(CV_MEANING_HL, I"CV_MEANING")
|
||||
|
@ -674,7 +675,7 @@ void Hierarchy::establish(void) {
|
|||
@e EQUATION_AT_MD_HL
|
||||
|
||||
@<Establish equations@> =
|
||||
submodule_identity *equations = Packaging::register_submodule(I"equations");
|
||||
submodule_identity *equations = LargeScale::register_submodule_identity(I"equations");
|
||||
|
||||
H_BEGIN(HierarchyLocations::local_submodule(equations))
|
||||
H_BEGIN_AP(EQUATIONS_HAP, I"equation", I"_equation")
|
||||
|
@ -692,7 +693,7 @@ void Hierarchy::establish(void) {
|
|||
@e IFID_HL
|
||||
|
||||
@<Establish external files@> =
|
||||
submodule_identity *external_files = Packaging::register_submodule(I"external_files");
|
||||
submodule_identity *external_files = LargeScale::register_submodule_identity(I"external_files");
|
||||
|
||||
H_BEGIN(HierarchyLocations::local_submodule(external_files))
|
||||
H_BEGIN_AP(EXTERNAL_FILES_HAP, I"external_file", I"_external_file")
|
||||
|
@ -772,7 +773,7 @@ void Hierarchy::establish(void) {
|
|||
@e CG_TRUE_VERB_MD_HL
|
||||
|
||||
@<Establish grammar@> =
|
||||
submodule_identity *grammar = Packaging::register_submodule(I"grammar");
|
||||
submodule_identity *grammar = LargeScale::register_submodule_identity(I"grammar");
|
||||
|
||||
H_BEGIN(HierarchyLocations::generic_submodule(I, grammar))
|
||||
H_C_T(REPARSE_CODE_HL, I"REPARSE_CODE")
|
||||
|
@ -948,7 +949,7 @@ void Hierarchy::establish(void) {
|
|||
@e DIRECTION_HL
|
||||
|
||||
@<Establish instances@> =
|
||||
submodule_identity *instances = Packaging::register_submodule(I"instances");
|
||||
submodule_identity *instances = LargeScale::register_submodule_identity(I"instances");
|
||||
|
||||
H_BEGIN(HierarchyLocations::local_submodule(instances))
|
||||
H_BEGIN_AP(INSTANCES_HAP, I"instance", I"_instance")
|
||||
|
@ -1057,7 +1058,7 @@ void Hierarchy::establish(void) {
|
|||
@e INITIALSITUATION_HL
|
||||
|
||||
@<Establish int-fiction@> =
|
||||
submodule_identity *interactive_fiction = Packaging::register_submodule(I"interactive_fiction");
|
||||
submodule_identity *interactive_fiction = LargeScale::register_submodule_identity(I"interactive_fiction");
|
||||
|
||||
H_BEGIN(HierarchyLocations::generic_submodule(I, interactive_fiction))
|
||||
H_C_T(PLAYER_OBJECT_INIS_HL, I"PLAYER_OBJECT_INIS")
|
||||
|
@ -1176,7 +1177,7 @@ void Hierarchy::establish(void) {
|
|||
@e RESULT_BM_MD_HL
|
||||
|
||||
@<Establish kinds@> =
|
||||
submodule_identity *kinds = Packaging::register_submodule(I"kinds");
|
||||
submodule_identity *kinds = LargeScale::register_submodule_identity(I"kinds");
|
||||
|
||||
H_BEGIN(HierarchyLocations::generic_submodule(I, kinds))
|
||||
H_C_T(K_UNCHECKED_HL, I"K_unchecked")
|
||||
|
@ -1295,7 +1296,7 @@ void Hierarchy::establish(void) {
|
|||
@e LP_PARSE_FN_HL
|
||||
|
||||
@<Establish literal patterns@> =
|
||||
submodule_identity *literals = Packaging::register_submodule(I"literal_patterns");
|
||||
submodule_identity *literals = LargeScale::register_submodule_identity(I"literal_patterns");
|
||||
|
||||
H_BEGIN(HierarchyLocations::local_submodule(literals))
|
||||
H_BEGIN_AP(LITERAL_PATTERNS_HAP, I"literal_pattern", I"_literal_pattern")
|
||||
|
@ -1324,7 +1325,7 @@ void Hierarchy::establish(void) {
|
|||
@e MH_OFFSET_FROM_HL
|
||||
|
||||
@<Establish mapping hints@> =
|
||||
submodule_identity *hints = Packaging::register_submodule(I"mapping_hints");
|
||||
submodule_identity *hints = LargeScale::register_submodule_identity(I"mapping_hints");
|
||||
|
||||
H_BEGIN(HierarchyLocations::completion_submodule(I, hints))
|
||||
H_BEGIN_AP(MAPPING_HINTS_HAP, I"mapping_hint", I"_mapping_hint")
|
||||
|
@ -1364,7 +1365,7 @@ void Hierarchy::establish(void) {
|
|||
@e PHRASEBOOK_ENTRY_TEXT_MD_HL
|
||||
|
||||
@<Establish phrases@> =
|
||||
submodule_identity *phrases = Packaging::register_submodule(I"phrases");
|
||||
submodule_identity *phrases = LargeScale::register_submodule_identity(I"phrases");
|
||||
|
||||
H_BEGIN(HierarchyLocations::local_submodule(phrases))
|
||||
H_BEGIN_AP(PHRASES_HAP, I"phrase", I"_to_phrase")
|
||||
|
@ -1404,7 +1405,7 @@ void Hierarchy::establish(void) {
|
|||
@e PROPERTY_HL
|
||||
|
||||
@<Establish properties@> =
|
||||
submodule_identity *properties = Packaging::register_submodule(I"properties");
|
||||
submodule_identity *properties = LargeScale::register_submodule_identity(I"properties");
|
||||
|
||||
H_BEGIN(HierarchyLocations::local_submodule(properties))
|
||||
H_BEGIN_AP(PROPERTIES_HAP, I"property", I"_property")
|
||||
|
@ -1458,7 +1459,7 @@ void Hierarchy::establish(void) {
|
|||
@e RELATION_CREATOR_FN_HL
|
||||
|
||||
@<Establish relations@> =
|
||||
submodule_identity *relations = Packaging::register_submodule(I"relations");
|
||||
submodule_identity *relations = LargeScale::register_submodule_identity(I"relations");
|
||||
|
||||
H_BEGIN(HierarchyLocations::generic_submodule(I, relations))
|
||||
H_C_T(RELS_ASSERT_FALSE_HL, I"RELS_ASSERT_FALSE")
|
||||
|
@ -1554,7 +1555,7 @@ void Hierarchy::establish(void) {
|
|||
@e OUTCOME_IS_DEFAULT_MD_HL
|
||||
|
||||
@<Establish rulebooks@> =
|
||||
submodule_identity *rulebooks = Packaging::register_submodule(I"rulebooks");
|
||||
submodule_identity *rulebooks = LargeScale::register_submodule_identity(I"rulebooks");
|
||||
|
||||
H_BEGIN(HierarchyLocations::local_submodule(rulebooks))
|
||||
H_BEGIN_AP(OUTCOMES_HAP, I"rulebook_outcome", I"_outcome")
|
||||
|
@ -1639,7 +1640,7 @@ void Hierarchy::establish(void) {
|
|||
@e AC_AT_MD_HL
|
||||
|
||||
@<Establish rules@> =
|
||||
submodule_identity *rules = Packaging::register_submodule(I"rules");
|
||||
submodule_identity *rules = LargeScale::register_submodule_identity(I"rules");
|
||||
|
||||
H_BEGIN(HierarchyLocations::local_submodule(rules))
|
||||
H_BEGIN_AP(RULES_HAP, I"rule", I"_rule")
|
||||
|
@ -1706,7 +1707,7 @@ void Hierarchy::establish(void) {
|
|||
@e TABLE_COLUMN_KIND_MD_HL
|
||||
|
||||
@<Establish tables@> =
|
||||
submodule_identity *tables = Packaging::register_submodule(I"tables");
|
||||
submodule_identity *tables = LargeScale::register_submodule_identity(I"tables");
|
||||
|
||||
H_BEGIN(HierarchyLocations::local_submodule(tables))
|
||||
H_BEGIN_AP(TABLES_HAP, I"table", I"_table")
|
||||
|
@ -1735,7 +1736,7 @@ void Hierarchy::establish(void) {
|
|||
H_END
|
||||
H_END
|
||||
|
||||
submodule_identity *table_columns = Packaging::register_submodule(I"table_columns");
|
||||
submodule_identity *table_columns = LargeScale::register_submodule_identity(I"table_columns");
|
||||
H_BEGIN(HierarchyLocations::local_submodule(table_columns))
|
||||
H_BEGIN_AP(TABLE_COLUMNS_HAP, I"table_column", I"_table_column")
|
||||
H_C_U(TABLE_COLUMN_ID_HL, I"table_column_id")
|
||||
|
@ -1760,7 +1761,7 @@ void Hierarchy::establish(void) {
|
|||
@e USE_OPTION_ID_HL
|
||||
|
||||
@<Establish use options@> =
|
||||
submodule_identity *use_options = Packaging::register_submodule(I"use_options");
|
||||
submodule_identity *use_options = LargeScale::register_submodule_identity(I"use_options");
|
||||
|
||||
H_BEGIN(HierarchyLocations::local_submodule(use_options))
|
||||
H_BEGIN_AP(USE_OPTIONS_HAP, I"use_option", I"_use_option")
|
||||
|
@ -1793,7 +1794,7 @@ void Hierarchy::establish(void) {
|
|||
@e INITIAL_MAX_SCORE_HL
|
||||
|
||||
@<Establish variables@> =
|
||||
submodule_identity *variables = Packaging::register_submodule(I"variables");
|
||||
submodule_identity *variables = LargeScale::register_submodule_identity(I"variables");
|
||||
|
||||
H_BEGIN(HierarchyLocations::local_submodule(variables))
|
||||
H_BEGIN_AP(VARIABLES_HAP, I"variable", I"_variable")
|
||||
|
@ -1923,7 +1924,7 @@ void Hierarchy::establish(void) {
|
|||
|
||||
@h Architectural symbols.
|
||||
These are built-in constants (and one built-in variable, |self|) which come
|
||||
from the platform we are compiling to. See //building: Building Site//.
|
||||
from the platform we are compiling to. See //building: Large-Scale Structure//.
|
||||
|
||||
There are other architectural symbols besides these, but these are the only
|
||||
ones which the //inform7//-compiled code needs to refer to.
|
||||
|
|
|
@ -7,7 +7,7 @@ void GenericModule::compile(void) {
|
|||
Emit::rudimentary_kinds();
|
||||
target_vm *VM = Task::vm();
|
||||
if (VM == NULL) internal_error("target VM not set yet");
|
||||
Site::make_architectural_definitions(Emit::tree(),
|
||||
LargeScale::make_architectural_definitions(Emit::tree(),
|
||||
TargetVMs::get_architecture(VM), unchecked_interk);
|
||||
RTVerbs::compile_generic_constants();
|
||||
RTCommandGrammars::compile_generic_constants();
|
||||
|
|
|
@ -14,7 +14,7 @@ We need to itemise the structures we'll want to allocate:
|
|||
@e package_request_CLASS
|
||||
@e hierarchy_location_CLASS
|
||||
@e hierarchy_attachment_point_CLASS
|
||||
@e module_package_CLASS
|
||||
@e module_request_CLASS
|
||||
@e submodule_identity_CLASS
|
||||
@e submodule_request_CLASS
|
||||
@e inter_schema_CLASS
|
||||
|
@ -25,7 +25,7 @@ We need to itemise the structures we'll want to allocate:
|
|||
DECLARE_CLASS(hierarchy_location)
|
||||
DECLARE_CLASS(hierarchy_attachment_point)
|
||||
DECLARE_CLASS(package_request)
|
||||
DECLARE_CLASS(module_package)
|
||||
DECLARE_CLASS(module_request)
|
||||
DECLARE_CLASS(submodule_identity)
|
||||
DECLARE_CLASS(submodule_request)
|
||||
DECLARE_CLASS(inter_schema)
|
||||
|
@ -67,6 +67,27 @@ void BuildingModule::start(void) {
|
|||
Writers::register_logger('1', InterSchemas::log);
|
||||
Writers::register_logger('X', Packaging::log);
|
||||
|
||||
@h Initialising.
|
||||
The following is a component part of the |inter_tree| structure, and is comprised
|
||||
of four subcomponents of its own. That makes a lot of working data, but none of
|
||||
it changes the meaning of an Inter tree: it exists as workspace needed by the
|
||||
functions in this module for constructing trees.
|
||||
|
||||
=
|
||||
typedef struct building_site {
|
||||
struct site_structure_data strdata;
|
||||
struct site_packaging_data spdata;
|
||||
struct site_production_data sprdata;
|
||||
struct site_primitives_data spridata;
|
||||
} building_site;
|
||||
|
||||
void BuildingModule::clear_data(inter_tree *I) {
|
||||
LargeScale::clear_data(I);
|
||||
Produce::clear_prdata(I);
|
||||
Packaging::clear_pdata(I);
|
||||
Primitives::clear_pdata(I);
|
||||
}
|
||||
|
||||
@h The end.
|
||||
|
||||
=
|
||||
|
|
|
@ -1,260 +0,0 @@
|
|||
[Site::] Building Site.
|
||||
|
||||
|
||||
@
|
||||
|
||||
=
|
||||
typedef struct building_site {
|
||||
struct inter_package *main_package;
|
||||
struct package_request *main_request;
|
||||
|
||||
struct inter_package *connectors_package;
|
||||
struct package_request *connectors_request;
|
||||
|
||||
struct inter_package *architecture_package;
|
||||
struct package_request *architecture_request;
|
||||
struct inter_bookmark architecture_bookmark;
|
||||
|
||||
struct inter_bookmark pragmas_bookmark;
|
||||
struct inter_bookmark package_types_bookmark;
|
||||
|
||||
struct inter_symbol *primitives_by_BIP[MAX_BIPS];
|
||||
|
||||
struct site_packaging_data spdata;
|
||||
struct site_production_data sprdata;
|
||||
} building_site;
|
||||
|
||||
@ =
|
||||
void Site::clear(inter_tree *I) {
|
||||
building_site *B = &(I->site);
|
||||
|
||||
B->main_package = NULL;
|
||||
B->main_request = NULL;
|
||||
|
||||
B->connectors_package = NULL;
|
||||
B->connectors_request = NULL;
|
||||
|
||||
B->architecture_package = NULL;
|
||||
B->architecture_request = NULL;
|
||||
B->architecture_bookmark = Inter::Bookmarks::at_start_of_this_repository(I);
|
||||
|
||||
B->pragmas_bookmark = Inter::Bookmarks::at_start_of_this_repository(I);
|
||||
B->package_types_bookmark = Inter::Bookmarks::at_start_of_this_repository(I);
|
||||
|
||||
for (int i=0; i<MAX_BIPS; i++) B->primitives_by_BIP[i] = NULL;
|
||||
|
||||
Produce::clear_prdata(I);
|
||||
Packaging::clear_pdata(I);
|
||||
}
|
||||
|
||||
inter_bookmark *Site::pragmas(inter_tree *I) {
|
||||
return &(I->site.pragmas_bookmark);
|
||||
}
|
||||
void Site::set_pragmas(inter_tree *I, inter_bookmark IBM) {
|
||||
I->site.pragmas_bookmark = IBM;
|
||||
}
|
||||
inter_bookmark *Site::package_types(inter_tree *I) {
|
||||
return &(I->site.package_types_bookmark);
|
||||
}
|
||||
void Site::set_package_types(inter_tree *I, inter_bookmark IBM) {
|
||||
I->site.package_types_bookmark = IBM;
|
||||
}
|
||||
|
||||
inter_symbol *Site::get_opcode(inter_tree *I, inter_ti bip) {
|
||||
return I->site.primitives_by_BIP[bip];
|
||||
}
|
||||
|
||||
void Site::set_opcode(inter_tree *I, inter_ti bip, inter_symbol *S) {
|
||||
I->site.primitives_by_BIP[bip] = S;
|
||||
}
|
||||
|
||||
void Site::note_package_name(inter_tree *I, inter_package *pack, text_stream *N) {
|
||||
if (Str::eq(N, I"main")) I->site.main_package = pack;
|
||||
if (Str::eq(N, I"connectors")) I->site.connectors_package = pack;
|
||||
if (Str::eq(N, I"veneer")) I->site.architecture_package = pack;
|
||||
}
|
||||
|
||||
inter_package *Site::main_package(inter_tree *I) {
|
||||
if (I) {
|
||||
if (I->site.main_package == NULL)
|
||||
Packaging::incarnate(Site::main_request(I));
|
||||
return I->site.main_package;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
inter_package *Site::main_package_if_it_exists(inter_tree *I) {
|
||||
if (I) return I->site.main_package;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
package_request *Site::main_request(inter_tree *I) {
|
||||
if (I->site.main_request == NULL)
|
||||
I->site.main_request =
|
||||
Packaging::request(I,
|
||||
InterNames::explicitly_named(I"main", NULL),
|
||||
PackageTypes::get(I, I"_plain"));
|
||||
return I->site.main_request;
|
||||
}
|
||||
|
||||
inter_package *Site::connectors_package_if_it_exists(inter_tree *I) {
|
||||
if (I) return I->site.connectors_package;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
inter_package *Site::ensure_connectors_package(inter_tree *I) {
|
||||
if (I) {
|
||||
if (I->site.connectors_package == NULL) {
|
||||
Packaging::incarnate(Site::connectors_request(I));
|
||||
Inter::Packages::make_linklike(I->site.connectors_package);
|
||||
}
|
||||
return I->site.connectors_package;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
package_request *Site::connectors_request(inter_tree *I) {
|
||||
if (I->site.connectors_request == NULL) {
|
||||
module_package *T = Packaging::get_unit(I, I"connectors", I"_linkage");
|
||||
I->site.connectors_request = T->the_package;
|
||||
}
|
||||
return I->site.connectors_request;
|
||||
}
|
||||
|
||||
package_request *Site::architecture_request(inter_tree *I) {
|
||||
if (I->site.architecture_request == NULL) {
|
||||
module_package *T = Packaging::get_unit(I, I"veneer", I"_linkage");
|
||||
I->site.architecture_request = T->the_package;
|
||||
packaging_state save = Packaging::enter(I->site.architecture_request);
|
||||
I->site.architecture_bookmark = Packaging::bubble(I);
|
||||
Packaging::exit(I, save);
|
||||
}
|
||||
return I->site.architecture_request;
|
||||
}
|
||||
|
||||
inter_package *Site::architecture_package_if_it_exists(inter_tree *I) {
|
||||
if (I) return I->site.architecture_package;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
inter_package *Site::architecture_package(inter_tree *I) {
|
||||
if (I) {
|
||||
if (I->site.architecture_package == NULL) {
|
||||
Packaging::incarnate(Site::architecture_request(I));
|
||||
}
|
||||
return I->site.architecture_package;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
inter_bookmark *Site::architecture_bookmark(inter_tree *I) {
|
||||
Site::architecture_request(I);
|
||||
return &(I->site.architecture_bookmark);
|
||||
}
|
||||
|
||||
dictionary *create_these_architectural_symbols_on_demand = NULL;
|
||||
|
||||
inter_symbol *Site::find_architectural_symbol(inter_tree *I, text_stream *N,
|
||||
inter_symbol *uks) {
|
||||
inter_package *arch = Site::architecture_package(I);
|
||||
inter_symbols_table *tab = Inter::Packages::scope(arch);
|
||||
inter_symbol *S = InterSymbolsTables::symbol_from_name(tab, N);
|
||||
if (S == NULL) {
|
||||
if (create_these_architectural_symbols_on_demand == NULL) {
|
||||
create_these_architectural_symbols_on_demand = Dictionaries::new(16, TRUE);
|
||||
Dictionaries::create(create_these_architectural_symbols_on_demand, I"#dictionary_table");
|
||||
Dictionaries::create(create_these_architectural_symbols_on_demand, I"#actions_table");
|
||||
Dictionaries::create(create_these_architectural_symbols_on_demand, I"#grammar_table");
|
||||
Dictionaries::create(create_these_architectural_symbols_on_demand, I"self");
|
||||
Dictionaries::create(create_these_architectural_symbols_on_demand, I"Routine");
|
||||
Dictionaries::create(create_these_architectural_symbols_on_demand, I"String");
|
||||
Dictionaries::create(create_these_architectural_symbols_on_demand, I"Class");
|
||||
Dictionaries::create(create_these_architectural_symbols_on_demand, I"Object");
|
||||
}
|
||||
if (Dictionaries::find(create_these_architectural_symbols_on_demand, N)) {
|
||||
S = Site::arch_constant(I, N, uks, 0);
|
||||
Inter::Symbols::annotate_i(S, VENEER_IANN, 1);
|
||||
}
|
||||
}
|
||||
return S;
|
||||
}
|
||||
|
||||
inter_symbol *Site::arch_constant(inter_tree *I, text_stream *N,
|
||||
inter_symbol *uks, inter_ti val) {
|
||||
inter_package *arch = Site::architecture_package(I);
|
||||
inter_symbols_table *tab = Inter::Packages::scope(arch);
|
||||
inter_symbol *S = InterSymbolsTables::symbol_from_name_creating(tab, N);
|
||||
Inter::Symbols::annotate_i(S, ARCHITECTURAL_IANN, 1);
|
||||
inter_bookmark *IBM = Site::architecture_bookmark(I);
|
||||
Produce::guard(Inter::Constant::new_numerical(IBM,
|
||||
InterSymbolsTables::id_from_symbol(I, arch, S),
|
||||
InterSymbolsTables::id_from_symbol(I, arch, uks),
|
||||
LITERAL_IVAL, val,
|
||||
(inter_ti) Inter::Bookmarks::baseline(IBM) + 1, NULL));
|
||||
return S;
|
||||
}
|
||||
|
||||
inter_symbol *Site::arch_constant_hex(inter_tree *I, text_stream *N,
|
||||
inter_symbol *uks, inter_ti val) {
|
||||
inter_symbol *S = Site::arch_constant(I, N, uks, val);
|
||||
Inter::Symbols::annotate_i(S, HEX_IANN, 1);
|
||||
return S;
|
||||
}
|
||||
|
||||
inter_symbol *Site::arch_constant_signed(inter_tree *I, text_stream *N,
|
||||
inter_symbol *uks, int val) {
|
||||
inter_symbol *S = Site::arch_constant(I, N, uks, (inter_ti) val);
|
||||
Inter::Symbols::annotate_i(S, SIGNED_IANN, 1);
|
||||
return S;
|
||||
}
|
||||
|
||||
@ These constants mostly have obvious meanings, but a few notes:
|
||||
|
||||
(1) |NULL|, in our runtime, is -1, and not 0 as it would be in C. This is
|
||||
emitted as "unchecked" to avoid the value being rejected as being too large,
|
||||
as it would be if it were viewed as a signed rather than unsigned integer.
|
||||
|
||||
(2) |IMPROBABLE_VALUE| is one which is unlikely even if possible to be a
|
||||
genuine I7 value. The efficiency of runtime code handling tables depends on
|
||||
how well chosen this is: it would ran badly if we chose 1, for instance.
|
||||
|
||||
@ Lastly, we define the constants |WORDSIZE|, |DEBUG| (if applicable) and
|
||||
either |TARGET_ZCODE| or |TARGET_GLULX|, as appropriate. These really now mean
|
||||
"target 16-bit" or "target 32-bit", and their names are a hangover from when
|
||||
Inform 7 could only work with Inform 6. The reason we need to define these
|
||||
is so that if a kit is parsed from source and added to this tree, we will then
|
||||
be able to resolve conditional compilation matter placed inside, e.g.,
|
||||
|#ifdef TARGET_ZCODE;| ... |#endif;| directives.
|
||||
|
||||
For now, at least, these live in the package |main/veneer|.
|
||||
|
||||
=
|
||||
void Site::make_architectural_definitions(inter_tree *I,
|
||||
inter_architecture *current_architecture, inter_symbol *uks) {
|
||||
if (current_architecture == NULL) internal_error("no architecture set");
|
||||
int Z = Architectures::is_16_bit(current_architecture);
|
||||
int D = Architectures::debug_enabled(current_architecture);
|
||||
|
||||
if (Z) {
|
||||
Site::arch_constant(I, I"WORDSIZE", uks, 2);
|
||||
Site::arch_constant_hex(I, I"NULL", uks, 0xffff);
|
||||
Site::arch_constant_hex(I, I"WORD_HIGHBIT", uks, 0x8000);
|
||||
Site::arch_constant_hex(I, I"WORD_NEXTTOHIGHBIT", uks, 0x4000);
|
||||
Site::arch_constant_hex(I, I"IMPROBABLE_VALUE", uks, 0x7fe3);
|
||||
Site::arch_constant(I, I"MAX_POSITIVE_NUMBER", uks, 32767);
|
||||
Site::arch_constant_signed(I, I"MIN_NEGATIVE_NUMBER", uks, -32768);
|
||||
Site::arch_constant(I, I"TARGET_ZCODE", uks, 1);
|
||||
} else {
|
||||
Site::arch_constant(I, I"WORDSIZE", uks, 4);
|
||||
Site::arch_constant_hex(I, I"NULL", uks, 0xffffffff);
|
||||
Site::arch_constant_hex(I, I"WORD_HIGHBIT", uks, 0x80000000);
|
||||
Site::arch_constant_hex(I, I"WORD_NEXTTOHIGHBIT", uks, 0x40000000);
|
||||
Site::arch_constant_hex(I, I"IMPROBABLE_VALUE", uks, 0xdeadce11);
|
||||
Site::arch_constant(I, I"MAX_POSITIVE_NUMBER", uks, 2147483647);
|
||||
Site::arch_constant_signed(I, I"MIN_NEGATIVE_NUMBER", uks, -2147483648);
|
||||
Site::arch_constant(I, I"INDIV_PROP_START", uks, 0);
|
||||
Site::arch_constant(I, I"TARGET_GLULX", uks, 1);
|
||||
}
|
||||
|
||||
if (D) Site::arch_constant(I, I"DEBUG", uks, 1);
|
||||
}
|
|
@ -42,20 +42,20 @@ location_requirement HierarchyLocations::local_submodule(submodule_identity *sid
|
|||
|
||||
location_requirement HierarchyLocations::completion_submodule(inter_tree *I, submodule_identity *sid) {
|
||||
location_requirement req = HierarchyLocations::blank();
|
||||
req.this_exact_package = Packaging::completion_submodule(I, sid);
|
||||
req.this_exact_package = LargeScale::completion_submodule(I, sid);
|
||||
req.must_be_main_source_text = TRUE;
|
||||
return req;
|
||||
}
|
||||
|
||||
location_requirement HierarchyLocations::generic_submodule(inter_tree *I, submodule_identity *sid) {
|
||||
location_requirement req = HierarchyLocations::blank();
|
||||
req.this_exact_package = Packaging::generic_submodule(I, sid);
|
||||
req.this_exact_package = LargeScale::generic_submodule(I, sid);
|
||||
return req;
|
||||
}
|
||||
|
||||
location_requirement HierarchyLocations::synoptic_submodule(inter_tree *I, submodule_identity *sid) {
|
||||
location_requirement req = HierarchyLocations::blank();
|
||||
req.this_exact_package = Packaging::synoptic_submodule(I, sid);
|
||||
req.this_exact_package = LargeScale::synoptic_submodule(I, sid);
|
||||
return req;
|
||||
}
|
||||
|
||||
|
@ -72,7 +72,7 @@ location_requirement HierarchyLocations::any_enclosure(void) {
|
|||
}
|
||||
|
||||
location_requirement HierarchyLocations::the_veneer(inter_tree *I) {
|
||||
return HierarchyLocations::this_package(Site::architecture_request(I));
|
||||
return HierarchyLocations::this_package(LargeScale::architecture_request(I));
|
||||
}
|
||||
|
||||
location_requirement HierarchyLocations::this_package(package_request *P) {
|
||||
|
@ -355,7 +355,8 @@ package_request *HierarchyLocations::attach_new_package(inter_tree *I, compilati
|
|||
if (hap->requirements.must_be_main_source_text) {
|
||||
R = hap->requirements.this_exact_package;
|
||||
} else if (hap->requirements.any_submodule_package_of_this_identity) {
|
||||
R = Packaging::request_submodule(I, C, hap->requirements.any_submodule_package_of_this_identity);
|
||||
if (C == NULL) R = LargeScale::generic_submodule(I, hap->requirements.any_submodule_package_of_this_identity);
|
||||
else R = LargeScale::request_submodule_of(I, CompilationUnits::to_module_package(C), hap->requirements.any_submodule_package_of_this_identity);
|
||||
} else if (hap->requirements.this_exact_package) {
|
||||
R = hap->requirements.this_exact_package;
|
||||
} else if (hap->requirements.this_exact_package_not_yet_created >= 0) {
|
||||
|
|
|
@ -149,7 +149,7 @@ inter_name *InterNames::explicitly_named(text_stream *name, package_request *R)
|
|||
}
|
||||
|
||||
inter_name *InterNames::explicitly_named_in_template(inter_tree *I, text_stream *name) {
|
||||
inter_name *iname = InterNames::explicitly_named(name, Site::connectors_request(I));
|
||||
inter_name *iname = InterNames::explicitly_named(name, LargeScale::connectors_request(I));
|
||||
inter_symbol *plug = Wiring::find_plug(I, name);
|
||||
if (plug == NULL) plug = Wiring::plug(I, name);
|
||||
iname->symbol = plug;
|
||||
|
|
|
@ -2,6 +2,39 @@
|
|||
|
||||
@
|
||||
|
||||
=
|
||||
typedef struct site_primitives_data {
|
||||
struct inter_symbol *primitives_by_BIP[MAX_BIPS];
|
||||
} site_primitives_data;
|
||||
|
||||
void Primitives::clear_pdata(inter_tree *I) {
|
||||
building_site *B = &(I->site);
|
||||
for (int i=0; i<MAX_BIPS; i++) B->spridata.primitives_by_BIP[i] = NULL;
|
||||
}
|
||||
|
||||
inter_symbol *Primitives::from_BIP(inter_tree *I, inter_ti bip) {
|
||||
return I->site.spridata.primitives_by_BIP[bip];
|
||||
}
|
||||
|
||||
void Primitives::index(inter_tree *I, inter_ti bip, inter_symbol *S) {
|
||||
I->site.spridata.primitives_by_BIP[bip] = S;
|
||||
}
|
||||
|
||||
@
|
||||
|
||||
=
|
||||
typedef struct inform7_primitive {
|
||||
int BIP;
|
||||
char *name;
|
||||
char *signature;
|
||||
} inform7_primitive;
|
||||
|
||||
inform7_primitive standard_inform7_primitives[] = {
|
||||
{ 0, "!example", "val -> void" },
|
||||
};
|
||||
|
||||
@
|
||||
|
||||
=
|
||||
void Primitives::emit(inter_tree *I, inter_bookmark *IBM) {
|
||||
Primitives::emit_one(I, IBM, I"!font", I"val -> void");
|
||||
|
@ -103,7 +136,7 @@ void Primitives::emit(inter_tree *I, inter_bookmark *IBM) {
|
|||
inter_symbol *Primitives::get(inter_tree *I, inter_ti bip) {
|
||||
if (I == NULL) internal_error("no tree");
|
||||
if ((bip < 1) || (bip >= MAX_BIPS)) internal_error("bip out of range");
|
||||
return Site::get_opcode(I, bip);
|
||||
return Primitives::from_BIP(I, bip);
|
||||
}
|
||||
|
||||
void Primitives::emit_one(inter_tree *I, inter_bookmark *IBM, text_stream *prim, text_stream *category) {
|
||||
|
@ -115,7 +148,7 @@ void Primitives::emit_one(inter_tree *I, inter_bookmark *IBM, text_stream *prim,
|
|||
inter_ti bip = Primitives::to_bip(I, S);
|
||||
if (bip == 0) internal_error("missing bip");
|
||||
if (bip >= MAX_BIPS) internal_error("unsafely high bip");
|
||||
Site::set_opcode(I, bip, S);
|
||||
Primitives::index(I, bip, S);
|
||||
Produce::guard(E);
|
||||
DISCARD_TEXT(prim_command)
|
||||
}
|
||||
|
@ -375,7 +408,7 @@ void Primitives::scan_tree(inter_tree *I) {
|
|||
void Primitives::scan_visitor(inter_tree *I, inter_tree_node *P, void *v_state) {
|
||||
inter_symbol *prim_name = InterSymbolsTables::symbol_from_frame_data(P, DEFN_PRIM_IFLD);
|
||||
inter_ti bip = Primitives::to_bip(I, prim_name);
|
||||
if (bip) Site::set_opcode(I, bip, prim_name);
|
||||
if (bip) Primitives::index(I, bip, prim_name);
|
||||
}
|
||||
|
||||
inter_ti Primitives::to_bip(inter_tree *I, inter_symbol *symb) {
|
||||
|
@ -484,3 +517,11 @@ inter_ti Primitives::to_bip(inter_tree *I, inter_symbol *symb) {
|
|||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
void Primitives::emit_pragma(inter_tree *I, text_stream *target, text_stream *content) {
|
||||
inter_ti ID = Inter::Warehouse::create_text(InterTree::warehouse(I), InterTree::root_package(I));
|
||||
Str::copy(Inter::Warehouse::get_text(InterTree::warehouse(I), ID), content);
|
||||
inter_symbol *target_name =
|
||||
InterSymbolsTables::symbol_from_name_creating(InterTree::global_scope(I), target);
|
||||
Produce::guard(Inter::Pragma::new(Packaging::pragmas(I), target_name, ID, 0, NULL));
|
||||
}
|
||||
|
|
373
inter/building-module/Chapter 1/Large-Scale Structure.w
Normal file
373
inter/building-module/Chapter 1/Large-Scale Structure.w
Normal file
|
@ -0,0 +1,373 @@
|
|||
[LargeScale::] Large-Scale Structure.
|
||||
|
||||
To manage the main, connectors and architecture packages of an Inter tree,
|
||||
together with its major building blocks: modules and their submodules.
|
||||
|
||||
@h Structure data.
|
||||
See //What This Module Does// for a description of the conventions set
|
||||
by the functions below. Our task in this section is basically to make
|
||||
|/main|, |/main/connectors| and |/main/architecture|, together with
|
||||
modules such as |/main/BasicInformKit|, and their submodules, such as
|
||||
|/main/BasicInformKit/activities|.
|
||||
|
||||
=
|
||||
typedef struct site_structure_data {
|
||||
struct inter_package *main_package;
|
||||
struct package_request *main_request;
|
||||
|
||||
struct inter_package *connectors_package;
|
||||
struct package_request *connectors_request;
|
||||
|
||||
struct inter_package *architecture_package;
|
||||
struct package_request *architecture_request;
|
||||
struct inter_bookmark architecture_bookmark;
|
||||
|
||||
struct dictionary *modules_indexed_by_name; /* of |module_request| */
|
||||
} site_structure_data;
|
||||
|
||||
@ =
|
||||
void LargeScale::clear_data(inter_tree *I) {
|
||||
building_site *B = &(I->site);
|
||||
|
||||
B->strdata.main_package = NULL;
|
||||
B->strdata.main_request = NULL;
|
||||
|
||||
B->strdata.connectors_package = NULL;
|
||||
B->strdata.connectors_request = NULL;
|
||||
|
||||
B->strdata.architecture_package = NULL;
|
||||
B->strdata.architecture_request = NULL;
|
||||
B->strdata.architecture_bookmark = Inter::Bookmarks::at_start_of_this_repository(I);
|
||||
|
||||
B->strdata.modules_indexed_by_name = Dictionaries::new(32, FALSE);
|
||||
}
|
||||
|
||||
@ The three special packages |main|, |connectors| and |architectural| will be
|
||||
created as needed. But we do not set the |main_package|, |connectors_package|
|
||||
or |architecture_package| fields when they are created: instead we set these
|
||||
fields whenever we detect that a package now exists with the relevant names.
|
||||
This is so that the fields are correctly set even when an Inter tree is being
|
||||
redd in from an external file, rather than only when created anew in memory.
|
||||
|
||||
It follows that |main|, |connectors| and |architectural| are reserved package
|
||||
names, which cannot be used anywhere else in the tree.
|
||||
|
||||
=
|
||||
void LargeScale::note_package_name(inter_tree *I, inter_package *pack, text_stream *N) {
|
||||
if (Str::eq(N, I"main")) I->site.strdata.main_package = pack;
|
||||
if (Str::eq(N, I"connectors")) I->site.strdata.connectors_package = pack;
|
||||
if (Str::eq(N, I"architectural")) I->site.strdata.architecture_package = pack;
|
||||
}
|
||||
|
||||
@h main.
|
||||
Here are functions to read |main|, possibly creating if necessary:
|
||||
|
||||
=
|
||||
inter_package *LargeScale::main_package_if_it_exists(inter_tree *I) {
|
||||
if (I) return I->site.strdata.main_package;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
inter_package *LargeScale::main_package(inter_tree *I) {
|
||||
if (I) {
|
||||
if (I->site.strdata.main_package == NULL)
|
||||
Packaging::incarnate(LargeScale::main_request(I));
|
||||
return I->site.strdata.main_package;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
package_request *LargeScale::main_request(inter_tree *I) {
|
||||
if (I->site.strdata.main_request == NULL)
|
||||
I->site.strdata.main_request =
|
||||
Packaging::request(I,
|
||||
InterNames::explicitly_named(I"main", NULL),
|
||||
PackageTypes::get(I, I"_plain"));
|
||||
return I->site.strdata.main_request;
|
||||
}
|
||||
|
||||
@h connectors.
|
||||
|
||||
=
|
||||
inter_package *LargeScale::connectors_package_if_it_exists(inter_tree *I) {
|
||||
if (I) return I->site.strdata.connectors_package;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
inter_package *LargeScale::ensure_connectors_package(inter_tree *I) {
|
||||
if (I) {
|
||||
if (I->site.strdata.connectors_package == NULL) {
|
||||
Packaging::incarnate(LargeScale::connectors_request(I));
|
||||
// Inter::Packages::make_linklike(I->site.strdata.connectors_package);
|
||||
}
|
||||
return I->site.strdata.connectors_package;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
package_request *LargeScale::connectors_request(inter_tree *I) {
|
||||
if (I->site.strdata.connectors_request == NULL)
|
||||
I->site.strdata.connectors_request =
|
||||
Packaging::request(I,
|
||||
InterNames::explicitly_named(I"connectors", LargeScale::main_request(I)),
|
||||
PackageTypes::get(I, I"_linkage"));
|
||||
return I->site.strdata.connectors_request;
|
||||
}
|
||||
|
||||
@h architectural.
|
||||
This is the only one of the big three which we put any material into in this
|
||||
section of code; so we need a bookmark for where that material goes.
|
||||
|
||||
=
|
||||
inter_package *LargeScale::architecture_package_if_it_exists(inter_tree *I) {
|
||||
if (I) return I->site.strdata.architecture_package;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
inter_package *LargeScale::architecture_package(inter_tree *I) {
|
||||
if (I) {
|
||||
if (I->site.strdata.architecture_package == NULL)
|
||||
Packaging::incarnate(LargeScale::architecture_request(I));
|
||||
return I->site.strdata.architecture_package;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
package_request *LargeScale::architecture_request(inter_tree *I) {
|
||||
if (I->site.strdata.architecture_request == NULL) {
|
||||
I->site.strdata.architecture_request =
|
||||
Packaging::request(I,
|
||||
InterNames::explicitly_named(I"architectural", LargeScale::main_request(I)),
|
||||
PackageTypes::get(I, I"_linkage"));
|
||||
packaging_state save = Packaging::enter(I->site.strdata.architecture_request);
|
||||
I->site.strdata.architecture_bookmark = Packaging::bubble(I);
|
||||
Packaging::exit(I, save);
|
||||
}
|
||||
return I->site.strdata.architecture_request;
|
||||
}
|
||||
|
||||
@ There are two sorts of constant in |architectural|. One set is created only
|
||||
on demand: if you look for |#grammar_table| you will find it, but if you never
|
||||
look then it will never exist. These are used only for a handful of values
|
||||
which are redefined by the //final// code-generator anyway: here we define
|
||||
them as 0 -- meaninglessly, but they have to be set to something. They are
|
||||
not, in fact, all constants -- |self| is a variable at runtime -- but again,
|
||||
it's for the code-generator to define them as it would like, on a platform
|
||||
by platform basis.
|
||||
|
||||
Such symbols are the only ones given the |VENEER_IANN| annotation; the term
|
||||
veneer alludes to Inform 6's practice of creating a few built-in definitions
|
||||
which form the "veneer" of the story file it is generating.
|
||||
|
||||
For speed, the names of the permitted veneer symbols are stored in a dictionary.
|
||||
(This may not in fact be worth the overhead any longer: at one time there were
|
||||
many more of these.)
|
||||
|
||||
=
|
||||
dictionary *create_these_architectural_symbols_on_demand = NULL;
|
||||
|
||||
inter_symbol *LargeScale::find_architectural_symbol(inter_tree *I, text_stream *N,
|
||||
inter_symbol *uks) {
|
||||
inter_package *arch = LargeScale::architecture_package(I);
|
||||
inter_symbols_table *tab = Inter::Packages::scope(arch);
|
||||
inter_symbol *S = InterSymbolsTables::symbol_from_name(tab, N);
|
||||
if (S == NULL) {
|
||||
if (create_these_architectural_symbols_on_demand == NULL) {
|
||||
create_these_architectural_symbols_on_demand = Dictionaries::new(16, TRUE);
|
||||
Dictionaries::create(create_these_architectural_symbols_on_demand, I"#dictionary_table");
|
||||
Dictionaries::create(create_these_architectural_symbols_on_demand, I"#actions_table");
|
||||
Dictionaries::create(create_these_architectural_symbols_on_demand, I"#grammar_table");
|
||||
Dictionaries::create(create_these_architectural_symbols_on_demand, I"self");
|
||||
Dictionaries::create(create_these_architectural_symbols_on_demand, I"Routine");
|
||||
Dictionaries::create(create_these_architectural_symbols_on_demand, I"String");
|
||||
Dictionaries::create(create_these_architectural_symbols_on_demand, I"Class");
|
||||
Dictionaries::create(create_these_architectural_symbols_on_demand, I"Object");
|
||||
}
|
||||
if (Dictionaries::find(create_these_architectural_symbols_on_demand, N)) {
|
||||
S = LargeScale::arch_constant(I, N, uks, 0);
|
||||
Inter::Symbols::annotate_i(S, VENEER_IANN, 1);
|
||||
}
|
||||
}
|
||||
return S;
|
||||
}
|
||||
|
||||
@ The other architectural constants are the ones depending on the architecture
|
||||
being compiled to. These always exist, and their values are known at compile time.
|
||||
|
||||
They mostly have obvious meanings, but a few notes:
|
||||
|
||||
(1) |WORDSIZE| is the number of bytes in a word.
|
||||
|
||||
(2) |NULL|, in our runtime, is -1, and not 0 as it would be in C.
|
||||
|
||||
(3) |IMPROBABLE_VALUE| is one which is unlikely even if possible to be a
|
||||
genuine I7 value. The efficiency of runtime code handling tables depends on
|
||||
how well chosen this is: it would ran badly if we chose 1, for instance.
|
||||
|
||||
(4) Exactly one of the symbols |TARGET_ZCODE| or |TARGET_GLULX| is defined,
|
||||
and given the notional value 1, though its only purpose is to enable conditional
|
||||
compilation to work (see //pipeline: Resolve Conditional Compilation Stage//);
|
||||
so its importance is whether or not it is defined, not what value it has. Note
|
||||
that these names are now a little anachronistic, and they should perhaps be
|
||||
renamed |TARGET_16BIT| and |TARGET_32BIT| respectively. For example, C code
|
||||
can happily be generated from an Inter tree containing |TARGET_GLULX|, even
|
||||
though that code will never produce a program running on the Glulx VM.
|
||||
|
||||
(5) And similarly for |DEBUG|, which again exists to enable conditional
|
||||
compilation when building kits.
|
||||
|
||||
=
|
||||
void LargeScale::make_architectural_definitions(inter_tree *I,
|
||||
inter_architecture *current_architecture, inter_symbol *uks) {
|
||||
if (current_architecture == NULL) internal_error("no architecture set");
|
||||
|
||||
if (Architectures::is_16_bit(current_architecture)) {
|
||||
LargeScale::arch_constant(I, I"WORDSIZE", uks, 2);
|
||||
LargeScale::arch_constant_hex(I, I"NULL", uks, 0xffff);
|
||||
LargeScale::arch_constant_hex(I, I"WORD_HIGHBIT", uks, 0x8000);
|
||||
LargeScale::arch_constant_hex(I, I"WORD_NEXTTOHIGHBIT", uks, 0x4000);
|
||||
LargeScale::arch_constant_hex(I, I"IMPROBABLE_VALUE", uks, 0x7fe3);
|
||||
LargeScale::arch_constant(I, I"MAX_POSITIVE_NUMBER", uks, 32767);
|
||||
LargeScale::arch_constant_signed(I, I"MIN_NEGATIVE_NUMBER", uks, -32768);
|
||||
LargeScale::arch_constant(I, I"TARGET_ZCODE", uks, 1);
|
||||
} else {
|
||||
LargeScale::arch_constant(I, I"WORDSIZE", uks, 4);
|
||||
LargeScale::arch_constant_hex(I, I"NULL", uks, 0xffffffff);
|
||||
LargeScale::arch_constant_hex(I, I"WORD_HIGHBIT", uks, 0x80000000);
|
||||
LargeScale::arch_constant_hex(I, I"WORD_NEXTTOHIGHBIT", uks, 0x40000000);
|
||||
LargeScale::arch_constant_hex(I, I"IMPROBABLE_VALUE", uks, 0xdeadce11);
|
||||
LargeScale::arch_constant(I, I"MAX_POSITIVE_NUMBER", uks, 2147483647);
|
||||
LargeScale::arch_constant_signed(I, I"MIN_NEGATIVE_NUMBER", uks, -2147483648);
|
||||
LargeScale::arch_constant(I, I"TARGET_GLULX", uks, 1);
|
||||
}
|
||||
|
||||
if (Architectures::debug_enabled(current_architecture))
|
||||
LargeScale::arch_constant(I, I"DEBUG", uks, 1);
|
||||
}
|
||||
|
||||
@ The functions above use the following tiny API to create architectural constants:
|
||||
|
||||
=
|
||||
inter_symbol *LargeScale::arch_constant(inter_tree *I, text_stream *N,
|
||||
inter_symbol *uks, inter_ti val) {
|
||||
inter_package *arch = LargeScale::architecture_package(I);
|
||||
inter_symbols_table *tab = Inter::Packages::scope(arch);
|
||||
inter_symbol *S = InterSymbolsTables::symbol_from_name_creating(tab, N);
|
||||
Inter::Symbols::annotate_i(S, ARCHITECTURAL_IANN, 1);
|
||||
inter_bookmark *IBM = &(I->site.strdata.architecture_bookmark);
|
||||
Produce::guard(Inter::Constant::new_numerical(IBM,
|
||||
InterSymbolsTables::id_from_symbol(I, arch, S),
|
||||
InterSymbolsTables::id_from_symbol(I, arch, uks),
|
||||
LITERAL_IVAL, val,
|
||||
(inter_ti) Inter::Bookmarks::baseline(IBM) + 1, NULL));
|
||||
return S;
|
||||
}
|
||||
|
||||
inter_symbol *LargeScale::arch_constant_hex(inter_tree *I, text_stream *N,
|
||||
inter_symbol *uks, inter_ti val) {
|
||||
inter_symbol *S = LargeScale::arch_constant(I, N, uks, val);
|
||||
Inter::Symbols::annotate_i(S, HEX_IANN, 1);
|
||||
return S;
|
||||
}
|
||||
|
||||
inter_symbol *LargeScale::arch_constant_signed(inter_tree *I, text_stream *N,
|
||||
inter_symbol *uks, int val) {
|
||||
inter_symbol *S = LargeScale::arch_constant(I, N, uks, (inter_ti) val);
|
||||
Inter::Symbols::annotate_i(S, SIGNED_IANN, 1);
|
||||
return S;
|
||||
}
|
||||
|
||||
@h Modules.
|
||||
Modules are identified by name, and each one produces an instance of the
|
||||
following.
|
||||
|
||||
=
|
||||
typedef struct module_request {
|
||||
struct package_request *where_found;
|
||||
struct linked_list *submodules; /* of |submodule_request| */
|
||||
CLASS_DEFINITION
|
||||
} module_request;
|
||||
|
||||
@ The tree's module dictionary is used to ensure that repeated calls with the
|
||||
same module name return the same |module_request|.
|
||||
|
||||
=
|
||||
module_request *LargeScale::module_request(inter_tree *I, text_stream *name) {
|
||||
dictionary *D = I->site.strdata.modules_indexed_by_name;
|
||||
if (Dictionaries::find(D, name))
|
||||
return (module_request *) Dictionaries::read_value(D, name);
|
||||
module_request *new_module = CREATE(module_request);
|
||||
new_module->where_found =
|
||||
Packaging::request(I,
|
||||
InterNames::explicitly_named(name, LargeScale::main_request(I)),
|
||||
PackageTypes::get(I, I"_module"));
|
||||
new_module->submodules = NEW_LINKED_LIST(submodule_request);
|
||||
Dictionaries::create(D, name);
|
||||
Dictionaries::write_value(D, name, (void *) new_module);
|
||||
return new_module;
|
||||
}
|
||||
|
||||
@h Submodules.
|
||||
The idea here is that each module could define, say, some variables, placing
|
||||
them in a submodule for that purpose. As a result, there will be a "variables only"
|
||||
submodule found in several modules. Such flavours of submodule are preset --
|
||||
we allow only a few of these: see //runtime: Hierarchy// for the set used by
|
||||
//inform7// -- and they must be specified in advance of use, with the following.
|
||||
|
||||
For the moment, at least, |submodule_identity| is really just a textual name
|
||||
like |variables| but in a fancy wrapper.
|
||||
|
||||
=
|
||||
typedef struct submodule_identity {
|
||||
struct text_stream *submodule_name;
|
||||
CLASS_DEFINITION
|
||||
} submodule_identity;
|
||||
|
||||
submodule_identity *LargeScale::register_submodule_identity(text_stream *name) {
|
||||
submodule_identity *sid;
|
||||
LOOP_OVER(sid, submodule_identity)
|
||||
if (Str::eq(sid->submodule_name, name))
|
||||
return sid;
|
||||
sid = CREATE(submodule_identity);
|
||||
sid->submodule_name = Str::duplicate(name);
|
||||
return sid;
|
||||
}
|
||||
|
||||
@ Armed with such an identity, the following can be called to return the relevant
|
||||
submodule of a given module, creating it if it does not already exist.
|
||||
|
||||
=
|
||||
package_request *LargeScale::generic_submodule(inter_tree *I, submodule_identity *sid) {
|
||||
return LargeScale::request_submodule_of(I, LargeScale::module_request(I, I"generic"), sid);
|
||||
}
|
||||
|
||||
package_request *LargeScale::synoptic_submodule(inter_tree *I, submodule_identity *sid) {
|
||||
return LargeScale::request_submodule_of(I, LargeScale::module_request(I, I"synoptic"), sid);
|
||||
}
|
||||
|
||||
package_request *LargeScale::completion_submodule(inter_tree *I, submodule_identity *sid) {
|
||||
return LargeScale::request_submodule_of(I, LargeScale::module_request(I, I"completion"), sid);
|
||||
}
|
||||
|
||||
@ Those in turn all make use of this back-end function:
|
||||
|
||||
=
|
||||
typedef struct submodule_request {
|
||||
struct package_request *where_found;
|
||||
struct submodule_identity *which_submodule;
|
||||
CLASS_DEFINITION
|
||||
} submodule_request;
|
||||
|
||||
package_request *LargeScale::request_submodule_of(inter_tree *I, module_request *M,
|
||||
submodule_identity *sid) {
|
||||
submodule_request *sr;
|
||||
LOOP_OVER_LINKED_LIST(sr, submodule_request, M->submodules)
|
||||
if (sid == sr->which_submodule)
|
||||
return sr->where_found;
|
||||
inter_name *iname = InterNames::explicitly_named(sid->submodule_name, M->where_found);
|
||||
sr = CREATE(submodule_request);
|
||||
sr->which_submodule = sid;
|
||||
sr->where_found = Packaging::request(I, iname, PackageTypes::get(I, I"_submodule"));
|
||||
ADD_TO_LINKED_LIST(sr, submodule_request, M->submodules);
|
||||
return sr->where_found;
|
||||
}
|
|
@ -22,7 +22,7 @@ inter_symbol *PackageTypes::get(inter_tree *I, text_stream *name) {
|
|||
@<Decide if this package type is to be enclosing@>;
|
||||
ptype = Produce::new_symbol(scope, name);
|
||||
Produce::guard(Inter::PackageType::new_packagetype(
|
||||
Site::package_types(I), ptype,
|
||||
Packaging::package_types(I), ptype,
|
||||
0, NULL));
|
||||
if (enclose) Produce::annotate_symbol_i(ptype, ENCLOSING_IANN, 1);
|
||||
}
|
||||
|
|
|
@ -23,7 +23,8 @@ typedef struct site_packaging_data {
|
|||
#define NO_DEFINED_HAP_VALUES 1
|
||||
#endif
|
||||
struct hierarchy_attachment_point *haps_indexed_by_id[NO_DEFINED_HAP_VALUES];
|
||||
struct dictionary *modules_indexed_by_name;
|
||||
struct inter_bookmark pragmas_bookmark;
|
||||
struct inter_bookmark package_types_bookmark;
|
||||
} site_packaging_data;
|
||||
|
||||
void Packaging::clear_pdata(inter_tree *I) {
|
||||
|
@ -33,8 +34,23 @@ void Packaging::clear_pdata(inter_tree *I) {
|
|||
for (int i=0; i<NO_DEFINED_HL_VALUES; i++) B->spdata.hls_indexed_by_id[i] = NULL;
|
||||
B->spdata.hls_indexed_by_name = Dictionaries::new(512, FALSE);
|
||||
for (int i=0; i<NO_DEFINED_HAP_VALUES; i++) B->spdata.haps_indexed_by_id[i] = NULL;
|
||||
B->spdata.modules_indexed_by_name = NULL;
|
||||
Packaging::initialise_state(I);
|
||||
|
||||
B->spdata.pragmas_bookmark = Inter::Bookmarks::at_start_of_this_repository(I);
|
||||
B->spdata.package_types_bookmark = Inter::Bookmarks::at_start_of_this_repository(I);
|
||||
}
|
||||
|
||||
inter_bookmark *Packaging::pragmas(inter_tree *I) {
|
||||
return &(I->site.spdata.pragmas_bookmark);
|
||||
}
|
||||
void Packaging::set_pragmas(inter_tree *I, inter_bookmark IBM) {
|
||||
I->site.spdata.pragmas_bookmark = IBM;
|
||||
}
|
||||
inter_bookmark *Packaging::package_types(inter_tree *I) {
|
||||
return &(I->site.spdata.package_types_bookmark);
|
||||
}
|
||||
void Packaging::set_package_types(inter_tree *I, inter_bookmark IBM) {
|
||||
I->site.spdata.package_types_bookmark = IBM;
|
||||
}
|
||||
|
||||
@h Package requests.
|
||||
|
@ -223,10 +239,10 @@ void Packaging::outside_all_packages(inter_tree *I) {
|
|||
Produce::version(I, 1);
|
||||
|
||||
Produce::comment(I, I"Package types:");
|
||||
Site::set_package_types(I, Packaging::bubble(I));
|
||||
Packaging::set_package_types(I, Packaging::bubble(I));
|
||||
|
||||
Produce::comment(I, I"Pragmas:");
|
||||
Site::set_pragmas(I, Packaging::bubble(I));
|
||||
Packaging::set_pragmas(I, Packaging::bubble(I));
|
||||
|
||||
Produce::comment(I, I"Primitives:");
|
||||
Primitives::emit(I, Packaging::at(I));
|
||||
|
@ -235,7 +251,7 @@ void Packaging::outside_all_packages(inter_tree *I) {
|
|||
PackageTypes::get(I, I"_code"); // And this the second
|
||||
PackageTypes::get(I, I"_linkage"); // And this the third
|
||||
|
||||
Packaging::enter(Site::main_request(I)); // Which we never exit
|
||||
Packaging::enter(LargeScale::main_request(I)); // Which we never exit
|
||||
}
|
||||
|
||||
@h Entry and exit.
|
||||
|
@ -309,111 +325,6 @@ inter_package *Packaging::incarnate(package_request *R) {
|
|||
return R->actual_package;
|
||||
}
|
||||
|
||||
@h Modules.
|
||||
With the code above, then, we can get the Inter hierarchy of packages set up
|
||||
as far as creating |main|. After that the Hierarchy code takes over, but it
|
||||
calls the routines below to assist. It will want to create a number of "modules"
|
||||
and, within them, "submodules".
|
||||
|
||||
Modules are identified by name: |generic|, |Standard_Rules|, and so on. The
|
||||
following creates modules on demand.
|
||||
|
||||
=
|
||||
typedef struct module_package {
|
||||
struct package_request *the_package;
|
||||
struct linked_list *submodules; /* of |submodule_request| */
|
||||
CLASS_DEFINITION
|
||||
} module_package;
|
||||
|
||||
module_package *Packaging::get_unit(inter_tree *I, text_stream *name, text_stream *unit_type) {
|
||||
if (I->site.spdata.modules_indexed_by_name == NULL) {
|
||||
I->site.spdata.modules_indexed_by_name = Dictionaries::new(512, FALSE);
|
||||
}
|
||||
dictionary *D = I->site.spdata.modules_indexed_by_name;
|
||||
if (Dictionaries::find(D, name))
|
||||
return (module_package *) Dictionaries::read_value(D, name);
|
||||
module_package *new_module = CREATE(module_package);
|
||||
new_module->the_package =
|
||||
Packaging::request(I,
|
||||
InterNames::explicitly_named(name, Site::main_request(I)),
|
||||
PackageTypes::get(I, unit_type));
|
||||
new_module->submodules = NEW_LINKED_LIST(submodule_request);
|
||||
Dictionaries::create(D, name);
|
||||
Dictionaries::write_value(D, name, (void *) new_module);
|
||||
return new_module;
|
||||
}
|
||||
|
||||
@h Submodules.
|
||||
Submodules have names such as |properties|, and the idea is that the same submodule
|
||||
(or rather, submodules with the same name) can be found in multiple modules. The
|
||||
different sorts of submodule are identified by |submodule_identity| pointers, though
|
||||
as it turns out, this is presently just a wrapper for a name.
|
||||
|
||||
=
|
||||
typedef struct submodule_identity {
|
||||
struct text_stream *submodule_name;
|
||||
CLASS_DEFINITION
|
||||
} submodule_identity;
|
||||
|
||||
submodule_identity *Packaging::register_submodule(text_stream *name) {
|
||||
submodule_identity *sid;
|
||||
LOOP_OVER(sid, submodule_identity)
|
||||
if (Str::eq(sid->submodule_name, name))
|
||||
return sid;
|
||||
sid = CREATE(submodule_identity);
|
||||
sid->submodule_name = Str::duplicate(name);
|
||||
return sid;
|
||||
}
|
||||
|
||||
@ Once the Hierarchy code has registered a submodule, it can request an existing
|
||||
module to have this submodule. It should call one of the following four functions:
|
||||
|
||||
=
|
||||
#ifdef CORE_MODULE
|
||||
package_request *Packaging::request_submodule(inter_tree *I, compilation_unit *C, submodule_identity *sid) {
|
||||
if (C == NULL) return Packaging::generic_submodule(I, sid);
|
||||
return Packaging::new_submodule_inner(I, CompilationUnits::to_module_package(C), sid);
|
||||
}
|
||||
|
||||
package_request *Packaging::local_submodule(inter_tree *I, submodule_identity *sid) {
|
||||
return Packaging::request_submodule(I, CompilationUnits::find(current_sentence), sid);
|
||||
}
|
||||
#endif
|
||||
|
||||
package_request *Packaging::generic_submodule(inter_tree *I, submodule_identity *sid) {
|
||||
return Packaging::new_submodule_inner(I, Packaging::get_unit(I, I"generic", I"_module"), sid);
|
||||
}
|
||||
|
||||
package_request *Packaging::synoptic_submodule(inter_tree *I, submodule_identity *sid) {
|
||||
return Packaging::new_submodule_inner(I, Packaging::get_unit(I, I"synoptic", I"_module"), sid);
|
||||
}
|
||||
|
||||
package_request *Packaging::completion_submodule(inter_tree *I, submodule_identity *sid) {
|
||||
return Packaging::new_submodule_inner(I, Packaging::get_unit(I, I"completion", I"_module"), sid);
|
||||
}
|
||||
|
||||
@ Those in turn all make use of this back-end function:
|
||||
|
||||
=
|
||||
typedef struct submodule_request {
|
||||
struct submodule_identity *which_submodule;
|
||||
struct package_request *where_found;
|
||||
CLASS_DEFINITION
|
||||
} submodule_request;
|
||||
|
||||
package_request *Packaging::new_submodule_inner(inter_tree *I, module_package *M, submodule_identity *sid) {
|
||||
submodule_request *sr;
|
||||
LOOP_OVER_LINKED_LIST(sr, submodule_request, M->submodules)
|
||||
if (sid == sr->which_submodule)
|
||||
return sr->where_found;
|
||||
inter_name *iname = InterNames::explicitly_named(sid->submodule_name, M->the_package);
|
||||
sr = CREATE(submodule_request);
|
||||
sr->which_submodule = sid;
|
||||
sr->where_found = Packaging::request(I, iname, PackageTypes::get(I, I"_submodule"));
|
||||
ADD_TO_LINKED_LIST(sr, submodule_request, M->submodules);
|
||||
return sr->where_found;
|
||||
}
|
||||
|
||||
@h Functions.
|
||||
Inter code has a standard layout for functions: an outer, enclosing, package of type
|
||||
|_function|, inside which is an iname |call| for the actual code to call. All such
|
||||
|
|
|
@ -84,7 +84,7 @@ int EmitInterSchemas::process_conditionals(inter_tree *I, inter_schema_node *isn
|
|||
else if (Str::eq(symbol_to_check, I"STRICT_MODE")) { def = TRUE; }
|
||||
else {
|
||||
inter_symbol *symb = EmitInterSchemas::find_identifier_text(I, symbol_to_check,
|
||||
Inter::Packages::scope(Site::architecture_package(I)),
|
||||
Inter::Packages::scope(LargeScale::architecture_package(I)),
|
||||
second_call);
|
||||
symb = Wiring::cable_end(symb);
|
||||
LOGIF(SCHEMA_COMPILATION, "Symb is $3\n", symb);
|
||||
|
@ -466,7 +466,7 @@ void EmitInterSchemas::emit_inner(inter_tree *I, inter_schema_node *isn, value_h
|
|||
Produce::val_iname(I, K_value, RTKindDeclarations::iname(K_object));
|
||||
#endif
|
||||
#ifndef CORE_MODULE
|
||||
Produce::val_symbol(I, K_value, Site::find_architectural_symbol(I, I"Object", Produce::kind_to_symbol(NULL)));
|
||||
Produce::val_symbol(I, K_value, LargeScale::find_architectural_symbol(I, I"Object", Produce::kind_to_symbol(NULL)));
|
||||
#endif
|
||||
} else internal_error("objectloop without visible variable");
|
||||
}
|
||||
|
@ -603,7 +603,7 @@ inter_symbol *EmitInterSchemas::find_identifier_text(inter_tree *I, text_stream
|
|||
inter_symbol *S = Produce::seek_symbol(second_call, name);
|
||||
if (S) return S;
|
||||
}
|
||||
inter_symbol *S = Site::find_architectural_symbol(I, name, Produce::kind_to_symbol(NULL));
|
||||
inter_symbol *S = LargeScale::find_architectural_symbol(I, name, Produce::kind_to_symbol(NULL));
|
||||
if (S) return S;
|
||||
S = Produce::seek_symbol(Produce::connectors_scope(I), name);
|
||||
if (S) return S;
|
||||
|
|
|
@ -48,11 +48,11 @@ inter_symbol *Produce::define_symbol(inter_name *iname) {
|
|||
}
|
||||
|
||||
inter_symbols_table *Produce::main_scope(inter_tree *I) {
|
||||
return Inter::Packages::scope(Site::main_package_if_it_exists(I));
|
||||
return Inter::Packages::scope(LargeScale::main_package_if_it_exists(I));
|
||||
}
|
||||
|
||||
inter_symbols_table *Produce::connectors_scope(inter_tree *I) {
|
||||
return Inter::Packages::scope(Site::connectors_package_if_it_exists(I));
|
||||
return Inter::Packages::scope(LargeScale::connectors_package_if_it_exists(I));
|
||||
}
|
||||
|
||||
inter_symbol *Produce::opcode(inter_tree *I, inter_ti bip) {
|
||||
|
@ -191,7 +191,7 @@ inter_package *Produce::block(inter_tree *I, packaging_state *save, inter_name *
|
|||
if (save) {
|
||||
*save = Packaging::enter_home_of(iname);
|
||||
package_request *R = InterNames::location(iname);
|
||||
if ((R == NULL) || (R == Site::main_request(I))) {
|
||||
if ((R == NULL) || (R == LargeScale::main_request(I))) {
|
||||
LOG("Routine outside of package: %n\n", iname);
|
||||
internal_error("routine outside of package");
|
||||
}
|
||||
|
|
|
@ -9,7 +9,7 @@ Preliminaries
|
|||
|
||||
Chapter 1: Architecture
|
||||
Building Module
|
||||
Building Site
|
||||
Large-Scale Structure
|
||||
Inter Primitives
|
||||
Hierarchy Locations
|
||||
Translation
|
||||
|
|
|
@ -16,11 +16,94 @@ uses a module of utility functions called //foundation//.
|
|||
For more, see //foundation: A Brief Guide to Foundation//.
|
||||
|
||||
@h Services for builders.
|
||||
This module is essentially middleware. It does none of the proactive business
|
||||
of compiling, but instead acts as a bridge to the low-level functions in
|
||||
the //bytecode// module, allowing them to be used with much greater ease.
|
||||
This module is essentially middleware. It acts as a bridge to the low-level
|
||||
functions in the //bytecode// module, allowing them to be used with much
|
||||
greater ease and consistency.
|
||||
|
||||
In particular, Inter code is fundamentally a mass of |inter_package|s, which
|
||||
In particular, the functions here enforce a number of conventions about how an
|
||||
Inter tree is laid out. Indiscriminate use of //bytecode// functions would allow
|
||||
other layouts to be made, but we want to be systematic.
|
||||
|
||||
This module needs plenty of working data, and stashes that data inside the
|
||||
|inter_tree| structure it is working on: in a compoment of that structure called
|
||||
a //building_site//. Whereas the main data ih an |inter_tree| affects the meaning
|
||||
of the tree, i.e., makes a difference as to what program the tree represents,
|
||||
the contents of the //building_site// component are only used to make it, and
|
||||
are ignored by the //final// code-generator.
|
||||
|
||||
@h Structural conventions.
|
||||
An inter tree is fundamentally a set of resources stored in a nested set of
|
||||
|inter_package| boxes.
|
||||
|
||||
(*) The following resources are stored at the root level (i.e., not inside of
|
||||
any package) and nowhere else:
|
||||
(-*) Package type declarations. Inter can support a nearly arbitrary set of
|
||||
different package types, and the //bytecode// functions make no assumptions.
|
||||
In //Package Types//, however, we //present a single standard set of package
|
||||
types used by Inform code.
|
||||
(-*) Primitive declarations. See //Inter Primitives//. Again, Inter can in
|
||||
principle support a variety of different "instruction sets", but this module
|
||||
presents a single standardised instruction set.
|
||||
(-*) Compiler pragmas. These are marginal tweaks on a platform-by-platform basis
|
||||
and use of them is minimal, but see //Primitives::emit_pragma//.
|
||||
|
||||
(*) Everything else is inside a single top-level package called |main|, which
|
||||
has package type |_plain|.
|
||||
|
||||
(*) |main| contains only packages, and of only two types:
|
||||
(-*) "Modules", which are packages of type |_module|. These occur nowhere else
|
||||
in the tree.
|
||||
(-*) "Linkages", which are packages of type |_linkage|. These occur nowhere else
|
||||
in the tree.
|
||||
|
||||
(*) //inform7// compiles the material in each compilation unit to a module
|
||||
named for that unit. That is:
|
||||
(-*) The module |source_text| contains material from the main source text.
|
||||
(-*) Each extension included produces a module, named, for example,
|
||||
|locksmith_by_emily_short|.
|
||||
|
||||
(*) Each kit produces a module, named after it. Any Inter tree produced by
|
||||
//inform7// will always contain the module |BasicInformKit|, for example.
|
||||
|
||||
(*) //inform7// generates an additional module called |generic|, holding
|
||||
generic definitions -- material which is the same regardless of what is
|
||||
being compiled.
|
||||
|
||||
(*) //inform7// generates an additional module called |completion|, holding
|
||||
resources put together from across different compilation units.[1]
|
||||
|
||||
(*) //inter// generates an additional module called |synoptic|, made during
|
||||
linking, which contains resources collated from or cross-referencing
|
||||
everything else.
|
||||
|
||||
(*) Modules contain only further packages, called "submodules" and with the
|
||||
package type |_submodule|. The Inform tools use a standard set of names for
|
||||
such submodules: for example, in any module the resources defining its
|
||||
global variables are in a submodule called |variables|. (If it defines no
|
||||
variables, the submodule will not be present.)
|
||||
|
||||
(*) There are just two different linkages -- packages with special contents
|
||||
and which the linking steps of //pipeline// treat differently from modules.
|
||||
(-*) |architecture| has no subpackages, and contains only constant definitions,
|
||||
drawn from a fixed and limited set. These definitions depend on, and indeed
|
||||
express, the target architecture: for example, |WORDSIZE|, the number of
|
||||
bytes per word, is defined here. Symbols here behave uniquely in linking:
|
||||
when two trees are linked together, they will each have an |architecture|
|
||||
package, and symbols in them will simply be identified with each other.
|
||||
Thus the |WORDSIZE| defined in the main Inform 7 tree will be considered
|
||||
the same symbol as the |WORDSIZE| defined in the tree for BasicInformKit.
|
||||
(-*) |connectors| has no subpackages and no resources other than symbols.
|
||||
It holds plugs and sockets enabling the Inter tree to be linked with other
|
||||
Inter trees; during linking, these are removed when their purposes has been
|
||||
served, so that after a successful link, |connectors| will always be empty.
|
||||
|
||||
See //Large-Scale Structure// for the code which builds all of the above
|
||||
packages (though not their contents).
|
||||
|
||||
[1] Ideally |completion| would not exist, and everything in it would be made
|
||||
as part of |synoptic| during linking, but at present this is too difficult.
|
||||
|
||||
@ In particular, Inter code is fundamentally a mass of |inter_package|s, which
|
||||
cross-reference each other using |inter_symbol|s. But of course it cannot all
|
||||
be made simultaneously. What we need is a more flexible way to describe things
|
||||
in the Inter tree: both those which have already been made, and also those
|
||||
|
|
|
@ -98,7 +98,7 @@ void Wiring::convert_to_socket(inter_symbol *S, inter_symbol *to) {
|
|||
|
||||
int unique_plug_number = 1;
|
||||
inter_symbol *Wiring::plug(inter_tree *I, text_stream *wanted) {
|
||||
inter_package *connectors = Site::ensure_connectors_package(I);
|
||||
inter_package *connectors = LargeScale::ensure_connectors_package(I);
|
||||
TEMPORARY_TEXT(PN)
|
||||
WRITE_TO(PN, "plug_%05d", unique_plug_number++);
|
||||
inter_symbol *plug = InterSymbolsTables::create_with_unique_name(
|
||||
|
@ -110,7 +110,7 @@ inter_symbol *Wiring::plug(inter_tree *I, text_stream *wanted) {
|
|||
}
|
||||
|
||||
inter_symbol *Wiring::socket(inter_tree *I, text_stream *socket_name, inter_symbol *to) {
|
||||
inter_package *connectors = Site::ensure_connectors_package(I);
|
||||
inter_package *connectors = LargeScale::ensure_connectors_package(I);
|
||||
inter_symbol *socket = InterSymbolsTables::create_with_unique_name(
|
||||
Inter::Packages::scope(connectors), socket_name);
|
||||
Wiring::convert_to_socket(socket, to);
|
||||
|
@ -119,20 +119,20 @@ inter_symbol *Wiring::socket(inter_tree *I, text_stream *socket_name, inter_symb
|
|||
}
|
||||
|
||||
inter_symbol *Wiring::find_socket(inter_tree *I, text_stream *identifier) {
|
||||
inter_package *connectors = Site::connectors_package_if_it_exists(I);
|
||||
inter_package *connectors = LargeScale::connectors_package_if_it_exists(I);
|
||||
if (connectors) {
|
||||
inter_symbol *S = InterSymbolsTables::symbol_from_name_not_equating(
|
||||
Inter::Packages::scope(Site::connectors_package_if_it_exists(I)), identifier);
|
||||
Inter::Packages::scope(LargeScale::connectors_package_if_it_exists(I)), identifier);
|
||||
if ((S) && (Inter::Symbols::get_scope(S) == SOCKET_ISYMS)) return S;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
inter_symbol *Wiring::find_plug(inter_tree *I, text_stream *identifier) {
|
||||
inter_package *connectors = Site::connectors_package_if_it_exists(I);
|
||||
inter_package *connectors = LargeScale::connectors_package_if_it_exists(I);
|
||||
if (connectors) {
|
||||
inter_symbol *S = InterSymbolsTables::symbol_from_name_not_equating(
|
||||
Inter::Packages::scope(Site::connectors_package_if_it_exists(I)), identifier);
|
||||
Inter::Packages::scope(LargeScale::connectors_package_if_it_exists(I)), identifier);
|
||||
if ((S) && (Inter::Symbols::get_scope(S) == PLUG_ISYMS)) return S;
|
||||
}
|
||||
return NULL;
|
||||
|
@ -184,7 +184,7 @@ the actual definition, and all will be well.
|
|||
|
||||
=
|
||||
void Wiring::connect_plugs_to_sockets(inter_tree *I) {
|
||||
inter_package *connectors = Site::connectors_package_if_it_exists(I);
|
||||
inter_package *connectors = LargeScale::connectors_package_if_it_exists(I);
|
||||
if (connectors) {
|
||||
inter_symbols_table *ST = Inter::Packages::scope(connectors);
|
||||
for (int i=0; i<ST->size; i++) {
|
||||
|
|
|
@ -32,7 +32,7 @@ inter_tree *InterTree::new(void) {
|
|||
Inter::Packages::set_scope(I->root_package, globals);
|
||||
I->root_node->package = I->root_package;
|
||||
Inter::Warehouse::attribute_resource(I->housed, N, I->root_package);
|
||||
Site::clear(I);
|
||||
BuildingModule::clear_data(I);
|
||||
I->history_bits = 0;
|
||||
return I;
|
||||
}
|
||||
|
@ -277,7 +277,7 @@ void InterTree::traverse_root_only(inter_tree *from, void (*visitor)(inter_tree
|
|||
}
|
||||
|
||||
void InterTree::traverse(inter_tree *from, void (*visitor)(inter_tree *, inter_tree_node *, void *), void *state, inter_package *mp, int filter) {
|
||||
if (mp == NULL) mp = Site::main_package_if_it_exists(from);
|
||||
if (mp == NULL) mp = LargeScale::main_package_if_it_exists(from);
|
||||
if (mp) {
|
||||
inter_tree_node *D = Inter::Packages::definition(mp);
|
||||
if ((filter == 0) ||
|
||||
|
|
|
@ -115,7 +115,7 @@ void Inter::Packages::set_name(inter_package *Q, inter_package *P, text_stream *
|
|||
if (N == NULL) internal_error("null package name");
|
||||
P->package_name_t = Str::duplicate(N);
|
||||
if (Str::len(N) > 0) {
|
||||
Site::note_package_name(Inter::Packages::tree(P), P, N);
|
||||
LargeScale::note_package_name(Inter::Packages::tree(P), P, N);
|
||||
Inter::Packages::add_subpackage_name(Q, P);
|
||||
}
|
||||
}
|
||||
|
@ -165,11 +165,11 @@ inter_symbol *Inter::Packages::search_exhaustively(inter_package *P, text_stream
|
|||
}
|
||||
|
||||
inter_symbol *Inter::Packages::search_main_exhaustively(inter_tree *I, text_stream *S) {
|
||||
return Inter::Packages::search_exhaustively(Site::main_package(I), S);
|
||||
return Inter::Packages::search_exhaustively(LargeScale::main_package(I), S);
|
||||
}
|
||||
|
||||
inter_symbol *Inter::Packages::search_resources(inter_tree *I, text_stream *S) {
|
||||
inter_package *main_package = Site::main_package_if_it_exists(I);
|
||||
inter_package *main_package = LargeScale::main_package_if_it_exists(I);
|
||||
if (main_package) {
|
||||
inter_tree_node *D = Inter::Packages::definition(main_package);
|
||||
LOOP_THROUGH_INTER_CHILDREN(C, D) {
|
||||
|
|
|
@ -150,7 +150,7 @@ inter_symbol *InterSymbolsTables::symbol_from_name_creating_at_ID(inter_symbols_
|
|||
}
|
||||
|
||||
inter_symbol *InterSymbolsTables::symbol_from_name_in_main(inter_tree *I, text_stream *S) {
|
||||
return InterSymbolsTables::symbol_from_name(Inter::Packages::scope(Site::main_package_if_it_exists(I)), S);
|
||||
return InterSymbolsTables::symbol_from_name(Inter::Packages::scope(LargeScale::main_package_if_it_exists(I)), S);
|
||||
}
|
||||
|
||||
inter_symbol *InterSymbolsTables::symbol_from_name_in_basics(inter_tree *I, text_stream *S) {
|
||||
|
@ -160,7 +160,7 @@ inter_symbol *InterSymbolsTables::symbol_from_name_in_basics(inter_tree *I, text
|
|||
}
|
||||
|
||||
inter_symbol *InterSymbolsTables::symbol_from_name_in_veneer(inter_tree *I, text_stream *S) {
|
||||
inter_package *P = Site::architecture_package_if_it_exists(I);
|
||||
inter_package *P = LargeScale::architecture_package_if_it_exists(I);
|
||||
if (P == NULL) return NULL;
|
||||
return InterSymbolsTables::symbol_from_name(Inter::Packages::scope(P), S);
|
||||
}
|
||||
|
|
|
@ -23,9 +23,6 @@ typedef struct inter_symbol {
|
|||
@ =
|
||||
inter_symbol *Inter::Symbols::new(text_stream *name, inter_symbols_table *T, inter_ti ID) {
|
||||
if (Str::len(name) == 0) internal_error("symbol cannot have empty text as identifier");
|
||||
|
||||
if (Str::eq(name, I"MAX_POSITIVE_NUMBER_1")) internal_error("MPN1");
|
||||
|
||||
inter_symbol *symb = CREATE(inter_symbol);
|
||||
symb->owning_table = T;
|
||||
symb->symbol_ID = ID;
|
||||
|
|
|
@ -25,7 +25,7 @@ void Inter::Transmigration::move(inter_package *migrant, inter_package *destinat
|
|||
@<Physically move the subtree to its new home@>;
|
||||
@<Correct any references from the migrant to the origin@>;
|
||||
if (tidy_origin) @<Correct any references from the origin to the migrant@>;
|
||||
inter_package *connectors = Site::connectors_package_if_it_exists(origin_tree);
|
||||
inter_package *connectors = LargeScale::connectors_package_if_it_exists(origin_tree);
|
||||
if (connectors) {
|
||||
inter_symbols_table *T = Inter::Packages::scope(connectors);
|
||||
if (T == NULL) internal_error("package with no symbols");
|
||||
|
@ -60,7 +60,7 @@ void Inter::Transmigration::move(inter_package *migrant, inter_package *destinat
|
|||
|
||||
@<Log sockets in origin tree@> =
|
||||
LOG("\n\n\nList of sockets in origin tree:\n");
|
||||
inter_package *connectors = Site::connectors_package_if_it_exists(origin_tree);
|
||||
inter_package *connectors = LargeScale::connectors_package_if_it_exists(origin_tree);
|
||||
if (connectors) {
|
||||
inter_symbols_table *T = Inter::Packages::scope(connectors);
|
||||
if (T == NULL) internal_error("package with no symbols");
|
||||
|
@ -154,7 +154,7 @@ void Inter::Transmigration::correct_migrant(inter_tree *I, inter_tree_node *P, v
|
|||
inter_symbol *target = Wiring::cable_end(symb);
|
||||
if (Inter::Symbols::read_annotation(target, ARCHITECTURAL_IANN) > 0) {
|
||||
Wiring::wire_to(symb,
|
||||
Site::find_architectural_symbol(ipct->destination->package_head->tree, target->symbol_name, Produce::kind_to_symbol(NULL)));
|
||||
LargeScale::find_architectural_symbol(ipct->destination->package_head->tree, target->symbol_name, Produce::kind_to_symbol(NULL)));
|
||||
} else if (Inter::Symbols::get_scope(target) == PLUG_ISYMS) {
|
||||
inter_symbol *equivalent = Inter::Transmigration::cached_equivalent(target);
|
||||
if (equivalent == NULL) {
|
||||
|
|
|
@ -83,7 +83,7 @@ code_generation *CodeGen::new_generation(pipeline_step *step, filename *F,
|
|||
gen->from = I;
|
||||
gen->generator = generator;
|
||||
if (just) gen->just_this_package = just;
|
||||
else gen->just_this_package = Site::main_package(I);
|
||||
else gen->just_this_package = LargeScale::main_package(I);
|
||||
gen->segmentation = CodeGen::new_segmentation_data();
|
||||
gen->void_level = -1;
|
||||
gen->literal_text_mode = REGULAR_LTM;
|
||||
|
|
|
@ -192,12 +192,13 @@ Document for a specification.
|
|||
WRITE("#Endif;\n");
|
||||
CodeGen::deselect(gen, saved);
|
||||
|
||||
@ Pragmas are interpreted as ICL directives -- ICL being the Inform Configuration
|
||||
Language part of Inform 6, which basically allows maxima in the compiler to be
|
||||
tweaked. These go at the top of the source code and typically look like this:
|
||||
= (text as Inform 6)
|
||||
!% $MAX_NUM_STATIC_STRINGS=500000
|
||||
=
|
||||
@ Pragmas are interpreted as ICL directives -- ICL being the Inform
|
||||
Configuration Language part of Inform 6, a mini-language for controlling the I6
|
||||
compiler, able to set command-line switches, memory settings and so on. I6
|
||||
ordinarily discards lines beginning with exclamation marks as comments, but at
|
||||
the very top of the file, lines beginning |!%| are read as ICL commands: as soon
|
||||
as any line (including a blank line) doesn't have this signature, I6 exits ICL
|
||||
mode.
|
||||
|
||||
=
|
||||
void I6Target::offer_pragma(code_generator *gtr, code_generation *gen,
|
||||
|
|
|
@ -87,7 +87,6 @@ for example.
|
|||
@<Certain constants should be declared only if I6 has not already declared them@> =
|
||||
if ((Str::eq(const_name, I"WORDSIZE")) ||
|
||||
(Str::eq(const_name, I"TARGET_ZCODE")) ||
|
||||
(Str::eq(const_name, I"INDIV_PROP_START")) ||
|
||||
(Str::eq(const_name, I"TARGET_GLULX")) ||
|
||||
(Str::eq(const_name, I"DICT_WORD_SIZE")) ||
|
||||
(Str::eq(const_name, I"DEBUG")) ||
|
||||
|
|
|
@ -14,7 +14,7 @@ int NewStage::run(pipeline_step *step) {
|
|||
@<Make the main package@>;
|
||||
@<Add another few package types which we will need when linking@>;
|
||||
|
||||
inter_package *main_p = Site::main_package(I);
|
||||
inter_package *main_p = LargeScale::main_package(I);
|
||||
inter_bookmark in_main = Inter::Bookmarks::at_end_of_this_package(main_p);
|
||||
inter_package *generic_p = NULL, *generic_kinds_p = NULL;
|
||||
Inter::Package::new_package_named(&in_main, I"generic", FALSE,
|
||||
|
@ -32,7 +32,7 @@ int NewStage::run(pipeline_step *step) {
|
|||
@<Create the boolean kind@>;
|
||||
@<Create the string kind@>;
|
||||
|
||||
Site::make_architectural_definitions(I, PipelineModule::get_architecture(),
|
||||
LargeScale::make_architectural_definitions(I, PipelineModule::get_architecture(),
|
||||
unchecked_kind_symbol);
|
||||
return TRUE;
|
||||
}
|
||||
|
@ -135,45 +135,3 @@ end up being basically the same thing.)
|
|||
InterSymbolsTables::id_from_symbol(I, generic_kinds_p, string_kind_symbol),
|
||||
TEXT_IDT, 0, BASE_ICON, 0, NULL,
|
||||
(inter_ti) Inter::Bookmarks::baseline(&in_generic_kinds) + 1, NULL);
|
||||
|
||||
@ Lastly, we define the constants |WORDSIZE|, |DEBUG| (if applicable) and
|
||||
either |TARGET_ZCODE| or |TARGET_GLULX|, as appropriate. These really now mean
|
||||
"target 16-bit" or "target 32-bit", and their names are a hangover from when
|
||||
Inform 7 could only work with Inform 6. The reason we need to define these
|
||||
is so that if a kit is parsed from source and added to this tree, we will then
|
||||
be able to resolve conditional compilation matter placed inside, e.g.,
|
||||
|#ifdef TARGET_ZCODE;| ... |#endif;| directives.
|
||||
|
||||
For now, at least, these live in the package |main/veneer|.
|
||||
|
||||
@<Define some architecture constants@> =
|
||||
inter_package *veneer_p = Site::architecture_package(I);
|
||||
inter_bookmark *in_veneer = Site::architecture_bookmark(I);
|
||||
inter_symbol *vi_unchecked =
|
||||
InterSymbolsTables::create_with_unique_name(
|
||||
Inter::Bookmarks::scope(in_veneer), I"K_unchecked");
|
||||
Wiring::wire_to(vi_unchecked, unchecked_kind_symbol);
|
||||
|
||||
inter_symbol *con_name = InterSymbolsTables::create_with_unique_name(
|
||||
Inter::Bookmarks::scope(in_veneer), I"WORDSIZE");
|
||||
Inter::Constant::new_numerical(in_veneer,
|
||||
InterSymbolsTables::id_from_symbol(I, veneer_p, con_name),
|
||||
InterSymbolsTables::id_from_symbol(I, veneer_p, vi_unchecked),
|
||||
LITERAL_IVAL, (Z)?2:4,
|
||||
(inter_ti) Inter::Bookmarks::baseline(in_veneer) + 1, NULL);
|
||||
inter_symbol *target_name = InterSymbolsTables::create_with_unique_name(
|
||||
Inter::Bookmarks::scope(in_veneer), (Z)?I"TARGET_ZCODE":I"TARGET_GLULX");
|
||||
Inter::Constant::new_numerical(in_veneer,
|
||||
InterSymbolsTables::id_from_symbol(I, veneer_p, target_name),
|
||||
InterSymbolsTables::id_from_symbol(I, veneer_p, vi_unchecked),
|
||||
LITERAL_IVAL, 1,
|
||||
(inter_ti) Inter::Bookmarks::baseline(in_veneer) + 1, NULL);
|
||||
if (D) {
|
||||
inter_symbol *D_name = InterSymbolsTables::create_with_unique_name(
|
||||
Inter::Bookmarks::scope(in_veneer), I"DEBUG");
|
||||
Inter::Constant::new_numerical(in_veneer,
|
||||
InterSymbolsTables::id_from_symbol(I, veneer_p, D_name),
|
||||
InterSymbolsTables::id_from_symbol(I, veneer_p, vi_unchecked),
|
||||
LITERAL_IVAL, 1,
|
||||
(inter_ti) Inter::Bookmarks::baseline(in_veneer) + 1, NULL);
|
||||
}
|
||||
|
|
|
@ -44,7 +44,7 @@ int SimpleStages::run_move_stage(pipeline_step *step) {
|
|||
return FALSE;
|
||||
}
|
||||
Regexp::dispose_of(&mr);
|
||||
Inter::Transmigration::move(pack, Site::main_package(step->ephemera.tree), FALSE);
|
||||
Inter::Transmigration::move(pack, LargeScale::main_package(step->ephemera.tree), FALSE);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
|
|
@ -787,10 +787,10 @@ unlikely to happen: see above.
|
|||
inter_bookmark CompileSplatsStage::make_submodule(inter_tree *I, pipeline_step *step,
|
||||
text_stream *name, inter_tree_node *P) {
|
||||
if (RunningPipelines::get_symbol(step, submodule_ptype_RPSYM)) {
|
||||
inter_package *module_package =
|
||||
inter_package *module_pack =
|
||||
step->pipeline->ephemera.assimilation_modules[step->tree_argument];
|
||||
if (module_package) {
|
||||
inter_package *submodule_package = Inter::Packages::by_name(module_package, name);
|
||||
if (module_pack) {
|
||||
inter_package *submodule_package = Inter::Packages::by_name(module_pack, name);
|
||||
if (submodule_package == NULL) {
|
||||
inter_bookmark IBM = Inter::Bookmarks::after_this_node(I, P);
|
||||
submodule_package = Produce::new_package_named(&IBM, name,
|
||||
|
@ -1083,8 +1083,8 @@ actually works out the numerical value of $x + y$.
|
|||
|
||||
Why do we do this? Why not simply calculate now, and get an explicit answer?
|
||||
The trouble is that one of $x$ or $y$ might be some symbol whose value is itself
|
||||
created by the downstream compiler, such as the address |INDIV_PROP_START|.
|
||||
The meaning of this is the same on all platforms: the value is not.
|
||||
created by the downstream compiler. The meaning of this is the same on all
|
||||
platforms: the value is not.
|
||||
|
||||
There would be a case for optimising the following function to fold constants
|
||||
in cases where we can confidently do so (being careful of overflows and
|
||||
|
@ -1165,7 +1165,7 @@ compilation unit, so we create a plug called |MAX_ELEPHANTS| and let the
|
|||
linker stage worry about what it means later on.
|
||||
|
||||
@<This leaf is a symbol name@> =
|
||||
inter_symbol *result_s = Site::find_architectural_symbol(I, t->material,
|
||||
inter_symbol *result_s = LargeScale::find_architectural_symbol(I, t->material,
|
||||
RunningPipelines::get_symbol(step, unchecked_kind_RPSYM));
|
||||
if (result_s) return result_s;
|
||||
result_s = Wiring::find_socket(I, t->material);
|
||||
|
@ -1243,9 +1243,9 @@ void CompileSplatsStage::function_bodies(pipeline_step *step, compile_splats_sta
|
|||
Produce::new_cip(I, &(req->position)), Inter::Bookmarks::snapshot(Packaging::at(I)));
|
||||
value_holster VH = Holsters::new(INTER_VOID_VHMODE);
|
||||
inter_symbols_table *scope1 = Inter::Packages::scope(req->block_package);
|
||||
inter_package *module_package =
|
||||
inter_package *module_pack =
|
||||
step->pipeline->ephemera.assimilation_modules[step->tree_argument];
|
||||
inter_symbols_table *scope2 = Inter::Packages::scope(module_package);
|
||||
inter_symbols_table *scope2 = Inter::Packages::scope(module_pack);
|
||||
EmitInterSchemas::emit(I, &VH, sch, NULL, scope1, scope2, NULL, NULL);
|
||||
Produce::pop_code_position(I);
|
||||
Produce::set_function(I, NULL);
|
||||
|
|
|
@ -30,7 +30,7 @@ here, since this is not part of the Inform 7 compilation pipeline.
|
|||
=
|
||||
int ParsingStages::run_load_kit_source(pipeline_step *step) {
|
||||
inter_tree *I = step->ephemera.tree;
|
||||
inter_package *main_package = Site::main_package(I);
|
||||
inter_package *main_package = LargeScale::main_package(I);
|
||||
@<Create a module to hold the Inter read in from this kit@>;
|
||||
simple_tangle_docket docket;
|
||||
@<Make a suitable simple tangler docket@>;
|
||||
|
@ -102,7 +102,7 @@ in |K/Sections|.
|
|||
@<Make a suitable simple tangler docket@> =
|
||||
inter_package *assimilation_package =
|
||||
step->pipeline->ephemera.assimilation_modules[step->tree_argument];
|
||||
if (assimilation_package == NULL) assimilation_package = Site::main_package(I);
|
||||
if (assimilation_package == NULL) assimilation_package = LargeScale::main_package(I);
|
||||
inter_bookmark assimilation_point =
|
||||
Inter::Bookmarks::at_end_of_this_package(assimilation_package);
|
||||
docket = SimpleTangler::new_docket(
|
||||
|
|
|
@ -82,4 +82,4 @@ of the sidecar and put it into the main tree.
|
|||
internal_error("unable to find attachment point package");
|
||||
}
|
||||
Inter::Transmigration::move(pack,
|
||||
Site::main_package(step->ephemera.tree), FALSE);
|
||||
LargeScale::main_package(step->ephemera.tree), FALSE);
|
||||
|
|
|
@ -24,7 +24,7 @@ typedef struct plug_inspection_state {
|
|||
int ShortenWiringStage::run(pipeline_step *step) {
|
||||
inter_tree *I = step->ephemera.tree;
|
||||
@<Shorten the wiring and report loose plugs@>;
|
||||
inter_package *connectors = Site::connectors_package_if_it_exists(I);
|
||||
inter_package *connectors = LargeScale::connectors_package_if_it_exists(I);
|
||||
if (connectors) @<Remove the now unnecessary plugs and sockets@>;
|
||||
return TRUE;
|
||||
}
|
||||
|
|
|
@ -32,8 +32,8 @@ void SynopticText::compile(inter_tree *I, pipeline_step *step, tree_inventory *i
|
|||
TreeLists::sort(inv->text_nodes, SynopticText::cmp);
|
||||
inter_package *texts_pack =
|
||||
Packaging::incarnate(
|
||||
Packaging::synoptic_submodule(I,
|
||||
Packaging::register_submodule(I"text")));
|
||||
LargeScale::synoptic_submodule(I,
|
||||
LargeScale::register_submodule_identity(I"text")));
|
||||
inter_bookmark IBM = Inter::Bookmarks::at_end_of_this_package(texts_pack);
|
||||
text_stream *latest_text = NULL;
|
||||
inter_symbol *latest_s = NULL;
|
||||
|
|
|
@ -37,7 +37,7 @@ void SynopticHierarchy::establish(inter_tree *I) {
|
|||
fuller explanation.
|
||||
|
||||
@d SYN_SUBMD(r)
|
||||
req = HierarchyLocations::synoptic_submodule(I, Packaging::register_submodule(r));
|
||||
req = HierarchyLocations::synoptic_submodule(I, LargeScale::register_submodule_identity(r));
|
||||
@d SYN_CONST(id, n) {
|
||||
HierarchyLocations::ctr(I, id, n, Translation::same(), req);
|
||||
inter_name *iname = HierarchyLocations::find(I, id);
|
||||
|
|
Loading…
Reference in a new issue