1
0
Fork 0
mirror of https://github.com/ganelson/inform.git synced 2024-06-26 04:00:43 +03:00

Reduced usage of compilation_unit to a minimum

This commit is contained in:
Graham Nelson 2021-04-12 10:20:09 +01:00
parent fce781beff
commit eec32b0f4b
67 changed files with 2307 additions and 2440 deletions

View file

@ -1,6 +1,6 @@
# Inform 7
v10.1.0-alpha.1+6R77 'Krypton' (11 April 2021)
v10.1.0-alpha.1+6R78 'Krypton' (12 April 2021)
## About Inform 7

View file

@ -1,3 +1,3 @@
Prerelease: alpha.1
Build Date: 11 April 2021
Build Number: 6R77
Build Date: 12 April 2021
Build Number: 6R78

View file

@ -179,11 +179,8 @@ any additional sentences generated.
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">MajorNodes::visit</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">MajorNodes::visit</span></span>:<br/><a href="2-ptmn.html#SP2">&#167;2</a>, <a href="2-ptmn.html#SP2_1">&#167;2.1</a>, <a href="2-ptmn.html#SP2_2">&#167;2.2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">p</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> **</span><span class="identifier-syntax">last</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">global_pass_state</span><span class="plain-syntax">.</span><span class="element-syntax">assembly_position</span><span class="plain-syntax"> = </span><span class="identifier-syntax">current_sentence</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">compilation_unit</span><span class="plain-syntax"> *</span><span class="identifier-syntax">cm</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CompilationUnits::current</span><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">CompilationUnits::set_current</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">last</span><span class="plain-syntax"> = </span><span class="identifier-syntax">p</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-ptmn.html#SP3_1" class="named-paragraph-link"><span class="named-paragraph">Deal with an individual major node</span><span class="named-paragraph-number">3.1</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">CompilationUnits::set_current_to</span><span class="plain-syntax">(</span><span class="identifier-syntax">cm</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP3_1" class="paragraph-anchor"></a><b>&#167;3.1. </b>Headings cause us to begin a fresh topic of discussion, on a fresh piece of

View file

@ -222,8 +222,6 @@ container (called the sack) is capacious if...".
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">AdjectivalDefinitionFamily::look_for_headers</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">AdjectivalDefinitionFamily::look_for_headers</span></span>:<br/><a href="5-adf.html#SP4">&#167;4</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_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><span class="identifier-syntax">Node::get_type</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">) == </span><span class="identifier-syntax">IMPERATIVE_NT</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="function-syntax">&lt;definition-header&gt;</span><span class="plain-syntax">(</span><span class="identifier-syntax">Node::get_text</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">compilation_unit</span><span class="plain-syntax"> *</span><span class="identifier-syntax">cm</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CompilationUnits::current</span><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">CompilationUnits::set_current</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">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">q</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">Node::get_type</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">next</span><span class="plain-syntax">) == </span><span class="identifier-syntax">DEFN_CONT_NT</span><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">-&gt;</span><span class="element-syntax">next</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">q</span><span class="plain-syntax"> = (</span><span class="identifier-syntax">p</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">down</span><span class="plain-syntax">)?(</span><span class="identifier-syntax">p</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">down</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">down</span><span class="plain-syntax">):</span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
@ -240,8 +238,6 @@ container (called the sack) is capacious if...".
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="5-adf.html#SP9_3" class="named-paragraph-link"><span class="named-paragraph">Register the resulting adjective</span><span class="named-paragraph-number">9.3</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">the_format</span><span class="plain-syntax"> != </span><span class="constant-syntax">DEFINED_PHRASALLY</span><span class="plain-syntax">) </span><span class="identifier-syntax">p</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">down</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">CompilationUnits::set_current_to</span><span class="plain-syntax">(</span><span class="identifier-syntax">cm</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax">}</span>
</pre>

View file

@ -82,7 +82,6 @@
<span class="definition-keyword">enum</span> <span class="constant-syntax">module_package_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">compilation_unit_CLASS</span>
<span class="definition-keyword">enum</span> <span class="constant-syntax">inter_schema_CLASS</span>
<span class="definition-keyword">enum</span> <span class="constant-syntax">inter_schema_node_CLASS</span>
<span class="definition-keyword">enum</span> <span class="constant-syntax">inter_schema_token_CLASS</span>
@ -98,7 +97,6 @@
<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">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">compilation_unit</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>
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="reserved-syntax">inter_schema_node</span><span class="plain-syntax">)</span>
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="reserved-syntax">inter_schema_token</span><span class="plain-syntax">)</span>
@ -108,7 +106,6 @@
<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="identifier-syntax">MAKE_ANNOTATION_FUNCTIONS</span><span class="plain-syntax">(</span><span class="identifier-syntax">explicit_iname</span><span class="plain-syntax">, </span><span class="reserved-syntax">inter_name</span><span class="plain-syntax">)</span>
<span class="identifier-syntax">MAKE_ANNOTATION_FUNCTIONS</span><span class="plain-syntax">(</span><span class="identifier-syntax">unit</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">endif</span>
</pre>
<p class="commentary firstcommentary"><a id="SP4" class="paragraph-anchor"></a><b>&#167;4. The beginning. </b>(The client doesn't need to call the start and end routines, because the

View file

@ -265,14 +265,14 @@ itself during compilation.
<span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">site</span><span class="plain-syntax">.</span><span class="element-syntax">assimilation_package</span><span class="plain-syntax"> = </span><span class="identifier-syntax">M</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
<span class="identifier-syntax">dictionary</span><span class="plain-syntax"> *</span><span class="function-syntax">Site::modules_dictionary</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::modules_dictionary</span></span>:<br/>Packaging - <a href="1-pck.html#SP15">&#167;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="identifier-syntax">dictionary</span><span class="plain-syntax"> *</span><span class="function-syntax">Site::modules_dictionary</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::modules_dictionary</span></span>:<br/>Packaging - <a href="1-pck.html#SP14">&#167;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">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">I</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">site</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">-&gt;</span><span class="identifier-syntax">site</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="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">site</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">package_request</span><span class="plain-syntax"> *</span><span class="function-syntax">Site::main_request</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">Site::main_request</span></span>:<br/>Packaging - <a href="1-pck.html#SP11">&#167;11</a>, <a href="1-pck.html#SP15">&#167;15</a><br/>Producing Inter - <a href="3-prd.html#SP3">&#167;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">package_request</span><span class="plain-syntax"> *</span><span class="function-syntax">Site::main_request</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">Site::main_request</span></span>:<br/>Packaging - <a href="1-pck.html#SP11">&#167;11</a>, <a href="1-pck.html#SP14">&#167;14</a><br/>Producing Inter - <a href="3-prd.html#SP3">&#167;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">-&gt;</span><span class="identifier-syntax">site</span><span class="plain-syntax">.</span><span class="element-syntax">main_pr</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">-&gt;</span><span class="identifier-syntax">site</span><span class="plain-syntax">.</span><span class="element-syntax">main_pr</span><span class="plain-syntax"> = </span><a href="1-pck.html#SP2" 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><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>
@ -281,7 +281,7 @@ itself during compilation.
<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('usagePopup17')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup17">Usage of <span class="code-font"><span class="function-syntax">Site::connectors_request</span></span>:<br/>Inter Namespace - <a href="1-in.html#SP5">&#167;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">-&gt;</span><span class="identifier-syntax">site</span><span class="plain-syntax">.</span><span class="element-syntax">connectors_pr</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="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#SP14" 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="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">site</span><span class="plain-syntax">.</span><span class="element-syntax">connectors_pr</span><span class="plain-syntax"> = </span><span class="identifier-syntax">T</span><span class="plain-syntax">-&gt;</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">-&gt;</span><span class="identifier-syntax">site</span><span class="plain-syntax">.</span><span class="element-syntax">connectors_pr</span><span class="plain-syntax">;</span>
@ -289,7 +289,7 @@ itself during compilation.
<span class="reserved-syntax">package_request</span><span class="plain-syntax"> *</span><span class="function-syntax">Site::veneer_request</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">Site::veneer_request</span></span>:<br/>The Veneer - <a href="1-tv.html#SP1">&#167;1</a><br/>Emitting Inter Schemas - <a href="2-eis.html#SP2_1">&#167;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">-&gt;</span><span class="identifier-syntax">site</span><span class="plain-syntax">.</span><span class="element-syntax">veneer_pr</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="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#SP14" 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="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">site</span><span class="plain-syntax">.</span><span class="element-syntax">veneer_pr</span><span class="plain-syntax"> = </span><span class="identifier-syntax">T</span><span class="plain-syntax">-&gt;</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#SP12" 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">-&gt;</span><span class="identifier-syntax">site</span><span class="plain-syntax">.</span><span class="element-syntax">veneer_pr</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">site</span><span class="plain-syntax">.</span><span class="element-syntax">veneer_bookmark</span><span class="plain-syntax"> = </span><a href="1-pck.html#SP10" 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>

View file

@ -115,13 +115,13 @@ following fields set.
<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-pck.html#SP16" 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><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-pck.html#SP16" 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="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>
@ -259,7 +259,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#SP18" 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>
@ -281,11 +281,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">-&gt;</span><span class="element-syntax">function_package_name</span><span class="plain-syntax">) &gt; </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">-&gt;</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">-&gt;</span><span class="element-syntax">equates_to_iname</span><span class="plain-syntax"> = </span><a href="1-pck.html#SP18" 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">-&gt;</span><span class="element-syntax">function_package_name</span><span class="plain-syntax">, </span><span class="identifier-syntax">hl</span><span class="plain-syntax">-&gt;</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">-&gt;</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">-&gt;</span><span class="element-syntax">datum_package_name</span><span class="plain-syntax">) &gt; </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">-&gt;</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">-&gt;</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::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">-&gt;</span><span class="element-syntax">datum_package_name</span><span class="plain-syntax">, </span><span class="identifier-syntax">hl</span><span class="plain-syntax">-&gt;</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">-&gt;</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">-&gt;</span><span class="element-syntax">requirements</span><span class="plain-syntax">.</span><span class="element-syntax">this_exact_package</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">hl</span><span class="plain-syntax">-&gt;</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>
@ -348,7 +348,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">-&gt;</span><span class="element-syntax">function_package_name</span><span class="plain-syntax">) &gt; </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#SP18" 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">-&gt;</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">-&gt;</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>
@ -404,27 +404,18 @@ following fields set.
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">hap</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">HierarchyLocations::attach_new_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="reserved-syntax">compilation_unit</span><span class="plain-syntax"> *</span><span class="identifier-syntax">C</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">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">hap_id</span><span class="plain-syntax">) {</span>
<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">HierarchyLocations::attach_new_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="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">package_request</span><span class="plain-syntax"> *</span><span class="identifier-syntax">R</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">hap_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">hap_id</span><span class="plain-syntax"> &lt; </span><span class="constant-syntax">0</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">hap_id</span><span class="plain-syntax"> &gt;= </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">-&gt;</span><span class="identifier-syntax">site</span><span class="plain-syntax">.</span><span class="element-syntax">haps_indexed_by_id</span><span class="plain-syntax">[</span><span class="identifier-syntax">hap_id</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">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"invalid HAP request"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">hierarchy_attachment_point</span><span class="plain-syntax"> *</span><span class="identifier-syntax">hap</span><span class="plain-syntax"> = </span><span class="identifier-syntax">I</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">site</span><span class="plain-syntax">.</span><span class="element-syntax">haps_indexed_by_id</span><span class="plain-syntax">[</span><span class="identifier-syntax">hap_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">hap</span><span class="plain-syntax">-&gt;</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="identifier-syntax">ifdef</span><span class="plain-syntax"> </span><span class="identifier-syntax">CORE_MODULE</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">-&gt;</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="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><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"feature available only within inform7 compiler"</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="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">hap</span><span class="plain-syntax">-&gt;</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><a href="1-pck.html#SP16" 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">-&gt;</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">-&gt;</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">-&gt;</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">-&gt;</span><span class="element-syntax">requirements</span><span class="plain-syntax">.</span><span class="element-syntax">this_exact_package_not_yet_created</span><span class="plain-syntax"> &gt;= </span><span class="constant-syntax">0</span><span class="plain-syntax">) {</span>
<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="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">-&gt;</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"> &gt;= </span><span class="constant-syntax">0</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">Hierarchy::exotic_package</span><span class="plain-syntax">(</span><span class="identifier-syntax">hap</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">requirements</span><span class="plain-syntax">.</span><span class="element-syntax">this_exact_package_not_yet_created</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><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"feature available only within inform7 compiler"</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="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">hap</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">requirements</span><span class="plain-syntax">.</span><span class="identifier-syntax">any_package_of_this_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">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">-&gt;</span><span class="element-syntax">eventual_type</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">hap</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">requirements</span><span class="plain-syntax">.</span><span class="element-syntax">any_package_of_this_type</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">"subpackage in wrong superpackage"</span><span class="plain-syntax">);</span>
@ -432,6 +423,7 @@ following fields set.
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="1-pck.html#SP2" 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><a href="1-pck.html#SP4" class="function-link"><span class="function-syntax">Packaging::make_iname_within</span></a><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">-&gt;</span><span class="element-syntax">name_stem</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">hap</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">type</span><span class="plain-syntax">));</span>
<span class="plain-syntax">}</span>
<span class="plain-syntax">#</span><span class="identifier-syntax">endif</span>
</pre>
<ul class="endnotetexts"><li>The structure hierarchy_attachment_point is accessed in 1/pck, 1/in and here.</li></ul>
<p class="commentary firstcommentary"><a id="SP6" class="paragraph-anchor"></a><b>&#167;6. Hierarchy metadata. </b></p>

View file

@ -229,7 +229,7 @@ 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">&#167;2</a><br/>Hierarchy Locations - <a href="1-hl.html#SP3">&#167;3</a>, <a href="1-hl.html#SP3_1">&#167;3.1</a>, <a href="1-hl.html#SP4">&#167;4</a><br/>Packaging - <a href="1-pck.html#SP15">&#167;15</a>, <a href="1-pck.html#SP18">&#167;18</a>, <a href="1-pck.html#SP19">&#167;19</a>, <a href="1-pck.html#SP20">&#167;20</a><br/>Producing Inter - <a href="3-prd.html#SP2">&#167;2</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/>Building Site - <a href="1-bs.html#SP2">&#167;2</a><br/>Hierarchy Locations - <a href="1-hl.html#SP3">&#167;3</a>, <a href="1-hl.html#SP3_1">&#167;3.1</a>, <a href="1-hl.html#SP4">&#167;4</a><br/>Packaging - <a href="1-pck.html#SP14">&#167;14</a>, <a href="1-pck.html#SP17">&#167;17</a>, <a href="1-pck.html#SP18">&#167;18</a>, <a href="1-pck.html#SP19">&#167;19</a><br/>Producing Inter - <a href="3-prd.html#SP2">&#167;2</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>
@ -274,7 +274,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">&#167;3</a><br/>Packaging - <a href="1-pck.html#SP2">&#167;2</a>, <a href="1-pck.html#SP12">&#167;12</a>, <a href="1-pck.html#SP19">&#167;19</a><br/>Producing Inter - <a href="3-prd.html#SP3">&#167;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">&#167;3</a><br/>Packaging - <a href="1-pck.html#SP2">&#167;2</a>, <a href="1-pck.html#SP12">&#167;12</a>, <a href="1-pck.html#SP18">&#167;18</a><br/>Producing Inter - <a href="3-prd.html#SP3">&#167;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">-&gt;</span><span class="element-syntax">location_in_hierarchy</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>

View file

@ -72,7 +72,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#SP1">&#167;1. Package requests</a></li><li><a href="1-pck.html#SP10">&#167;10. Bubbles</a></li><li><a href="1-pck.html#SP11">&#167;11. Outside the packages</a></li><li><a href="1-pck.html#SP12">&#167;12. Entry and exit</a></li><li><a href="1-pck.html#SP13">&#167;13. Incarnation</a></li><li><a href="1-pck.html#SP14">&#167;14. Compilation modules</a></li><li><a href="1-pck.html#SP15">&#167;15. Modules</a></li><li><a href="1-pck.html#SP16">&#167;16. Submodules</a></li><li><a href="1-pck.html#SP19">&#167;19. Functions</a></li></ul><hr class="tocbar">
<ul class="toc"><li><a href="1-pck.html#SP1">&#167;1. Package requests</a></li><li><a href="1-pck.html#SP10">&#167;10. Bubbles</a></li><li><a href="1-pck.html#SP11">&#167;11. Outside the packages</a></li><li><a href="1-pck.html#SP12">&#167;12. Entry and exit</a></li><li><a href="1-pck.html#SP13">&#167;13. Incarnation</a></li><li><a href="1-pck.html#SP14">&#167;14. Modules</a></li><li><a href="1-pck.html#SP15">&#167;15. Submodules</a></li><li><a href="1-pck.html#SP18">&#167;18. Functions</a></li></ul><hr class="tocbar">
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>&#167;1. Package requests. </b>In the same way that inames are created as shadows of eventual inter symbols,
and omly converted into the real thing on demand, "package requests" are
@ -98,7 +98,7 @@ called "incarnation".
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>&#167;2. </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('usagePopup1')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup1">Usage of <span class="code-font"><span class="function-syntax">Packaging::request</span></span>:<br/><a href="1-pck.html#SP15">&#167;15</a>, <a href="1-pck.html#SP18">&#167;18</a>, <a href="1-pck.html#SP19">&#167;19</a>, <a href="1-pck.html#SP20">&#167;20</a><br/>Building Site - <a href="1-bs.html#SP2">&#167;2</a><br/>Hierarchy Locations - <a href="1-hl.html#SP4">&#167;4</a>, <a href="1-hl.html#SP5">&#167;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('usagePopup1')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup1">Usage of <span class="code-font"><span class="function-syntax">Packaging::request</span></span>:<br/><a href="1-pck.html#SP14">&#167;14</a>, <a href="1-pck.html#SP17">&#167;17</a>, <a href="1-pck.html#SP18">&#167;18</a>, <a href="1-pck.html#SP19">&#167;19</a><br/>Building Site - <a href="1-bs.html#SP2">&#167;2</a><br/>Hierarchy Locations - <a href="1-hl.html#SP4">&#167;4</a>, <a href="1-hl.html#SP5">&#167;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">-&gt;</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">-&gt;</span><span class="element-syntax">eventual_name</span><span class="plain-syntax"> = </span><span class="identifier-syntax">name</span><span class="plain-syntax">;</span>
@ -358,21 +358,7 @@ 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">-&gt;</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="SP14" class="paragraph-anchor"></a><b>&#167;14. Compilation modules. </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">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="reserved-syntax">module_package</span><span class="plain-syntax"> *</span><span class="identifier-syntax">inter_presence</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">hanging_from</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">compilation_unit</span><span class="plain-syntax">;</span>
<span class="reserved-syntax">compilation_unit</span><span class="plain-syntax"> *</span><span class="function-syntax">Packaging::new_cu</span><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">CREATE</span><span class="plain-syntax">(</span><span class="reserved-syntax">compilation_unit</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
</pre>
<ul class="endnotetexts"><li>The structure compilation_unit is private to this section.</li></ul>
<p class="commentary firstcommentary"><a id="SP15" class="paragraph-anchor"></a><b>&#167;15. Modules. </b>With the code above, then, we can get the Inter hierarchy of packages set up
<p class="commentary firstcommentary"><a id="SP14" class="paragraph-anchor"></a><b>&#167;14. 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".
@ -389,7 +375,7 @@ following creates modules on demand.
<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('usagePopup16')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup16">Usage of <span class="code-font"><span class="function-syntax">Packaging::get_unit</span></span>:<br/><a href="1-pck.html#SP17">&#167;17</a><br/>Building Site - <a href="1-bs.html#SP2">&#167;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="reserved-syntax">module_package</span><span class="plain-syntax"> *</span><span class="function-syntax">Packaging::get_unit</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::get_unit</span></span>:<br/><a href="1-pck.html#SP16">&#167;16</a><br/>Building Site - <a href="1-bs.html#SP2">&#167;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="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><a href="1-bs.html#SP2" class="function-link"><span class="function-syntax">Site::modules_dictionary</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">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><a href="1-bs.html#SP2" class="function-link"><span class="function-syntax">Site::modules_dictionary</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>
@ -405,7 +391,7 @@ following creates modules on demand.
<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>&#167;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
<p class="commentary firstcommentary"><a id="SP15" class="paragraph-anchor"></a><b>&#167;15. 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.
@ -428,35 +414,35 @@ as it turns out, this is presently just a wrapper for a name.
<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>&#167;17. </b>Once the Hierarchy code has registered a submodule, it can request an existing
<p class="commentary firstcommentary"><a id="SP16" class="paragraph-anchor"></a><b>&#167;16. </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('usagePopup17')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup17">Usage of <span class="code-font"><span class="function-syntax">Packaging::request_submodule</span></span>:<br/>Hierarchy Locations - <a href="1-hl.html#SP5">&#167;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">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::inter_presence</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="reserved-syntax">package_request</span><span class="plain-syntax"> *</span><span class="function-syntax">Packaging::request_submodule</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::request_submodule</span></span>:<br/>Hierarchy Locations - <a href="1-hl.html#SP5">&#167;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#SP16" 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#SP17" 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::inter_presence</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="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="1-pck.html#SP16" 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('usagePopup18')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup18">Usage of <span class="code-font"><span class="function-syntax">Packaging::generic_submodule</span></span>:<br/>Hierarchy Locations - <a href="1-hl.html#SP2">&#167;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">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::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#SP14" 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">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('usagePopup19')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup19">Usage of <span class="code-font"><span class="function-syntax">Packaging::synoptic_submodule</span></span>:<br/>Hierarchy Locations - <a href="1-hl.html#SP2">&#167;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">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::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#SP14" 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">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::template_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#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">"template"</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::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#SP14" 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">"template"</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>&#167;18. </b>Those in turn all make use of this back-end function:
<p class="commentary firstcommentary"><a id="SP17" class="paragraph-anchor"></a><b>&#167;17. </b>Those in turn all make use of this back-end function:
</p>
<pre class="displayed-code all-displayed-code code-font">
@ -466,7 +452,7 @@ module to have this submodule. It should call one of the following four function
<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('usagePopup20')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup20">Usage of <span class="code-font"><span class="function-syntax">Packaging::new_submodule_inner</span></span>:<br/><a href="1-pck.html#SP17">&#167;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="reserved-syntax">package_request</span><span class="plain-syntax"> *</span><span class="function-syntax">Packaging::new_submodule_inner</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::new_submodule_inner</span></span>:<br/><a href="1-pck.html#SP16">&#167;16</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">-&gt;</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">-&gt;</span><span class="element-syntax">which_submodule</span><span class="plain-syntax">)</span>
@ -480,7 +466,7 @@ module to have this submodule. It should call one of the following four function
<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>&#167;19. Functions. </b>Inter code has a standard layout for functions: an outer, enclosing, package of type
<p class="commentary firstcommentary"><a id="SP18" class="paragraph-anchor"></a><b>&#167;18. 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>
@ -514,7 +500,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">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>&#167;20. </b>Datum is very similar.
<p class="commentary firstcommentary"><a id="SP19" class="paragraph-anchor"></a><b>&#167;19. </b>Datum is very similar.
</p>
<pre class="displayed-code all-displayed-code code-font">

View file

@ -86,7 +86,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">&#167;2</a><br/>Building Site - <a href="1-bs.html#SP2">&#167;2</a><br/>Hierarchy Locations - <a href="1-hl.html#SP3">&#167;3</a>, <a href="1-hl.html#SP4">&#167;4</a>, <a href="1-hl.html#SP5">&#167;5</a>, <a href="1-hl.html#SP6">&#167;6</a><br/>Packaging - <a href="1-pck.html#SP11">&#167;11</a>, <a href="1-pck.html#SP15">&#167;15</a>, <a href="1-pck.html#SP18">&#167;18</a>, <a href="1-pck.html#SP20">&#167;20</a><br/>Producing Inter - <a href="3-prd.html#SP3">&#167;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">&#167;2</a><br/>Building Site - <a href="1-bs.html#SP2">&#167;2</a><br/>Hierarchy Locations - <a href="1-hl.html#SP3">&#167;3</a>, <a href="1-hl.html#SP4">&#167;4</a>, <a href="1-hl.html#SP5">&#167;5</a>, <a href="1-hl.html#SP6">&#167;6</a><br/>Packaging - <a href="1-pck.html#SP11">&#167;11</a>, <a href="1-pck.html#SP14">&#167;14</a>, <a href="1-pck.html#SP17">&#167;17</a>, <a href="1-pck.html#SP19">&#167;19</a><br/>Producing Inter - <a href="3-prd.html#SP3">&#167;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">Inter::Tree::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">Inter::SymbolsTables::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>
@ -130,7 +130,7 @@ 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">&#167;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#SP18">&#167;18</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>

View file

@ -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('usagePopup14')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup14">Usage of <span class="code-font"><span class="function-syntax">Produce::change_translation</span></span>:<br/>Hierarchy Locations - <a href="1-hl.html#SP3">&#167;3</a>, <a href="1-hl.html#SP3_1">&#167;3.1</a><br/>Packaging - <a href="1-pck.html#SP19">&#167;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('usagePopup14')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup14">Usage of <span class="code-font"><span class="function-syntax">Produce::change_translation</span></span>:<br/>Hierarchy Locations - <a href="1-hl.html#SP3">&#167;3</a>, <a href="1-hl.html#SP3_1">&#167;3.1</a><br/>Packaging - <a href="1-pck.html#SP18">&#167;18</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>
@ -271,7 +271,7 @@ function togglePopup(material_id) {
<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#SP18" 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#SP4" 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#SP7" 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>
@ -293,7 +293,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#SP18" 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#SP4" 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>

View file

@ -252,6 +252,7 @@ We begin with <a href="index.html" class="internal">core</a> itself.
<pre class="definitions code-font"><span class="definition-keyword">enum</span> <span class="constant-syntax">adjective_iname_holder_CLASS</span>
<span class="definition-keyword">enum</span> <span class="constant-syntax">backdrop_found_in_notice_CLASS</span>
<span class="definition-keyword">enum</span> <span class="constant-syntax">bp_runtime_implementation_CLASS</span>
<span class="definition-keyword">enum</span> <span class="constant-syntax">compilation_unit_CLASS</span>
<span class="definition-keyword">enum</span> <span class="constant-syntax">definition_CLASS</span>
<span class="definition-keyword">enum</span> <span class="constant-syntax">door_dir_notice_CLASS</span>
<span class="definition-keyword">enum</span> <span class="constant-syntax">door_to_notice_CLASS</span>
@ -273,6 +274,7 @@ We begin with <a href="index.html" class="internal">core</a> itself.
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="identifier-syntax">adjective_iname_holder</span><span class="plain-syntax">)</span>
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="identifier-syntax">backdrop_found_in_notice</span><span class="plain-syntax">)</span>
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="identifier-syntax">bp_runtime_implementation</span><span class="plain-syntax">)</span>
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="identifier-syntax">compilation_unit</span><span class="plain-syntax">)</span>
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="identifier-syntax">definition</span><span class="plain-syntax">)</span>
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="identifier-syntax">door_dir_notice</span><span class="plain-syntax">)</span>
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="identifier-syntax">door_to_notice</span><span class="plain-syntax">)</span>

View file

@ -381,11 +381,11 @@ which compilation unit the node belongs.
<pre class="displayed-code all-displayed-code code-font">
<span class="identifier-syntax">DECLARE_ANNOTATION_FUNCTIONS</span><span class="plain-syntax">(</span><span class="identifier-syntax">unit</span><span class="plain-syntax">, </span><span class="identifier-syntax">compilation_unit</span><span class="plain-syntax">)</span>
</pre>
<p class="commentary firstcommentary"><a id="SP10" class="paragraph-anchor"></a><b>&#167;10. </b>For tedious code-sequencing reasons, the annotation functions for <span class="extract"><span class="extract-syntax">unit_ANNOT</span></span>
are made in <a href="../building-module/1-bm.html" class="internal">Building Module (in building)</a>.
</p>
<p class="commentary firstcommentary"><a id="SP10" class="paragraph-anchor"></a><b>&#167;10. </b></p>
<pre class="displayed-code all-displayed-code code-font">
<span class="identifier-syntax">MAKE_ANNOTATION_FUNCTIONS</span><span class="plain-syntax">(</span><span class="identifier-syntax">unit</span><span class="plain-syntax">, </span><span class="identifier-syntax">compilation_unit</span><span class="plain-syntax">)</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">CoreSyntax::declare_unit</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">CoreSyntax::declare_unit</span></span>:<br/><a href="1-inaa.html#SP8">&#167;8</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="identifier-syntax">Annotations::declare_type</span><span class="plain-syntax">(</span><span class="constant-syntax">unit_ANNOT</span><span class="plain-syntax">, </span><a href="1-inaa.html#SP10" class="function-link"><span class="function-syntax">CoreSyntax::write_unit_ANNOT</span></a><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
@ -932,6 +932,7 @@ are made in <a href="../building-module/1-bm.html" class="internal">Building Mod
<span class="plain-syntax"> </span><span class="identifier-syntax">Annotations::allow_for_category</span><span class="plain-syntax">(</span><span class="constant-syntax">CODE_NCAT</span><span class="plain-syntax">, </span><span class="constant-syntax">token_check_to_do_ANNOT</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Annotations::allow_for_category</span><span class="plain-syntax">(</span><span class="constant-syntax">CODE_NCAT</span><span class="plain-syntax">, </span><span class="constant-syntax">token_to_be_parsed_against_ANNOT</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Annotations::allow_for_category</span><span class="plain-syntax">(</span><span class="constant-syntax">CODE_NCAT</span><span class="plain-syntax">, </span><span class="constant-syntax">verb_problem_issued_ANNOT</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Annotations::allow</span><span class="plain-syntax">(</span><span class="constant-syntax">INVOCATION_LIST_NT</span><span class="plain-syntax">, </span><span class="constant-syntax">unit_ANNOT</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Annotations::allow</span><span class="plain-syntax">(</span><span class="constant-syntax">INVOCATION_LIST_NT</span><span class="plain-syntax">, </span><span class="constant-syntax">from_text_substitution_ANNOT</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Annotations::allow</span><span class="plain-syntax">(</span><span class="constant-syntax">INVOCATION_LIST_SAY_NT</span><span class="plain-syntax">, </span><span class="constant-syntax">suppress_newlines_ANNOT</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Annotations::allow</span><span class="plain-syntax">(</span><span class="constant-syntax">INVOCATION_NT</span><span class="plain-syntax">, </span><span class="constant-syntax">epistemological_status_ANNOT</span><span class="plain-syntax">);</span>

View file

@ -108,8 +108,6 @@ That's a function called either from <a href="3-pr.html" class="internal">Phrase
<span class="plain-syntax"> </span><span class="identifier-syntax">LOGIF</span><span class="plain-syntax">(</span><span class="identifier-syntax">PHRASE_COMPILATION</span><span class="plain-syntax">, </span><span class="string-syntax">"Compiling phrase:\n$T"</span><span class="plain-syntax">, </span><span class="identifier-syntax">code_at</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">current_sentence</span><span class="plain-syntax"> = </span><span class="identifier-syntax">code_at</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">CompilationUnits::set_current</span><span class="plain-syntax">(</span><span class="identifier-syntax">code_at</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">stack_frame</span><span class="plain-syntax"> *</span><span class="identifier-syntax">frame</span><span class="plain-syntax"> = &amp;(</span><span class="identifier-syntax">idb</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">compilation_data</span><span class="plain-syntax">.</span><span class="element-syntax">id_stack_frame</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">req</span><span class="plain-syntax">?(</span><span class="identifier-syntax">req</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">req_iname</span><span class="plain-syntax">):(</span><a href="3-cid.html#SP5" class="function-link"><span class="function-syntax">CompileImperativeDefn::iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">idb</span><span class="plain-syntax">));</span>
@ -121,7 +119,6 @@ That's a function called either from <a href="3-pr.html" class="internal">Phrase
<span class="plain-syntax"> </span><a href="3-fnc.html#SP6" class="function-link"><span class="function-syntax">Functions::end</span></a><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">current_sentence</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">CompilationUnits::set_current</span><span class="plain-syntax">(</span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP2_1" class="paragraph-anchor"></a><b>&#167;2.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Compile some commentary about the function to follow</span><span class="named-paragraph-number">2.1</span></span><span class="comment-syntax"> =</span>
@ -216,7 +213,6 @@ value for its return kind: for example, the empty text for <span class="extract"
<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">id_compilation_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">compilation_unit</span><span class="plain-syntax"> *</span><span class="identifier-syntax">owning_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="reserved-syntax">stack_frame</span><span class="plain-syntax"> </span><span class="identifier-syntax">id_stack_frame</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">at_least_one_compiled_form_needed</span><span class="plain-syntax">; </span><span class="comment-syntax"> do we still need to compile this?</span>
@ -232,7 +228,6 @@ value for its return kind: for example, the empty text for <span class="extract"
<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">label_namespaces</span><span class="plain-syntax">; </span><span class="comment-syntax"> of </span><span class="extract"><span class="extract-syntax">label_namespace</span></span>
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">compile_with_run_time_debugging</span><span class="plain-syntax">; </span><span class="comment-syntax"> in the RULES command</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">ph_iname</span><span class="plain-syntax">; </span><span class="comment-syntax"> or NULL for inline phrases</span>
<span class="plain-syntax">} </span><span class="reserved-syntax">id_compilation_data</span><span class="plain-syntax">;</span>
</pre>
<ul class="endnotetexts"><li>The structure id_compilation_data is accessed in 3/fnc, 3/jl, 3/pr, 5/cii and here.</li></ul>
@ -241,7 +236,6 @@ value for its return kind: for example, the empty text for <span class="extract"
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">id_compilation_data</span><span class="plain-syntax"> </span><span class="function-syntax">CompileImperativeDefn::new_data</span><span class="plain-syntax">(</span><span class="identifier-syntax">parse_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">id_compilation_data</span><span class="plain-syntax"> </span><span class="identifier-syntax">phcd</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">phcd</span><span class="plain-syntax">.</span><span class="element-syntax">owning_module</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CompilationUnits::find</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">phcd</span><span class="plain-syntax">.</span><span class="element-syntax">id_stack_frame</span><span class="plain-syntax"> = </span><a href="3-sf.html#SP6" class="function-link"><span class="function-syntax">Frames::new</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">phcd</span><span class="plain-syntax">.</span><span class="element-syntax">at_least_one_compiled_form_needed</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
@ -327,7 +321,7 @@ package for the function:
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">CompileImperativeDefn::prepare_for_requests</span><span class="plain-syntax">(</span><span class="identifier-syntax">id_body</span><span class="plain-syntax"> *</span><span class="identifier-syntax">idb</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">idb</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">compilation_data</span><span class="plain-syntax">.</span><span class="element-syntax">requests_package</span><span class="plain-syntax"> =</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Hierarchy::package</span><span class="plain-syntax">(</span><span class="identifier-syntax">idb</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">compilation_data</span><span class="plain-syntax">.</span><span class="element-syntax">owning_module</span><span class="plain-syntax">, </span><span class="identifier-syntax">PHRASES_HAP</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Hierarchy::local_package_to</span><span class="plain-syntax">(</span><span class="identifier-syntax">PHRASES_HAP</span><span class="plain-syntax">, </span><span class="identifier-syntax">idb</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">head_of_defn</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">at</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="function-syntax">CompileImperativeDefn::requests_package</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">CompileImperativeDefn::requests_package</span></span>:<br/>Phrase Requests - <a href="3-pr.html#SP2_3">&#167;2.3</a><br/>Closures - <a href="3-cls.html#SP2">&#167;2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">id_body</span><span class="plain-syntax"> *</span><span class="identifier-syntax">idb</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">idb</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">compilation_data</span><span class="plain-syntax">.</span><span class="identifier-syntax">requests_package</span><span class="plain-syntax">;</span>

View file

@ -427,7 +427,7 @@ values representing verbs in story files compiled by Inform.
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">vc</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">vc_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><span class="identifier-syntax">vc</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">vc_conjugates</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">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">Hierarchy::package</span><span class="plain-syntax">(</span><span class="identifier-syntax">CompilationUnits::find</span><span class="plain-syntax">(</span><span class="identifier-syntax">vc</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">where_vc_created</span><span class="plain-syntax">), </span><span class="identifier-syntax">MVERBS_HAP</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Hierarchy::local_package_to</span><span class="plain-syntax">(</span><span class="identifier-syntax">MVERBS_HAP</span><span class="plain-syntax">, </span><span class="identifier-syntax">vc</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">where_vc_created</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">ANT</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">ANT</span><span class="plain-syntax">, </span><span class="string-syntax">"%A (modal)"</span><span class="plain-syntax">, &amp;(</span><span class="identifier-syntax">vc</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">tabulations</span><span class="plain-syntax">[</span><span class="constant-syntax">ACTIVE_VOICE</span><span class="plain-syntax">].</span><span class="element-syntax">vc_text</span><span class="plain-syntax">[</span><span class="constant-syntax">IS_TENSE</span><span class="plain-syntax">][</span><span class="constant-syntax">POSITIVE_SENSE</span><span class="plain-syntax">][</span><span class="constant-syntax">THIRD_PERSON</span><span class="plain-syntax">]));</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Hierarchy::markup</span><span class="plain-syntax">(</span><span class="identifier-syntax">R</span><span class="plain-syntax">, </span><span class="identifier-syntax">MVERB_NAME_HMD</span><span class="plain-syntax">, </span><span class="identifier-syntax">ANT</span><span class="plain-syntax">);</span>

View file

@ -264,15 +264,15 @@ For example, there's one group which goes something like:
</p>
<pre class="Preform-displayed-code all-displayed-code code-font">
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">Kraft</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">Kraft</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">Kraft</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">Kraft</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">Kräfte</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">Kräfte</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">Kräften</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">Kräfte</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">Kraft</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">Kraft</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">Kraft</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">Kraft</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">Kräfte</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">Kräfte</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">Kräften</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">Kräfte</span>
</pre>
<p class="commentary">and another which goes like:
</p>
<pre class="Preform-displayed-code all-displayed-code code-font">
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">Kamera</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">Kamera</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">Kamera</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">Kamera</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">Kameras</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">Kameras</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">Kameras</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">Kameras</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">Kamera</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">Kamera</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">Kamera</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">Kamera</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">Kameras</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">Kameras</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">Kameras</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">Kameras</span>
</pre>
<p class="commentary">For German, we might then have
</p>

View file

@ -516,11 +516,11 @@ of the kind which the constructor makes:
<span class="identifier-syntax">package_request</span><span class="plain-syntax"> *</span><span class="function-syntax">Kinds::Constructors::package</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">Kinds::Constructors::package</span></span>:<br/><a href="4-kc2.html#SP9_1">&#167;9.1</a><br/>Using Kinds - <a href="2-uk.html#SP28">&#167;28</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">kind_constructor</span><span class="plain-syntax"> *</span><span class="identifier-syntax">con</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">con</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">kc_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="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">con</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">where_defined_in_source_text</span><span class="plain-syntax">) {</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="identifier-syntax">CompilationUnits::find</span><span class="plain-syntax">(</span><span class="identifier-syntax">con</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">where_defined_in_source_text</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">con</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">kc_package</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Hierarchy::package</span><span class="plain-syntax">(</span><span class="identifier-syntax">C</span><span class="plain-syntax">, </span><span class="identifier-syntax">KIND_HAP</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">con</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">kc_package</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Hierarchy::local_package_to</span><span class="plain-syntax">(</span><span class="identifier-syntax">KIND_HAP</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">con</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">where_defined_in_source_text</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">con</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">superkind_set_at</span><span class="plain-syntax">) {</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="identifier-syntax">CompilationUnits::find</span><span class="plain-syntax">(</span><span class="identifier-syntax">con</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">superkind_set_at</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">con</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">kc_package</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Hierarchy::package</span><span class="plain-syntax">(</span><span class="identifier-syntax">C</span><span class="plain-syntax">, </span><span class="identifier-syntax">KIND_HAP</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">con</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">kc_package</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Hierarchy::local_package_to</span><span class="plain-syntax">(</span><span class="identifier-syntax">KIND_HAP</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">con</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">superkind_set_at</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">con</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">kc_package</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Hierarchy::synoptic_package</span><span class="plain-syntax">(</span><span class="identifier-syntax">KIND_HAP</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>
@ -528,7 +528,8 @@ of the kind which the constructor makes:
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Wordings::nonempty</span><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">))</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Hierarchy::markup_wording</span><span class="plain-syntax">(</span><span class="identifier-syntax">con</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">kc_package</span><span class="plain-syntax">, </span><span class="identifier-syntax">KIND_NAME_HMD</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">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">con</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">name_in_template_code</span><span class="plain-syntax">) &gt; </span><span class="constant-syntax">0</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Hierarchy::markup</span><span class="plain-syntax">(</span><span class="identifier-syntax">con</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">kc_package</span><span class="plain-syntax">, </span><span class="identifier-syntax">KIND_NAME_HMD</span><span class="plain-syntax">, </span><span class="identifier-syntax">con</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">name_in_template_code</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Hierarchy::markup</span><span class="plain-syntax">(</span><span class="identifier-syntax">con</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">kc_package</span><span class="plain-syntax">, </span><span class="identifier-syntax">KIND_NAME_HMD</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">con</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">name_in_template_code</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">Hierarchy::markup</span><span class="plain-syntax">(</span><span class="identifier-syntax">con</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">kc_package</span><span class="plain-syntax">, </span><span class="identifier-syntax">KIND_NAME_HMD</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"(anonymous kind)"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>

View file

@ -127,7 +127,7 @@ hierarchy. See <a href="2-ins.html#SP10" class="internal">Instances::to_kind</a>
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">enumeration_index</span><span class="plain-syntax">; </span><span class="comment-syntax"> within each non-object kind, instances are counted from 1</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">instance_index_data</span><span class="plain-syntax"> </span><span class="identifier-syntax">iid</span><span class="plain-syntax">; </span><span class="comment-syntax"> see </span><a href="../index-module/2-ins.html" class="internal">Instances (in index)</a>
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">instance_compilation_data</span><span class="plain-syntax"> </span><span class="identifier-syntax">icd</span><span class="plain-syntax">; </span><span class="comment-syntax"> see </span><a href="../runtime-module/4-ins.html" class="internal">Instances (in runtime)</a>
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">instance_compilation_data</span><span class="plain-syntax"> </span><span class="identifier-syntax">icd</span><span class="plain-syntax">; </span><span class="comment-syntax"> see </span><a href="../runtime-module/5-ins.html" class="internal">Instances (in runtime)</a>
<span class="plain-syntax"> </span><span class="identifier-syntax">CLASS_DEFINITION</span>
<span class="plain-syntax">} </span><span class="reserved-syntax">instance</span><span class="plain-syntax">;</span>
</pre>
@ -204,7 +204,7 @@ the same object may be thing number 17 but vehicle number 3 &mdash; and secondly
because we won't know the exact kind of objects until much later on; for now
the only thing we are sure of is that they are indeed objects. Enumeration
for objects within kinds is certainly useful, but it's harder to do and will
be done later on: see <a href="../runtime-module/4-ic.html" class="internal">Instance Counting (in runtime)</a>.
be done later on: see <a href="../runtime-module/5-ic.html" class="internal">Instance Counting (in runtime)</a>.
</p>
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Add the new instance to its enumeration</span><span class="named-paragraph-number">4.3</span></span><span class="comment-syntax"> =</span>

View file

@ -94,7 +94,7 @@ These variables are created by assertion sentences.
<p class="commentary">These semantics are so different that it makes no compelling sense to try to
give them a common implementation inside the compiler; so, nonlocal variables
are handled below, but local variables have a different implementation at
<a href="../imperative-module/2-lv.html" class="internal">Local Variables (in imperative)</a>.
<a href="../imperative-module/3-lv.html" class="internal">Local Variables (in imperative)</a>.
</p>
<p class="commentary">A pragmatic, but questionable,<sup id="fnref:2"><a href="#fn:2" rel="footnote">2</a></sup> implementation decision by Inform is that
@ -103,7 +103,7 @@ that happen not to vary.
</p>
<p class="commentary">Nonlocal variables are stored in all kinds of ways at run-time. See
<a href="../runtime-module/4-vrb.html" class="internal">Variables (in runtime)</a> for more.
<a href="../runtime-module/5-vrb.html" class="internal">Variables (in runtime)</a> for more.
</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> At one time the term used here was "quantity", which sounded philosophical

View file

@ -172,7 +172,6 @@ which all of the links run upwards to a common root &mdash; the <span class="ext
which represents the entire model.
<a href="#fnref:2" title="return to text"> &#x21A9;</a></p></li><li class="footnote" id="fn:3"><p class="inwebfootnote"><sup id="fnref:3"><a href="#fn:3" rel="footnote">3</a></sup> The subject hierarchy thus contains the same tree structure of
<a href="../kinds-module/2-tlok.html" class="internal">The Lattice of Kinds (in kinds)</a>, which is not a coincidence &mdash; see
//
but of course it includes instances and much else as well.
<a href="#fnref:3" title="return to text"> &#x21A9;</a></p></li></ul>
<p class="commentary firstcommentary"><a id="SP4" class="paragraph-anchor"></a><b>&#167;4. </b>The top of the inference hierarchy is essentially fixed, and contains a number

View file

@ -72,7 +72,7 @@ function togglePopup(material_id) {
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../compiler.html">Inform7</a></li><li><a href="index.html">knowledge</a></li><li><a href="index.html#4">Chapter 4: Subjects</a></li><li><b>Instance Subjects</b></li></ul></div>
<p class="purpose">The instances family of inference subjects.</p>
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>&#167;1. </b>See <a href="2-ins.html" class="internal">Instances</a> and <a href="../runtime-module/4-ins.html" class="internal">Instances (in runtime)</a> for more; this section is only
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>&#167;1. </b>See <a href="2-ins.html" class="internal">Instances</a> and <a href="../runtime-module/5-ins.html" class="internal">Instances (in runtime)</a> for more; this section is only
a go-between.
</p>

View file

@ -301,7 +301,7 @@ of whatever a plugin is concerned with, but which is not allowed to make
changes to the model as it would be understood by the author.
</p>
<p class="commentary">For example, the <a href="../runtime-module/4-ic.html" class="internal">Instance Counting (in runtime)</a> plugin adds low-level properties
<p class="commentary">For example, the <a href="../runtime-module/5-ic.html" class="internal">Instance Counting (in runtime)</a> plugin adds low-level properties
to improve run-time performance, but they have no names and cannot be referred
to or accessed by code written in Inform 7; they exist at the level of Inter only.
</p>

View file

@ -72,7 +72,7 @@ function togglePopup(material_id) {
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../compiler.html">Inform7</a></li><li><a href="index.html">runtime</a></li><li><a href="index.html#2">Chapter 2: Emission</a></li><li><b>Compilation Units</b></li></ul></div>
<p class="purpose">To identify which parts of the source text come from which source (the main source text, the Standard Rules, or another extension).</p>
<ul class="toc"><li><a href="2-cu.html#SP6">&#167;6. Current unit</a></li><li><a href="2-cu.html#SP7">&#167;7. Relating to Inter</a></li></ul><hr class="tocbar">
<ul class="toc"><li><a href="2-cu.html#SP6">&#167;6. Relating to Inter</a></li></ul><hr class="tocbar">
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>&#167;1. </b>Inform is a language in which it is semantically relevant which source file the
source text is coming from: unlike, say, C, where <span class="extract"><span class="extract-syntax">#include</span></span> allows files to include
@ -89,14 +89,17 @@ in (a) or (b) above. This section of code determines to which unit any new
definition (of, say, a property or kind) belongs.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="identifier-syntax">compilation_unit</span><span class="plain-syntax"> *</span><span class="identifier-syntax">source_text_unit</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">; </span><span class="comment-syntax"> the one for the main text</span>
</pre>
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>&#167;2. </b>We find these by performing a traverse of the parse tree, and looking for
level-0 headings, which are the nodes from which these blocks of source text hang:
</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">inter_presence</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">hanging_from</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">compilation_unit</span><span class="plain-syntax">;</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">CompilationUnits::determine</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">SyntaxTree::traverse</span><span class="plain-syntax">(</span><span class="identifier-syntax">Task::syntax_tree</span><span class="plain-syntax">(), </span><a href="2-cu.html#SP2" class="function-link"><span class="function-syntax">CompilationUnits::look_for_cu</span></a><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
@ -108,36 +111,41 @@ level-0 headings, which are the nodes from which these blocks of source text han
<span class="plain-syntax"> }</span>
<span class="plain-syntax">}</span>
<span class="identifier-syntax">compilation_unit</span><span class="plain-syntax"> *</span><span class="function-syntax">CompilationUnits::new</span><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</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="function-syntax">CompilationUnits::log</span><span class="plain-syntax">(</span><span class="reserved-syntax">compilation_unit</span><span class="plain-syntax"> *</span><span class="identifier-syntax">cu</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">cu</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">"&lt;null&gt;"</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">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">-&gt;</span><span class="element-syntax">hanging_from</span><span class="plain-syntax">));</span>
<span class="plain-syntax">}</span>
<span class="reserved-syntax">compilation_unit</span><span class="plain-syntax"> *</span><span class="function-syntax">CompilationUnits::new</span><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">from</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">source_location</span><span class="plain-syntax"> </span><span class="identifier-syntax">sl</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Wordings::location</span><span class="plain-syntax">(</span><span class="identifier-syntax">Node::get_text</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">sl</span><span class="plain-syntax">.</span><span class="identifier-syntax">file_of_origin</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="identifier-syntax">inform_extension</span><span class="plain-syntax"> *</span><span class="identifier-syntax">owner</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Extensions::corresponding_to</span><span class="plain-syntax">(</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Lexer::file_of_origin</span><span class="plain-syntax">(</span><span class="identifier-syntax">Wordings::first_wn</span><span class="plain-syntax">(</span><span class="identifier-syntax">Node::get_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">from</span><span class="plain-syntax">))));</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="identifier-syntax">Packaging::new_cu</span><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">C</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">hanging_from</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">compilation_unit</span><span class="plain-syntax"> *</span><span class="identifier-syntax">C</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CREATE</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">C</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">inter_presence</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">C</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">hanging_from</span><span class="plain-syntax"> = </span><span class="identifier-syntax">from</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Node::set_unit</span><span class="plain-syntax">(</span><span class="identifier-syntax">from</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-cu.html#SP4" class="function-link"><span class="function-syntax">CompilationUnits::propagate_downwards</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">from</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">down</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">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" 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</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">C</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">inter_presence</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Packaging::get_unit</span><span class="plain-syntax">(</span><a href="2-emt.html#SP2" 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">C</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">inter_presence</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Packaging::get_unit</span><span class="plain-syntax">(</span><a href="2-emt.html#SP2" 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">DISCARD_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="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">owner</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><a href="2-hrr.html#SP4" class="function-link"><span class="function-syntax">Hierarchy::markup</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">C</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">inter_presence</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">the_package</span><span class="plain-syntax">, </span><span class="constant-syntax">EXT_AUTHOR_HMD</span><span class="plain-syntax">, </span><span class="identifier-syntax">owner</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">as_copy</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">edition</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">work</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">raw_author_name</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-hrr.html#SP4" class="function-link"><span class="function-syntax">Hierarchy::markup</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">C</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">inter_presence</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">the_package</span><span class="plain-syntax">, </span><span class="constant-syntax">EXT_TITLE_HMD</span><span class="plain-syntax">, </span><span class="identifier-syntax">owner</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">as_copy</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">edition</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">work</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">raw_title</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-hrr.html#SP4" class="function-link"><span class="function-syntax">Hierarchy::markup</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">C</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">inter_presence</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">the_package</span><span class="plain-syntax">, </span><span class="constant-syntax">EXT_AUTHOR_HMD</span><span class="plain-syntax">, </span><span class="identifier-syntax">owner</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">as_copy</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">edition</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">work</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">raw_author_name</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-hrr.html#SP4" class="function-link"><span class="function-syntax">Hierarchy::markup</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">C</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">inter_presence</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">the_package</span><span class="plain-syntax">, </span><span class="constant-syntax">EXT_TITLE_HMD</span><span class="plain-syntax">, </span><span class="identifier-syntax">owner</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">as_copy</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">edition</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">work</span><span class="plain-syntax">-&gt;</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">owner</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">as_copy</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">edition</span><span class="plain-syntax">-&gt;</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">, &amp;</span><span class="identifier-syntax">N</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-hrr.html#SP4" class="function-link"><span class="function-syntax">Hierarchy::markup</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">C</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">inter_presence</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">the_package</span><span class="plain-syntax">, </span><span class="constant-syntax">EXT_VERSION_HMD</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#SP4" class="function-link"><span class="function-syntax">Hierarchy::markup</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">C</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">inter_presence</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">the_package</span><span class="plain-syntax">, </span><span class="constant-syntax">EXT_VERSION_HMD</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="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">owner</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">source_text_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">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">C</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
</pre>
<ul class="endnotetexts"><li>The structure compilation_unit is private to this section.</li></ul>
<p class="commentary firstcommentary"><a id="SP2_1" class="paragraph-anchor"></a><b>&#167;2.1. </b>Here we must find a unique name, valid as an Inter identifier: the code
compiled from the compilation unit will go into a package of that name.
</p>
@ -169,52 +177,36 @@ them. This is done by "propagating downwards", as follows.
<p class="commentary firstcommentary"><a id="SP4" class="paragraph-anchor"></a><b>&#167;4. </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">CompilationUnits::propagate_downwards</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">CompilationUnits::propagate_downwards</span></span>:<br/><a href="2-cu.html#SP2">&#167;2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">P</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">void</span><span class="plain-syntax"> </span><span class="function-syntax">CompilationUnits::propagate_downwards</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">CompilationUnits::propagate_downwards</span></span>:<br/><a href="2-cu.html#SP2">&#167;2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">P</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">while</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">Node::set_unit</span><span class="plain-syntax">(</span><span class="identifier-syntax">P</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-cu.html#SP4" class="function-link"><span class="function-syntax">CompilationUnits::propagate_downwards</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">P</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">down</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">P</span><span class="plain-syntax"> = </span><span class="identifier-syntax">P</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">next</span><span class="plain-syntax">;</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">CompilationUnits::assign_to_same_unit</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">CompilationUnits::assign_to_same_unit</span></span>:<br/>Text Substitutions - <a href="4-ts.html#SP11_1">&#167;11.1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">to</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">from</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Node::set_unit</span><span class="plain-syntax">(</span><span class="identifier-syntax">to</span><span class="plain-syntax">, </span><span class="identifier-syntax">Node::get_unit</span><span class="plain-syntax">(</span><span class="identifier-syntax">from</span><span class="plain-syntax">));</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP5" class="paragraph-anchor"></a><b>&#167;5. </b>As promised, then, given a parse node, we have to return its compilation unit:
but that's now easy, as we just have to read off the annotation made above &mdash;
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="identifier-syntax">compilation_unit</span><span class="plain-syntax"> *</span><span class="function-syntax">CompilationUnits::find</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">CompilationUnits::find</span></span>:<br/><a href="2-cu.html#SP6">&#167;6</a><br/>Hierarchy - <a href="2-hrr.html#SP4">&#167;4</a><br/>Variables - <a href="5-vrb.html#SP6">&#167;6</a><br/>Properties - <a href="5-prp.html#SP1">&#167;1</a><br/>Verbs at Run Time - <a href="5-vart.html#SP2">&#167;2</a><br/>Relations at Run Time - <a href="5-rart.html#SP1">&#167;1</a><br/>Runtime Support for Tables - <a href="5-rsft.html#SP3">&#167;3</a><br/>General Parsing Routines - <a href="8-gpr.html#SP4">&#167;4</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">from</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">compilation_unit</span><span class="plain-syntax"> *</span><span class="function-syntax">CompilationUnits::find</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">CompilationUnits::find</span></span>:<br/>Hierarchy - <a href="2-hrr.html#SP4">&#167;4</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</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">from</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">Node::get_unit</span><span class="plain-syntax">(</span><span class="identifier-syntax">from</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP6" class="paragraph-anchor"></a><b>&#167;6. Current unit. </b>Inform has a concept of the "current unit" it's working on, much as it has
a concept of "current sentence".
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="identifier-syntax">compilation_unit</span><span class="plain-syntax"> *</span><span class="identifier-syntax">current_CM</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
<span class="identifier-syntax">compilation_unit</span><span class="plain-syntax"> *</span><span class="function-syntax">CompilationUnits::current</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">CompilationUnits::current</span></span>:<br/>Text Substitutions - <a href="4-ts.html#SP4">&#167;4</a>, <a href="4-ts.html#SP11_1">&#167;11.1</a><br/>Measurements - <a href="5-msr.html#SP1">&#167;1</a><br/>Adjectives - <a href="5-adj.html#SP2">&#167;2</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">current_CM</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">CompilationUnits::set_current_to</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">CompilationUnits::set_current_to</span></span>:<br/>Text Substitutions - <a href="4-ts.html#SP11_1">&#167;11.1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">compilation_unit</span><span class="plain-syntax"> *</span><span class="identifier-syntax">CM</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">current_CM</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CM</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">CompilationUnits::set_current</span><span class="plain-syntax">(</span><span class="identifier-syntax">parse_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><span class="identifier-syntax">P</span><span class="plain-syntax">) </span><span class="identifier-syntax">current_CM</span><span class="plain-syntax"> = </span><a href="2-cu.html#SP5" class="function-link"><span class="function-syntax">CompilationUnits::find</span></a><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">else</span><span class="plain-syntax"> </span><span class="identifier-syntax">current_CM</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP7" class="paragraph-anchor"></a><b>&#167;7. Relating to Inter. </b>Creating the necessary package, of type <span class="extract"><span class="extract-syntax">_module</span></span>, is the work of the
<p class="commentary firstcommentary"><a id="SP6" class="paragraph-anchor"></a><b>&#167;6. Relating to Inter. </b>Creating the necessary package, of type <span class="extract"><span class="extract-syntax">_module</span></span>, is the work of the
Packaging code.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="identifier-syntax">module_package</span><span class="plain-syntax"> *</span><span class="function-syntax">CompilationUnits::inter_presence</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="identifier-syntax">module_package</span><span class="plain-syntax"> *</span><span class="function-syntax">CompilationUnits::inter_presence</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">-&gt;</span><span class="identifier-syntax">inter_presence</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">-&gt;</span><span class="element-syntax">inter_presence</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
</pre>
<nav role="progress"><div class="progresscontainer">

View file

@ -1735,18 +1735,22 @@ function togglePopup(material_id) {
<span class="plain-syntax"> </span><span class="identifier-syntax">Inter::Connectors::socket</span><span class="plain-syntax">(</span><a href="2-emt.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">ma_as</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">package_request</span><span class="plain-syntax"> *</span><span class="function-syntax">Hierarchy::package</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">Hierarchy::package</span></span>:<br/>Variables - <a href="5-vrb.html#SP6">&#167;6</a><br/>Properties - <a href="5-prp.html#SP1">&#167;1</a><br/>Measurements - <a href="5-msr.html#SP1">&#167;1</a><br/>Adjectives - <a href="5-adj.html#SP2">&#167;2</a>, <a href="5-adj.html#SP6">&#167;6</a><br/>Verbs at Run Time - <a href="5-vart.html#SP2">&#167;2</a><br/>Relations at Run Time - <a href="5-rart.html#SP1">&#167;1</a><br/>Runtime Support for Tables - <a href="5-rsft.html#SP3">&#167;3</a><br/>General Parsing Routines - <a href="8-gpr.html#SP4">&#167;4</a></span></button><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">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">hap_id</span><span class="plain-syntax">) {</span>
<span class="identifier-syntax">package_request</span><span class="plain-syntax"> *</span><span class="function-syntax">Hierarchy::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="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">hap_id</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">HierarchyLocations::attach_new_package</span><span class="plain-syntax">(</span><a href="2-emt.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><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">hap_id</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="function-syntax">Hierarchy::synoptic_package</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">Hierarchy::synoptic_package</span></span>:<br/>Properties - <a href="5-prp.html#SP11">&#167;11</a><br/>The Map - <a href="6-tm.html#SP1">&#167;1</a><br/>Command Grammars - <a href="8-cg.html#SP7">&#167;7</a><br/>Command Grammar Lines - <a href="8-cgl.html#SP2">&#167;2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">hap_id</span><span class="plain-syntax">) {</span>
<span class="identifier-syntax">package_request</span><span class="plain-syntax"> *</span><span class="function-syntax">Hierarchy::synoptic_package</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">Hierarchy::synoptic_package</span></span>:<br/>Properties - <a href="5-prp.html#SP11">&#167;11</a><br/>The Map - <a href="6-tm.html#SP1">&#167;1</a><br/>Command Grammars - <a href="8-cg.html#SP7">&#167;7</a><br/>Command Grammar Lines - <a href="8-cgl.html#SP2">&#167;2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">hap_id</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">HierarchyLocations::attach_new_package</span><span class="plain-syntax">(</span><a href="2-emt.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><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="identifier-syntax">hap_id</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="function-syntax">Hierarchy::local_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">Hierarchy::local_package</span></span>:<br/>List Together - <a href="5-lt.html#SP2">&#167;2</a><br/>Rules - <a href="5-rls.html#SP2">&#167;2</a>, <a href="5-rls.html#SP14">&#167;14</a><br/>Activities - <a href="5-act.html#SP2">&#167;2</a><br/>Equations Support - <a href="5-es.html#SP1">&#167;1</a><br/>Instances - <a href="5-ins.html#SP1">&#167;1</a><br/>Chronology - <a href="5-chr.html#SP2">&#167;2</a><br/>Actions - <a href="7-act.html#SP1">&#167;1</a><br/>Named Action Patterns - <a href="7-nap.html#SP1">&#167;1</a><br/>Command Grammars - <a href="8-cg.html#SP1">&#167;1</a><br/>Command Grammar Lines - <a href="8-cgl.html#SP2">&#167;2</a>, <a href="8-cgl.html#SP7">&#167;7</a><br/>Noun Filter Tokens - <a href="8-nft.html#SP2">&#167;2</a><br/>General Parsing Routines - <a href="8-gpr.html#SP3">&#167;3</a><br/>Looping Over Scope - <a href="8-los.html#SP2">&#167;2</a><br/>External Files - <a href="9-ef.html#SP1">&#167;1</a><br/>Test Scripts - <a href="10-ts.html#SP2">&#167;2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">hap_id</span><span class="plain-syntax">) {</span>
<span class="identifier-syntax">package_request</span><span class="plain-syntax"> *</span><span class="function-syntax">Hierarchy::local_package</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">Hierarchy::local_package</span></span>:<br/>List Together - <a href="5-lt.html#SP2">&#167;2</a><br/>Rules - <a href="5-rls.html#SP2">&#167;2</a>, <a href="5-rls.html#SP14">&#167;14</a><br/>Activities - <a href="5-act.html#SP2">&#167;2</a><br/>Equations Support - <a href="5-es.html#SP1">&#167;1</a><br/>Properties - <a href="5-prp.html#SP1">&#167;1</a><br/>Measurements - <a href="5-msr.html#SP1">&#167;1</a><br/>Instances - <a href="5-ins.html#SP1">&#167;1</a><br/>Adjectives - <a href="5-adj.html#SP2">&#167;2</a><br/>Chronology - <a href="5-chr.html#SP2">&#167;2</a><br/>Actions - <a href="7-act.html#SP1">&#167;1</a><br/>Named Action Patterns - <a href="7-nap.html#SP1">&#167;1</a><br/>Command Grammars - <a href="8-cg.html#SP1">&#167;1</a><br/>Command Grammar Lines - <a href="8-cgl.html#SP2">&#167;2</a>, <a href="8-cgl.html#SP7">&#167;7</a><br/>Noun Filter Tokens - <a href="8-nft.html#SP2">&#167;2</a><br/>General Parsing Routines - <a href="8-gpr.html#SP3">&#167;3</a><br/>Looping Over Scope - <a href="8-los.html#SP2">&#167;2</a><br/>External Files - <a href="9-ef.html#SP1">&#167;1</a><br/>Test Scripts - <a href="10-ts.html#SP2">&#167;2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">hap_id</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">HierarchyLocations::attach_new_package</span><span class="plain-syntax">(</span><a href="2-emt.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><a href="2-cu.html#SP5" class="function-link"><span class="function-syntax">CompilationUnits::find</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">current_sentence</span><span class="plain-syntax">), </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">hap_id</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="function-syntax">Hierarchy::local_package_to</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">Hierarchy::local_package_to</span></span>:<br/>Variables - <a href="5-vrb.html#SP6">&#167;6</a><br/>Adjectives - <a href="5-adj.html#SP6">&#167;6</a><br/>Verbs at Run Time - <a href="5-vart.html#SP2">&#167;2</a><br/>Relations at Run Time - <a href="5-rart.html#SP1">&#167;1</a><br/>Runtime Support for Tables - <a href="5-rsft.html#SP3">&#167;3</a><br/>General Parsing Routines - <a href="8-gpr.html#SP4">&#167;4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">hap_id</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">at</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">HierarchyLocations::attach_new_package</span><span class="plain-syntax">(</span><a href="2-emt.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><a href="2-cu.html#SP5" class="function-link"><span class="function-syntax">CompilationUnits::find</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">at</span><span class="plain-syntax">), </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">hap_id</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="function-syntax">Hierarchy::package_in_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">Hierarchy::package_in_enclosure</span></span>:<br/>Text Literals - <a href="4-tl.html#SP6">&#167;6</a>, <a href="4-tl.html#SP13_2">&#167;13.2</a><br/>Constant Lists - <a href="4-cl.html#SP1">&#167;1</a><br/>Runtime Support for Kinds - <a href="5-rsfk.html#SP6">&#167;6</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">hap_id</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">HierarchyLocations::attach_new_package</span><span class="plain-syntax">(</span><a href="2-emt.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">Packaging::enclosure</span><span class="plain-syntax">(</span><a href="2-emt.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">()), </span><span class="identifier-syntax">hap_id</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>

View file

@ -202,7 +202,6 @@ the list!);
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Kinds::Behaviour::is_subkind_of_object</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax"> = </span><a href="5-ic.html#SP7" class="function-link"><span class="function-syntax">PL::Counting::next_instance_of</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">K</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">I</span><span class="plain-syntax">) {</span>
<span class="comment-syntax"> LOOP_OVER_INSTANCES(I, K)</span>
<span class="plain-syntax"> </span><a href="2-emt.html#SP3" class="function-link"><span class="function-syntax">Emit::array_iname_entry</span></a><span class="plain-syntax">(</span><a href="5-ins.html#SP1" class="function-link"><span class="function-syntax">RTInstances::iname</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">I</span><span class="plain-syntax"> = </span><a href="5-ic.html#SP7" class="function-link"><span class="function-syntax">PL::Counting::next_instance_of</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">K</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>

View file

@ -206,28 +206,6 @@ behave more like dictionary words and the <span class="extract"><span class="ext
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="identifier-syntax">i</span><span class="plain-syntax">=</span><span class="identifier-syntax">from</span><span class="plain-syntax">; </span><span class="identifier-syntax">i</span><span class="plain-syntax">&lt;</span><span class="identifier-syntax">to</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">switch</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">[</span><span class="identifier-syntax">i</span><span class="plain-syntax">]) {</span>
<span class="comment-syntax"> case '\n':</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"\n"</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="character-syntax">'\t'</span><span class="plain-syntax">:</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"\n"</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">NEWLINE_IN_STRING:</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"\n"</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="character-syntax">'"'</span><span class="plain-syntax">: </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-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="character-syntax">'@'</span><span class="plain-syntax">:</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"@@64"</span><span class="plain-syntax">); </span><span class="identifier-syntax">esc_digit</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">; </span><span class="reserved-syntax">continue</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="character-syntax">'^'</span><span class="plain-syntax">:</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</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">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="character-syntax">'~'</span><span class="plain-syntax">:</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"@@126"</span><span class="plain-syntax">); </span><span class="identifier-syntax">esc_digit</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">; </span><span class="reserved-syntax">continue</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="character-syntax">'\\'</span><span class="plain-syntax">: </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"@{5C}"</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="character-syntax">'\''</span><span class="plain-syntax">:</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</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">break</span><span class="plain-syntax">;</span>
<span class="plain-syntax">*/</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="character-syntax">'['</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">n</span><span class="plain-syntax"> = </span><a href="4-ct.html#SP4" class="function-link"><span class="function-syntax">CompiledText::expand_unisub</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">p</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">n</span><span class="plain-syntax"> == -1) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"["</span><span class="plain-syntax">); </span><span class="reserved-syntax">else</span><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>

View file

@ -92,12 +92,12 @@ don't exist, and ignore them until they come up later.
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">rule</span><span class="plain-syntax"> *</span><span class="identifier-syntax">responding_to_rule</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">responding_to_marker</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">sentence_using_this</span><span class="plain-syntax">; </span><span class="comment-syntax"> where this occurs in source</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">owning_point</span><span class="plain-syntax">; </span><span class="comment-syntax"> shows which compilation unit this belongs to</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">local_names_existed_at_usage_time</span><span class="plain-syntax">; </span><span class="comment-syntax"> remember in case of problems</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">stack_frame</span><span class="plain-syntax"> *</span><span class="identifier-syntax">parked_stack_frame</span><span class="plain-syntax">; </span><span class="comment-syntax"> for cases where possible</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">ts_iname</span><span class="plain-syntax">; </span><span class="comment-syntax"> the I6 array for this</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">ts_routine_iname</span><span class="plain-syntax">; </span><span class="comment-syntax"> the routine to implement it</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">ts_sb_needed</span><span class="plain-syntax">; </span><span class="comment-syntax"> reference copy of small block needed as a constant?</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">compilation_unit</span><span class="plain-syntax"> *</span><span class="identifier-syntax">belongs_to_module</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">text_substitution</span><span class="plain-syntax">;</span>
</pre>
@ -161,7 +161,9 @@ to the same routines to print them.
<span class="plain-syntax"> </span><span class="identifier-syntax">package_request</span><span class="plain-syntax"> *</span><span class="identifier-syntax">PR</span><span class="plain-syntax"> = </span><a href="2-hrr.html#SP4" class="function-link"><span class="function-syntax">Hierarchy::package_within</span></a><span class="plain-syntax">(</span><span class="constant-syntax">LITERALS_HAP</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">ts</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">ts_iname</span><span class="plain-syntax"> = </span><a href="2-hrr.html#SP4" class="function-link"><span class="function-syntax">Hierarchy::make_iname_in</span></a><span class="plain-syntax">(</span><span class="constant-syntax">TEXT_SUBSTITUTION_HL</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">ts</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">ts_routine_iname</span><span class="plain-syntax"> = </span><a href="2-hrr.html#SP4" class="function-link"><span class="function-syntax">Hierarchy::make_iname_in</span></a><span class="plain-syntax">(</span><span class="constant-syntax">TEXT_SUBSTITUTION_FN_HL</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">ts</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">belongs_to_module</span><span class="plain-syntax"> = </span><a href="2-cu.html#SP6" class="function-link"><span class="function-syntax">CompilationUnits::current</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">ts</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">owning_point</span><span class="plain-syntax"> = </span><span class="identifier-syntax">current_sentence</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">id_body</span><span class="plain-syntax"> *</span><span class="identifier-syntax">idb</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Functions::defn_being_compiled</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">idb</span><span class="plain-syntax">) </span><span class="identifier-syntax">ts</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">owning_point</span><span class="plain-syntax"> = </span><span class="identifier-syntax">idb</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">head_of_defn</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">at</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">TEXT_SUBSTITUTIONS</span><span class="plain-syntax">, </span><span class="string-syntax">"Requesting text routine %d %08x %W %08x\n"</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">ts</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">allocation_id</span><span class="plain-syntax">, (</span><span class="reserved-syntax">int</span><span class="plain-syntax">) </span><span class="identifier-syntax">phsf</span><span class="plain-syntax">, </span><span class="identifier-syntax">W</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><span class="identifier-syntax">ts</span><span class="plain-syntax">;</span>
@ -456,9 +458,7 @@ a request for a new text substitution to be compiled later...
<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">ts_code_block</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Node::new</span><span class="plain-syntax">(</span><span class="identifier-syntax">IMPERATIVE_NT</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Node::set_unit</span><span class="plain-syntax">(</span><span class="identifier-syntax">ts_code_block</span><span class="plain-syntax">, </span><span class="identifier-syntax">ts</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">belongs_to_module</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">compilation_unit</span><span class="plain-syntax"> *</span><span class="identifier-syntax">cm</span><span class="plain-syntax"> = </span><a href="2-cu.html#SP6" class="function-link"><span class="function-syntax">CompilationUnits::current</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><a href="2-cu.html#SP6" class="function-link"><span class="function-syntax">CompilationUnits::set_current_to</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ts</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">belongs_to_module</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-cu.html#SP4" class="function-link"><span class="function-syntax">CompilationUnits::assign_to_same_unit</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ts_code_block</span><span class="plain-syntax">, </span><span class="identifier-syntax">ts</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">owning_point</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">ts_code_block</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">next</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Node::new</span><span class="plain-syntax">(</span><span class="identifier-syntax">UNKNOWN_NT</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Node::set_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">ts_code_block</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">next</span><span class="plain-syntax">, </span><span class="identifier-syntax">ts</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">unsubstituted_text</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Annotations::write_int</span><span class="plain-syntax">(</span><span class="identifier-syntax">ts_code_block</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">next</span><span class="plain-syntax">, </span><span class="identifier-syntax">from_text_substitution_ANNOT</span><span class="plain-syntax">, </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">);</span>
@ -467,7 +467,6 @@ a request for a new text substitution to be compiled later...
<span class="plain-syntax"> </span><span class="identifier-syntax">CompileBlocksAndLines::full_definition_body</span><span class="plain-syntax">(0, </span><span class="identifier-syntax">ts_code_block</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">down</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">Produce::rtrue</span><span class="plain-syntax">(</span><a href="2-emt.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">());</span>
<span class="plain-syntax"> </span><a href="2-cu.html#SP6" class="function-link"><span class="function-syntax">CompilationUnits::set_current_to</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">cm</span><span class="plain-syntax">);</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="4-ts.html#SP11">&#167;11</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP12" class="paragraph-anchor"></a><b>&#167;12. </b>See the "Responses" section for why, but we sometimes want to force

View file

@ -105,7 +105,7 @@ MathJax = {
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">RTAdjectives::initialise_compilation_data</span><span class="plain-syntax">(</span><span class="identifier-syntax">adjective</span><span class="plain-syntax"> *</span><span class="identifier-syntax">adj</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">adj</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">adjective_compilation</span><span class="plain-syntax">.</span><span class="element-syntax">aph_package</span><span class="plain-syntax"> =</span>
<span class="plain-syntax"> </span><a href="2-hrr.html#SP4" class="function-link"><span class="function-syntax">Hierarchy::package</span></a><span class="plain-syntax">(</span><a href="2-cu.html#SP6" class="function-link"><span class="function-syntax">CompilationUnits::current</span></a><span class="plain-syntax">(), </span><span class="constant-syntax">ADJECTIVES_HAP</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-hrr.html#SP4" class="function-link"><span class="function-syntax">Hierarchy::local_package</span></a><span class="plain-syntax">(</span><span class="constant-syntax">ADJECTIVES_HAP</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">adj</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">adjective_compilation</span><span class="plain-syntax">.</span><span class="element-syntax">aph_iname</span><span class="plain-syntax"> =</span>
<span class="plain-syntax"> </span><a href="2-hrr.html#SP4" class="function-link"><span class="function-syntax">Hierarchy::make_iname_in</span></a><span class="plain-syntax">(</span><span class="constant-syntax">ADJECTIVE_HL</span><span class="plain-syntax">, </span><span class="identifier-syntax">adj</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">adjective_compilation</span><span class="plain-syntax">.</span><span class="element-syntax">aph_package</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">=1; </span><span class="identifier-syntax">i</span><span class="plain-syntax">&lt;=</span><span class="identifier-syntax">NO_ATOM_TASKS</span><span class="plain-syntax">; </span><span class="identifier-syntax">i</span><span class="plain-syntax">++)</span>
@ -492,8 +492,7 @@ objects, if there is one; otherwise the first-declared meaning.
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">RTAdjectives::make_iname</span><span class="plain-syntax">(</span><span class="identifier-syntax">id_body</span><span class="plain-syntax"> *</span><span class="identifier-syntax">idb</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">CompileImperativeDefn::iname</span><span class="plain-syntax">(</span><span class="identifier-syntax">idb</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">package_request</span><span class="plain-syntax"> *</span><span class="identifier-syntax">R</span><span class="plain-syntax"> = </span><a href="2-hrr.html#SP4" class="function-link"><span class="function-syntax">Hierarchy::package</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">idb</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">compilation_data</span><span class="plain-syntax">.</span><span class="identifier-syntax">owning_module</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="constant-syntax">ADJECTIVE_PHRASES_HAP</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">R</span><span class="plain-syntax"> = </span><a href="2-hrr.html#SP4" class="function-link"><span class="function-syntax">Hierarchy::local_package_to</span></a><span class="plain-syntax">(</span><span class="constant-syntax">ADJECTIVE_PHRASES_HAP</span><span class="plain-syntax">, </span><span class="identifier-syntax">idb</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">head_of_defn</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">at</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">CompileImperativeDefn::set_iname</span><span class="plain-syntax">(</span><span class="identifier-syntax">idb</span><span class="plain-syntax">, </span><a href="2-hrr.html#SP4" class="function-link"><span class="function-syntax">Hierarchy::make_iname_in</span></a><span class="plain-syntax">(</span><span class="constant-syntax">DEFINITION_FN_HL</span><span class="plain-syntax">, </span><span class="identifier-syntax">R</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax">}</span>

View file

@ -84,6 +84,7 @@ manage that here.
<span class="identifier-syntax">inter_ti</span><span class="plain-syntax"> </span><span class="identifier-syntax">cs_sequence_counter</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">RTPropertyValues::emit_subject</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">RTPropertyValues::emit_subject</span></span>:<br/>Runtime Support for Kinds - <a href="5-rsfk.html#SP31">&#167;31</a><br/>Instances - <a href="5-ins.html#SP4">&#167;4</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">subj</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">OBJECT_COMPILATION</span><span class="plain-syntax">, </span><span class="string-syntax">"Compiling object definition for $j\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">subj</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">current_sentence</span><span class="plain-syntax"> = </span><span class="identifier-syntax">subj</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">infs_created_at</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax"> = </span><span class="identifier-syntax">KindSubjects::to_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">subj</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax"> = </span><span class="identifier-syntax">InstanceSubjects::to_instance</span><span class="plain-syntax">(</span><span class="identifier-syntax">subj</span><span class="plain-syntax">);</span>

View file

@ -73,8 +73,7 @@
<span class="plain-syntax">} </span><span class="reserved-syntax">measurement_compilation_data</span><span class="plain-syntax">;</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">RTMeasurements::make_iname</span><span class="plain-syntax">(</span><span class="identifier-syntax">measurement_definition</span><span class="plain-syntax"> *</span><span class="identifier-syntax">mdef</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">P</span><span class="plain-syntax"> =</span>
<span class="plain-syntax"> </span><a href="2-hrr.html#SP4" class="function-link"><span class="function-syntax">Hierarchy::package</span></a><span class="plain-syntax">(</span><a href="2-cu.html#SP6" class="function-link"><span class="function-syntax">CompilationUnits::current</span></a><span class="plain-syntax">(), </span><span class="constant-syntax">ADJECTIVE_MEANINGS_HAP</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">P</span><span class="plain-syntax"> = </span><a href="2-hrr.html#SP4" class="function-link"><span class="function-syntax">Hierarchy::local_package</span></a><span class="plain-syntax">(</span><span class="constant-syntax">ADJECTIVE_MEANINGS_HAP</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">mdef</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">compilation_data</span><span class="plain-syntax">.</span><span class="element-syntax">mdef_iname</span><span class="plain-syntax"> = </span><a href="2-hrr.html#SP4" class="function-link"><span class="function-syntax">Hierarchy::make_iname_in</span></a><span class="plain-syntax">(</span><span class="constant-syntax">MEASUREMENT_FN_HL</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">mdef</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">compilation_data</span><span class="plain-syntax">.</span><span class="element-syntax">property_schema_written</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>

View file

@ -94,7 +94,7 @@ function togglePopup(material_id) {
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">RTProperties::initialise_pcd</span><span class="plain-syntax">(</span><span class="identifier-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax">, </span><span class="identifier-syntax">package_request</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pkg</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="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">pkg</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">pkg</span><span class="plain-syntax"> = </span><a href="2-hrr.html#SP4" class="function-link"><span class="function-syntax">Hierarchy::package</span></a><span class="plain-syntax">(</span><a href="2-cu.html#SP5" class="function-link"><span class="function-syntax">CompilationUnits::find</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">current_sentence</span><span class="plain-syntax">), </span><span class="constant-syntax">PROPERTIES_HAP</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">pkg</span><span class="plain-syntax"> = </span><a href="2-hrr.html#SP4" class="function-link"><span class="function-syntax">Hierarchy::local_package</span></a><span class="plain-syntax">(</span><span class="constant-syntax">PROPERTIES_HAP</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-hrr.html#SP4" class="function-link"><span class="function-syntax">Hierarchy::markup_wording</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">pkg</span><span class="plain-syntax">, </span><span class="constant-syntax">PROPERTY_NAME_HMD</span><span class="plain-syntax">, </span><span class="identifier-syntax">prn</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">name</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">iname</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) {</span>

View file

@ -117,7 +117,7 @@ MathJax = {
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">bp</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 bp"</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">bp</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">imp</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">bp_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">bp</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">imp</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">bp_package</span><span class="plain-syntax"> =</span>
<span class="plain-syntax"> </span><a href="2-hrr.html#SP4" class="function-link"><span class="function-syntax">Hierarchy::package</span></a><span class="plain-syntax">(</span><a href="2-cu.html#SP5" class="function-link"><span class="function-syntax">CompilationUnits::find</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">bp</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">bp_created_at</span><span class="plain-syntax">), </span><span class="constant-syntax">RELATIONS_HAP</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-hrr.html#SP4" class="function-link"><span class="function-syntax">Hierarchy::local_package_to</span></a><span class="plain-syntax">(</span><span class="constant-syntax">RELATIONS_HAP</span><span class="plain-syntax">, </span><span class="identifier-syntax">bp</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">bp_created_at</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">bp</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">imp</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">bp_package</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>

View file

@ -135,7 +135,7 @@ kind as a strong kind ID.
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">RTTables::new_table</span><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">PN</span><span class="plain-syntax">, </span><span class="identifier-syntax">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">t</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">table_package</span><span class="plain-syntax"> = </span><a href="2-hrr.html#SP4" class="function-link"><span class="function-syntax">Hierarchy::package</span></a><span class="plain-syntax">(</span><a href="2-cu.html#SP5" class="function-link"><span class="function-syntax">CompilationUnits::find</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">PN</span><span class="plain-syntax">), </span><span class="constant-syntax">TABLES_HAP</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">t</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">table_package</span><span class="plain-syntax"> = </span><a href="2-hrr.html#SP4" class="function-link"><span class="function-syntax">Hierarchy::local_package_to</span></a><span class="plain-syntax">(</span><span class="constant-syntax">TABLES_HAP</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">t</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">table_identifier</span><span class="plain-syntax"> = </span><a href="2-hrr.html#SP4" class="function-link"><span class="function-syntax">Hierarchy::make_iname_in</span></a><span class="plain-syntax">(</span><span class="constant-syntax">TABLE_DATA_HL</span><span class="plain-syntax">, </span><span class="identifier-syntax">t</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">table_package</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>

View file

@ -105,8 +105,7 @@ function togglePopup(material_id) {
<span class="identifier-syntax">package_request</span><span class="plain-syntax"> *</span><span class="function-syntax">RTVerbs::package</span><span class="plain-syntax">(</span><span class="identifier-syntax">verb</span><span class="plain-syntax"> *</span><span class="identifier-syntax">V</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">where</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">V</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 verb 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">V</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">verb_compilation</span><span class="plain-syntax">.</span><span class="element-syntax">verb_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">V</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">verb_compilation</span><span class="plain-syntax">.</span><span class="element-syntax">verb_package</span><span class="plain-syntax"> =</span>
<span class="plain-syntax"> </span><a href="2-hrr.html#SP4" class="function-link"><span class="function-syntax">Hierarchy::package</span></a><span class="plain-syntax">(</span><a href="2-cu.html#SP5" class="function-link"><span class="function-syntax">CompilationUnits::find</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">where</span><span class="plain-syntax">), </span><span class="constant-syntax">VERBS_HAP</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">V</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">verb_compilation</span><span class="plain-syntax">.</span><span class="element-syntax">verb_package</span><span class="plain-syntax"> = </span><a href="2-hrr.html#SP4" class="function-link"><span class="function-syntax">Hierarchy::local_package_to</span></a><span class="plain-syntax">(</span><span class="constant-syntax">VERBS_HAP</span><span class="plain-syntax">, </span><span class="identifier-syntax">where</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">V</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">verb_compilation</span><span class="plain-syntax">.</span><span class="element-syntax">verb_package</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>

View file

@ -370,7 +370,7 @@ also to call <span class="extract"><span class="extract-syntax">RTVariables::com
<span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="function-syntax">RTVariables::iname</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">RTVariables::iname</span></span>:<br/><a href="5-vrb.html#SP7">&#167;7</a>, <a href="5-vrb.html#SP7_1">&#167;7.1</a><br/>Hierarchy - <a href="2-hrr.html#SP3">&#167;3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">nonlocal_variable</span><span class="plain-syntax"> *</span><span class="identifier-syntax">nlv</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">nlv</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">compilation_data</span><span class="plain-syntax">.</span><span class="element-syntax">nlv_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="identifier-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><a href="2-hrr.html#SP4" class="function-link"><span class="function-syntax">Hierarchy::package</span></a><span class="plain-syntax">(</span><a href="2-cu.html#SP5" class="function-link"><span class="function-syntax">CompilationUnits::find</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">nlv</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">nlv_created_at</span><span class="plain-syntax">), </span><span class="constant-syntax">VARIABLES_HAP</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-hrr.html#SP4" class="function-link"><span class="function-syntax">Hierarchy::local_package_to</span></a><span class="plain-syntax">(</span><span class="constant-syntax">VARIABLES_HAP</span><span class="plain-syntax">, </span><span class="identifier-syntax">nlv</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">nlv_created_at</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-hrr.html#SP4" class="function-link"><span class="function-syntax">Hierarchy::markup_wording</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">R</span><span class="plain-syntax">, </span><span class="constant-syntax">VARIABLE_NAME_HMD</span><span class="plain-syntax">, </span><span class="identifier-syntax">nlv</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">name</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">nlv</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">compilation_data</span><span class="plain-syntax">.</span><span class="element-syntax">nlv_iname</span><span class="plain-syntax"> = </span><a href="2-hrr.html#SP4" class="function-link"><span class="function-syntax">Hierarchy::make_iname_with_memo</span></a><span class="plain-syntax">(</span><span class="constant-syntax">VARIABLE_HL</span><span class="plain-syntax">, </span><span class="identifier-syntax">R</span><span class="plain-syntax">, </span><span class="identifier-syntax">nlv</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">name</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>

View file

@ -141,8 +141,7 @@ will simply compile a <span class="extract"><span class="extract-syntax">parse_n
<pre class="displayed-code all-displayed-code code-font">
<span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="function-syntax">UnderstandGeneralTokens::get_gv_parse_name</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">UnderstandGeneralTokens::get_gv_parse_name</span></span>:<br/><a href="8-gpr.html#SP5">&#167;5</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">command_grammar</span><span class="plain-syntax"> *</span><span class="identifier-syntax">cg</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">cg</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">compilation_data</span><span class="plain-syntax">.</span><span class="element-syntax">cg_parse_name_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="identifier-syntax">compilation_unit</span><span class="plain-syntax"> *</span><span class="identifier-syntax">C</span><span class="plain-syntax"> = </span><a href="2-cu.html#SP5" class="function-link"><span class="function-syntax">CompilationUnits::find</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">cg</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">where_cg_created</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">PR</span><span class="plain-syntax"> = </span><a href="2-hrr.html#SP4" class="function-link"><span class="function-syntax">Hierarchy::package</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">C</span><span class="plain-syntax">, </span><span class="constant-syntax">PARSE_NAMES_HAP</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">PR</span><span class="plain-syntax"> = </span><a href="2-hrr.html#SP4" class="function-link"><span class="function-syntax">Hierarchy::local_package_to</span></a><span class="plain-syntax">(</span><span class="constant-syntax">PARSE_NAMES_HAP</span><span class="plain-syntax">, </span><span class="identifier-syntax">cg</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">where_cg_created</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">cg</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">compilation_data</span><span class="plain-syntax">.</span><span class="element-syntax">cg_parse_name_iname</span><span class="plain-syntax"> = </span><a href="2-hrr.html#SP4" class="function-link"><span class="function-syntax">Hierarchy::make_iname_in</span></a><span class="plain-syntax">(</span><span class="constant-syntax">PARSE_NAME_FN_HL</span><span class="plain-syntax">, </span><span class="identifier-syntax">PR</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">cg</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">compilation_data</span><span class="plain-syntax">.</span><span class="element-syntax">cg_parse_name_iname</span><span class="plain-syntax">;</span>
@ -156,8 +155,7 @@ will simply compile a <span class="extract"><span class="extract-syntax">parse_n
<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">Visibility::any_property_visible_to_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">subj</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">parse_name_notice</span><span class="plain-syntax"> *</span><span class="identifier-syntax">notice</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CREATE</span><span class="plain-syntax">(</span><span class="reserved-syntax">parse_name_notice</span><span class="plain-syntax">);</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><a href="2-cu.html#SP5" class="function-link"><span class="function-syntax">CompilationUnits::find</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">subj</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">infs_created_at</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">PR</span><span class="plain-syntax"> = </span><a href="2-hrr.html#SP4" class="function-link"><span class="function-syntax">Hierarchy::package</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">C</span><span class="plain-syntax">, </span><span class="constant-syntax">PARSE_NAMES_HAP</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">PR</span><span class="plain-syntax"> = </span><a href="2-hrr.html#SP4" class="function-link"><span class="function-syntax">Hierarchy::local_package_to</span></a><span class="plain-syntax">(</span><span class="constant-syntax">PARSE_NAMES_HAP</span><span class="plain-syntax">, </span><span class="identifier-syntax">subj</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">infs_created_at</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">notice</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">pnn_iname</span><span class="plain-syntax"> = </span><a href="2-hrr.html#SP4" class="function-link"><span class="function-syntax">Hierarchy::make_iname_in</span></a><span class="plain-syntax">(</span><span class="constant-syntax">PARSE_NAME_DASH_FN_HL</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">notice</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">parse_subject</span><span class="plain-syntax"> = </span><span class="identifier-syntax">subj</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">notice</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">pnn_iname</span><span class="plain-syntax">;</span>

View file

@ -170,6 +170,7 @@ thoroughly parsed parts of the syntax tree:
<span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">InvocationLists::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">InvocationLists::new</span></span>:<br/>Conditions and Phrases - <a href="4-cap.html#SP10_1">&#167;10.1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</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">L</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Node::new</span><span class="plain-syntax">(</span><span class="identifier-syntax">INVOCATION_LIST_NT</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">Wordings::nonempty</span><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">)) </span><span class="identifier-syntax">Node::set_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">L</span><span class="plain-syntax">, </span><span class="identifier-syntax">W</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">CompilationUnits::assign_to_same_unit</span><span class="plain-syntax">(</span><span class="identifier-syntax">L</span><span class="plain-syntax">, </span><span class="identifier-syntax">current_sentence</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">L</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="function-syntax">InvocationLists::new_singleton</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">InvocationLists::new_singleton</span></span>:<br/>Conditions and Phrases - <a href="4-cap.html#SP8">&#167;8</a>, <a href="4-cap.html#SP9">&#167;9</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">inv</span><span class="plain-syntax">) {</span>

File diff suppressed because it is too large Load diff

View file

@ -1,14 +1,14 @@
Total memory consumption was 277891K = 271 MB
Total memory consumption was 277890K = 271 MB
64.4% was used for 1343714 objects, in 309314 frames in 224 x 800K = 179200K = 175 MB:
64.4% was used for 1349708 objects, in 309320 frames in 224 x 800K = 179200K = 175 MB:
9.3% inter_tree_node_array 37 x 8192 = 303104 objects, 26674336 bytes
5.6% linked_list 28954 objects, 16214240 bytes
5.6% linked_list 28953 objects, 16213680 bytes
5.2% text_stream_array 2676 x 100 = 267600 objects, 15071232 bytes
3.6% parse_node 129367 objects, 10349360 bytes
2.6% verb_conjugation 160 objects, 7425280 bytes
2.2% inter_symbol_array 71 x 1024 = 72704 objects, 6400224 bytes
1.8% parse_node_annotation_array 333 x 500 = 166500 objects, 5338656 bytes
1.9% parse_node_annotation_array 345 x 500 = 172500 objects, 5531040 bytes
1.1% pcalc_prop_array 24 x 1000 = 24000 objects, 3264768 bytes
1.1% map_data 670 objects, 3178480 bytes
0.9% kind_array 66 x 1000 = 66000 objects, 2642112 bytes
@ -17,18 +17,18 @@ Total memory consumption was 277891K = 271 MB
0.4% match_trie_array 10 x 1000 = 10000 objects, 1360320 bytes
0.4% i6_schema_array 21 x 100 = 2100 objects, 1260672 bytes
0.3% inter_name_array 23 x 1000 = 23000 objects, 1104736 bytes
0.3% id_body 940 objects, 1082880 bytes
0.3% inter_package 14551 objects, 1047672 bytes
0.3% id_body 940 objects, 1075360 bytes
0.3% inter_package 14550 objects, 1047600 bytes
0.3% adjective_meaning 202 objects, 1000304 bytes
0.3% excerpt_meaning 3098 objects, 966576 bytes
0.3% inter_symbols_table 14551 objects, 931264 bytes
0.3% inter_symbols_table 14550 objects, 931200 bytes
0.3% production 3885 objects, 901320 bytes
0.3% ptoken 8390 objects, 872560 bytes
0.3% grammatical_usage 3610 objects, 866400 bytes
0.3% individual_form 2560 objects, 860160 bytes
0.2% dictionary 17686 objects, 848928 bytes
0.2% dictionary 17685 objects, 848880 bytes
0.2% inter_schema_node 8663 objects, 831648 bytes
0.2% package_request 9284 objects, 816992 bytes
0.2% package_request 9283 objects, 816904 bytes
0.2% dict_entry_array 244 x 100 = 24400 objects, 788608 bytes
0.2% inter_name_generator_array 18 x 1000 = 18000 objects, 720576 bytes
0.2% unary_predicate_array 16 x 1000 = 16000 objects, 640512 bytes
@ -71,9 +71,9 @@ Total memory consumption was 277891K = 271 MB
---- cg_token 603 objects, 53064 bytes
---- property_inference_data 1315 objects, 52600 bytes
---- ap_clause_array 2 x 400 = 800 objects, 51264 bytes
---- text_substitution 436 objects, 48832 bytes
---- cg_line 230 objects, 47840 bytes
---- table 7 objects, 45528 bytes
---- text_substitution 436 objects, 45344 bytes
---- inter_node_list 750 objects, 42000 bytes
---- activity_list_array 1 x 1000 objects, 40032 bytes
---- anl_clause_array 1 x 1000 objects, 40032 bytes
@ -101,8 +101,8 @@ Total memory consumption was 277891K = 271 MB
---- method 341 objects, 16368 bytes
---- understanding_reference_array 2 x 100 = 200 objects, 16064 bytes
---- action_name_list_array 1 x 1000 objects, 16032 bytes
---- match_avinue_array 1 x 1000 objects, 16032 bytes
---- linked_list_item_array 1 x 1000 objects, 16032 bytes
---- match_avinue_array 1 x 1000 objects, 16032 bytes
---- to_phrase_request 59 objects, 15576 bytes
---- adjective 137 objects, 14248 bytes
---- booking_list 407 objects, 13024 bytes
@ -135,15 +135,15 @@ Total memory consumption was 277891K = 271 MB
---- method_set 104 objects, 3328 bytes
---- instance_usage_array 1 x 200 objects, 3232 bytes
---- kind_constructor_comparison_schema_array 1 x 100 objects, 3232 bytes
---- definition 44 objects, 3168 bytes
---- compatibility_specification 66 objects, 3168 bytes
---- definition 44 objects, 3168 bytes
---- inform_extension 19 objects, 3040 bytes
---- either_or_property_data 62 objects, 2976 bytes
---- property_of_value_storage 93 objects, 2976 bytes
---- submodule_request 70 objects, 2800 bytes
---- either_or_property_data 62 objects, 2976 bytes
---- submodule_request 69 objects, 2760 bytes
---- inter_construct 32 objects, 2560 bytes
---- part_of_inference_data 79 objects, 2528 bytes
---- parentage_inference_data 79 objects, 2528 bytes
---- part_of_inference_data 79 objects, 2528 bytes
---- kind_constructor_instance_array 1 x 100 objects, 2432 bytes
---- kind_constructor_casting_rule_array 1 x 100 objects, 2432 bytes
---- equation_symbol 30 objects, 2400 bytes
@ -151,25 +151,25 @@ Total memory consumption was 277891K = 271 MB
---- scene 1 object, 2096 bytes
---- use_option 29 objects, 1856 bytes
---- pronoun_usage 42 objects, 1680 bytes
---- activity_crossref_array 1 x 100 objects, 1632 bytes
---- table_contribution_array 1 x 100 objects, 1632 bytes
---- activity_crossref_array 1 x 100 objects, 1632 bytes
---- plugin 25 objects, 1600 bytes
---- pipeline_step 13 objects, 1560 bytes
---- kind_interaction 39 objects, 1560 bytes
---- pipeline_step 13 objects, 1560 bytes
---- inter_annotation_form 37 objects, 1480 bytes
---- noun_filter_token 22 objects, 1408 bytes
---- special_meaning_holder 33 objects, 1320 bytes
---- constant_phrase 20 objects, 1280 bytes
---- build_script 40 objects, 1280 bytes
---- constant_phrase 20 objects, 1280 bytes
---- invocation_options_array 1 x 100 objects, 1224 bytes
---- direction_inference_data 30 objects, 1200 bytes
---- hierarchy_metadatum 15 objects, 1200 bytes
---- direction_inference_data 30 objects, 1200 bytes
---- quantifier 16 objects, 1024 bytes
---- table_column 16 objects, 896 bytes
---- inbuild_requirement 22 objects, 880 bytes
---- pipeline_stage 18 objects, 864 bytes
---- control_structure_phrase 12 objects, 864 bytes
---- code_generation 1 object, 864 bytes
---- control_structure_phrase 12 objects, 864 bytes
---- cached_understanding 21 objects, 840 bytes
---- runtime_kind_structure 13 objects, 832 bytes
---- phrase_option_array 1 x 100 objects, 824 bytes
@ -182,71 +182,71 @@ Total memory consumption was 277891K = 271 MB
---- I6T_intervention 8 objects, 640 bytes
---- inter_warehouse_room 10 objects, 640 bytes
---- nascent_array 7 objects, 616 bytes
---- inbuild_search_result 15 objects, 600 bytes
---- named_rulebook_outcome 15 objects, 600 bytes
---- inbuild_search_result 15 objects, 600 bytes
---- rulebook_outcome 17 objects, 544 bytes
---- small_word_set 11 objects, 528 bytes
---- inform_kit 5 objects, 520 bytes
---- implication 13 objects, 520 bytes
---- inform_kit 5 objects, 520 bytes
---- inference_family 11 objects, 440 bytes
---- equation 4 objects, 416 bytes
---- i6_memory_setting 13 objects, 416 bytes
---- module_package 10 objects, 400 bytes
---- equation 4 objects, 416 bytes
---- dval_written 10 objects, 400 bytes
---- bp_family 12 objects, 384 bytes
---- module_package 10 objects, 400 bytes
---- article_usage 8 objects, 384 bytes
---- bp_family 12 objects, 384 bytes
---- source_file 5 objects, 360 bytes
---- inbuild_genre 7 objects, 336 bytes
---- pronoun 8 objects, 320 bytes
---- grammatical_category 8 objects, 320 bytes
---- door_dir_notice 5 objects, 320 bytes
---- up_family 9 objects, 288 bytes
---- grammatical_category 8 objects, 320 bytes
---- build_step 4 objects, 288 bytes
---- explicit_bp_data 5 objects, 280 bytes
---- up_family 9 objects, 288 bytes
---- door_to_notice 5 objects, 280 bytes
---- explicit_bp_data 5 objects, 280 bytes
---- inform_pipeline 4 objects, 256 bytes
---- verb_usage_tier 5 objects, 240 bytes
---- adjective_meaning_family 7 objects, 224 bytes
---- release_instructions 1 object, 208 bytes
---- test_scenario 1 object, 208 bytes
---- compilation_unit 5 objects, 200 bytes
---- release_instructions 1 object, 208 bytes
---- build_skill 5 objects, 200 bytes
---- compilation_unit 5 objects, 200 bytes
---- kit_dependency 4 objects, 192 bytes
---- plural_dictionary_entry 4 objects, 192 bytes
---- inform_project 1 object, 176 bytes
---- link_instruction 4 objects, 160 bytes
---- inference_subject_family 5 objects, 160 bytes
---- inter_architecture 4 objects, 160 bytes
---- code_generation_target 4 objects, 160 bytes
---- link_instruction 4 objects, 160 bytes
---- inter_architecture 4 objects, 160 bytes
---- imperative_defn_family 4 objects, 160 bytes
---- inference_subject_family 5 objects, 160 bytes
---- element_activation 4 objects, 128 bytes
---- codegen_pipeline 1 object, 128 bytes
---- inbuild_nest 3 objects, 120 bytes
---- local_block_value 2 objects, 112 bytes
---- inform_kit_ittt 2 objects, 96 bytes
---- compile_task_data 1 object, 80 bytes
---- list_together_routine 2 objects, 80 bytes
---- article 2 objects, 80 bytes
---- compile_task_data 1 object, 80 bytes
---- build_methodology 1 object, 56 bytes
---- inter_warehouse 1 object, 56 bytes
---- HTML_file_state 1 object, 48 bytes
---- figures_data 1 object, 48 bytes
---- star_invention 1 object, 48 bytes
---- kind_template_definition 1 object, 40 bytes
---- figures_data 1 object, 48 bytes
---- HTML_file_state 1 object, 48 bytes
---- parse_name_notice 1 object, 40 bytes
---- by_routine_bp_data 1 object, 40 bytes
---- loop_over_scope 1 object, 40 bytes
---- parse_name_notice 1 object, 40 bytes
---- kind_template_definition 1 object, 40 bytes
35.5% was used for memory not allocated for objects:
15.1% text stream storage 43166696 bytes in 273878 claims
3.4% dictionary storage 9949184 bytes in 17686 claims
15.1% text stream storage 43166672 bytes in 273876 claims
3.4% dictionary storage 9948672 bytes in 17685 claims
---- sorting 984 bytes in 3 claims
2.5% source text 7200000 bytes in 3 claims
3.7% source text details 10800000 bytes in 2 claims
---- linguistic stock array 81920 bytes in 2 claims
---- small word set array 105600 bytes in 22 claims
0.8% inter symbols storage 2447808 bytes in 15257 claims
0.8% inter symbols storage 2447680 bytes in 15256 claims
5.9% inter bytecode storage 16802796 bytes in 14 claims
3.0% inter links storage 8750208 bytes in 246 claims
0.5% instance-of-kind counting 1695204 bytes in 1 claim
@ -255,5 +255,5 @@ Total memory consumption was 277891K = 271 MB
---- emitter array storage 12320 bytes in 8 claims
---- code generation workspace for objects 9200 bytes in 9 claims
21.0% was overhead - 59862512 bytes = 58459K = 57 MB
20.9% was overhead - 59682008 bytes = 58283K = 56 MB

View file

@ -87,32 +87,32 @@ ROOT_NT
DEFN_CONT_NT'a room is air-conditioned' {unit: 4}
CODE_BLOCK_NT
CODE_BLOCK_NT {control structure: IF}
INVOCATION_LIST_NT'if it is outdoors' {colon_block_command}
INVOCATION_LIST_NT'if it is outdoors' {unit: 4} {colon_block_command}
INVOCATION_NT'if it is outdoors' {phrase invoked: <no-inter-name>}
CONDITION_CONTEXT_NT'it is outdoors'
TEST_PROPOSITION_NT'it is outdoors' {proposition: << outdoors('it') >>} {term: 'it'}
CODE_BLOCK_NT
INVOCATION_LIST_NT'no' {results_from_splitting} {indent: 1}
INVOCATION_LIST_NT'no' {unit: 4} {results_from_splitting} {indent: 1}
INVOCATION_NT'no' {phrase invoked: <no-inter-name>}
CODE_BLOCK_NT {control structure: IF}
INVOCATION_LIST_NT'if it is the pool hall and the air conditioner is switched o' {colon_block_command}
INVOCATION_LIST_NT'if it is the pool hall and the air conditioner is switched o' {unit: 4} {colon_block_command}
INVOCATION_NT'if it is the pool hall and the air conditioner is switched o' {phrase invoked: <no-inter-name>}
CONDITION_CONTEXT_NT'it is the pool hall and the air conditioner is switched off'
LOGICAL_AND_NT'it is the pool hall and the air conditioner is switched off'
TEST_PROPOSITION_NT'it is the pool hall' {proposition: << ('it' == 'the pool hall') >>} {term: 'it'}
TEST_PROPOSITION_NT'the air conditioner is switched off' {proposition: << switched off('the air conditioner') >>} {term: 'the air conditioner'}
CODE_BLOCK_NT
INVOCATION_LIST_NT'no' {results_from_splitting} {indent: 1}
INVOCATION_LIST_NT'no' {unit: 4} {results_from_splitting} {indent: 1}
INVOCATION_NT'no' {phrase invoked: <no-inter-name>}
CODE_BLOCK_NT {control structure: IF}
INVOCATION_LIST_NT'if it is protected by a door' {colon_block_command}
INVOCATION_LIST_NT'if it is protected by a door' {unit: 4} {colon_block_command}
INVOCATION_NT'if it is protected by a door' {phrase invoked: <no-inter-name>}
CONDITION_CONTEXT_NT'it is protected by a door'
TEST_PROPOSITION_NT'it is protected by a door' {proposition: << Exists x : kind=door(x) ^ protection(x, 'it') >>} {term: 'it'}
CODE_BLOCK_NT
INVOCATION_LIST_NT'yes' {results_from_splitting} {indent: 1}
INVOCATION_LIST_NT'yes' {unit: 4} {results_from_splitting} {indent: 1}
INVOCATION_NT'yes' {phrase invoked: <no-inter-name>}
INVOCATION_LIST_NT'no'
INVOCATION_LIST_NT'no' {unit: 4}
INVOCATION_NT'no' {phrase invoked: <no-inter-name>}
SENTENCE_NT'protection relates a door ( called x ) to a room ( called y ' {unit: 4} {classified}
VERB_NT'relates' {verb 'relate' 3p s act IS_TENSE +ve} {special meaning: new-relation}
@ -748,22 +748,22 @@ ROOT_NT
DEFN_CONT_NT'a door is proximate' {unit: 4}
CODE_BLOCK_NT
CODE_BLOCK_NT {control structure: IF}
INVOCATION_LIST_NT'if the front side of it is the location' {colon_block_command}
INVOCATION_LIST_NT'if the front side of it is the location' {unit: 4} {colon_block_command}
INVOCATION_NT'if the front side of it is the location' {phrase invoked: <no-inter-name>}
CONDITION_CONTEXT_NT'front side of it is the location'
TEST_PROPOSITION_NT'front side of it is the location' {proposition: << ('front side of it' == 'the location') >>} {term: 'front side of it'}
CODE_BLOCK_NT
INVOCATION_LIST_NT'yes' {results_from_splitting} {indent: 1}
INVOCATION_LIST_NT'yes' {unit: 4} {results_from_splitting} {indent: 1}
INVOCATION_NT'yes' {phrase invoked: <no-inter-name>}
CODE_BLOCK_NT {control structure: IF}
INVOCATION_LIST_NT'if the back side of it is the location' {colon_block_command}
INVOCATION_LIST_NT'if the back side of it is the location' {unit: 4} {colon_block_command}
INVOCATION_NT'if the back side of it is the location' {phrase invoked: <no-inter-name>}
CONDITION_CONTEXT_NT'back side of it is the location'
TEST_PROPOSITION_NT'back side of it is the location' {proposition: << ('back side of it' == 'the location') >>} {term: 'back side of it'}
CODE_BLOCK_NT
INVOCATION_LIST_NT'yes' {results_from_splitting} {indent: 1}
INVOCATION_LIST_NT'yes' {unit: 4} {results_from_splitting} {indent: 1}
INVOCATION_NT'yes' {phrase invoked: <no-inter-name>}
INVOCATION_LIST_NT'no'
INVOCATION_LIST_NT'no' {unit: 4}
INVOCATION_NT'no' {phrase invoked: <no-inter-name>}
IMPERATIVE_NT'before exiting when the player is in an indoors room' {unit: 4} {imperative definition: 915}
SENTENCE_NT'blank is a room' {unit: 4} {classified} {interpretation of subject: infs'key to the city'}

View file

@ -1,9 +1,9 @@
100.0% in inform7 run
65.7% in compilation to Inter
65.8% in compilation to Inter
25.4% in //ImperativeDefinitions::compile_first_block//
8.1% in //Sequence::compile_function_resources//
7.1% in //Strings::compile_responses//
5.8% in //InferenceSubjects::emit_all//
8.3% in //Sequence::compile_function_resources//
7.2% in //Strings::compile_responses//
5.9% in //InferenceSubjects::emit_all//
3.7% in //MajorNodes::pre_pass//
3.2% in //MajorNodes::pass_1//
1.9% in //RTRules::RulePrintingRule_routine//
@ -17,11 +17,11 @@
0.1% in //RTKinds::compile_data_type_support_routines//
0.1% in //RTRelations::compile_defined_relations//
0.1% in //Task::make_built_in_kind_constructors//
3.7% not specifically accounted for
31.9% in running Inter pipeline
10.5% in step preparation
9.8% in inter step 2/13: link
6.9% in inter step 13/13: generate inform6 -> auto.inf
3.4% not specifically accounted for
31.7% in running Inter pipeline
10.6% in step preparation
9.5% in inter step 2/13: link
7.0% in inter step 13/13: generate inform6 -> auto.inf
0.3% in inter step 12/13: eliminate-redundant-operations
0.3% in inter step 9/13: make-identifiers-unique
0.1% in inter step 10/13: reconcile-verbs
@ -31,6 +31,6 @@
0.1% in inter step 6/13: assimilate
0.1% in inter step 7/13: resolve-external-symbols
0.1% in inter step 8/13: inspect-plugs
2.7% not specifically accounted for
2.5% not specifically accounted for
1.9% in supervisor
0.4% not specifically accounted for

View file

@ -91,11 +91,8 @@ any additional sentences generated.
=
void MajorNodes::visit(parse_node *p, parse_node **last) {
global_pass_state.assembly_position = current_sentence;
compilation_unit *cm = CompilationUnits::current();
CompilationUnits::set_current(p);
*last = p;
@<Deal with an individual major node@>;
CompilationUnits::set_current_to(cm);
}
@ Headings cause us to begin a fresh topic of discussion, on a fresh piece of

View file

@ -132,8 +132,6 @@ First, some Preform grammar:
void AdjectivalDefinitionFamily::look_for_headers(parse_node *p) {
if (Node::get_type(p) == IMPERATIVE_NT)
if (<definition-header>(Node::get_text(p))) {
compilation_unit *cm = CompilationUnits::current();
CompilationUnits::set_current(p);
parse_node *q = NULL;
if (Node::get_type(p->next) == DEFN_CONT_NT) q = p->next;
else q = (p->down)?(p->down->down):NULL;
@ -150,8 +148,6 @@ void AdjectivalDefinitionFamily::look_for_headers(parse_node *p) {
@<Register the resulting adjective@>;
if (the_format != DEFINED_PHRASALLY) p->down = NULL;
CompilationUnits::set_current_to(cm);
}
}

View file

@ -184,6 +184,7 @@ DECLARE_CLASS(local_block_value)
@e adjective_iname_holder_CLASS
@e backdrop_found_in_notice_CLASS
@e bp_runtime_implementation_CLASS
@e compilation_unit_CLASS
@e definition_CLASS
@e door_dir_notice_CLASS
@e door_to_notice_CLASS
@ -205,6 +206,7 @@ DECLARE_CLASS(local_block_value)
DECLARE_CLASS(adjective_iname_holder)
DECLARE_CLASS(backdrop_found_in_notice)
DECLARE_CLASS(bp_runtime_implementation)
DECLARE_CLASS(compilation_unit)
DECLARE_CLASS(definition)
DECLARE_CLASS(door_dir_notice)
DECLARE_CLASS(door_to_notice)

View file

@ -262,10 +262,9 @@ which compilation unit the node belongs.
= (early code)
DECLARE_ANNOTATION_FUNCTIONS(unit, compilation_unit)
@ For tedious code-sequencing reasons, the annotation functions for |unit_ANNOT|
are made in //building: Building Module//.
@ =
MAKE_ANNOTATION_FUNCTIONS(unit, compilation_unit)
=
void CoreSyntax::declare_unit(void) {
Annotations::declare_type(unit_ANNOT, CoreSyntax::write_unit_ANNOT);
}
@ -800,6 +799,7 @@ void CoreSyntax::grant_code_permissions(void) {
Annotations::allow_for_category(CODE_NCAT, token_check_to_do_ANNOT);
Annotations::allow_for_category(CODE_NCAT, token_to_be_parsed_against_ANNOT);
Annotations::allow_for_category(CODE_NCAT, verb_problem_issued_ANNOT);
Annotations::allow(INVOCATION_LIST_NT, unit_ANNOT);
Annotations::allow(INVOCATION_LIST_NT, from_text_substitution_ANNOT);
Annotations::allow(INVOCATION_LIST_SAY_NT, suppress_newlines_ANNOT);
Annotations::allow(INVOCATION_NT, epistemological_status_ANNOT);

View file

@ -35,8 +35,6 @@ void CompileImperativeDefn::go(id_body *idb, shared_variable_access_list *legibl
LOGIF(PHRASE_COMPILATION, "Compiling phrase:\n$T", code_at);
current_sentence = code_at;
CompilationUnits::set_current(code_at);
stack_frame *frame = &(idb->compilation_data.id_stack_frame);
inter_name *iname = req?(req->req_iname):(CompileImperativeDefn::iname(idb));
@ -48,7 +46,6 @@ void CompileImperativeDefn::go(id_body *idb, shared_variable_access_list *legibl
Functions::end(save);
current_sentence = NULL;
CompilationUnits::set_current(NULL);
}
@<Compile some commentary about the function to follow@> =
@ -125,7 +122,6 @@ Each imperative definition body has the following data attached to it.
=
typedef struct id_compilation_data {
struct compilation_unit *owning_module;
struct stack_frame id_stack_frame;
int at_least_one_compiled_form_needed; /* do we still need to compile this? */
@ -141,13 +137,11 @@ typedef struct id_compilation_data {
struct linked_list *label_namespaces; /* of |label_namespace| */
int compile_with_run_time_debugging; /* in the RULES command */
struct inter_name *ph_iname; /* or NULL for inline phrases */
} id_compilation_data;
@ =
id_compilation_data CompileImperativeDefn::new_data(parse_node *p) {
id_compilation_data phcd;
phcd.owning_module = CompilationUnits::find(p);
phcd.id_stack_frame = Frames::new();
phcd.at_least_one_compiled_form_needed = TRUE;
@ -226,7 +220,7 @@ package for the function:
=
void CompileImperativeDefn::prepare_for_requests(id_body *idb) {
idb->compilation_data.requests_package =
Hierarchy::package(idb->compilation_data.owning_module, PHRASES_HAP);
Hierarchy::local_package_to(PHRASES_HAP, idb->head_of_defn->at);
}
package_request *CompileImperativeDefn::requests_package(id_body *idb) {
return idb->compilation_data.requests_package;

View file

@ -75,7 +75,6 @@ which represents the entire model.
[2] The subject hierarchy thus contains the same tree structure of
//kinds: The Lattice of Kinds//, which is not a coincidence -- see
//
but of course it includes instances and much else as well.
@ The top of the inference hierarchy is essentially fixed, and contains a number

View file

@ -16,13 +16,16 @@ The Inter hierarchy also splits, with named units representing each possibility
in (a) or (b) above. This section of code determines to which unit any new
definition (of, say, a property or kind) belongs.
=
compilation_unit *source_text_unit = NULL; /* the one for the main text */
@ We find these by performing a traverse of the parse tree, and looking for
level-0 headings, which are the nodes from which these blocks of source text hang:
=
typedef struct compilation_unit {
struct module_package *inter_presence;
struct parse_node *hanging_from;
CLASS_DEFINITION
} compilation_unit;
void CompilationUnits::determine(void) {
SyntaxTree::traverse(Task::syntax_tree(), CompilationUnits::look_for_cu);
}
@ -34,13 +37,19 @@ void CompilationUnits::look_for_cu(parse_node *p) {
}
}
void CompilationUnits::log(compilation_unit *cu) {
if (cu == NULL) LOG("<null>");
else LOG("unit'%W'", Node::get_text(cu->hanging_from));
}
compilation_unit *CompilationUnits::new(parse_node *from) {
source_location sl = Wordings::location(Node::get_text(from));
if (sl.file_of_origin == NULL) return NULL;
inform_extension *owner = Extensions::corresponding_to(
Lexer::file_of_origin(Wordings::first_wn(Node::get_text(from))));
compilation_unit *C = Packaging::new_cu();
compilation_unit *C = CREATE(compilation_unit);
C->inter_presence = NULL;
C->hanging_from = from;
Node::set_unit(from, C);
CompilationUnits::propagate_downwards(from->down, C);
@ -59,8 +68,6 @@ compilation_unit *CompilationUnits::new(parse_node *from) {
Hierarchy::markup(C->inter_presence->the_package, EXT_VERSION_HMD, V);
DISCARD_TEXT(V)
}
if (owner == NULL) source_text_unit = C;
return C;
}
@ -95,6 +102,10 @@ void CompilationUnits::propagate_downwards(parse_node *P, compilation_unit *C) {
}
}
void CompilationUnits::assign_to_same_unit(parse_node *to, parse_node *from) {
Node::set_unit(to, Node::get_unit(from));
}
@ As promised, then, given a parse node, we have to return its compilation unit:
but that's now easy, as we just have to read off the annotation made above --
@ -104,26 +115,6 @@ compilation_unit *CompilationUnits::find(parse_node *from) {
return Node::get_unit(from);
}
@h Current unit.
Inform has a concept of the "current unit" it's working on, much as it has
a concept of "current sentence".
=
compilation_unit *current_CM = NULL;
compilation_unit *CompilationUnits::current(void) {
return current_CM;
}
void CompilationUnits::set_current_to(compilation_unit *CM) {
current_CM = CM;
}
void CompilationUnits::set_current(parse_node *P) {
if (P) current_CM = CompilationUnits::find(P);
else current_CM = NULL;
}
@h Relating to Inter.
Creating the necessary package, of type |_module|, is the work of the
Packaging code.

View file

@ -1591,6 +1591,10 @@ package_request *Hierarchy::local_package(int hap_id) {
return HierarchyLocations::attach_new_package(Emit::tree(), CompilationUnits::find(current_sentence), NULL, hap_id);
}
package_request *Hierarchy::local_package_to(int hap_id, parse_node *at) {
return HierarchyLocations::attach_new_package(Emit::tree(), CompilationUnits::find(at), NULL, hap_id);
}
package_request *Hierarchy::package_in_enclosure(int hap_id) {
return HierarchyLocations::attach_new_package(Emit::tree(), NULL, Packaging::enclosure(Emit::tree()), hap_id);
}

View file

@ -133,28 +133,6 @@ void CompiledText::bq_from_wide_string(OUTPUT_STREAM, wchar_t *p) {
}
for (i=from; i<to; i++) {
switch(p[i]) {
/* case '\n':
WRITE("\n");
break;
case '\t':
WRITE("\n");
break;
case NEWLINE_IN_STRING:
WRITE("\n");
break;
case '"': WRITE("~"); break;
case '@':
WRITE("@@64"); esc_digit = TRUE; continue;
case '^':
WRITE("^");
break;
case '~':
WRITE("@@126"); esc_digit = TRUE; continue;
case '\\': WRITE("@{5C}"); break;
case '\'':
WRITE("'");
break;
*/
case '[': {
int n = CompiledText::expand_unisub(OUT, p, i);
if (n == -1) WRITE("["); else i = n;

View file

@ -125,7 +125,6 @@ inter_name *ConstantLists::get_instance_list(kind *K) {
if (Kinds::Behaviour::is_subkind_of_object(K)) {
instance *I = PL::Counting::next_instance_of(NULL, K);
while (I) {
// LOOP_OVER_INSTANCES(I, K)
Emit::array_iname_entry(RTInstances::iname(I));
I = PL::Counting::next_instance_of(I, K);
}

View file

@ -20,12 +20,12 @@ typedef struct text_substitution {
struct rule *responding_to_rule;
int responding_to_marker;
struct parse_node *sentence_using_this; /* where this occurs in source */
struct parse_node *owning_point; /* shows which compilation unit this belongs to */
int local_names_existed_at_usage_time; /* remember in case of problems */
struct stack_frame *parked_stack_frame; /* for cases where possible */
struct inter_name *ts_iname; /* the I6 array for this */
struct inter_name *ts_routine_iname; /* the routine to implement it */
int ts_sb_needed; /* reference copy of small block needed as a constant? */
struct compilation_unit *belongs_to_module;
CLASS_DEFINITION
} text_substitution;
@ -81,7 +81,9 @@ text_substitution *TextSubstitutions::new_text_substitution(wording W,
package_request *PR = Hierarchy::package_within(LITERALS_HAP, P);
ts->ts_iname = Hierarchy::make_iname_in(TEXT_SUBSTITUTION_HL, PR);
ts->ts_routine_iname = Hierarchy::make_iname_in(TEXT_SUBSTITUTION_FN_HL, PR);
ts->belongs_to_module = CompilationUnits::current();
ts->owning_point = current_sentence;
id_body *idb = Functions::defn_being_compiled();
if (idb) ts->owning_point = idb->head_of_defn->at;
LOGIF(TEXT_SUBSTITUTIONS, "Requesting text routine %d %08x %W %08x\n",
ts->allocation_id, (int) phsf, W, R);
return ts;
@ -348,9 +350,7 @@ a request for a new text substitution to be compiled later...
}
parse_node *ts_code_block = Node::new(IMPERATIVE_NT);
Node::set_unit(ts_code_block, ts->belongs_to_module);
compilation_unit *cm = CompilationUnits::current();
CompilationUnits::set_current_to(ts->belongs_to_module);
CompilationUnits::assign_to_same_unit(ts_code_block, ts->owning_point);
ts_code_block->next = Node::new(UNKNOWN_NT);
Node::set_text(ts_code_block->next, ts->unsubstituted_text);
Annotations::write_int(ts_code_block->next, from_text_substitution_ANNOT, TRUE);
@ -359,7 +359,6 @@ a request for a new text substitution to be compiled later...
CompileBlocksAndLines::full_definition_body(0, ts_code_block->down, FALSE);
Produce::rtrue(Emit::tree());
CompilationUnits::set_current_to(cm);
@ See the "Responses" section for why, but we sometimes want to force
the coroutine to go through the whole queue once, then go back to the

View file

@ -18,7 +18,7 @@ typedef struct adjective_compilation_data {
=
void RTAdjectives::initialise_compilation_data(adjective *adj) {
adj->adjective_compilation.aph_package =
Hierarchy::package(CompilationUnits::current(), ADJECTIVES_HAP);
Hierarchy::local_package(ADJECTIVES_HAP);
adj->adjective_compilation.aph_iname =
Hierarchy::make_iname_in(ADJECTIVE_HL, adj->adjective_compilation.aph_package);
for (int i=1; i<=NO_ATOM_TASKS; i++)
@ -378,8 +378,7 @@ void RTAdjectives::set_schemas_for_raw_Inter_function(adjective_meaning *am, wor
void RTAdjectives::make_iname(id_body *idb) {
if (CompileImperativeDefn::iname(idb) == NULL) {
package_request *R = Hierarchy::package(idb->compilation_data.owning_module,
ADJECTIVE_PHRASES_HAP);
package_request *R = Hierarchy::local_package_to(ADJECTIVE_PHRASES_HAP, idb->head_of_defn->at);
CompileImperativeDefn::set_iname(idb, Hierarchy::make_iname_in(DEFINITION_FN_HL, R));
}
}

View file

@ -12,6 +12,7 @@ manage that here.
inter_ti cs_sequence_counter = 0;
void RTPropertyValues::emit_subject(inference_subject *subj) {
LOGIF(OBJECT_COMPILATION, "Compiling object definition for $j\n", subj);
current_sentence = subj->infs_created_at;
kind *K = KindSubjects::to_kind(subj);
instance *I = InstanceSubjects::to_instance(subj);

View file

@ -11,8 +11,7 @@ typedef struct measurement_compilation_data {
} measurement_compilation_data;
void RTMeasurements::make_iname(measurement_definition *mdef) {
package_request *P =
Hierarchy::package(CompilationUnits::current(), ADJECTIVE_MEANINGS_HAP);
package_request *P = Hierarchy::local_package(ADJECTIVE_MEANINGS_HAP);
mdef->compilation_data.mdef_iname = Hierarchy::make_iname_in(MEASUREMENT_FN_HL, P);
mdef->compilation_data.property_schema_written = FALSE;
}

View file

@ -22,7 +22,7 @@ typedef struct property_compilation_data {
void RTProperties::initialise_pcd(property *prn, package_request *pkg, inter_name *iname) {
if (pkg == NULL) {
pkg = Hierarchy::package(CompilationUnits::find(current_sentence), PROPERTIES_HAP);
pkg = Hierarchy::local_package(PROPERTIES_HAP);
Hierarchy::markup_wording(pkg, PROPERTY_NAME_HMD, prn->name);
}
if (iname == NULL) {

View file

@ -31,7 +31,7 @@ package_request *RTRelations::package(binary_predicate *bp) {
if (bp == NULL) internal_error("null bp");
if (bp->imp->bp_package == NULL)
bp->imp->bp_package =
Hierarchy::package(CompilationUnits::find(bp->bp_created_at), RELATIONS_HAP);
Hierarchy::local_package_to(RELATIONS_HAP, bp->bp_created_at);
return bp->imp->bp_package;
}

View file

@ -62,7 +62,7 @@ inter_name *RTTables::new_tcu_iname(table *t) {
=
void RTTables::new_table(parse_node *PN, table *t) {
t->table_package = Hierarchy::package(CompilationUnits::find(PN), TABLES_HAP);
t->table_package = Hierarchy::local_package_to(TABLES_HAP, PN);
t->table_identifier = Hierarchy::make_iname_in(TABLE_DATA_HL, t->table_package);
}

View file

@ -280,7 +280,7 @@ int RTVariables::compile_frame_creator(shared_variable_set *set) {
inter_name *RTVariables::iname(nonlocal_variable *nlv) {
if (nlv->compilation_data.nlv_iname == NULL) {
package_request *R =
Hierarchy::package(CompilationUnits::find(nlv->nlv_created_at), VARIABLES_HAP);
Hierarchy::local_package_to(VARIABLES_HAP, nlv->nlv_created_at);
Hierarchy::markup_wording(R, VARIABLE_NAME_HMD, nlv->name);
nlv->compilation_data.nlv_iname = Hierarchy::make_iname_with_memo(VARIABLE_HL, R, nlv->name);
}

View file

@ -32,8 +32,7 @@ void RTVerbs::initialise_verb_form(verb_form *VF) {
package_request *RTVerbs::package(verb *V, parse_node *where) {
if (V == NULL) internal_error("no verb identity");
if (V->verb_compilation.verb_package == NULL)
V->verb_compilation.verb_package =
Hierarchy::package(CompilationUnits::find(where), VERBS_HAP);
V->verb_compilation.verb_package = Hierarchy::local_package_to(VERBS_HAP, where);
return V->verb_compilation.verb_package;
}

View file

@ -65,8 +65,7 @@ will simply compile a |parse_name| routine inline, in the usual I6 way.
=
inter_name *UnderstandGeneralTokens::get_gv_parse_name(command_grammar *cg) {
if (cg->compilation_data.cg_parse_name_iname == NULL) {
compilation_unit *C = CompilationUnits::find(cg->where_cg_created);
package_request *PR = Hierarchy::package(C, PARSE_NAMES_HAP);
package_request *PR = Hierarchy::local_package_to(PARSE_NAMES_HAP, cg->where_cg_created);
cg->compilation_data.cg_parse_name_iname = Hierarchy::make_iname_in(PARSE_NAME_FN_HL, PR);
}
return cg->compilation_data.cg_parse_name_iname;
@ -80,8 +79,7 @@ inter_name *UnderstandGeneralTokens::compile_parse_name_property(inference_subje
} else {
if (Visibility::any_property_visible_to_subject(subj, FALSE)) {
parse_name_notice *notice = CREATE(parse_name_notice);
compilation_unit *C = CompilationUnits::find(subj->infs_created_at);
package_request *PR = Hierarchy::package(C, PARSE_NAMES_HAP);
package_request *PR = Hierarchy::local_package_to(PARSE_NAMES_HAP, subj->infs_created_at);
notice->pnn_iname = Hierarchy::make_iname_in(PARSE_NAME_DASH_FN_HL, PR);
notice->parse_subject = subj;
symb = notice->pnn_iname;

View file

@ -85,6 +85,7 @@ thoroughly parsed parts of the syntax tree:
parse_node *InvocationLists::new(wording W) {
parse_node *L = Node::new(INVOCATION_LIST_NT);
if (Wordings::nonempty(W)) Node::set_text(L, W);
CompilationUnits::assign_to_same_unit(L, current_sentence);
return L;
}
parse_node *InvocationLists::new_singleton(wording W, parse_node *inv) {

View file

@ -18,7 +18,6 @@ We need to itemise the structures we'll want to allocate:
@e module_package_CLASS
@e submodule_identity_CLASS
@e submodule_request_CLASS
@e compilation_unit_CLASS
@e inter_schema_CLASS
@e inter_schema_node_CLASS
@e inter_schema_token_CLASS
@ -33,7 +32,6 @@ DECLARE_CLASS(package_request)
DECLARE_CLASS(module_package)
DECLARE_CLASS(submodule_identity)
DECLARE_CLASS(submodule_request)
DECLARE_CLASS(compilation_unit)
DECLARE_CLASS(inter_schema)
DECLARE_CLASS(inter_schema_node)
DECLARE_CLASS(inter_schema_token)
@ -43,7 +41,6 @@ DECLARE_CLASS_ALLOCATED_IN_ARRAYS(inter_name_generator, 1000)
#ifdef CORE_MODULE
MAKE_ANNOTATION_FUNCTIONS(explicit_iname, inter_name)
MAKE_ANNOTATION_FUNCTIONS(unit, compilation_unit)
#endif
@h The beginning.

View file

@ -322,27 +322,18 @@ hierarchy_attachment_point *HierarchyLocations::ap(inter_tree *I, int hap_id, lo
return hap;
}
#ifdef CORE_MODULE
package_request *HierarchyLocations::attach_new_package(inter_tree *I, compilation_unit *C, package_request *R, int hap_id) {
if ((hap_id < 0) || (hap_id >= NO_DEFINED_HAP_VALUES) || (I->site.haps_indexed_by_id[hap_id] == NULL))
internal_error("invalid HAP request");
hierarchy_attachment_point *hap = I->site.haps_indexed_by_id[hap_id];
if (hap->requirements.any_submodule_package_of_this_identity) {
#ifdef CORE_MODULE
R = Packaging::request_submodule(I, C, hap->requirements.any_submodule_package_of_this_identity);
#endif
#ifndef CORE_MODULE
internal_error("feature available only within inform7 compiler");
#endif
} else if (hap->requirements.this_exact_package)
} else if (hap->requirements.this_exact_package) {
R = hap->requirements.this_exact_package;
else if (hap->requirements.this_exact_package_not_yet_created >= 0) {
#ifdef CORE_MODULE
} else if (hap->requirements.this_exact_package_not_yet_created >= 0) {
R = Hierarchy::exotic_package(hap->requirements.this_exact_package_not_yet_created);
#endif
#ifndef CORE_MODULE
internal_error("feature available only within inform7 compiler");
#endif
} else if (hap->requirements.any_package_of_this_type) {
if ((R == NULL) || (R->eventual_type != PackageTypes::get(I, hap->requirements.any_package_of_this_type)))
internal_error("subpackage in wrong superpackage");
@ -350,6 +341,7 @@ package_request *HierarchyLocations::attach_new_package(inter_tree *I, compilati
return Packaging::request(I, Packaging::make_iname_within(R, hap->name_stem), PackageTypes::get(I, hap->type));
}
#endif
@h Hierarchy metadata.

View file

@ -274,19 +274,6 @@ inter_package *Packaging::incarnate(package_request *R) {
return R->actual_package;
}
@h Compilation modules.
=
typedef struct compilation_unit {
struct module_package *inter_presence;
struct parse_node *hanging_from;
CLASS_DEFINITION
} compilation_unit;
compilation_unit *Packaging::new_cu(void) {
return CREATE(compilation_unit);
}
@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

View file

@ -301,7 +301,7 @@ inter_name *Conjugation::conj_iname(verb_conjugation *vc) {
if (vc->vc_iname == NULL) {
if (vc->vc_conjugates == NULL) {
package_request *R =
Hierarchy::package(CompilationUnits::find(vc->where_vc_created), MVERBS_HAP);
Hierarchy::local_package_to(MVERBS_HAP, vc->where_vc_created);
TEMPORARY_TEXT(ANT)
WRITE_TO(ANT, "%A (modal)", &(vc->tabulations[ACTIVE_VOICE].vc_text[IS_TENSE][POSITIVE_SENSE][THIRD_PERSON]));
Hierarchy::markup(R, MVERB_NAME_HMD, ANT);

View file

@ -412,11 +412,11 @@ inter_name *Kinds::Constructors::UNKNOWN_iname(void) {
package_request *Kinds::Constructors::package(kind_constructor *con) {
if (con->kc_package == NULL) {
if (con->where_defined_in_source_text) {
compilation_unit *C = CompilationUnits::find(con->where_defined_in_source_text);
con->kc_package = Hierarchy::package(C, KIND_HAP);
con->kc_package = Hierarchy::local_package_to(KIND_HAP,
con->where_defined_in_source_text);
} else if (con->superkind_set_at) {
compilation_unit *C = CompilationUnits::find(con->superkind_set_at);
con->kc_package = Hierarchy::package(C, KIND_HAP);
con->kc_package = Hierarchy::local_package_to(KIND_HAP,
con->superkind_set_at);
} else {
con->kc_package = Hierarchy::synoptic_package(KIND_HAP);
}
@ -424,7 +424,8 @@ package_request *Kinds::Constructors::package(kind_constructor *con) {
if (Wordings::nonempty(W))
Hierarchy::markup_wording(con->kc_package, KIND_NAME_HMD, W);
else if (Str::len(con->name_in_template_code) > 0)
Hierarchy::markup(con->kc_package, KIND_NAME_HMD, con->name_in_template_code);
Hierarchy::markup(con->kc_package, KIND_NAME_HMD,
con->name_in_template_code);
else
Hierarchy::markup(con->kc_package, KIND_NAME_HMD, I"(anonymous kind)");
}