1
0
Fork 0
mirror of https://github.com/ganelson/inform.git synced 2024-07-03 07:24:58 +03:00

Further simplified expression of hierarchy

This commit is contained in:
Graham Nelson 2019-04-14 11:46:13 +01:00
parent 905274eee1
commit 263b3d9181
49 changed files with 1991 additions and 1740 deletions

View file

@ -125,7 +125,9 @@
<span class="definitionkeyword">enum</span> <span class="constant">package_request_MT</span>
<span class="definitionkeyword">enum</span> <span class="constant">named_resource_location_MT</span>
<span class="definitionkeyword">enum</span> <span class="constant">hierarchy_attachment_point_MT</span>
<span class="definitionkeyword">enum</span> <span class="constant">subpackage_request_counter_MT</span>
<span class="definitionkeyword">enum</span> <span class="constant">submodule_request_counter_MT</span>
<span class="definitionkeyword">enum</span> <span class="constant">submodule_identity_MT</span>
<span class="definitionkeyword">enum</span> <span class="constant">submodule_request_MT</span>
</pre>
<p class="inwebparagraph"><a id="SP3"></a><b>&#167;3. </b>Deep breath, then: the following macros define several hundred functions.
</p>
@ -210,7 +212,9 @@
<span class="identifier">ALLOCATE_INDIVIDUALLY</span><span class="plain">(</span><span class="reserved">package_request</span><span class="plain">)</span>
<span class="identifier">ALLOCATE_INDIVIDUALLY</span><span class="plain">(</span><span class="reserved">named_resource_location</span><span class="plain">)</span>
<span class="identifier">ALLOCATE_INDIVIDUALLY</span><span class="plain">(</span><span class="reserved">hierarchy_attachment_point</span><span class="plain">)</span>
<span class="identifier">ALLOCATE_INDIVIDUALLY</span><span class="plain">(</span><span class="reserved">subpackage_request_counter</span><span class="plain">)</span>
<span class="identifier">ALLOCATE_INDIVIDUALLY</span><span class="plain">(</span><span class="reserved">submodule_request_counter</span><span class="plain">)</span>
<span class="identifier">ALLOCATE_INDIVIDUALLY</span><span class="plain">(</span><span class="reserved">submodule_identity</span><span class="plain">)</span>
<span class="identifier">ALLOCATE_INDIVIDUALLY</span><span class="plain">(</span><span class="reserved">submodule_request</span><span class="plain">)</span>
</pre>
<p class="inwebparagraph"></p>

View file

@ -60,7 +60,7 @@ kinds being compiled to an I6 <code class="display"><span class="extract">Class<
<p class="inwebparagraph"></p>
<p class="endnote">The function Kinds::RunTime::I6_classname is used in <a href="#SP27">&#167;27</a>, 6/bp (<a href="6-bp.html#SP25">&#167;25</a>), 6/rlt (<a href="6-rlt.html#SP29_2">&#167;29.2</a>, <a href="6-rlt.html#SP29_3">&#167;29.3</a>, <a href="6-rlt.html#SP29_4">&#167;29.4</a>, <a href="6-rlt.html#SP29_5">&#167;29.5</a>, <a href="6-rlt.html#SP29_6">&#167;29.6</a>), 12/ter (<a href="12-ter.html#SP8_6">&#167;8.6</a>), 12/ca (<a href="12-ca.html#SP6_2">&#167;6.2</a>), 12/dtd (<a href="12-dtd.html#SP24">&#167;24</a>), 13/kak (<a href="13-kak.html#SP2">&#167;2</a>), 25/cii (<a href="25-cii.html#SP3_1_1_4_7_1">&#167;3.1.1.4.7.1</a>), 26/iti (<a href="26-iti.html#SP9">&#167;9</a>), 27/is (<a href="27-is.html#SP31_8_1">&#167;31.8.1</a>), 27/hr (<a href="27-hr.html#SP5">&#167;5</a>).</p>
<p class="endnote">The function Kinds::RunTime::I6_classname is used in <a href="#SP27">&#167;27</a>, 6/bp (<a href="6-bp.html#SP25">&#167;25</a>), 6/rlt (<a href="6-rlt.html#SP29_2">&#167;29.2</a>, <a href="6-rlt.html#SP29_3">&#167;29.3</a>, <a href="6-rlt.html#SP29_4">&#167;29.4</a>, <a href="6-rlt.html#SP29_5">&#167;29.5</a>, <a href="6-rlt.html#SP29_6">&#167;29.6</a>), 12/ter (<a href="12-ter.html#SP8_6">&#167;8.6</a>), 12/ca (<a href="12-ca.html#SP6_2">&#167;6.2</a>), 12/dtd (<a href="12-dtd.html#SP24">&#167;24</a>), 13/kak (<a href="13-kak.html#SP2">&#167;2</a>), 25/cii (<a href="25-cii.html#SP3_1_1_4_7_1">&#167;3.1.1.4.7.1</a>), 26/iti (<a href="26-iti.html#SP9">&#167;9</a>), 27/is (<a href="27-is.html#SP31_8_1">&#167;31.8.1</a>), 27/hr (<a href="27-hr.html#SP4">&#167;4</a>).</p>
<p class="endnote">The function Kinds::RunTime::I6_classnumber is used in 16/ic (<a href="16-ic.html#SP6">&#167;6</a>, <a href="16-ic.html#SP12_2">&#167;12.2</a>), 27/in (<a href="27-in.html#SP4">&#167;4</a>).</p>
@ -750,8 +750,7 @@ compile under Inform 6.
<span class="identifier">DISCARD_TEXT</span><span class="plain">(</span><span class="identifier">TEMP</span><span class="plain">);</span>
<span class="functiontext">InterNames::attach_memo</span><span class="plain">(</span><span class="identifier">rks</span><span class="plain">-</span><span class="element">&gt;rks_iname</span><span class="plain">, </span><span class="identifier">W</span><span class="plain">);</span>
<span class="functiontext">InterNames::to_symbol</span><span class="plain">(</span><span class="identifier">rks</span><span class="plain">-</span><span class="element">&gt;rks_iname</span><span class="plain">);</span>
<span class="identifier">rks</span><span class="plain">-</span><span class="element">&gt;rks_dv_iname</span><span class="plain"> = </span><span class="functiontext">InterNames::one_off</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"default_value"</span><span class="plain">, </span><span class="identifier">PR</span><span class="plain">);</span>
<span class="identifier">Inter::Symbols::set_flag</span><span class="plain">(</span><span class="functiontext">InterNames::to_symbol</span><span class="plain">(</span><span class="identifier">rks</span><span class="plain">-</span><span class="element">&gt;rks_dv_iname</span><span class="plain">), </span><span class="identifier">MAKE_NAME_UNIQUE</span><span class="plain">);</span>
<span class="identifier">rks</span><span class="plain">-</span><span class="element">&gt;rks_dv_iname</span><span class="plain"> = </span><span class="functiontext">Hierarchy::make_iname_in</span><span class="plain">(</span><span class="constant">DEFAULT_VALUE_HL</span><span class="plain">, </span><span class="identifier">PR</span><span class="plain">);</span>
</pre>
<p class="inwebparagraph"></p>

View file

@ -112,10 +112,8 @@ but also (in most cases) a <code class="display"><span class="extract">TX_S_*</s
<span class="identifier">resp</span><span class="plain">-</span><span class="element">&gt;via_I6</span><span class="plain"> = </span><span class="identifier">via_I6</span><span class="plain">;</span>
<span class="identifier">resp</span><span class="plain">-</span><span class="element">&gt;via_I6_routine_compiled</span><span class="plain"> = </span><span class="identifier">FALSE</span><span class="plain">;</span>
<span class="identifier">resp</span><span class="plain">-</span><span class="element">&gt;resp_package</span><span class="plain"> = </span><span class="functiontext">Hierarchy::package_within</span><span class="plain">(</span><span class="constant">RESPONSES_HAP</span><span class="plain">, </span><span class="functiontext">Rules::package</span><span class="plain">(</span><span class="identifier">resp</span><span class="plain">-</span><span class="element">&gt;responding_rule</span><span class="plain">));</span>
<span class="identifier">resp</span><span class="plain">-</span><span class="element">&gt;resp_iname</span><span class="plain"> = </span><span class="functiontext">InterNames::one_off</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"launcher"</span><span class="plain">, </span><span class="identifier">resp</span><span class="plain">-</span><span class="element">&gt;resp_package</span><span class="plain">);</span>
<span class="identifier">Inter::Symbols::set_flag</span><span class="plain">(</span><span class="functiontext">InterNames::to_symbol</span><span class="plain">(</span><span class="identifier">resp</span><span class="plain">-</span><span class="element">&gt;resp_iname</span><span class="plain">), </span><span class="identifier">MAKE_NAME_UNIQUE</span><span class="plain">);</span>
<span class="identifier">resp</span><span class="plain">-</span><span class="element">&gt;constant_iname</span><span class="plain"> = </span><span class="functiontext">InterNames::one_off</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"as_constant"</span><span class="plain">, </span><span class="identifier">resp</span><span class="plain">-</span><span class="element">&gt;resp_package</span><span class="plain">);</span>
<span class="identifier">Inter::Symbols::set_flag</span><span class="plain">(</span><span class="functiontext">InterNames::to_symbol</span><span class="plain">(</span><span class="identifier">resp</span><span class="plain">-</span><span class="element">&gt;constant_iname</span><span class="plain">), </span><span class="identifier">MAKE_NAME_UNIQUE</span><span class="plain">);</span>
<span class="identifier">resp</span><span class="plain">-</span><span class="element">&gt;resp_iname</span><span class="plain"> = </span><span class="functiontext">Hierarchy::make_iname_in</span><span class="plain">(</span><span class="constant">AS_BLOCK_CONSTANT_HL</span><span class="plain">, </span><span class="identifier">resp</span><span class="plain">-</span><span class="element">&gt;resp_package</span><span class="plain">);</span>
<span class="identifier">resp</span><span class="plain">-</span><span class="element">&gt;constant_iname</span><span class="plain"> = </span><span class="functiontext">Hierarchy::make_iname_in</span><span class="plain">(</span><span class="constant">AS_CONSTANT_HL</span><span class="plain">, </span><span class="identifier">resp</span><span class="plain">-</span><span class="element">&gt;resp_package</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">VH</span><span class="plain">) {</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">Holsters::data_acceptable</span><span class="plain">(</span><span class="identifier">VH</span><span class="plain">)) {</span>
<span class="functiontext">Emit::val_iname</span><span class="plain">(</span><span class="identifier">K_value</span><span class="plain">, </span><span class="functiontext">Strings::response_launcher_iname</span><span class="plain">(</span><span class="identifier">resp</span><span class="plain">));</span>
@ -166,9 +164,7 @@ a call to an activity based on that value:
<pre class="displaydefn">
<span class="reserved">package_request</span><span class="plain"> *</span><span class="identifier">R</span><span class="plain"> = </span><span class="identifier">resp</span><span class="plain">-</span><span class="element">&gt;resp_package</span><span class="plain">;</span>
<span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">launcher</span><span class="plain"> =</span>
<span class="functiontext">Packaging::function</span><span class="plain">(</span><span class="functiontext">InterNames::one_off</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"launcher_fn"</span><span class="plain">, </span><span class="identifier">R</span><span class="plain">), </span><span class="identifier">R</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">);</span>
<span class="identifier">Inter::Symbols::set_flag</span><span class="plain">(</span><span class="functiontext">InterNames::to_symbol</span><span class="plain">(</span><span class="identifier">launcher</span><span class="plain">), </span><span class="identifier">MAKE_NAME_UNIQUE</span><span class="plain">);</span>
<span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">launcher</span><span class="plain"> = </span><span class="functiontext">Hierarchy::make_iname_in</span><span class="plain">(</span><span class="constant">LAUNCHER_HL</span><span class="plain">, </span><span class="identifier">R</span><span class="plain">);</span>
<span class="reserved">packaging_state</span><span class="plain"> </span><span class="identifier">save</span><span class="plain"> = </span><span class="functiontext">Routines::begin</span><span class="plain">(</span><span class="identifier">launcher</span><span class="plain">);</span>

View file

@ -202,8 +202,7 @@ some of these fields have been properly filled in.
<span class="identifier">t</span><span class="plain">-</span><span class="element">&gt;amendment_of</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">t</span><span class="plain">-</span><span class="element">&gt;has_been_amended</span><span class="plain"> = </span><span class="identifier">FALSE</span><span class="plain">;</span>
<span class="identifier">t</span><span class="plain">-</span><span class="element">&gt;table_package</span><span class="plain"> = </span><span class="functiontext">Hierarchy::local_package</span><span class="plain">(</span><span class="constant">TABLES_HAP</span><span class="plain">);</span>
<span class="identifier">t</span><span class="plain">-</span><span class="element">&gt;table_identifier</span><span class="plain"> = </span><span class="functiontext">InterNames::one_off</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"data"</span><span class="plain">, </span><span class="identifier">t</span><span class="plain">-</span><span class="element">&gt;table_package</span><span class="plain">);</span>
<span class="identifier">Inter::Symbols::set_flag</span><span class="plain">(</span><span class="functiontext">InterNames::to_symbol</span><span class="plain">(</span><span class="identifier">t</span><span class="plain">-</span><span class="element">&gt;table_identifier</span><span class="plain">), </span><span class="identifier">MAKE_NAME_UNIQUE</span><span class="plain">);</span>
<span class="identifier">t</span><span class="plain">-</span><span class="element">&gt;table_identifier</span><span class="plain"> = </span><span class="functiontext">Hierarchy::make_iname_in</span><span class="plain">(</span><span class="constant">TABLE_DATA_HL</span><span class="plain">, </span><span class="identifier">t</span><span class="plain">-</span><span class="element">&gt;table_package</span><span class="plain">);</span>
<span class="identifier">t</span><span class="plain">-</span><span class="element">&gt;approximate_array_space_needed</span><span class="plain"> = 0;</span>
<span class="identifier">t</span><span class="plain">-</span><span class="element">&gt;disable_block_constant_correction</span><span class="plain"> = </span><span class="identifier">FALSE</span><span class="plain">;</span>
<span class="identifier">t</span><span class="plain">-</span><span class="element">&gt;no_columns</span><span class="plain"> = 0;</span>

View file

@ -288,9 +288,7 @@ text is passed to the following routine in turn:
<span class="identifier">tcu</span><span class="element">.observed_kind_cell</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="reserved">package_request</span><span class="plain"> *</span><span class="identifier">R</span><span class="plain"> = </span><span class="functiontext">Hierarchy::package_within</span><span class="plain">(</span><span class="constant">TABLE_COLUMNS_HAP</span><span class="plain">, </span><span class="identifier">t</span><span class="plain">-</span><span class="element">&gt;table_package</span><span class="plain">);</span>
<span class="identifier">tcu</span><span class="element">.tcu_iname</span><span class="plain"> = </span><span class="functiontext">InterNames::one_off</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"column_data"</span><span class="plain">, </span><span class="identifier">R</span><span class="plain">);</span>
<span class="identifier">Inter::Symbols::set_flag</span><span class="plain">(</span><span class="functiontext">InterNames::to_symbol</span><span class="plain">(</span><span class="identifier">tcu</span><span class="element">.tcu_iname</span><span class="plain">), </span><span class="identifier">MAKE_NAME_UNIQUE</span><span class="plain">);</span>
<span class="identifier">tcu</span><span class="element">.tcu_iname</span><span class="plain"> = </span><span class="functiontext">Hierarchy::make_iname_in</span><span class="plain">(</span><span class="constant">COLUMN_DATA_HL</span><span class="plain">, </span><span class="identifier">R</span><span class="plain">);</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">tcu</span><span class="plain">;</span>
<span class="plain">}</span>

View file

@ -276,7 +276,7 @@ noun for it; for example, the "announcing activity".
<span class="identifier">Feeds::feed_text_expanding_strings</span><span class="plain">(</span><span class="identifier">L</span><span class="string">"before"</span><span class="plain">);</span>
<span class="identifier">Feeds::feed_wording</span><span class="plain">(</span><span class="identifier">av</span><span class="plain">-</span><span class="element">&gt;name</span><span class="plain">);</span>
<span class="identifier">wording</span><span class="plain"> </span><span class="identifier">SW</span><span class="plain"> = </span><span class="identifier">Feeds::end</span><span class="plain">(</span><span class="identifier">id</span><span class="plain">);</span>
<span class="reserved">package_request</span><span class="plain"> *</span><span class="identifier">BR</span><span class="plain"> = </span><span class="functiontext">Hierarchy::package_in_package</span><span class="plain">(</span><span class="constant">BEFORE_RB_HL</span><span class="plain">, </span><span class="identifier">av</span><span class="plain">-</span><span class="element">&gt;av_package</span><span class="plain">);</span>
<span class="reserved">package_request</span><span class="plain"> *</span><span class="identifier">BR</span><span class="plain"> = </span><span class="functiontext">Hierarchy::make_package_in</span><span class="plain">(</span><span class="constant">BEFORE_RB_HL</span><span class="plain">, </span><span class="identifier">av</span><span class="plain">-</span><span class="element">&gt;av_package</span><span class="plain">);</span>
<span class="identifier">av</span><span class="plain">-</span><span class="element">&gt;before_rules</span><span class="plain"> =</span>
<span class="functiontext">Rulebooks::new_automatic</span><span class="plain">(</span><span class="identifier">SW</span><span class="plain">, </span><span class="identifier">av</span><span class="plain">-</span><span class="element">&gt;activity_on_what_kind</span><span class="plain">,</span>
<span class="constant">NO_OUTCOME</span><span class="plain">, </span><span class="identifier">FALSE</span><span class="plain">, </span><span class="identifier">future_action_flag</span><span class="plain">, </span><span class="identifier">TRUE</span><span class="plain">, </span><span class="identifier">BR</span><span class="plain">);</span>
@ -284,7 +284,7 @@ noun for it; for example, the "announcing activity".
<span class="identifier">Feeds::feed_text_expanding_strings</span><span class="plain">(</span><span class="identifier">L</span><span class="string">"for"</span><span class="plain">);</span>
<span class="identifier">Feeds::feed_wording</span><span class="plain">(</span><span class="identifier">av</span><span class="plain">-</span><span class="element">&gt;name</span><span class="plain">);</span>
<span class="identifier">SW</span><span class="plain"> = </span><span class="identifier">Feeds::end</span><span class="plain">(</span><span class="identifier">id</span><span class="plain">);</span>
<span class="reserved">package_request</span><span class="plain"> *</span><span class="identifier">FR</span><span class="plain"> = </span><span class="functiontext">Hierarchy::package_in_package</span><span class="plain">(</span><span class="constant">FOR_RB_HL</span><span class="plain">, </span><span class="identifier">av</span><span class="plain">-</span><span class="element">&gt;av_package</span><span class="plain">);</span>
<span class="reserved">package_request</span><span class="plain"> *</span><span class="identifier">FR</span><span class="plain"> = </span><span class="functiontext">Hierarchy::make_package_in</span><span class="plain">(</span><span class="constant">FOR_RB_HL</span><span class="plain">, </span><span class="identifier">av</span><span class="plain">-</span><span class="element">&gt;av_package</span><span class="plain">);</span>
<span class="identifier">av</span><span class="plain">-</span><span class="element">&gt;for_rules</span><span class="plain"> =</span>
<span class="functiontext">Rulebooks::new_automatic</span><span class="plain">(</span><span class="identifier">SW</span><span class="plain">, </span><span class="identifier">av</span><span class="plain">-</span><span class="element">&gt;activity_on_what_kind</span><span class="plain">,</span>
<span class="constant">SUCCESS_OUTCOME</span><span class="plain">, </span><span class="identifier">FALSE</span><span class="plain">, </span><span class="identifier">future_action_flag</span><span class="plain">, </span><span class="identifier">TRUE</span><span class="plain">, </span><span class="identifier">FR</span><span class="plain">);</span>
@ -292,7 +292,7 @@ noun for it; for example, the "announcing activity".
<span class="identifier">Feeds::feed_text_expanding_strings</span><span class="plain">(</span><span class="identifier">L</span><span class="string">"after"</span><span class="plain">);</span>
<span class="identifier">Feeds::feed_wording</span><span class="plain">(</span><span class="identifier">av</span><span class="plain">-</span><span class="element">&gt;name</span><span class="plain">);</span>
<span class="identifier">SW</span><span class="plain"> = </span><span class="identifier">Feeds::end</span><span class="plain">(</span><span class="identifier">id</span><span class="plain">);</span>
<span class="reserved">package_request</span><span class="plain"> *</span><span class="identifier">AR</span><span class="plain"> = </span><span class="functiontext">Hierarchy::package_in_package</span><span class="plain">(</span><span class="constant">AFTER_RB_HL</span><span class="plain">, </span><span class="identifier">av</span><span class="plain">-</span><span class="element">&gt;av_package</span><span class="plain">);</span>
<span class="reserved">package_request</span><span class="plain"> *</span><span class="identifier">AR</span><span class="plain"> = </span><span class="functiontext">Hierarchy::make_package_in</span><span class="plain">(</span><span class="constant">AFTER_RB_HL</span><span class="plain">, </span><span class="identifier">av</span><span class="plain">-</span><span class="element">&gt;av_package</span><span class="plain">);</span>
<span class="identifier">av</span><span class="plain">-</span><span class="element">&gt;after_rules</span><span class="plain"> =</span>
<span class="functiontext">Rulebooks::new_automatic</span><span class="plain">(</span><span class="identifier">SW</span><span class="plain">, </span><span class="identifier">av</span><span class="plain">-</span><span class="element">&gt;activity_on_what_kind</span><span class="plain">,</span>
<span class="constant">NO_OUTCOME</span><span class="plain">, </span><span class="identifier">FALSE</span><span class="plain">, </span><span class="identifier">future_action_flag</span><span class="plain">, </span><span class="identifier">TRUE</span><span class="plain">, </span><span class="identifier">AR</span><span class="plain">);</span>

View file

@ -292,8 +292,7 @@ must be added after the rule has been created:
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Rules::set_I6_definition</span><span class="plain">(</span><span class="reserved">rule</span><span class="plain"> *</span><span class="identifier">R</span><span class="plain">, </span><span class="identifier">wchar_t</span><span class="plain"> *</span><span class="identifier">identifier</span><span class="plain">) {</span>
<span class="identifier">TEMPORARY_TEXT</span><span class="plain">(</span><span class="identifier">XT</span><span class="plain">);</span>
<span class="identifier">WRITE_TO</span><span class="plain">(</span><span class="identifier">XT</span><span class="plain">, </span><span class="string">"%w"</span><span class="plain">, </span><span class="identifier">identifier</span><span class="plain">);</span>
<span class="identifier">R</span><span class="plain">-</span><span class="element">&gt;rule_extern_iname</span><span class="plain"> = </span><span class="functiontext">InterNames::one_off</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"exterior_rule"</span><span class="plain">, </span><span class="identifier">R</span><span class="plain">-</span><span class="element">&gt;rule_package</span><span class="plain">);</span>
<span class="identifier">Inter::Symbols::set_flag</span><span class="plain">(</span><span class="functiontext">InterNames::to_symbol</span><span class="plain">(</span><span class="identifier">R</span><span class="plain">-</span><span class="element">&gt;rule_extern_iname</span><span class="plain">), </span><span class="identifier">MAKE_NAME_UNIQUE</span><span class="plain">);</span>
<span class="identifier">R</span><span class="plain">-</span><span class="element">&gt;rule_extern_iname</span><span class="plain"> = </span><span class="functiontext">Hierarchy::make_iname_in</span><span class="plain">(</span><span class="constant">EXTERIOR_RULE_HL</span><span class="plain">, </span><span class="identifier">R</span><span class="plain">-</span><span class="element">&gt;rule_package</span><span class="plain">);</span>
<span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">xiname</span><span class="plain"> = </span><span class="functiontext">Hierarchy::find_by_name</span><span class="plain">(</span><span class="identifier">XT</span><span class="plain">);</span>
<span class="reserved">packaging_state</span><span class="plain"> </span><span class="identifier">save</span><span class="plain"> = </span><span class="functiontext">Packaging::enter</span><span class="plain">(</span><span class="identifier">R</span><span class="plain">-</span><span class="element">&gt;rule_package</span><span class="plain">);</span>

View file

@ -157,9 +157,8 @@ an I6 routine name, but no: it compiles to a small array called a "closure".
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">cphr</span><span class="plain">-</span><span class="element">&gt;cphr_iname</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) {</span>
<span class="reserved">phrase</span><span class="plain"> *</span><span class="identifier">ph</span><span class="plain"> = </span><span class="functiontext">Phrases::Constants::as_phrase</span><span class="plain">(</span><span class="identifier">cphr</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">ph</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"cannot reconstruct phrase from cphr"</span><span class="plain">);</span>
<span class="reserved">package_request</span><span class="plain"> *</span><span class="identifier">closure_package</span><span class="plain"> = </span><span class="functiontext">Hierarchy::package_within</span><span class="plain">(</span><span class="constant">CLOSURES_HAP</span><span class="plain">, </span><span class="identifier">ph</span><span class="plain">-</span><span class="element">&gt;requests_package</span><span class="plain">);</span>
<span class="identifier">cphr</span><span class="plain">-</span><span class="element">&gt;cphr_iname</span><span class="plain"> = </span><span class="functiontext">InterNames::one_off</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"closure_data"</span><span class="plain">, </span><span class="identifier">closure_package</span><span class="plain">);</span>
<span class="identifier">Inter::Symbols::set_flag</span><span class="plain">(</span><span class="functiontext">InterNames::to_symbol</span><span class="plain">(</span><span class="identifier">cphr</span><span class="plain">-</span><span class="element">&gt;cphr_iname</span><span class="plain">), </span><span class="identifier">MAKE_NAME_UNIQUE</span><span class="plain">);</span>
<span class="reserved">package_request</span><span class="plain"> *</span><span class="identifier">P</span><span class="plain"> = </span><span class="functiontext">Hierarchy::package_within</span><span class="plain">(</span><span class="constant">CLOSURES_HAP</span><span class="plain">, </span><span class="identifier">ph</span><span class="plain">-</span><span class="element">&gt;requests_package</span><span class="plain">);</span>
<span class="identifier">cphr</span><span class="plain">-</span><span class="element">&gt;cphr_iname</span><span class="plain"> = </span><span class="functiontext">Hierarchy::make_iname_in</span><span class="plain">(</span><span class="constant">CLOSURE_DATA_HL</span><span class="plain">, </span><span class="identifier">P</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">cphr</span><span class="plain">-</span><span class="element">&gt;cphr_iname</span><span class="plain">;</span>
<span class="plain">}</span>

View file

@ -70,8 +70,7 @@ reserves no memory.
<span class="identifier">lns</span><span class="plain">-</span><span class="element">&gt;label_base_iname</span><span class="plain"> = </span><span class="functiontext">InterNames::label_base_name</span><span class="plain">(</span><span class="identifier">lns</span><span class="plain">-</span><span class="element">&gt;label_prefix</span><span class="plain">);</span>
<span class="reserved">package_request</span><span class="plain"> *</span><span class="identifier">PR2</span><span class="plain"> = </span><span class="functiontext">Hierarchy::synoptic_package</span><span class="plain">(</span><span class="constant">LABEL_STORAGES_HAP</span><span class="plain">);</span>
<span class="identifier">lns</span><span class="plain">-</span><span class="element">&gt;label_storage_iname</span><span class="plain"> = </span><span class="functiontext">InterNames::one_off</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"label_associated_storage"</span><span class="plain">, </span><span class="identifier">PR2</span><span class="plain">);</span>
<span class="identifier">Inter::Symbols::set_flag</span><span class="plain">(</span><span class="functiontext">InterNames::to_symbol</span><span class="plain">(</span><span class="identifier">lns</span><span class="plain">-</span><span class="element">&gt;label_storage_iname</span><span class="plain">), </span><span class="identifier">MAKE_NAME_UNIQUE</span><span class="plain">);</span>
<span class="identifier">lns</span><span class="plain">-</span><span class="element">&gt;label_storage_iname</span><span class="plain"> = </span><span class="functiontext">Hierarchy::make_iname_in</span><span class="plain">(</span><span class="constant">LABEL_ASSOCIATED_STORAGE_HL</span><span class="plain">, </span><span class="identifier">PR2</span><span class="plain">);</span>
<span class="identifier">lns</span><span class="plain">-</span><span class="element">&gt;label_counter</span><span class="plain"> = 0;</span>
<span class="identifier">lns</span><span class="plain">-</span><span class="element">&gt;allocate_storage</span><span class="plain"> = 0;</span>

View file

@ -58,8 +58,7 @@ prints the name of a routine to be compiled later.
<span class="functiontext">InterNames::one_off</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"list_together_fn"</span><span class="plain">, </span><span class="identifier">PR</span><span class="plain">),</span>
<span class="identifier">PR</span><span class="plain">,</span>
<span class="functiontext">InterNames::new</span><span class="plain">(</span><span class="constant">LIST_TOGETHER_ROUTINE_INAMEF</span><span class="plain">));</span>
<span class="identifier">ltr</span><span class="plain">-</span><span class="element">&gt;ltr_array_iname</span><span class="plain"> = </span><span class="functiontext">InterNames::one_off</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"list_together_array"</span><span class="plain">, </span><span class="identifier">PR</span><span class="plain">);</span>
<span class="identifier">Inter::Symbols::set_flag</span><span class="plain">(</span><span class="functiontext">InterNames::to_symbol</span><span class="plain">(</span><span class="identifier">ltr</span><span class="plain">-</span><span class="element">&gt;ltr_array_iname</span><span class="plain">), </span><span class="identifier">MAKE_NAME_UNIQUE</span><span class="plain">);</span>
<span class="identifier">ltr</span><span class="plain">-</span><span class="element">&gt;ltr_array_iname</span><span class="plain"> = </span><span class="functiontext">Hierarchy::make_iname_in</span><span class="plain">(</span><span class="constant">LIST_TOGETHER_ARRAY_HL</span><span class="plain">, </span><span class="identifier">PR</span><span class="plain">);</span>
<span class="identifier">ltr</span><span class="plain">-</span><span class="element">&gt;articles_bit</span><span class="plain"> = </span><span class="identifier">include_articles</span><span class="plain">;</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">ltr</span><span class="plain">-</span><span class="element">&gt;ltr_array_iname</span><span class="plain">;</span>

View file

@ -389,10 +389,8 @@ without notice.
<span class="identifier">test</span><span class="plain">-</span><span class="element">&gt;text_of_script</span><span class="plain"> = </span><span class="identifier">Str::new</span><span class="plain">();</span>
<span class="reserved">package_request</span><span class="plain"> *</span><span class="identifier">P</span><span class="plain"> = </span><span class="functiontext">Hierarchy::local_package</span><span class="plain">(</span><span class="constant">TESTS_HAP</span><span class="plain">);</span>
<span class="identifier">test</span><span class="plain">-</span><span class="element">&gt;text_iname</span><span class="plain"> = </span><span class="functiontext">InterNames::one_off</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"script"</span><span class="plain">, </span><span class="identifier">P</span><span class="plain">);</span>
<span class="identifier">test</span><span class="plain">-</span><span class="element">&gt;req_iname</span><span class="plain"> = </span><span class="functiontext">InterNames::one_off</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"requirements"</span><span class="plain">, </span><span class="identifier">P</span><span class="plain">);</span>
<span class="identifier">Inter::Symbols::set_flag</span><span class="plain">(</span><span class="functiontext">InterNames::to_symbol</span><span class="plain">(</span><span class="identifier">test</span><span class="plain">-</span><span class="element">&gt;text_iname</span><span class="plain">), </span><span class="identifier">MAKE_NAME_UNIQUE</span><span class="plain">);</span>
<span class="identifier">Inter::Symbols::set_flag</span><span class="plain">(</span><span class="functiontext">InterNames::to_symbol</span><span class="plain">(</span><span class="identifier">test</span><span class="plain">-</span><span class="element">&gt;req_iname</span><span class="plain">), </span><span class="identifier">MAKE_NAME_UNIQUE</span><span class="plain">);</span>
<span class="identifier">test</span><span class="plain">-</span><span class="element">&gt;text_iname</span><span class="plain"> = </span><span class="functiontext">Hierarchy::make_iname_in</span><span class="plain">(</span><span class="constant">SCRIPT_HL</span><span class="plain">, </span><span class="identifier">P</span><span class="plain">);</span>
<span class="identifier">test</span><span class="plain">-</span><span class="element">&gt;req_iname</span><span class="plain"> = </span><span class="functiontext">Hierarchy::make_iname_in</span><span class="plain">(</span><span class="constant">REQUIREMENTS_HL</span><span class="plain">, </span><span class="identifier">P</span><span class="plain">);</span>
<span class="identifier">ts_being_parsed</span><span class="plain"> = </span><span class="identifier">test</span><span class="plain">;</span>
<span class="plain">&lt;</span><span class="identifier">test</span><span class="plain">-</span><span class="identifier">sentence</span><span class="plain">-</span><span class="identifier">object</span><span class="plain">&gt;(</span><span class="identifier">ParseTree::get_text</span><span class="plain">(</span><span class="identifier">PN</span><span class="plain">-</span><span class="element">&gt;next</span><span class="plain">-</span><span class="element">&gt;next</span><span class="plain">));</span>

View file

@ -16,7 +16,7 @@
<span class="reserved">typedef</span><span class="plain"> </span><span class="reserved">struct</span><span class="plain"> </span><span class="reserved">compilation_module</span><span class="plain"> {</span>
<span class="reserved">struct</span><span class="plain"> </span><span class="reserved">inter_namespace</span><span class="plain"> *</span><span class="identifier">namespace</span><span class="plain">;</span>
<span class="reserved">struct</span><span class="plain"> </span><span class="reserved">package_request</span><span class="plain"> *</span><span class="identifier">resources</span><span class="plain">;</span>
<span class="reserved">struct</span><span class="plain"> </span><span class="reserved">subpackage_requests</span><span class="plain"> </span><span class="identifier">subpackages</span><span class="plain">;</span>
<span class="reserved">struct</span><span class="plain"> </span><span class="reserved">submodule_requests</span><span class="plain"> </span><span class="identifier">subpackages</span><span class="plain">;</span>
<span class="reserved">struct</span><span class="plain"> </span><span class="identifier">parse_node</span><span class="plain"> *</span><span class="identifier">hanging_from</span><span class="plain">;</span>
<span class="identifier">MEMORY_MANAGEMENT</span>
<span class="plain">} </span><span class="reserved">compilation_module</span><span class="plain">;</span>
@ -94,7 +94,7 @@
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">C</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="reserved">subpackage_requests</span><span class="plain"> *</span><span class="functiontext">Modules::subpackages</span><span class="plain">(</span><span class="reserved">compilation_module</span><span class="plain"> *</span><span class="identifier">C</span><span class="plain">) {</span>
<span class="reserved">submodule_requests</span><span class="plain"> *</span><span class="functiontext">Modules::subpackages</span><span class="plain">(</span><span class="reserved">compilation_module</span><span class="plain"> *</span><span class="identifier">C</span><span class="plain">) {</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">C</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"no module"</span><span class="plain">);</span>
<span class="reserved">return</span><span class="plain"> &amp;(</span><span class="identifier">C</span><span class="plain">-</span><span class="element">&gt;subpackages</span><span class="plain">);</span>
<span class="plain">}</span>
@ -165,7 +165,7 @@
<p class="endnote">The function Modules::propagate_downwards appears nowhere else.</p>
<p class="endnote">The function Modules::find is used in 5/nv (<a href="5-nv.html#SP16">&#167;16</a>), 6/bp (<a href="6-bp.html#SP31">&#167;31</a>), 15/pr (<a href="15-pr.html#SP5_3">&#167;5.3</a>), 21/rl (<a href="21-rl.html#SP26">&#167;26</a>), 22/ph (<a href="22-ph.html#SP6_8">&#167;6.8</a>), 22/tp (<a href="22-tp.html#SP7">&#167;7</a>), 27/pc (<a href="27-pc.html#SP7">&#167;7</a>), 27/hr (<a href="27-hr.html#SP6">&#167;6</a>).</p>
<p class="endnote">The function Modules::find is used in 5/nv (<a href="5-nv.html#SP16">&#167;16</a>), 6/bp (<a href="6-bp.html#SP31">&#167;31</a>), 15/pr (<a href="15-pr.html#SP5_3">&#167;5.3</a>), 21/rl (<a href="21-rl.html#SP26">&#167;26</a>), 22/ph (<a href="22-ph.html#SP6_8">&#167;6.8</a>), 22/tp (<a href="22-tp.html#SP7">&#167;7</a>), 27/pc (<a href="27-pc.html#SP7">&#167;7</a>), 27/hr (<a href="27-hr.html#SP5">&#167;5</a>).</p>
<p class="endnote">The function Modules::markable appears nowhere else.</p>

View file

@ -1205,7 +1205,7 @@ insert them into the Inter stream close to the top.
<p class="endnote">The function Emit::kind_inner is used in <a href="#SP3">&#167;3</a>.</p>
<p class="endnote">The function Emit::variable is used in 5/nv (<a href="5-nv.html#SP16">&#167;16</a>), 27/hr (<a href="27-hr.html#SP5">&#167;5</a>).</p>
<p class="endnote">The function Emit::variable is used in 5/nv (<a href="5-nv.html#SP16">&#167;16</a>), 27/hr (<a href="27-hr.html#SP4">&#167;4</a>).</p>
<p class="endnote">The function Emit::marker appears nowhere else.</p>
@ -1231,7 +1231,7 @@ insert them into the Inter stream close to the top.
<p class="endnote">The function Emit::named_generic_constant is used in 21/rl (<a href="21-rl.html#SP9">&#167;9</a>).</p>
<p class="endnote">The function Emit::named_numeric_constant is used in 6/rlt (<a href="6-rlt.html#SP20_3">&#167;20.3</a>), 13/kak (<a href="13-kak.html#SP5">&#167;5</a>), 13/rsfk (<a href="13-rsfk.html#SP26">&#167;26</a>), 21/ac (<a href="21-ac.html#SP6">&#167;6</a>), 22/cs (<a href="22-cs.html#SP8">&#167;8</a>), 24/ch (<a href="24-ch.html#SP8">&#167;8</a>), 26/vm (<a href="26-vm.html#SP8">&#167;8</a>), 26/uo (<a href="26-uo.html#SP21">&#167;21</a>), 26/pl (<a href="26-pl.html#SP12">&#167;12</a>), 26/ts (<a href="26-ts.html#SP10">&#167;10</a>), 27/hr (<a href="27-hr.html#SP5">&#167;5</a>).</p>
<p class="endnote">The function Emit::named_numeric_constant is used in 6/rlt (<a href="6-rlt.html#SP20_3">&#167;20.3</a>), 13/kak (<a href="13-kak.html#SP5">&#167;5</a>), 13/rsfk (<a href="13-rsfk.html#SP26">&#167;26</a>), 21/ac (<a href="21-ac.html#SP6">&#167;6</a>), 22/cs (<a href="22-cs.html#SP8">&#167;8</a>), 24/ch (<a href="24-ch.html#SP8">&#167;8</a>), 26/vm (<a href="26-vm.html#SP8">&#167;8</a>), 26/uo (<a href="26-uo.html#SP21">&#167;21</a>), 26/pl (<a href="26-pl.html#SP12">&#167;12</a>), 26/ts (<a href="26-ts.html#SP10">&#167;10</a>), 27/hr (<a href="27-hr.html#SP4">&#167;4</a>).</p>
<p class="endnote">The function Emit::hold_numeric_constant appears nowhere else.</p>

View file

@ -1,7 +1,7 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>27/pc</title>
<title>27/tr</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="Content-Language" content="en-gb">
<link href="inweb.css" rel="stylesheet" rev="stylesheet" type="text/css">
@ -13,15 +13,66 @@
<pre class="display">
<span class="reserved">typedef</span><span class="plain"> </span><span class="reserved">struct</span><span class="plain"> </span><span class="reserved">location_requirement</span><span class="plain"> {</span>
<span class="reserved">struct</span><span class="plain"> </span><span class="reserved">submodule_identity</span><span class="plain"> *</span><span class="identifier">this_local_submodule</span><span class="plain">;</span>
<span class="reserved">struct</span><span class="plain"> </span><span class="reserved">package_request</span><span class="plain"> *</span><span class="identifier">this_mundane_package</span><span class="plain">;</span>
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">this_exotic_package</span><span class="plain">;</span>
<span class="reserved">struct</span><span class="plain"> </span><span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">any_package_of_this_type</span><span class="plain">;</span>
<span class="plain">} </span><span class="reserved">location_requirement</span><span class="plain">;</span>
<span class="reserved">location_requirement</span><span class="plain"> </span><span class="functiontext">HierarchyLocations::blank</span><span class="plain">(</span><span class="reserved">void</span><span class="plain">) {</span>
<span class="reserved">location_requirement</span><span class="plain"> </span><span class="identifier">req</span><span class="plain">;</span>
<span class="identifier">req</span><span class="element">.this_local_submodule</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">req</span><span class="element">.this_mundane_package</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">req</span><span class="element">.this_exotic_package</span><span class="plain"> = -1;</span>
<span class="identifier">req</span><span class="element">.any_package_of_this_type</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">req</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="reserved">location_requirement</span><span class="plain"> </span><span class="functiontext">HierarchyLocations::local_submodule</span><span class="plain">(</span><span class="reserved">submodule_identity</span><span class="plain"> *</span><span class="identifier">sid</span><span class="plain">) {</span>
<span class="reserved">location_requirement</span><span class="plain"> </span><span class="identifier">req</span><span class="plain"> = </span><span class="functiontext">HierarchyLocations::blank</span><span class="plain">();</span>
<span class="identifier">req</span><span class="element">.this_local_submodule</span><span class="plain"> = </span><span class="identifier">sid</span><span class="plain">;</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">req</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="reserved">location_requirement</span><span class="plain"> </span><span class="functiontext">HierarchyLocations::generic_submodule</span><span class="plain">(</span><span class="reserved">submodule_identity</span><span class="plain"> *</span><span class="identifier">sid</span><span class="plain">) {</span>
<span class="reserved">location_requirement</span><span class="plain"> </span><span class="identifier">req</span><span class="plain"> = </span><span class="functiontext">HierarchyLocations::blank</span><span class="plain">();</span>
<span class="identifier">req</span><span class="element">.this_mundane_package</span><span class="plain"> = </span><span class="functiontext">Packaging::generic_resource</span><span class="plain">(</span><span class="identifier">sid</span><span class="plain">);</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">req</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="reserved">location_requirement</span><span class="plain"> </span><span class="functiontext">HierarchyLocations::synoptic_submodule</span><span class="plain">(</span><span class="reserved">submodule_identity</span><span class="plain"> *</span><span class="identifier">sid</span><span class="plain">) {</span>
<span class="reserved">location_requirement</span><span class="plain"> </span><span class="identifier">req</span><span class="plain"> = </span><span class="functiontext">HierarchyLocations::blank</span><span class="plain">();</span>
<span class="identifier">req</span><span class="element">.this_mundane_package</span><span class="plain"> = </span><span class="functiontext">Packaging::synoptic_resource</span><span class="plain">(</span><span class="identifier">sid</span><span class="plain">);</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">req</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="reserved">location_requirement</span><span class="plain"> </span><span class="functiontext">HierarchyLocations::any_package_of_type</span><span class="plain">(</span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">ptype_name</span><span class="plain">) {</span>
<span class="reserved">location_requirement</span><span class="plain"> </span><span class="identifier">req</span><span class="plain"> = </span><span class="functiontext">HierarchyLocations::blank</span><span class="plain">();</span>
<span class="identifier">req</span><span class="element">.any_package_of_this_type</span><span class="plain"> = </span><span class="functiontext">HierarchyLocations::ptype</span><span class="plain">(</span><span class="identifier">ptype_name</span><span class="plain">);</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">req</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="reserved">location_requirement</span><span class="plain"> </span><span class="functiontext">HierarchyLocations::this_package</span><span class="plain">(</span><span class="reserved">package_request</span><span class="plain"> *</span><span class="identifier">P</span><span class="plain">) {</span>
<span class="reserved">location_requirement</span><span class="plain"> </span><span class="identifier">req</span><span class="plain"> = </span><span class="functiontext">HierarchyLocations::blank</span><span class="plain">();</span>
<span class="identifier">req</span><span class="element">.this_mundane_package</span><span class="plain"> = </span><span class="identifier">P</span><span class="plain">;</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">req</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="reserved">location_requirement</span><span class="plain"> </span><span class="functiontext">HierarchyLocations::this_exotic_package</span><span class="plain">(</span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">N</span><span class="plain">) {</span>
<span class="reserved">location_requirement</span><span class="plain"> </span><span class="identifier">req</span><span class="plain"> = </span><span class="functiontext">HierarchyLocations::blank</span><span class="plain">();</span>
<span class="identifier">req</span><span class="element">.this_exotic_package</span><span class="plain"> = </span><span class="identifier">N</span><span class="plain">;</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">req</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="reserved">typedef</span><span class="plain"> </span><span class="reserved">struct</span><span class="plain"> </span><span class="reserved">named_resource_location</span><span class="plain"> {</span>
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">access_number</span><span class="plain">;</span>
<span class="reserved">struct</span><span class="plain"> </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">access_name</span><span class="plain">;</span>
<span class="reserved">struct</span><span class="plain"> </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">function_package_name</span><span class="plain">;</span>
<span class="reserved">struct</span><span class="plain"> </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">datum_package_name</span><span class="plain">;</span>
<span class="reserved">struct</span><span class="plain"> </span><span class="reserved">package_request</span><span class="plain"> *</span><span class="identifier">package</span><span class="plain">;</span>
<span class="reserved">struct</span><span class="plain"> </span><span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">package_type</span><span class="plain">;</span>
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">exotic_package_identifier</span><span class="plain">;</span>
<span class="reserved">struct</span><span class="plain"> </span><span class="reserved">location_requirement</span><span class="plain"> </span><span class="identifier">requirements</span><span class="plain">;</span>
<span class="reserved">struct</span><span class="plain"> </span><span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">equates_to_iname</span><span class="plain">;</span>
<span class="reserved">struct</span><span class="plain"> </span><span class="reserved">name_translation</span><span class="plain"> </span><span class="identifier">trans</span><span class="plain">;</span>
<span class="identifier">MEMORY_MANAGEMENT</span>
<span class="plain">} </span><span class="reserved">named_resource_location</span><span class="plain">;</span>
@ -31,27 +82,18 @@
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;access_name</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;function_package_name</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;datum_package_name</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;package</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;package_type</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;equates_to_iname</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;exotic_package_identifier</span><span class="plain"> = -1;</span>
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;trans</span><span class="plain"> = </span><span class="functiontext">Translation::same</span><span class="plain">();</span>
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;requirements</span><span class="plain"> = </span><span class="functiontext">HierarchyLocations::blank</span><span class="plain">();</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">nrl</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="reserved">named_resource_location</span><span class="plain"> *</span><span class="functiontext">HierarchyLocations::make</span><span class="plain">(</span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">id</span><span class="plain">, </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">name</span><span class="plain">, </span><span class="reserved">package_request</span><span class="plain"> *</span><span class="identifier">P</span><span class="plain">) {</span>
<span class="reserved">named_resource_location</span><span class="plain"> *</span><span class="functiontext">HierarchyLocations::con</span><span class="plain">(</span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">id</span><span class="plain">, </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">name</span><span class="plain">, </span><span class="reserved">name_translation</span><span class="plain"> </span><span class="identifier">nt</span><span class="plain">, </span><span class="reserved">location_requirement</span><span class="plain"> </span><span class="identifier">req</span><span class="plain">) {</span>
<span class="reserved">named_resource_location</span><span class="plain"> *</span><span class="identifier">nrl</span><span class="plain"> = </span><span class="functiontext">HierarchyLocations::new</span><span class="plain">();</span>
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;access_number</span><span class="plain"> = </span><span class="identifier">id</span><span class="plain">;</span>
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;access_name</span><span class="plain"> = </span><span class="identifier">Str::duplicate</span><span class="plain">(</span><span class="identifier">name</span><span class="plain">);</span>
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;package</span><span class="plain"> = </span><span class="identifier">P</span><span class="plain">;</span>
<span class="functiontext">HierarchyLocations::index</span><span class="plain">(</span><span class="identifier">nrl</span><span class="plain">);</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">nrl</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="reserved">named_resource_location</span><span class="plain"> *</span><span class="functiontext">HierarchyLocations::make_in_exotic</span><span class="plain">(</span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">id</span><span class="plain">, </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">name</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">x</span><span class="plain">) {</span>
<span class="reserved">named_resource_location</span><span class="plain"> *</span><span class="identifier">nrl</span><span class="plain"> = </span><span class="functiontext">HierarchyLocations::new</span><span class="plain">();</span>
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;access_number</span><span class="plain"> = </span><span class="identifier">id</span><span class="plain">;</span>
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;access_name</span><span class="plain"> = </span><span class="identifier">Str::duplicate</span><span class="plain">(</span><span class="identifier">name</span><span class="plain">);</span>
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;exotic_package_identifier</span><span class="plain"> = </span><span class="identifier">x</span><span class="plain">;</span>
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;requirements</span><span class="plain"> = </span><span class="identifier">req</span><span class="plain">;</span>
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;trans</span><span class="plain"> = </span><span class="identifier">nt</span><span class="plain">;</span>
<span class="functiontext">HierarchyLocations::index</span><span class="plain">(</span><span class="identifier">nrl</span><span class="plain">);</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">nrl</span><span class="plain">;</span>
<span class="plain">}</span>
@ -60,57 +102,30 @@
<span class="reserved">named_resource_location</span><span class="plain"> *</span><span class="identifier">nrl</span><span class="plain"> = </span><span class="functiontext">HierarchyLocations::new</span><span class="plain">();</span>
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;access_number</span><span class="plain"> = </span><span class="identifier">id</span><span class="plain">;</span>
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;access_name</span><span class="plain"> = </span><span class="identifier">Str::duplicate</span><span class="plain">(</span><span class="identifier">name</span><span class="plain">);</span>
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;package</span><span class="plain"> = </span><span class="identifier">iname</span><span class="plain">-</span><span class="element">&gt;eventual_owner</span><span class="plain">;</span>
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;requirements</span><span class="plain"> = </span><span class="functiontext">HierarchyLocations::this_package</span><span class="plain">(</span><span class="identifier">iname</span><span class="plain">-</span><span class="element">&gt;eventual_owner</span><span class="plain">);</span>
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;equates_to_iname</span><span class="plain"> = </span><span class="identifier">iname</span><span class="plain">;</span>
<span class="functiontext">HierarchyLocations::index</span><span class="plain">(</span><span class="identifier">nrl</span><span class="plain">);</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">nrl</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="reserved">named_resource_location</span><span class="plain"> *</span><span class="functiontext">HierarchyLocations::make_function</span><span class="plain">(</span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">id</span><span class="plain">, </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">name</span><span class="plain">, </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">call_name</span><span class="plain">, </span><span class="reserved">package_request</span><span class="plain"> *</span><span class="identifier">P</span><span class="plain">) {</span>
<span class="reserved">named_resource_location</span><span class="plain"> *</span><span class="functiontext">HierarchyLocations::func</span><span class="plain">(</span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">id</span><span class="plain">, </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">name</span><span class="plain">, </span><span class="reserved">name_translation</span><span class="plain"> </span><span class="identifier">nt</span><span class="plain">, </span><span class="reserved">location_requirement</span><span class="plain"> </span><span class="identifier">req</span><span class="plain">) {</span>
<span class="reserved">named_resource_location</span><span class="plain"> *</span><span class="identifier">nrl</span><span class="plain"> = </span><span class="identifier">CREATE</span><span class="plain">(</span><span class="reserved">named_resource_location</span><span class="plain">);</span>
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;access_number</span><span class="plain"> = </span><span class="identifier">id</span><span class="plain">;</span>
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;access_name</span><span class="plain"> = </span><span class="identifier">Str::duplicate</span><span class="plain">(</span><span class="identifier">call_name</span><span class="plain">);</span>
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;access_name</span><span class="plain"> = </span><span class="identifier">Str::duplicate</span><span class="plain">(</span><span class="identifier">nt</span><span class="element">.translate_to</span><span class="plain">);</span>
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;function_package_name</span><span class="plain"> = </span><span class="identifier">Str::duplicate</span><span class="plain">(</span><span class="identifier">name</span><span class="plain">);</span>
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;package</span><span class="plain"> = </span><span class="identifier">P</span><span class="plain">;</span>
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;requirements</span><span class="plain"> = </span><span class="identifier">req</span><span class="plain">;</span>
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;trans</span><span class="plain"> = </span><span class="identifier">nt</span><span class="plain">;</span>
<span class="functiontext">HierarchyLocations::index</span><span class="plain">(</span><span class="identifier">nrl</span><span class="plain">);</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">nrl</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="reserved">named_resource_location</span><span class="plain"> *</span><span class="functiontext">HierarchyLocations::make_function_in_exotic</span><span class="plain">(</span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">id</span><span class="plain">, </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">name</span><span class="plain">, </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">call_name</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">x</span><span class="plain">) {</span>
<span class="reserved">named_resource_location</span><span class="plain"> *</span><span class="functiontext">HierarchyLocations::datum</span><span class="plain">(</span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">id</span><span class="plain">, </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">name</span><span class="plain">, </span><span class="reserved">name_translation</span><span class="plain"> </span><span class="identifier">nt</span><span class="plain">, </span><span class="reserved">location_requirement</span><span class="plain"> </span><span class="identifier">req</span><span class="plain">) {</span>
<span class="reserved">named_resource_location</span><span class="plain"> *</span><span class="identifier">nrl</span><span class="plain"> = </span><span class="identifier">CREATE</span><span class="plain">(</span><span class="reserved">named_resource_location</span><span class="plain">);</span>
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;access_number</span><span class="plain"> = </span><span class="identifier">id</span><span class="plain">;</span>
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;access_name</span><span class="plain"> = </span><span class="identifier">Str::duplicate</span><span class="plain">(</span><span class="identifier">call_name</span><span class="plain">);</span>
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;function_package_name</span><span class="plain"> = </span><span class="identifier">Str::duplicate</span><span class="plain">(</span><span class="identifier">name</span><span class="plain">);</span>
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;exotic_package_identifier</span><span class="plain"> = </span><span class="identifier">x</span><span class="plain">;</span>
<span class="functiontext">HierarchyLocations::index</span><span class="plain">(</span><span class="identifier">nrl</span><span class="plain">);</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">nrl</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="reserved">named_resource_location</span><span class="plain"> *</span><span class="functiontext">HierarchyLocations::make_datum</span><span class="plain">(</span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">id</span><span class="plain">, </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">name</span><span class="plain">, </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">datum_name</span><span class="plain">, </span><span class="reserved">package_request</span><span class="plain"> *</span><span class="identifier">P</span><span class="plain">) {</span>
<span class="reserved">named_resource_location</span><span class="plain"> *</span><span class="identifier">nrl</span><span class="plain"> = </span><span class="identifier">CREATE</span><span class="plain">(</span><span class="reserved">named_resource_location</span><span class="plain">);</span>
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;access_number</span><span class="plain"> = </span><span class="identifier">id</span><span class="plain">;</span>
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;access_name</span><span class="plain"> = </span><span class="identifier">Str::duplicate</span><span class="plain">(</span><span class="identifier">datum_name</span><span class="plain">);</span>
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;access_name</span><span class="plain"> = </span><span class="identifier">Str::duplicate</span><span class="plain">(</span><span class="identifier">nt</span><span class="element">.translate_to</span><span class="plain">);</span>
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;datum_package_name</span><span class="plain"> = </span><span class="identifier">Str::duplicate</span><span class="plain">(</span><span class="identifier">name</span><span class="plain">);</span>
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;package</span><span class="plain"> = </span><span class="identifier">P</span><span class="plain">;</span>
<span class="functiontext">HierarchyLocations::index</span><span class="plain">(</span><span class="identifier">nrl</span><span class="plain">);</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">nrl</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="reserved">named_resource_location</span><span class="plain"> *</span><span class="functiontext">HierarchyLocations::make_datum_in_exotic</span><span class="plain">(</span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">id</span><span class="plain">, </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">name</span><span class="plain">, </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">datum_name</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">x</span><span class="plain">) {</span>
<span class="reserved">named_resource_location</span><span class="plain"> *</span><span class="identifier">nrl</span><span class="plain"> = </span><span class="identifier">CREATE</span><span class="plain">(</span><span class="reserved">named_resource_location</span><span class="plain">);</span>
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;access_number</span><span class="plain"> = </span><span class="identifier">id</span><span class="plain">;</span>
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;access_name</span><span class="plain"> = </span><span class="identifier">Str::duplicate</span><span class="plain">(</span><span class="identifier">datum_name</span><span class="plain">);</span>
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;datum_package_name</span><span class="plain"> = </span><span class="identifier">Str::duplicate</span><span class="plain">(</span><span class="identifier">name</span><span class="plain">);</span>
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;exotic_package_identifier</span><span class="plain"> = </span><span class="identifier">x</span><span class="plain">;</span>
<span class="functiontext">HierarchyLocations::index</span><span class="plain">(</span><span class="identifier">nrl</span><span class="plain">);</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">nrl</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="reserved">named_resource_location</span><span class="plain"> *</span><span class="functiontext">HierarchyLocations::make_rulebook_within</span><span class="plain">(</span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">id</span><span class="plain">, </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">name</span><span class="plain">, </span><span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">ptype</span><span class="plain">) {</span>
<span class="reserved">named_resource_location</span><span class="plain"> *</span><span class="identifier">nrl</span><span class="plain"> = </span><span class="identifier">CREATE</span><span class="plain">(</span><span class="reserved">named_resource_location</span><span class="plain">);</span>
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;access_number</span><span class="plain"> = </span><span class="identifier">id</span><span class="plain">;</span>
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;access_name</span><span class="plain"> = </span><span class="identifier">Str::duplicate</span><span class="plain">(</span><span class="identifier">name</span><span class="plain">);</span>
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;package_type</span><span class="plain"> = </span><span class="identifier">ptype</span><span class="plain">;</span>
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;requirements</span><span class="plain"> = </span><span class="identifier">req</span><span class="plain">;</span>
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;trans</span><span class="plain"> = </span><span class="identifier">nt</span><span class="plain">;</span>
<span class="functiontext">HierarchyLocations::index</span><span class="plain">(</span><span class="identifier">nrl</span><span class="plain">);</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">nrl</span><span class="plain">;</span>
<span class="plain">}</span>
@ -129,7 +144,7 @@
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">HierarchyLocations::index</span><span class="plain">(</span><span class="reserved">named_resource_location</span><span class="plain"> *</span><span class="identifier">nrl</span><span class="plain">) {</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">nrls_created</span><span class="plain"> == </span><span class="identifier">FALSE</span><span class="plain">) </span><span class="functiontext">HierarchyLocations::create_nrls</span><span class="plain">();</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;access_number</span><span class="plain"> &gt;= 0) </span><span class="identifier">nrls_indexed_by_id</span><span class="plain">[</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;access_number</span><span class="plain">] = </span><span class="identifier">nrl</span><span class="plain">;</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;package_type</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) {</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;requirements.any_package_of_this_type</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) {</span>
<span class="identifier">Dictionaries::create</span><span class="plain">(</span><span class="identifier">nrls_indexed_by_name</span><span class="plain">, </span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;access_name</span><span class="plain">);</span>
<span class="identifier">Dictionaries::write_value</span><span class="plain">(</span><span class="identifier">nrls_indexed_by_name</span><span class="plain">, </span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;access_name</span><span class="plain">, (</span><span class="reserved">void</span><span class="plain"> *) </span><span class="identifier">nrl</span><span class="plain">);</span>
<span class="plain">}</span>
@ -159,83 +174,116 @@
<span class="plain">}</span>
<span class="reserved">inter_name</span><span class="plain"> *</span><span class="functiontext">HierarchyLocations::nrl_to_iname</span><span class="plain">(</span><span class="reserved">named_resource_location</span><span class="plain"> *</span><span class="identifier">nrl</span><span class="plain">) {</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;package_type</span><span class="plain">) </span><span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"NRL accessed inappropriately"</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;requirements.any_package_of_this_type</span><span class="plain">) </span><span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"NRL accessed inappropriately"</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;equates_to_iname</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) {</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;package</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) {</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;exotic_package_identifier</span><span class="plain"> &gt;= 0)</span>
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;package</span><span class="plain"> = </span><span class="functiontext">Hierarchy::exotic_package</span><span class="plain">(</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;exotic_package_identifier</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;requirements.this_mundane_package</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) {</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;requirements.this_exotic_package</span><span class="plain"> &gt;= 0)</span>
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;requirements.this_mundane_package</span><span class="plain"> = </span><span class="functiontext">Hierarchy::exotic_package</span><span class="plain">(</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;requirements.this_exotic_package</span><span class="plain">);</span>
<span class="reserved">else</span><span class="plain"> </span><span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"package can't be found'"</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;package</span><span class="plain"> == </span><span class="functiontext">Hierarchy::template</span><span class="plain">()) {</span>
<span class="reserved">packaging_state</span><span class="plain"> </span><span class="identifier">save</span><span class="plain"> = </span><span class="functiontext">Packaging::enter</span><span class="plain">(</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;package</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;requirements.this_mundane_package</span><span class="plain"> == </span><span class="functiontext">Hierarchy::template</span><span class="plain">()) {</span>
<span class="reserved">packaging_state</span><span class="plain"> </span><span class="identifier">save</span><span class="plain"> = </span><span class="functiontext">Packaging::enter</span><span class="plain">(</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;requirements.this_mundane_package</span><span class="plain">);</span>
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;equates_to_iname</span><span class="plain"> = </span><span class="functiontext">InterNames::one_off</span><span class="plain">(</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;access_name</span><span class="plain">, </span><span class="functiontext">Hierarchy::template</span><span class="plain">());</span>
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;equates_to_iname</span><span class="plain">-</span><span class="element">&gt;symbol</span><span class="plain"> = </span><span class="functiontext">Emit::extern</span><span class="plain">(</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;access_name</span><span class="plain">, </span><span class="identifier">K_value</span><span class="plain">);</span>
<span class="functiontext">Packaging::exit</span><span class="plain">(</span><span class="identifier">save</span><span class="plain">);</span>
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> </span><span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Str::len</span><span class="plain">(</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;function_package_name</span><span class="plain">) &gt; 0) {</span>
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;equates_to_iname</span><span class="plain"> = </span><span class="functiontext">Packaging::function_text</span><span class="plain">(</span>
<span class="functiontext">InterNames::one_off</span><span class="plain">(</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;function_package_name</span><span class="plain">, </span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;package</span><span class="plain">),</span>
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;package</span><span class="plain">,</span>
<span class="functiontext">InterNames::one_off</span><span class="plain">(</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;function_package_name</span><span class="plain">, </span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;requirements.this_mundane_package</span><span class="plain">),</span>
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;requirements.this_mundane_package</span><span class="plain">,</span>
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;access_name</span><span class="plain">);</span>
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> </span><span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Str::len</span><span class="plain">(</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;datum_package_name</span><span class="plain">) &gt; 0) {</span>
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;equates_to_iname</span><span class="plain"> = </span><span class="functiontext">Packaging::datum_text</span><span class="plain">(</span>
<span class="functiontext">InterNames::one_off</span><span class="plain">(</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;datum_package_name</span><span class="plain">, </span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;package</span><span class="plain">),</span>
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;package</span><span class="plain">,</span>
<span class="functiontext">InterNames::one_off</span><span class="plain">(</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;datum_package_name</span><span class="plain">, </span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;requirements.this_mundane_package</span><span class="plain">),</span>
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;requirements.this_mundane_package</span><span class="plain">,</span>
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;access_name</span><span class="plain">);</span>
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> </span><span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;package</span><span class="plain">) &amp;&amp; (</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;equates_to_iname</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">)) {</span>
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;equates_to_iname</span><span class="plain"> = </span><span class="functiontext">InterNames::one_off</span><span class="plain">(</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;access_name</span><span class="plain">, </span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;package</span><span class="plain">);</span>
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> </span><span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;requirements.this_mundane_package</span><span class="plain">) &amp;&amp; (</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;equates_to_iname</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">)) {</span>
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;equates_to_iname</span><span class="plain"> = </span><span class="functiontext">InterNames::one_off</span><span class="plain">(</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;access_name</span><span class="plain">, </span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;requirements.this_mundane_package</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;equates_to_iname</span><span class="plain"> = </span><span class="functiontext">Hierarchy::post_process</span><span class="plain">(</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;access_number</span><span class="plain">, </span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;equates_to_iname</span><span class="plain">);</span>
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;package</span><span class="plain"> = </span><span class="functiontext">Packaging::home_of</span><span class="plain">(</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;equates_to_iname</span><span class="plain">);</span>
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;requirements.this_mundane_package</span><span class="plain"> = </span><span class="functiontext">Packaging::home_of</span><span class="plain">(</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;equates_to_iname</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;equates_to_iname</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="reserved">inter_name</span><span class="plain"> *</span><span class="functiontext">HierarchyLocations::find_in_package</span><span class="plain">(</span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">id</span><span class="plain">, </span><span class="reserved">package_request</span><span class="plain"> *</span><span class="identifier">P</span><span class="plain">, </span><span class="identifier">wording</span><span class="plain"> </span><span class="identifier">W</span><span class="plain">) {</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">nrls_created</span><span class="plain"> == </span><span class="identifier">FALSE</span><span class="plain">) </span><span class="functiontext">HierarchyLocations::create_nrls</span><span class="plain">();</span>
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">id</span><span class="plain"> &lt; 0) || (</span><span class="identifier">id</span><span class="plain"> &gt;= </span><span class="constant">MAX_HL</span><span class="plain">) || (</span><span class="identifier">nrls_indexed_by_id</span><span class="plain">[</span><span class="identifier">id</span><span class="plain">] == </span><span class="identifier">NULL</span><span class="plain">))</span>
<span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"bad nrl ID"</span><span class="plain">);</span>
<span class="reserved">named_resource_location</span><span class="plain"> *</span><span class="identifier">nrl</span><span class="plain"> = </span><span class="identifier">nrls_indexed_by_id</span><span class="plain">[</span><span class="identifier">id</span><span class="plain">];</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;requirements.any_package_of_this_type</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"NRL accessed inappropriately"</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">P</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) || (</span><span class="identifier">P</span><span class="plain">-</span><span class="element">&gt;eventual_type</span><span class="plain"> != </span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;requirements.any_package_of_this_type</span><span class="plain">)) </span><span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"constant in wrong superpackage"</span><span class="plain">);</span>
<span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">iname</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Str::len</span><span class="plain">(</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;function_package_name</span><span class="plain">) &gt; 0) {</span>
<span class="identifier">iname</span><span class="plain"> = </span><span class="functiontext">Packaging::function_text</span><span class="plain">(</span>
<span class="functiontext">InterNames::one_off</span><span class="plain">(</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;function_package_name</span><span class="plain">, </span><span class="identifier">P</span><span class="plain">),</span>
<span class="identifier">P</span><span class="plain">,</span>
<span class="identifier">NULL</span><span class="plain">);</span>
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> {</span>
<span class="identifier">iname</span><span class="plain"> = </span><span class="functiontext">InterNames::one_off</span><span class="plain">(</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;access_name</span><span class="plain">, </span><span class="identifier">P</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="reserved">if</span><span class="plain"> (!</span><span class="identifier">Wordings::empty</span><span class="plain">(</span><span class="identifier">W</span><span class="plain">)) </span><span class="functiontext">InterNames::attach_memo</span><span class="plain">(</span><span class="identifier">iname</span><span class="plain">, </span><span class="identifier">W</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;trans.translate_to</span><span class="plain">)</span>
<span class="functiontext">InterNames::translate</span><span class="plain">(</span><span class="identifier">iname</span><span class="plain">, </span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;trans.translate_to</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;trans.then_make_unique</span><span class="plain">)</span>
<span class="identifier">Inter::Symbols::set_flag</span><span class="plain">(</span><span class="functiontext">InterNames::to_symbol</span><span class="plain">(</span><span class="identifier">iname</span><span class="plain">), </span><span class="identifier">MAKE_NAME_UNIQUE</span><span class="plain">);</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">iname</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="reserved">package_request</span><span class="plain"> *</span><span class="functiontext">HierarchyLocations::package_in_package</span><span class="plain">(</span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">id</span><span class="plain">, </span><span class="reserved">package_request</span><span class="plain"> *</span><span class="identifier">P</span><span class="plain">) {</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">nrls_created</span><span class="plain"> == </span><span class="identifier">FALSE</span><span class="plain">) </span><span class="functiontext">HierarchyLocations::create_nrls</span><span class="plain">();</span>
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">id</span><span class="plain"> &lt; 0) || (</span><span class="identifier">id</span><span class="plain"> &gt;= </span><span class="constant">MAX_HL</span><span class="plain">) || (</span><span class="identifier">nrls_indexed_by_id</span><span class="plain">[</span><span class="identifier">id</span><span class="plain">] == </span><span class="identifier">NULL</span><span class="plain">))</span>
<span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"bad nrl ID"</span><span class="plain">);</span>
<span class="reserved">named_resource_location</span><span class="plain"> *</span><span class="identifier">nrl</span><span class="plain"> = </span><span class="identifier">nrls_indexed_by_id</span><span class="plain">[</span><span class="identifier">id</span><span class="plain">];</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;package_type</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"NRL accessed inappropriately"</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">P</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) || (</span><span class="identifier">P</span><span class="plain">-</span><span class="element">&gt;eventual_type</span><span class="plain"> != </span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;package_type</span><span class="plain">)) </span><span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"subpackage in wrong superpackage"</span><span class="plain">);</span>
<span class="reserved">return</span><span class="plain"> </span><span class="functiontext">Packaging::request</span><span class="plain">(</span><span class="functiontext">InterNames::one_off</span><span class="plain">(</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;access_name</span><span class="plain">, </span><span class="identifier">P</span><span class="plain">), </span><span class="identifier">P</span><span class="plain">, </span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;package_type</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;requirements.any_package_of_this_type</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"NRL accessed inappropriately"</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">P</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) || (</span><span class="identifier">P</span><span class="plain">-</span><span class="element">&gt;eventual_type</span><span class="plain"> != </span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;requirements.any_package_of_this_type</span><span class="plain">)) </span><span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"subpackage in wrong superpackage"</span><span class="plain">);</span>
<span class="reserved">return</span><span class="plain"> </span><span class="functiontext">Packaging::request</span><span class="plain">(</span><span class="functiontext">InterNames::one_off</span><span class="plain">(</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;access_name</span><span class="plain">, </span><span class="identifier">P</span><span class="plain">), </span><span class="identifier">P</span><span class="plain">, </span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;requirements.any_package_of_this_type</span><span class="plain">);</span>
<span class="plain">}</span>
</pre>
<p class="inwebparagraph"></p>
<p class="endnote">The function HierarchyLocations::blank is used in 27/hr (<a href="27-hr.html#SP1">&#167;1</a>).</p>
<p class="endnote">The function HierarchyLocations::local_submodule is used in 27/hr (<a href="27-hr.html#SP1_4">&#167;1.4</a>, <a href="27-hr.html#SP1_6">&#167;1.6</a>, <a href="27-hr.html#SP1_8">&#167;1.8</a>, <a href="27-hr.html#SP1_12">&#167;1.12</a>, <a href="27-hr.html#SP1_14">&#167;1.14</a>, <a href="27-hr.html#SP1_16">&#167;1.16</a>, <a href="27-hr.html#SP1_20">&#167;1.20</a>, <a href="27-hr.html#SP1_22">&#167;1.22</a>, <a href="27-hr.html#SP1_24">&#167;1.24</a>, <a href="27-hr.html#SP1_28">&#167;1.28</a>, <a href="27-hr.html#SP1_30">&#167;1.30</a>, <a href="27-hr.html#SP1_32">&#167;1.32</a>, <a href="27-hr.html#SP1_34">&#167;1.34</a>, <a href="27-hr.html#SP1_36">&#167;1.36</a>, <a href="27-hr.html#SP1_38">&#167;1.38</a>, <a href="27-hr.html#SP1_40">&#167;1.40</a>, <a href="27-hr.html#SP1_42">&#167;1.42</a>, <a href="27-hr.html#SP1_44">&#167;1.44</a>).</p>
<p class="endnote">The function HierarchyLocations::generic_submodule is used in 27/hr (<a href="27-hr.html#SP1_2">&#167;1.2</a>, <a href="27-hr.html#SP1_4">&#167;1.4</a>, <a href="27-hr.html#SP1_14">&#167;1.14</a>, <a href="27-hr.html#SP1_28">&#167;1.28</a>, <a href="27-hr.html#SP1_36">&#167;1.36</a>, <a href="27-hr.html#SP1_38">&#167;1.38</a>).</p>
<p class="endnote">The function HierarchyLocations::synoptic_submodule is used in 27/hr (<a href="27-hr.html#SP1_2">&#167;1.2</a>, <a href="27-hr.html#SP1_4">&#167;1.4</a>, <a href="27-hr.html#SP1_6">&#167;1.6</a>, <a href="27-hr.html#SP1_10">&#167;1.10</a>, <a href="27-hr.html#SP1_12">&#167;1.12</a>, <a href="27-hr.html#SP1_18">&#167;1.18</a>, <a href="27-hr.html#SP1_22">&#167;1.22</a>, <a href="27-hr.html#SP1_26">&#167;1.26</a>, <a href="27-hr.html#SP1_28">&#167;1.28</a>, <a href="27-hr.html#SP1_32">&#167;1.32</a>, <a href="27-hr.html#SP1_34">&#167;1.34</a>, <a href="27-hr.html#SP1_36">&#167;1.36</a>, <a href="27-hr.html#SP1_38">&#167;1.38</a>, <a href="27-hr.html#SP1_40">&#167;1.40</a>, <a href="27-hr.html#SP1_42">&#167;1.42</a>).</p>
<p class="endnote">The function HierarchyLocations::any_package_of_type is used in 27/hr (<a href="27-hr.html#SP1_4">&#167;1.4</a>, <a href="27-hr.html#SP1_6">&#167;1.6</a>, <a href="27-hr.html#SP1_8">&#167;1.8</a>, <a href="27-hr.html#SP1_20">&#167;1.20</a>, <a href="27-hr.html#SP1_22">&#167;1.22</a>, <a href="27-hr.html#SP1_28">&#167;1.28</a>, <a href="27-hr.html#SP1_30">&#167;1.30</a>, <a href="27-hr.html#SP1_32">&#167;1.32</a>, <a href="27-hr.html#SP1_36">&#167;1.36</a>, <a href="27-hr.html#SP1_40">&#167;1.40</a>, <a href="27-hr.html#SP1_42">&#167;1.42</a>).</p>
<p class="endnote">The function HierarchyLocations::this_package is used in 27/hr (<a href="27-hr.html#SP1_48">&#167;1.48</a>, <a href="27-hr.html#SP5">&#167;5</a>).</p>
<p class="endnote">The function HierarchyLocations::this_exotic_package is used in 27/hr (<a href="27-hr.html#SP1_46">&#167;1.46</a>).</p>
<p class="endnote">The function HierarchyLocations::new appears nowhere else.</p>
<p class="endnote">The function HierarchyLocations::make is used in 27/hr (<a href="27-hr.html#SP2_2">&#167;2.2</a>, <a href="27-hr.html#SP2_4">&#167;2.4</a>, <a href="27-hr.html#SP2_6">&#167;2.6</a>, <a href="27-hr.html#SP2_10">&#167;2.10</a>, <a href="27-hr.html#SP2_12">&#167;2.12</a>, <a href="27-hr.html#SP2_14">&#167;2.14</a>, <a href="27-hr.html#SP2_22">&#167;2.22</a>, <a href="27-hr.html#SP2_26">&#167;2.26</a>, <a href="27-hr.html#SP2_28">&#167;2.28</a>, <a href="27-hr.html#SP2_34">&#167;2.34</a>, <a href="27-hr.html#SP2_36">&#167;2.36</a>, <a href="27-hr.html#SP2_38">&#167;2.38</a>, <a href="27-hr.html#SP2_40">&#167;2.40</a>, <a href="27-hr.html#SP2_42">&#167;2.42</a>, <a href="27-hr.html#SP2_48">&#167;2.48</a>, <a href="27-hr.html#SP6">&#167;6</a>).</p>
<p class="endnote">The function HierarchyLocations::con is used in 27/hr (<a href="27-hr.html#SP1_2">&#167;1.2</a>, <a href="27-hr.html#SP1_4">&#167;1.4</a>, <a href="27-hr.html#SP1_6">&#167;1.6</a>, <a href="27-hr.html#SP1_8">&#167;1.8</a>, <a href="27-hr.html#SP1_10">&#167;1.10</a>, <a href="27-hr.html#SP1_12">&#167;1.12</a>, <a href="27-hr.html#SP1_14">&#167;1.14</a>, <a href="27-hr.html#SP1_20">&#167;1.20</a>, <a href="27-hr.html#SP1_22">&#167;1.22</a>, <a href="27-hr.html#SP1_26">&#167;1.26</a>, <a href="27-hr.html#SP1_28">&#167;1.28</a>, <a href="27-hr.html#SP1_30">&#167;1.30</a>, <a href="27-hr.html#SP1_32">&#167;1.32</a>, <a href="27-hr.html#SP1_34">&#167;1.34</a>, <a href="27-hr.html#SP1_36">&#167;1.36</a>, <a href="27-hr.html#SP1_38">&#167;1.38</a>, <a href="27-hr.html#SP1_40">&#167;1.40</a>, <a href="27-hr.html#SP1_42">&#167;1.42</a>, <a href="27-hr.html#SP1_46">&#167;1.46</a>, <a href="27-hr.html#SP1_48">&#167;1.48</a>, <a href="27-hr.html#SP5">&#167;5</a>).</p>
<p class="endnote">The function HierarchyLocations::make_in_exotic is used in 27/hr (<a href="27-hr.html#SP2_46">&#167;2.46</a>).</p>
<p class="endnote">The function HierarchyLocations::make_as is used in 27/hr (<a href="27-hr.html#SP5">&#167;5</a>).</p>
<p class="endnote">The function HierarchyLocations::make_as is used in 27/hr (<a href="27-hr.html#SP6">&#167;6</a>).</p>
<p class="endnote">The function HierarchyLocations::func is used in 27/hr (<a href="27-hr.html#SP1_4">&#167;1.4</a>, <a href="27-hr.html#SP1_12">&#167;1.12</a>, <a href="27-hr.html#SP1_18">&#167;1.18</a>, <a href="27-hr.html#SP1_22">&#167;1.22</a>, <a href="27-hr.html#SP1_26">&#167;1.26</a>, <a href="27-hr.html#SP1_28">&#167;1.28</a>, <a href="27-hr.html#SP1_36">&#167;1.36</a>, <a href="27-hr.html#SP1_38">&#167;1.38</a>, <a href="27-hr.html#SP1_40">&#167;1.40</a>, <a href="27-hr.html#SP1_42">&#167;1.42</a>, <a href="27-hr.html#SP1_46">&#167;1.46</a>).</p>
<p class="endnote">The function HierarchyLocations::make_function is used in 27/hr (<a href="27-hr.html#SP2_4">&#167;2.4</a>, <a href="27-hr.html#SP2_12">&#167;2.12</a>, <a href="27-hr.html#SP2_18">&#167;2.18</a>, <a href="27-hr.html#SP2_22">&#167;2.22</a>, <a href="27-hr.html#SP2_26">&#167;2.26</a>, <a href="27-hr.html#SP2_28">&#167;2.28</a>, <a href="27-hr.html#SP2_36">&#167;2.36</a>, <a href="27-hr.html#SP2_38">&#167;2.38</a>, <a href="27-hr.html#SP2_40">&#167;2.40</a>, <a href="27-hr.html#SP2_42">&#167;2.42</a>).</p>
<p class="endnote">The function HierarchyLocations::make_function_in_exotic is used in 27/hr (<a href="27-hr.html#SP2_46">&#167;2.46</a>).</p>
<p class="endnote">The function HierarchyLocations::make_datum is used in 27/hr (<a href="27-hr.html#SP2_10">&#167;2.10</a>).</p>
<p class="endnote">The function HierarchyLocations::make_datum_in_exotic appears nowhere else.</p>
<p class="endnote">The function HierarchyLocations::make_rulebook_within is used in 27/hr (<a href="27-hr.html#SP2_4">&#167;2.4</a>, <a href="27-hr.html#SP2_6">&#167;2.6</a>).</p>
<p class="endnote">The function HierarchyLocations::datum is used in 27/hr (<a href="27-hr.html#SP1_10">&#167;1.10</a>).</p>
<p class="endnote">The function HierarchyLocations::create_nrls appears nowhere else.</p>
<p class="endnote">The function HierarchyLocations::index appears nowhere else.</p>
<p class="endnote">The function HierarchyLocations::find is used in 27/hr (<a href="27-hr.html#SP6">&#167;6</a>).</p>
<p class="endnote">The function HierarchyLocations::find is used in 27/hr (<a href="27-hr.html#SP5">&#167;5</a>).</p>
<p class="endnote">The function HierarchyLocations::find_by_name is used in 27/hr (<a href="27-hr.html#SP6">&#167;6</a>).</p>
<p class="endnote">The function HierarchyLocations::find_by_name is used in 27/hr (<a href="27-hr.html#SP5">&#167;5</a>).</p>
<p class="endnote">The function HierarchyLocations::function appears nowhere else.</p>
<p class="endnote">The function HierarchyLocations::nrl_to_iname appears nowhere else.</p>
<p class="endnote">The function HierarchyLocations::package_in_package is used in 27/hr (<a href="27-hr.html#SP6">&#167;6</a>).</p>
<p class="endnote">The function HierarchyLocations::find_in_package is used in 27/hr (<a href="27-hr.html#SP5">&#167;5</a>).</p>
<p class="endnote">The function HierarchyLocations::package_in_package is used in 27/hr (<a href="27-hr.html#SP5">&#167;5</a>).</p>
<p class="endnote">The structure location_requirement is accessed in 27/hr and here.</p>
<p class="endnote">The structure named_resource_location is private to this section.</p>
@ -248,11 +296,10 @@
<pre class="display">
<span class="reserved">typedef</span><span class="plain"> </span><span class="reserved">struct</span><span class="plain"> </span><span class="reserved">hierarchy_attachment_point</span><span class="plain"> {</span>
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">submodule</span><span class="plain">;</span>
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">hap_id</span><span class="plain">;</span>
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">counter</span><span class="plain">;</span>
<span class="reserved">struct</span><span class="plain"> </span><span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">type</span><span class="plain">;</span>
<span class="reserved">struct</span><span class="plain"> </span><span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">super_type</span><span class="plain">;</span>
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">synoptic_flag</span><span class="plain">;</span>
<span class="reserved">struct</span><span class="plain"> </span><span class="reserved">location_requirement</span><span class="plain"> </span><span class="identifier">requirements</span><span class="plain">;</span>
<span class="identifier">MEMORY_MANAGEMENT</span>
<span class="plain">} </span><span class="reserved">hierarchy_attachment_point</span><span class="plain">;</span>
@ -264,64 +311,37 @@
<span class="reserved">for</span><span class="plain"> (</span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">i</span><span class="plain">=0; </span><span class="identifier">i</span><span class="plain">&lt;</span><span class="constant">MAX_HAP</span><span class="plain">; </span><span class="identifier">i</span><span class="plain">++) </span><span class="identifier">haps_indexed_by_id</span><span class="plain">[</span><span class="identifier">i</span><span class="plain">] = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="reserved">hierarchy_attachment_point</span><span class="plain"> *</span><span class="functiontext">HierarchyLocations::ap</span><span class="plain">(</span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">ap_id</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">submodule_id</span><span class="plain">, </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">iterated_text</span><span class="plain">, </span><span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">ptype</span><span class="plain">) {</span>
<span class="reserved">hierarchy_attachment_point</span><span class="plain"> *</span><span class="identifier">hap</span><span class="plain"> = </span><span class="identifier">CREATE</span><span class="plain">(</span><span class="reserved">hierarchy_attachment_point</span><span class="plain">);</span>
<span class="identifier">hap</span><span class="plain">-</span><span class="element">&gt;submodule</span><span class="plain"> = </span><span class="identifier">submodule_id</span><span class="plain">;</span>
<span class="identifier">hap</span><span class="plain">-</span><span class="element">&gt;counter</span><span class="plain"> = </span><span class="functiontext">Packaging::register_counter</span><span class="plain">(</span><span class="identifier">iterated_text</span><span class="plain">);</span>
<span class="identifier">hap</span><span class="plain">-</span><span class="element">&gt;type</span><span class="plain"> = </span><span class="identifier">ptype</span><span class="plain">;</span>
<span class="identifier">hap</span><span class="plain">-</span><span class="element">&gt;super_type</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">hap</span><span class="plain">-</span><span class="element">&gt;synoptic_flag</span><span class="plain"> = </span><span class="identifier">FALSE</span><span class="plain">;</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">HierarchyLocations::index_ap</span><span class="plain">(</span><span class="reserved">hierarchy_attachment_point</span><span class="plain"> *</span><span class="identifier">hap</span><span class="plain">) {</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">haps_created</span><span class="plain"> == </span><span class="identifier">FALSE</span><span class="plain">) </span><span class="functiontext">HierarchyLocations::create_haps</span><span class="plain">();</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">ap_id</span><span class="plain"> &gt;= 0) </span><span class="identifier">haps_indexed_by_id</span><span class="plain">[</span><span class="identifier">ap_id</span><span class="plain">] = </span><span class="identifier">hap</span><span class="plain">;</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">hap</span><span class="plain">-</span><span class="element">&gt;hap_id</span><span class="plain"> &gt;= 0) </span><span class="identifier">haps_indexed_by_id</span><span class="plain">[</span><span class="identifier">hap</span><span class="plain">-</span><span class="element">&gt;hap_id</span><span class="plain">] = </span><span class="identifier">hap</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="reserved">hierarchy_attachment_point</span><span class="plain"> *</span><span class="functiontext">HierarchyLocations::ap</span><span class="plain">(</span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">ap_id</span><span class="plain">, </span><span class="reserved">location_requirement</span><span class="plain"> </span><span class="identifier">req</span><span class="plain">, </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">iterated_text</span><span class="plain">, </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">ptype_name</span><span class="plain">) {</span>
<span class="reserved">hierarchy_attachment_point</span><span class="plain"> *</span><span class="identifier">hap</span><span class="plain"> = </span><span class="identifier">CREATE</span><span class="plain">(</span><span class="reserved">hierarchy_attachment_point</span><span class="plain">);</span>
<span class="identifier">hap</span><span class="plain">-</span><span class="element">&gt;hap_id</span><span class="plain"> = </span><span class="identifier">ap_id</span><span class="plain">;</span>
<span class="identifier">hap</span><span class="plain">-</span><span class="element">&gt;requirements</span><span class="plain"> = </span><span class="identifier">req</span><span class="plain">;</span>
<span class="identifier">hap</span><span class="plain">-</span><span class="element">&gt;counter</span><span class="plain"> = </span><span class="functiontext">Packaging::register_counter</span><span class="plain">(</span><span class="identifier">iterated_text</span><span class="plain">);</span>
<span class="identifier">hap</span><span class="plain">-</span><span class="element">&gt;type</span><span class="plain"> = </span><span class="functiontext">HierarchyLocations::ptype</span><span class="plain">(</span><span class="identifier">ptype_name</span><span class="plain">);</span>
<span class="functiontext">HierarchyLocations::index_ap</span><span class="plain">(</span><span class="identifier">hap</span><span class="plain">);</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">hap</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="reserved">hierarchy_attachment_point</span><span class="plain"> *</span><span class="functiontext">HierarchyLocations::synoptic_ap</span><span class="plain">(</span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">ap_id</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">submodule_id</span><span class="plain">, </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">iterated_text</span><span class="plain">, </span><span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">ptype</span><span class="plain">) {</span>
<span class="reserved">hierarchy_attachment_point</span><span class="plain"> *</span><span class="identifier">hap</span><span class="plain"> = </span><span class="functiontext">HierarchyLocations::ap</span><span class="plain">(</span><span class="identifier">ap_id</span><span class="plain">, </span><span class="identifier">submodule_id</span><span class="plain">, </span><span class="identifier">iterated_text</span><span class="plain">, </span><span class="identifier">ptype</span><span class="plain">);</span>
<span class="identifier">hap</span><span class="plain">-</span><span class="element">&gt;synoptic_flag</span><span class="plain"> = </span><span class="identifier">TRUE</span><span class="plain">;</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">hap</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="reserved">hierarchy_attachment_point</span><span class="plain"> *</span><span class="functiontext">HierarchyLocations::ap_within</span><span class="plain">(</span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">ap_id</span><span class="plain">, </span><span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">sptype</span><span class="plain">, </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">iterated_text</span><span class="plain">, </span><span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">ptype</span><span class="plain">) {</span>
<span class="reserved">hierarchy_attachment_point</span><span class="plain"> *</span><span class="identifier">hap</span><span class="plain"> = </span><span class="functiontext">HierarchyLocations::ap</span><span class="plain">(</span><span class="identifier">ap_id</span><span class="plain">, -1, </span><span class="identifier">iterated_text</span><span class="plain">, </span><span class="identifier">ptype</span><span class="plain">);</span>
<span class="identifier">hap</span><span class="plain">-</span><span class="element">&gt;super_type</span><span class="plain"> = </span><span class="identifier">sptype</span><span class="plain">;</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">hap</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="reserved">package_request</span><span class="plain"> *</span><span class="functiontext">HierarchyLocations::resource_package</span><span class="plain">(</span><span class="reserved">compilation_module</span><span class="plain"> *</span><span class="identifier">C</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">hap_id</span><span class="plain">) {</span>
<span class="reserved">package_request</span><span class="plain"> *</span><span class="functiontext">HierarchyLocations::attach_new_package</span><span class="plain">(</span><span class="reserved">compilation_module</span><span class="plain"> *</span><span class="identifier">C</span><span class="plain">, </span><span class="reserved">package_request</span><span class="plain"> *</span><span class="identifier">R</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">hap_id</span><span class="plain">) {</span>
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">hap_id</span><span class="plain"> &lt; 0) || (</span><span class="identifier">hap_id</span><span class="plain"> &gt;= </span><span class="constant">MAX_HAP</span><span class="plain">) || (</span><span class="identifier">haps_created</span><span class="plain"> == </span><span class="identifier">FALSE</span><span class="plain">) || (</span><span class="identifier">haps_indexed_by_id</span><span class="plain">[</span><span class="identifier">hap_id</span><span class="plain">] == </span><span class="identifier">NULL</span><span class="plain">))</span>
<span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"invalid HAP request"</span><span class="plain">);</span>
<span class="reserved">hierarchy_attachment_point</span><span class="plain"> *</span><span class="identifier">hap</span><span class="plain"> = </span><span class="identifier">haps_indexed_by_id</span><span class="plain">[</span><span class="identifier">hap_id</span><span class="plain">];</span>
<span class="reserved">package_request</span><span class="plain"> *</span><span class="identifier">R</span><span class="plain"> = </span><span class="functiontext">Packaging::request_resource</span><span class="plain">(</span><span class="identifier">C</span><span class="plain">, </span><span class="identifier">hap</span><span class="plain">-</span><span class="element">&gt;submodule</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">hap</span><span class="plain">-</span><span class="element">&gt;synoptic_flag</span><span class="plain">) </span><span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"subpackage is synoptic"</span><span class="plain">);</span>
<span class="reserved">return</span><span class="plain"> </span><span class="functiontext">Packaging::request</span><span class="plain">(</span><span class="functiontext">Packaging::supply_iname</span><span class="plain">(</span><span class="identifier">R</span><span class="plain">, </span><span class="identifier">hap</span><span class="plain">-</span><span class="element">&gt;counter</span><span class="plain">), </span><span class="identifier">R</span><span class="plain">, </span><span class="identifier">hap</span><span class="plain">-</span><span class="element">&gt;type</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="reserved">package_request</span><span class="plain"> *</span><span class="functiontext">HierarchyLocations::package</span><span class="plain">(</span><span class="reserved">compilation_module</span><span class="plain"> *</span><span class="identifier">C</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">hap_id</span><span class="plain">) {</span>
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">hap_id</span><span class="plain"> &lt; 0) || (</span><span class="identifier">hap_id</span><span class="plain"> &gt;= </span><span class="constant">MAX_HAP</span><span class="plain">) || (</span><span class="identifier">haps_created</span><span class="plain"> == </span><span class="identifier">FALSE</span><span class="plain">) || (</span><span class="identifier">haps_indexed_by_id</span><span class="plain">[</span><span class="identifier">hap_id</span><span class="plain">] == </span><span class="identifier">NULL</span><span class="plain">))</span>
<span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"invalid HAP request"</span><span class="plain">);</span>
<span class="reserved">hierarchy_attachment_point</span><span class="plain"> *</span><span class="identifier">hap</span><span class="plain"> = </span><span class="identifier">haps_indexed_by_id</span><span class="plain">[</span><span class="identifier">hap_id</span><span class="plain">];</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">hap</span><span class="plain">-</span><span class="element">&gt;super_type</span><span class="plain">) </span><span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"subpackage in top-level submodule"</span><span class="plain">);</span>
<span class="reserved">package_request</span><span class="plain"> *</span><span class="identifier">R</span><span class="plain"> = </span><span class="functiontext">Packaging::request_resource</span><span class="plain">(</span><span class="identifier">C</span><span class="plain">, </span><span class="identifier">hap</span><span class="plain">-</span><span class="element">&gt;submodule</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">hap</span><span class="plain">-</span><span class="element">&gt;synoptic_flag</span><span class="plain">) </span><span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"subpackage is synoptic"</span><span class="plain">);</span>
<span class="reserved">return</span><span class="plain"> </span><span class="functiontext">Packaging::request</span><span class="plain">(</span><span class="functiontext">Packaging::supply_iname</span><span class="plain">(</span><span class="identifier">R</span><span class="plain">, </span><span class="identifier">hap</span><span class="plain">-</span><span class="element">&gt;counter</span><span class="plain">), </span><span class="identifier">R</span><span class="plain">, </span><span class="identifier">hap</span><span class="plain">-</span><span class="element">&gt;type</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">hap</span><span class="plain">-</span><span class="element">&gt;requirements.this_local_submodule</span><span class="plain">)</span>
<span class="identifier">R</span><span class="plain"> = </span><span class="functiontext">Packaging::request_resource</span><span class="plain">(</span><span class="identifier">C</span><span class="plain">, </span><span class="identifier">hap</span><span class="plain">-</span><span class="element">&gt;requirements.this_local_submodule</span><span class="plain">);</span>
<span class="reserved">else</span><span class="plain"> </span><span class="reserved">if</span><span class="plain"> (</span><span class="identifier">hap</span><span class="plain">-</span><span class="element">&gt;requirements.this_mundane_package</span><span class="plain">)</span>
<span class="identifier">R</span><span class="plain"> = </span><span class="identifier">hap</span><span class="plain">-</span><span class="element">&gt;requirements.this_mundane_package</span><span class="plain">;</span>
<span class="reserved">else</span><span class="plain"> </span><span class="reserved">if</span><span class="plain"> (</span><span class="identifier">hap</span><span class="plain">-</span><span class="element">&gt;requirements.this_exotic_package</span><span class="plain"> &gt;= 0)</span>
<span class="identifier">R</span><span class="plain"> = </span><span class="functiontext">Hierarchy::exotic_package</span><span class="plain">(</span><span class="identifier">hap</span><span class="plain">-</span><span class="element">&gt;requirements.this_exotic_package</span><span class="plain">);</span>
<span class="reserved">else</span><span class="plain"> </span><span class="reserved">if</span><span class="plain"> (</span><span class="identifier">hap</span><span class="plain">-</span><span class="element">&gt;requirements.any_package_of_this_type</span><span class="plain">) {</span>
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">R</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) || (</span><span class="identifier">R</span><span class="plain">-</span><span class="element">&gt;eventual_type</span><span class="plain"> != </span><span class="identifier">hap</span><span class="plain">-</span><span class="element">&gt;requirements.any_package_of_this_type</span><span class="plain">))</span>
<span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"subpackage in wrong superpackage"</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="reserved">package_request</span><span class="plain"> *</span><span class="functiontext">HierarchyLocations::package_within</span><span class="plain">(</span><span class="reserved">package_request</span><span class="plain"> *</span><span class="identifier">R</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">hap_id</span><span class="plain">) {</span>
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">hap_id</span><span class="plain"> &lt; 0) || (</span><span class="identifier">hap_id</span><span class="plain"> &gt;= </span><span class="constant">MAX_HAP</span><span class="plain">) || (</span><span class="identifier">haps_created</span><span class="plain"> == </span><span class="identifier">FALSE</span><span class="plain">) || (</span><span class="identifier">haps_indexed_by_id</span><span class="plain">[</span><span class="identifier">hap_id</span><span class="plain">] == </span><span class="identifier">NULL</span><span class="plain">))</span>
<span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"invalid HAP request"</span><span class="plain">);</span>
<span class="reserved">hierarchy_attachment_point</span><span class="plain"> *</span><span class="identifier">hap</span><span class="plain"> = </span><span class="identifier">haps_indexed_by_id</span><span class="plain">[</span><span class="identifier">hap_id</span><span class="plain">];</span>
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">R</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) || (</span><span class="identifier">R</span><span class="plain">-</span><span class="element">&gt;eventual_type</span><span class="plain"> != </span><span class="identifier">hap</span><span class="plain">-</span><span class="element">&gt;super_type</span><span class="plain">)) </span><span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"subpackage in wrong superpackage"</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">hap</span><span class="plain">-</span><span class="element">&gt;synoptic_flag</span><span class="plain">) </span><span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"subpackage is synoptic"</span><span class="plain">);</span>
<span class="reserved">return</span><span class="plain"> </span><span class="functiontext">Packaging::request</span><span class="plain">(</span><span class="functiontext">Packaging::supply_iname</span><span class="plain">(</span><span class="identifier">R</span><span class="plain">, </span><span class="identifier">hap</span><span class="plain">-</span><span class="element">&gt;counter</span><span class="plain">), </span><span class="identifier">R</span><span class="plain">, </span><span class="identifier">hap</span><span class="plain">-</span><span class="element">&gt;type</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="reserved">package_request</span><span class="plain"> *</span><span class="functiontext">HierarchyLocations::synoptic_package</span><span class="plain">(</span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">hap_id</span><span class="plain">) {</span>
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">hap_id</span><span class="plain"> &lt; 0) || (</span><span class="identifier">hap_id</span><span class="plain"> &gt;= </span><span class="constant">MAX_HAP</span><span class="plain">) || (</span><span class="identifier">haps_created</span><span class="plain"> == </span><span class="identifier">FALSE</span><span class="plain">) || (</span><span class="identifier">haps_indexed_by_id</span><span class="plain">[</span><span class="identifier">hap_id</span><span class="plain">] == </span><span class="identifier">NULL</span><span class="plain">))</span>
<span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"invalid HAP request"</span><span class="plain">);</span>
<span class="reserved">hierarchy_attachment_point</span><span class="plain"> *</span><span class="identifier">hap</span><span class="plain"> = </span><span class="identifier">haps_indexed_by_id</span><span class="plain">[</span><span class="identifier">hap_id</span><span class="plain">];</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">hap</span><span class="plain">-</span><span class="element">&gt;synoptic_flag</span><span class="plain"> == </span><span class="identifier">FALSE</span><span class="plain">) </span><span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"subpackage not synoptic"</span><span class="plain">);</span>
<span class="reserved">package_request</span><span class="plain"> *</span><span class="identifier">R</span><span class="plain"> = </span><span class="functiontext">Packaging::synoptic_resource</span><span class="plain">(</span><span class="identifier">hap</span><span class="plain">-</span><span class="element">&gt;submodule</span><span class="plain">);</span>
<span class="reserved">return</span><span class="plain"> </span><span class="functiontext">Packaging::request</span><span class="plain">(</span><span class="functiontext">Packaging::supply_iname</span><span class="plain">(</span><span class="identifier">R</span><span class="plain">, </span><span class="identifier">hap</span><span class="plain">-</span><span class="element">&gt;counter</span><span class="plain">), </span><span class="identifier">R</span><span class="plain">, </span><span class="identifier">hap</span><span class="plain">-</span><span class="element">&gt;type</span><span class="plain">);</span>
<span class="plain">}</span>
</pre>
@ -330,24 +350,42 @@
<p class="endnote">The function HierarchyLocations::create_haps appears nowhere else.</p>
<p class="endnote">The function HierarchyLocations::ap is used in 27/hr (<a href="27-hr.html#SP2_4">&#167;2.4</a>, <a href="27-hr.html#SP2_6">&#167;2.6</a>, <a href="27-hr.html#SP2_8">&#167;2.8</a>, <a href="27-hr.html#SP2_12">&#167;2.12</a>, <a href="27-hr.html#SP2_14">&#167;2.14</a>, <a href="27-hr.html#SP2_16">&#167;2.16</a>, <a href="27-hr.html#SP2_20">&#167;2.20</a>, <a href="27-hr.html#SP2_22">&#167;2.22</a>, <a href="27-hr.html#SP2_24">&#167;2.24</a>, <a href="27-hr.html#SP2_28">&#167;2.28</a>, <a href="27-hr.html#SP2_30">&#167;2.30</a>, <a href="27-hr.html#SP2_32">&#167;2.32</a>, <a href="27-hr.html#SP2_34">&#167;2.34</a>, <a href="27-hr.html#SP2_36">&#167;2.36</a>, <a href="27-hr.html#SP2_38">&#167;2.38</a>, <a href="27-hr.html#SP2_40">&#167;2.40</a>, <a href="27-hr.html#SP2_42">&#167;2.42</a>, <a href="27-hr.html#SP2_44">&#167;2.44</a>).</p>
<p class="endnote">The function HierarchyLocations::index_ap appears nowhere else.</p>
<p class="endnote">The function HierarchyLocations::synoptic_ap is used in 27/hr (<a href="27-hr.html#SP2_22">&#167;2.22</a>, <a href="27-hr.html#SP2_32">&#167;2.32</a>).</p>
<p class="endnote">The function HierarchyLocations::ap is used in 27/hr (<a href="27-hr.html#SP1_4">&#167;1.4</a>, <a href="27-hr.html#SP1_6">&#167;1.6</a>, <a href="27-hr.html#SP1_8">&#167;1.8</a>, <a href="27-hr.html#SP1_12">&#167;1.12</a>, <a href="27-hr.html#SP1_14">&#167;1.14</a>, <a href="27-hr.html#SP1_16">&#167;1.16</a>, <a href="27-hr.html#SP1_20">&#167;1.20</a>, <a href="27-hr.html#SP1_22">&#167;1.22</a>, <a href="27-hr.html#SP1_24">&#167;1.24</a>, <a href="27-hr.html#SP1_28">&#167;1.28</a>, <a href="27-hr.html#SP1_30">&#167;1.30</a>, <a href="27-hr.html#SP1_32">&#167;1.32</a>, <a href="27-hr.html#SP1_34">&#167;1.34</a>, <a href="27-hr.html#SP1_36">&#167;1.36</a>, <a href="27-hr.html#SP1_38">&#167;1.38</a>, <a href="27-hr.html#SP1_40">&#167;1.40</a>, <a href="27-hr.html#SP1_42">&#167;1.42</a>, <a href="27-hr.html#SP1_44">&#167;1.44</a>).</p>
<p class="endnote">The function HierarchyLocations::ap_within is used in 27/hr (<a href="27-hr.html#SP2_32">&#167;2.32</a>, <a href="27-hr.html#SP2_40">&#167;2.40</a>, <a href="27-hr.html#SP2_42">&#167;2.42</a>).</p>
<p class="endnote">The function HierarchyLocations::resource_package appears nowhere else.</p>
<p class="endnote">The function HierarchyLocations::package is used in 27/hr (<a href="27-hr.html#SP6">&#167;6</a>).</p>
<p class="endnote">The function HierarchyLocations::package_within is used in 27/hr (<a href="27-hr.html#SP6">&#167;6</a>).</p>
<p class="endnote">The function HierarchyLocations::synoptic_package is used in 27/hr (<a href="27-hr.html#SP6">&#167;6</a>).</p>
<p class="endnote">The function HierarchyLocations::attach_new_package is used in 27/hr (<a href="27-hr.html#SP5">&#167;5</a>).</p>
<p class="endnote">The structure hierarchy_attachment_point is accessed in 8/ed and here.</p>
<p class="inwebparagraph"><a id="SP3"></a><b>&#167;3. </b></p>
<pre class="display">
<span class="identifier">dictionary</span><span class="plain"> *</span><span class="identifier">ptypes_indexed_by_name</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">ptypes_created</span><span class="plain"> = </span><span class="identifier">FALSE</span><span class="plain">;</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="functiontext">HierarchyLocations::ptype</span><span class="plain">(</span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">name</span><span class="plain">) {</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">ptypes_created</span><span class="plain"> == </span><span class="identifier">FALSE</span><span class="plain">) {</span>
<span class="identifier">ptypes_created</span><span class="plain"> = </span><span class="identifier">TRUE</span><span class="plain">;</span>
<span class="identifier">ptypes_indexed_by_name</span><span class="plain"> = </span><span class="identifier">Dictionaries::new</span><span class="plain">(512, </span><span class="identifier">FALSE</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Dictionaries::find</span><span class="plain">(</span><span class="identifier">ptypes_indexed_by_name</span><span class="plain">, </span><span class="identifier">name</span><span class="plain">))</span>
<span class="reserved">return</span><span class="plain"> (</span><span class="identifier">inter_symbol</span><span class="plain"> *) </span><span class="identifier">Dictionaries::read_value</span><span class="plain">(</span><span class="identifier">ptypes_indexed_by_name</span><span class="plain">, </span><span class="identifier">name</span><span class="plain">);</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">new_ptype</span><span class="plain"> = </span><span class="functiontext">Packaging::register_ptype</span><span class="plain">(</span><span class="identifier">name</span><span class="plain">, </span><span class="identifier">TRUE</span><span class="plain">);</span>
<span class="identifier">Dictionaries::create</span><span class="plain">(</span><span class="identifier">ptypes_indexed_by_name</span><span class="plain">, </span><span class="identifier">name</span><span class="plain">);</span>
<span class="identifier">Dictionaries::write_value</span><span class="plain">(</span><span class="identifier">ptypes_indexed_by_name</span><span class="plain">, </span><span class="identifier">name</span><span class="plain">, (</span><span class="reserved">void</span><span class="plain"> *) </span><span class="identifier">new_ptype</span><span class="plain">);</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">new_ptype</span><span class="plain">;</span>
<span class="plain">}</span>
</pre>
<p class="inwebparagraph"></p>
<p class="endnote">The function HierarchyLocations::ptype is used in <a href="#SP1">&#167;1</a>, <a href="#SP2">&#167;2</a>.</p>
<hr class="tocbar">
<ul class="toc"><li><a href="27-pc.html">Back to 'Packaging'</a></li><li><a href="27-hr.html">Continue with 'Hierarchy'</a></li></ul><hr class="tocbar">
<ul class="toc"><li><a href="27-tr.html">Back to 'Translation'</a></li><li><a href="27-hr.html">Continue with 'Hierarchy'</a></li></ul><hr class="tocbar">
<!--End of weave-->
</body>
</html>

File diff suppressed because it is too large Load diff

File diff suppressed because one or more lines are too long

View file

@ -64,21 +64,21 @@
<span class="reserved">struct</span><span class="plain"> </span><span class="identifier">inter_package</span><span class="plain"> *</span><span class="identifier">actual_package</span><span class="plain">;</span>
<span class="reserved">struct</span><span class="plain"> </span><span class="reserved">package_request</span><span class="plain"> *</span><span class="identifier">parent_request</span><span class="plain">;</span>
<span class="reserved">struct</span><span class="plain"> </span><span class="identifier">inter_reading_state</span><span class="plain"> </span><span class="identifier">write_position</span><span class="plain">;</span>
<span class="reserved">struct</span><span class="plain"> </span><span class="identifier">linked_list</span><span class="plain"> *</span><span class="identifier">counters</span><span class="plain">; </span> <span class="comment">of <code class="display"><span class="extract">subpackage_request_counter</span></code></span>
<span class="reserved">struct</span><span class="plain"> </span><span class="identifier">linked_list</span><span class="plain"> *</span><span class="identifier">counters</span><span class="plain">; </span> <span class="comment">of <code class="display"><span class="extract">submodule_request_counter</span></code></span>
<span class="identifier">MEMORY_MANAGEMENT</span>
<span class="plain">} </span><span class="reserved">package_request</span><span class="plain">;</span>
<span class="reserved">typedef</span><span class="plain"> </span><span class="reserved">struct</span><span class="plain"> </span><span class="reserved">subpackage_request_counter</span><span class="plain"> {</span>
<span class="reserved">typedef</span><span class="plain"> </span><span class="reserved">struct</span><span class="plain"> </span><span class="reserved">submodule_request_counter</span><span class="plain"> {</span>
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">counter_id</span><span class="plain">;</span>
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">counter_value</span><span class="plain">;</span>
<span class="identifier">MEMORY_MANAGEMENT</span>
<span class="plain">} </span><span class="reserved">subpackage_request_counter</span><span class="plain">;</span>
<span class="plain">} </span><span class="reserved">submodule_request_counter</span><span class="plain">;</span>
</pre>
<p class="inwebparagraph"></p>
<p class="endnote">The structure package_request is accessed in 26/iti, 27/ei, 27/hl and here.</p>
<p class="endnote">The structure subpackage_request_counter is private to this section.</p>
<p class="endnote">The structure submodule_request_counter is private to this section.</p>
<p class="inwebparagraph"><a id="SP4"></a><b>&#167;4. </b></p>
@ -112,7 +112,7 @@
<p class="inwebparagraph"></p>
<p class="endnote">The function Packaging::request is used in <a href="#SP7">&#167;7</a>, <a href="#SP7_1">&#167;7.1</a>, <a href="#SP8">&#167;8</a>, 27/hl (<a href="27-hl.html#SP1">&#167;1</a>, <a href="27-hl.html#SP2">&#167;2</a>), 27/hr (<a href="27-hr.html#SP6">&#167;6</a>).</p>
<p class="endnote">The function Packaging::request is used in <a href="#SP7">&#167;7</a>, <a href="#SP7_1">&#167;7.1</a>, <a href="#SP8">&#167;8</a>, 27/hl (<a href="27-hl.html#SP1">&#167;1</a>, <a href="27-hl.html#SP2">&#167;2</a>), 27/hr (<a href="27-hr.html#SP5">&#167;5</a>).</p>
<p class="endnote">The function Packaging::log is used in 1/cm (<a href="1-cm.html#SP5">&#167;5</a>, <a href="1-cm.html#SP6_6">&#167;6.6</a>).</p>
@ -155,9 +155,9 @@
<p class="endnote">The function Packaging::stateless is used in 15/epv (<a href="15-epv.html#SP2">&#167;2</a>).</p>
<p class="endnote">The function Packaging::home_of is used in 12/cdp (<a href="12-cdp.html#SP5">&#167;5</a>), 27/hl (<a href="27-hl.html#SP1">&#167;1</a>), 27/hr (<a href="27-hr.html#SP4">&#167;4</a>).</p>
<p class="endnote">The function Packaging::home_of is used in 12/cdp (<a href="12-cdp.html#SP5">&#167;5</a>), 27/hl (<a href="27-hl.html#SP1">&#167;1</a>), 27/hr (<a href="27-hr.html#SP3">&#167;3</a>).</p>
<p class="endnote">The function Packaging::enter_home_of is used in 6/bp (<a href="6-bp.html#SP42">&#167;42</a>), 6/rlt (<a href="6-rlt.html#SP14">&#167;14</a>, <a href="6-rlt.html#SP15_1">&#167;15.1</a>, <a href="6-rlt.html#SP20">&#167;20</a>, <a href="6-rlt.html#SP20_3">&#167;20.3</a>), 6/nv (<a href="6-nv.html#SP18">&#167;18</a>), 12/cdp (<a href="12-cdp.html#SP2_1_1">&#167;2.1.1</a>), 13/kak (<a href="13-kak.html#SP5">&#167;5</a>), 13/rsfk (<a href="13-rsfk.html#SP16_2">&#167;16.2</a>, <a href="13-rsfk.html#SP26">&#167;26</a>), 15/pr (<a href="15-pr.html#SP27">&#167;27</a>), 15/epv (<a href="15-epv.html#SP1_1_2">&#167;1.1.2</a>), 17/tl (<a href="17-tl.html#SP14_1">&#167;14.1</a>, <a href="17-tl.html#SP14_2">&#167;14.2</a>), 17/ts (<a href="17-ts.html#SP11">&#167;11</a>), 17/rs (<a href="17-rs.html#SP7_3">&#167;7.3</a>), 18/lc (<a href="18-lc.html#SP12_1">&#167;12.1</a>), 19/rsft (<a href="19-rsft.html#SP1_1_1_1">&#167;1.1.1.1</a>, <a href="19-rsft.html#SP1_1_1_1_1">&#167;1.1.1.1.1</a>, <a href="19-rsft.html#SP1_2">&#167;1.2</a>, <a href="19-rsft.html#SP1_3">&#167;1.3</a>), 21/rl2 (<a href="21-rl2.html#SP14">&#167;14</a>, <a href="21-rl2.html#SP20">&#167;20</a>), 21/fao (<a href="21-fao.html#SP10">&#167;10</a>), 21/ac (<a href="21-ac.html#SP6">&#167;6</a>, <a href="21-ac.html#SP8">&#167;8</a>, <a href="21-ac.html#SP14">&#167;14</a>), 22/cs (<a href="22-cs.html#SP8">&#167;8</a>), 22/pav (<a href="22-pav.html#SP8_1">&#167;8.1</a>), 22/tp2 (<a href="22-tp2.html#SP4">&#167;4</a>), 24/ch (<a href="24-ch.html#SP6">&#167;6</a>, <a href="24-ch.html#SP8">&#167;8</a>), 26/vm (<a href="26-vm.html#SP8">&#167;8</a>), 26/uo (<a href="26-uo.html#SP21">&#167;21</a>), 26/lt (<a href="26-lt.html#SP4_1">&#167;4.1</a>), 26/jl (<a href="26-jl.html#SP6">&#167;6</a>), 26/rt (<a href="26-rt.html#SP1">&#167;1</a>), 26/iti (<a href="26-iti.html#SP10">&#167;10</a>), 26/pl (<a href="26-pl.html#SP12">&#167;12</a>), 26/ts (<a href="26-ts.html#SP10">&#167;10</a>), 27/ei (<a href="27-ei.html#SP3">&#167;3</a>, <a href="27-ei.html#SP4">&#167;4</a>), 27/hr (<a href="27-hr.html#SP5">&#167;5</a>).</p>
<p class="endnote">The function Packaging::enter_home_of is used in 6/bp (<a href="6-bp.html#SP42">&#167;42</a>), 6/rlt (<a href="6-rlt.html#SP14">&#167;14</a>, <a href="6-rlt.html#SP15_1">&#167;15.1</a>, <a href="6-rlt.html#SP20">&#167;20</a>, <a href="6-rlt.html#SP20_3">&#167;20.3</a>), 6/nv (<a href="6-nv.html#SP18">&#167;18</a>), 12/cdp (<a href="12-cdp.html#SP2_1_1">&#167;2.1.1</a>), 13/kak (<a href="13-kak.html#SP5">&#167;5</a>), 13/rsfk (<a href="13-rsfk.html#SP16_2">&#167;16.2</a>, <a href="13-rsfk.html#SP26">&#167;26</a>), 15/pr (<a href="15-pr.html#SP27">&#167;27</a>), 15/epv (<a href="15-epv.html#SP1_1_2">&#167;1.1.2</a>), 17/tl (<a href="17-tl.html#SP14_1">&#167;14.1</a>, <a href="17-tl.html#SP14_2">&#167;14.2</a>), 17/ts (<a href="17-ts.html#SP11">&#167;11</a>), 17/rs (<a href="17-rs.html#SP7_3">&#167;7.3</a>), 18/lc (<a href="18-lc.html#SP12_1">&#167;12.1</a>), 19/rsft (<a href="19-rsft.html#SP1_1_1_1">&#167;1.1.1.1</a>, <a href="19-rsft.html#SP1_1_1_1_1">&#167;1.1.1.1.1</a>, <a href="19-rsft.html#SP1_2">&#167;1.2</a>, <a href="19-rsft.html#SP1_3">&#167;1.3</a>), 21/rl2 (<a href="21-rl2.html#SP14">&#167;14</a>, <a href="21-rl2.html#SP20">&#167;20</a>), 21/fao (<a href="21-fao.html#SP10">&#167;10</a>), 21/ac (<a href="21-ac.html#SP6">&#167;6</a>, <a href="21-ac.html#SP8">&#167;8</a>, <a href="21-ac.html#SP14">&#167;14</a>), 22/cs (<a href="22-cs.html#SP8">&#167;8</a>), 22/pav (<a href="22-pav.html#SP8_1">&#167;8.1</a>), 22/tp2 (<a href="22-tp2.html#SP4">&#167;4</a>), 24/ch (<a href="24-ch.html#SP6">&#167;6</a>, <a href="24-ch.html#SP8">&#167;8</a>), 26/vm (<a href="26-vm.html#SP8">&#167;8</a>), 26/uo (<a href="26-uo.html#SP21">&#167;21</a>), 26/lt (<a href="26-lt.html#SP4_1">&#167;4.1</a>), 26/jl (<a href="26-jl.html#SP6">&#167;6</a>), 26/rt (<a href="26-rt.html#SP1">&#167;1</a>), 26/iti (<a href="26-iti.html#SP10">&#167;10</a>), 26/pl (<a href="26-pl.html#SP12">&#167;12</a>), 26/ts (<a href="26-ts.html#SP10">&#167;10</a>), 27/ei (<a href="27-ei.html#SP3">&#167;3</a>, <a href="27-ei.html#SP4">&#167;4</a>), 27/hr (<a href="27-hr.html#SP4">&#167;4</a>).</p>
<p class="endnote">The function Packaging::enter_current_enclosure is used in 13/rsfk (<a href="13-rsfk.html#SP4">&#167;4</a>), 17/tl (<a href="17-tl.html#SP16">&#167;16</a>), 17/ts (<a href="17-ts.html#SP8_1">&#167;8.1</a>), 18/lc (<a href="18-lc.html#SP11">&#167;11</a>).</p>
@ -238,7 +238,7 @@
<p class="endnote">The function Packaging::enter is used in <a href="#SP5">&#167;5</a>, 4/am (<a href="4-am.html#SP34_2">&#167;34.2</a>), 5/ins (<a href="5-ins.html#SP34">&#167;34</a>), 5/nv (<a href="5-nv.html#SP16">&#167;16</a>), 13/rsfk (<a href="13-rsfk.html#SP16_1">&#167;16.1</a>, <a href="13-rsfk.html#SP26">&#167;26</a>), 15/epv (<a href="15-epv.html#SP2">&#167;2</a>), 16/ic (<a href="16-ic.html#SP10">&#167;10</a>), 17/rs (<a href="17-rs.html#SP6_1">&#167;6.1</a>, <a href="17-rs.html#SP7_1">&#167;7.1</a>), 21/rl (<a href="21-rl.html#SP9">&#167;9</a>), 21/rl2 (<a href="21-rl2.html#SP20">&#167;20</a>), 22/ph (<a href="22-ph.html#SP12">&#167;12</a>), 27/ei (<a href="27-ei.html#SP3">&#167;3</a>, <a href="27-ei.html#SP4">&#167;4</a>), 27/hl (<a href="27-hl.html#SP1">&#167;1</a>).</p>
<p class="endnote">The function Packaging::exit is used in 5/ins (<a href="5-ins.html#SP34">&#167;34</a>), 5/nv (<a href="5-nv.html#SP16">&#167;16</a>), 6/bp (<a href="6-bp.html#SP42">&#167;42</a>), 6/rlt (<a href="6-rlt.html#SP14">&#167;14</a>, <a href="6-rlt.html#SP15_1">&#167;15.1</a>, <a href="6-rlt.html#SP20">&#167;20</a>, <a href="6-rlt.html#SP20_3">&#167;20.3</a>), 6/nv (<a href="6-nv.html#SP18">&#167;18</a>), 12/cdp (<a href="12-cdp.html#SP2_1_1">&#167;2.1.1</a>), 13/kak (<a href="13-kak.html#SP5">&#167;5</a>), 13/rsfk (<a href="13-rsfk.html#SP4">&#167;4</a>, <a href="13-rsfk.html#SP16_1">&#167;16.1</a>, <a href="13-rsfk.html#SP16_2">&#167;16.2</a>, <a href="13-rsfk.html#SP26">&#167;26</a>), 15/pr (<a href="15-pr.html#SP27">&#167;27</a>), 15/epv (<a href="15-epv.html#SP1_1_2">&#167;1.1.2</a>, <a href="15-epv.html#SP2">&#167;2</a>), 16/ic (<a href="16-ic.html#SP10">&#167;10</a>), 17/tl (<a href="17-tl.html#SP14_1">&#167;14.1</a>, <a href="17-tl.html#SP14_2">&#167;14.2</a>, <a href="17-tl.html#SP16">&#167;16</a>), 17/ts (<a href="17-ts.html#SP8_1">&#167;8.1</a>, <a href="17-ts.html#SP11">&#167;11</a>), 17/rs (<a href="17-rs.html#SP6_1">&#167;6.1</a>, <a href="17-rs.html#SP7_1">&#167;7.1</a>, <a href="17-rs.html#SP7_3">&#167;7.3</a>), 18/lc (<a href="18-lc.html#SP11">&#167;11</a>, <a href="18-lc.html#SP12_1">&#167;12.1</a>), 19/rsft (<a href="19-rsft.html#SP1_1_1_1">&#167;1.1.1.1</a>, <a href="19-rsft.html#SP1_1_1_1_1">&#167;1.1.1.1.1</a>, <a href="19-rsft.html#SP1_2">&#167;1.2</a>, <a href="19-rsft.html#SP1_3">&#167;1.3</a>), 21/rl (<a href="21-rl.html#SP9">&#167;9</a>), 21/rl2 (<a href="21-rl2.html#SP14">&#167;14</a>, <a href="21-rl2.html#SP20">&#167;20</a>), 21/fao (<a href="21-fao.html#SP10">&#167;10</a>), 21/ac (<a href="21-ac.html#SP6">&#167;6</a>, <a href="21-ac.html#SP8">&#167;8</a>, <a href="21-ac.html#SP14">&#167;14</a>), 22/cs (<a href="22-cs.html#SP8">&#167;8</a>), 22/ph (<a href="22-ph.html#SP12">&#167;12</a>), 22/pav (<a href="22-pav.html#SP8_1">&#167;8.1</a>), 22/tp2 (<a href="22-tp2.html#SP4">&#167;4</a>), 24/ch (<a href="24-ch.html#SP6">&#167;6</a>, <a href="24-ch.html#SP8">&#167;8</a>), 26/vm (<a href="26-vm.html#SP8">&#167;8</a>), 26/uo (<a href="26-uo.html#SP21">&#167;21</a>), 26/lt (<a href="26-lt.html#SP4_1">&#167;4.1</a>), 26/jl (<a href="26-jl.html#SP6">&#167;6</a>), 26/rt (<a href="26-rt.html#SP4">&#167;4</a>), 26/iti (<a href="26-iti.html#SP10">&#167;10</a>), 26/pl (<a href="26-pl.html#SP12">&#167;12</a>), 26/ts (<a href="26-ts.html#SP10">&#167;10</a>), 27/ei (<a href="27-ei.html#SP3">&#167;3</a>, <a href="27-ei.html#SP4">&#167;4</a>), 27/hl (<a href="27-hl.html#SP1">&#167;1</a>), 27/hr (<a href="27-hr.html#SP5">&#167;5</a>).</p>
<p class="endnote">The function Packaging::exit is used in 5/ins (<a href="5-ins.html#SP34">&#167;34</a>), 5/nv (<a href="5-nv.html#SP16">&#167;16</a>), 6/bp (<a href="6-bp.html#SP42">&#167;42</a>), 6/rlt (<a href="6-rlt.html#SP14">&#167;14</a>, <a href="6-rlt.html#SP15_1">&#167;15.1</a>, <a href="6-rlt.html#SP20">&#167;20</a>, <a href="6-rlt.html#SP20_3">&#167;20.3</a>), 6/nv (<a href="6-nv.html#SP18">&#167;18</a>), 12/cdp (<a href="12-cdp.html#SP2_1_1">&#167;2.1.1</a>), 13/kak (<a href="13-kak.html#SP5">&#167;5</a>), 13/rsfk (<a href="13-rsfk.html#SP4">&#167;4</a>, <a href="13-rsfk.html#SP16_1">&#167;16.1</a>, <a href="13-rsfk.html#SP16_2">&#167;16.2</a>, <a href="13-rsfk.html#SP26">&#167;26</a>), 15/pr (<a href="15-pr.html#SP27">&#167;27</a>), 15/epv (<a href="15-epv.html#SP1_1_2">&#167;1.1.2</a>, <a href="15-epv.html#SP2">&#167;2</a>), 16/ic (<a href="16-ic.html#SP10">&#167;10</a>), 17/tl (<a href="17-tl.html#SP14_1">&#167;14.1</a>, <a href="17-tl.html#SP14_2">&#167;14.2</a>, <a href="17-tl.html#SP16">&#167;16</a>), 17/ts (<a href="17-ts.html#SP8_1">&#167;8.1</a>, <a href="17-ts.html#SP11">&#167;11</a>), 17/rs (<a href="17-rs.html#SP6_1">&#167;6.1</a>, <a href="17-rs.html#SP7_1">&#167;7.1</a>, <a href="17-rs.html#SP7_3">&#167;7.3</a>), 18/lc (<a href="18-lc.html#SP11">&#167;11</a>, <a href="18-lc.html#SP12_1">&#167;12.1</a>), 19/rsft (<a href="19-rsft.html#SP1_1_1_1">&#167;1.1.1.1</a>, <a href="19-rsft.html#SP1_1_1_1_1">&#167;1.1.1.1.1</a>, <a href="19-rsft.html#SP1_2">&#167;1.2</a>, <a href="19-rsft.html#SP1_3">&#167;1.3</a>), 21/rl (<a href="21-rl.html#SP9">&#167;9</a>), 21/rl2 (<a href="21-rl2.html#SP14">&#167;14</a>, <a href="21-rl2.html#SP20">&#167;20</a>), 21/fao (<a href="21-fao.html#SP10">&#167;10</a>), 21/ac (<a href="21-ac.html#SP6">&#167;6</a>, <a href="21-ac.html#SP8">&#167;8</a>, <a href="21-ac.html#SP14">&#167;14</a>), 22/cs (<a href="22-cs.html#SP8">&#167;8</a>), 22/ph (<a href="22-ph.html#SP12">&#167;12</a>), 22/pav (<a href="22-pav.html#SP8_1">&#167;8.1</a>), 22/tp2 (<a href="22-tp2.html#SP4">&#167;4</a>), 24/ch (<a href="24-ch.html#SP6">&#167;6</a>, <a href="24-ch.html#SP8">&#167;8</a>), 26/vm (<a href="26-vm.html#SP8">&#167;8</a>), 26/uo (<a href="26-uo.html#SP21">&#167;21</a>), 26/lt (<a href="26-lt.html#SP4_1">&#167;4.1</a>), 26/jl (<a href="26-jl.html#SP6">&#167;6</a>), 26/rt (<a href="26-rt.html#SP4">&#167;4</a>), 26/iti (<a href="26-iti.html#SP10">&#167;10</a>), 26/pl (<a href="26-pl.html#SP12">&#167;12</a>), 26/ts (<a href="26-ts.html#SP10">&#167;10</a>), 27/ei (<a href="27-ei.html#SP3">&#167;3</a>, <a href="27-ei.html#SP4">&#167;4</a>), 27/hl (<a href="27-hl.html#SP1">&#167;1</a>), 27/hr (<a href="27-hr.html#SP4">&#167;4</a>).</p>
<p class="endnote">The function Packaging::incarnate is used in 21/rl (<a href="21-rl.html#SP9">&#167;9</a>), 27/ei (<a href="27-ei.html#SP3">&#167;3</a>).</p>
@ -266,28 +266,46 @@
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">synoptic_pr</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="reserved">typedef</span><span class="plain"> </span><span class="reserved">struct</span><span class="plain"> </span><span class="reserved">subpackage_requests</span><span class="plain"> {</span>
<span class="reserved">struct</span><span class="plain"> </span><span class="reserved">package_request</span><span class="plain"> *</span><span class="identifier">subs</span><span class="plain">[</span><span class="constant">MAX_SUBMODULE</span><span class="plain">];</span>
<span class="plain">} </span><span class="reserved">subpackage_requests</span><span class="plain">;</span>
<span class="reserved">typedef</span><span class="plain"> </span><span class="reserved">struct</span><span class="plain"> </span><span class="reserved">submodule_identity</span><span class="plain"> {</span>
<span class="reserved">struct</span><span class="plain"> </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">submodule_name</span><span class="plain">;</span>
<span class="identifier">MEMORY_MANAGEMENT</span>
<span class="plain">} </span><span class="reserved">submodule_identity</span><span class="plain">;</span>
<span class="reserved">package_request</span><span class="plain"> *</span><span class="functiontext">Packaging::resources_for_new_submodule</span><span class="plain">(</span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">name</span><span class="plain">, </span><span class="reserved">subpackage_requests</span><span class="plain"> *</span><span class="identifier">SR</span><span class="plain">) {</span>
<span class="reserved">submodule_identity</span><span class="plain"> *</span><span class="functiontext">Packaging::register_submodule</span><span class="plain">(</span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">name</span><span class="plain">) {</span>
<span class="reserved">submodule_identity</span><span class="plain"> *</span><span class="identifier">sid</span><span class="plain"> = </span><span class="identifier">CREATE</span><span class="plain">(</span><span class="reserved">submodule_identity</span><span class="plain">);</span>
<span class="identifier">sid</span><span class="plain">-</span><span class="element">&gt;submodule_name</span><span class="plain"> = </span><span class="identifier">Str::duplicate</span><span class="plain">(</span><span class="identifier">name</span><span class="plain">);</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">sid</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="reserved">typedef</span><span class="plain"> </span><span class="reserved">struct</span><span class="plain"> </span><span class="reserved">submodule_request</span><span class="plain"> {</span>
<span class="reserved">struct</span><span class="plain"> </span><span class="reserved">submodule_identity</span><span class="plain"> *</span><span class="identifier">which_submodule</span><span class="plain">;</span>
<span class="reserved">struct</span><span class="plain"> </span><span class="reserved">package_request</span><span class="plain"> *</span><span class="identifier">where_found</span><span class="plain">;</span>
<span class="identifier">MEMORY_MANAGEMENT</span>
<span class="plain">} </span><span class="reserved">submodule_request</span><span class="plain">;</span>
<span class="reserved">typedef</span><span class="plain"> </span><span class="reserved">struct</span><span class="plain"> </span><span class="reserved">submodule_requests</span><span class="plain"> {</span>
<span class="reserved">struct</span><span class="plain"> </span><span class="identifier">linked_list</span><span class="plain"> *</span><span class="identifier">submodules</span><span class="plain">; </span> <span class="comment">of <code class="display"><span class="extract">submodule_identity</span></code></span>
<span class="plain">} </span><span class="reserved">submodule_requests</span><span class="plain">;</span>
<span class="reserved">package_request</span><span class="plain"> *</span><span class="functiontext">Packaging::resources_for_new_submodule</span><span class="plain">(</span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">name</span><span class="plain">, </span><span class="reserved">submodule_requests</span><span class="plain"> *</span><span class="identifier">SR</span><span class="plain">) {</span>
<span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">package_iname</span><span class="plain"> = </span><span class="functiontext">InterNames::one_off</span><span class="plain">(</span><span class="identifier">name</span><span class="plain">, </span><span class="functiontext">Hierarchy::resources</span><span class="plain">());</span>
<span class="reserved">package_request</span><span class="plain"> *</span><span class="identifier">P</span><span class="plain"> = </span><span class="functiontext">Packaging::request</span><span class="plain">(</span><span class="identifier">package_iname</span><span class="plain">, </span><span class="functiontext">Hierarchy::resources</span><span class="plain">(), </span><span class="identifier">module_ptype</span><span class="plain">);</span>
<span class="functiontext">Packaging::initialise_subpackages</span><span class="plain">(</span><span class="identifier">SR</span><span class="plain">);</span>
<span class="functiontext">Packaging::initialise_submodules</span><span class="plain">(</span><span class="identifier">SR</span><span class="plain">);</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">P</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Packaging::initialise_subpackages</span><span class="plain">(</span><span class="reserved">subpackage_requests</span><span class="plain"> *</span><span class="identifier">SR</span><span class="plain">) {</span>
<span class="reserved">for</span><span class="plain"> (</span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">i</span><span class="plain">=0; </span><span class="identifier">i</span><span class="plain">&lt;</span><span class="constant">MAX_SUBMODULE</span><span class="plain">; </span><span class="identifier">i</span><span class="plain">++) </span><span class="identifier">SR</span><span class="plain">-</span><span class="element">&gt;subs</span><span class="plain">[</span><span class="identifier">i</span><span class="plain">] = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Packaging::initialise_submodules</span><span class="plain">(</span><span class="reserved">submodule_requests</span><span class="plain"> *</span><span class="identifier">SR</span><span class="plain">) {</span>
<span class="identifier">SR</span><span class="plain">-</span><span class="element">&gt;submodules</span><span class="plain"> = </span><span class="identifier">NEW_LINKED_LIST</span><span class="plain">(</span><span class="reserved">submodule_request</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">generic_subpackages_initialised</span><span class="plain"> = </span><span class="identifier">FALSE</span><span class="plain">;</span>
<span class="reserved">subpackage_requests</span><span class="plain"> </span><span class="identifier">generic_subpackages</span><span class="plain">;</span>
<span class="reserved">submodule_requests</span><span class="plain"> </span><span class="identifier">generic_subpackages</span><span class="plain">;</span>
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">synoptic_subpackages_initialised</span><span class="plain"> = </span><span class="identifier">FALSE</span><span class="plain">;</span>
<span class="reserved">subpackage_requests</span><span class="plain"> </span><span class="identifier">synoptic_subpackages</span><span class="plain">;</span>
<span class="reserved">submodule_requests</span><span class="plain"> </span><span class="identifier">synoptic_subpackages</span><span class="plain">;</span>
<span class="reserved">package_request</span><span class="plain"> *</span><span class="functiontext">Packaging::request_resource</span><span class="plain">(</span><span class="reserved">compilation_module</span><span class="plain"> *</span><span class="identifier">C</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">ix</span><span class="plain">) {</span>
<span class="reserved">subpackage_requests</span><span class="plain"> *</span><span class="identifier">SR</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="reserved">package_request</span><span class="plain"> *</span><span class="functiontext">Packaging::request_resource</span><span class="plain">(</span><span class="reserved">compilation_module</span><span class="plain"> *</span><span class="identifier">C</span><span class="plain">, </span><span class="reserved">submodule_identity</span><span class="plain"> *</span><span class="identifier">sid</span><span class="plain">) {</span>
<span class="reserved">submodule_requests</span><span class="plain"> *</span><span class="identifier">SR</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="reserved">package_request</span><span class="plain"> *</span><span class="identifier">parent</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">C</span><span class="plain">) {</span>
<span class="identifier">SR</span><span class="plain"> = </span><span class="functiontext">Modules::subpackages</span><span class="plain">(</span><span class="identifier">C</span><span class="plain">);</span>
@ -295,7 +313,7 @@
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> {</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">generic_subpackages_initialised</span><span class="plain"> == </span><span class="identifier">FALSE</span><span class="plain">) {</span>
<span class="identifier">generic_subpackages_initialised</span><span class="plain"> = </span><span class="identifier">TRUE</span><span class="plain">;</span>
<span class="functiontext">Packaging::initialise_subpackages</span><span class="plain">(&amp;</span><span class="identifier">generic_subpackages</span><span class="plain">);</span>
<span class="functiontext">Packaging::initialise_submodules</span><span class="plain">(&amp;</span><span class="identifier">generic_subpackages</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="identifier">SR</span><span class="plain"> = &amp;</span><span class="identifier">generic_subpackages</span><span class="plain">;</span>
<span class="identifier">parent</span><span class="plain"> = </span><span class="functiontext">Packaging::request_generic</span><span class="plain">();</span>
@ -303,26 +321,26 @@
&lt;<span class="cwebmacro">Handle the resource request</span> <span class="cwebmacronumber">7.1</span>&gt;<span class="plain">;</span>
<span class="plain">}</span>
<span class="reserved">package_request</span><span class="plain"> *</span><span class="functiontext">Packaging::local_resource</span><span class="plain">(</span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">ix</span><span class="plain">) {</span>
<span class="reserved">return</span><span class="plain"> </span><span class="functiontext">Packaging::request_resource</span><span class="plain">(</span><span class="functiontext">Modules::find</span><span class="plain">(</span><span class="identifier">current_sentence</span><span class="plain">), </span><span class="identifier">ix</span><span class="plain">);</span>
<span class="reserved">package_request</span><span class="plain"> *</span><span class="functiontext">Packaging::local_resource</span><span class="plain">(</span><span class="reserved">submodule_identity</span><span class="plain"> *</span><span class="identifier">sid</span><span class="plain">) {</span>
<span class="reserved">return</span><span class="plain"> </span><span class="functiontext">Packaging::request_resource</span><span class="plain">(</span><span class="functiontext">Modules::find</span><span class="plain">(</span><span class="identifier">current_sentence</span><span class="plain">), </span><span class="identifier">sid</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="reserved">package_request</span><span class="plain"> *</span><span class="functiontext">Packaging::generic_resource</span><span class="plain">(</span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">ix</span><span class="plain">) {</span>
<span class="reserved">package_request</span><span class="plain"> *</span><span class="functiontext">Packaging::generic_resource</span><span class="plain">(</span><span class="reserved">submodule_identity</span><span class="plain"> *</span><span class="identifier">sid</span><span class="plain">) {</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">generic_subpackages_initialised</span><span class="plain"> == </span><span class="identifier">FALSE</span><span class="plain">) {</span>
<span class="identifier">generic_subpackages_initialised</span><span class="plain"> = </span><span class="identifier">TRUE</span><span class="plain">;</span>
<span class="functiontext">Packaging::initialise_subpackages</span><span class="plain">(&amp;</span><span class="identifier">generic_subpackages</span><span class="plain">);</span>
<span class="functiontext">Packaging::initialise_submodules</span><span class="plain">(&amp;</span><span class="identifier">generic_subpackages</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="reserved">subpackage_requests</span><span class="plain"> *</span><span class="identifier">SR</span><span class="plain"> = &amp;</span><span class="identifier">generic_subpackages</span><span class="plain">;</span>
<span class="reserved">submodule_requests</span><span class="plain"> *</span><span class="identifier">SR</span><span class="plain"> = &amp;</span><span class="identifier">generic_subpackages</span><span class="plain">;</span>
<span class="reserved">package_request</span><span class="plain"> *</span><span class="identifier">parent</span><span class="plain"> = </span><span class="functiontext">Packaging::request_generic</span><span class="plain">();</span>
&lt;<span class="cwebmacro">Handle the resource request</span> <span class="cwebmacronumber">7.1</span>&gt;<span class="plain">;</span>
<span class="plain">}</span>
<span class="reserved">package_request</span><span class="plain"> *</span><span class="functiontext">Packaging::synoptic_resource</span><span class="plain">(</span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">ix</span><span class="plain">) {</span>
<span class="reserved">package_request</span><span class="plain"> *</span><span class="functiontext">Packaging::synoptic_resource</span><span class="plain">(</span><span class="reserved">submodule_identity</span><span class="plain"> *</span><span class="identifier">sid</span><span class="plain">) {</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">synoptic_subpackages_initialised</span><span class="plain"> == </span><span class="identifier">FALSE</span><span class="plain">) {</span>
<span class="identifier">synoptic_subpackages_initialised</span><span class="plain"> = </span><span class="identifier">TRUE</span><span class="plain">;</span>
<span class="functiontext">Packaging::initialise_subpackages</span><span class="plain">(&amp;</span><span class="identifier">synoptic_subpackages</span><span class="plain">);</span>
<span class="functiontext">Packaging::initialise_submodules</span><span class="plain">(&amp;</span><span class="identifier">synoptic_subpackages</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="reserved">subpackage_requests</span><span class="plain"> *</span><span class="identifier">SR</span><span class="plain"> = &amp;</span><span class="identifier">synoptic_subpackages</span><span class="plain">;</span>
<span class="reserved">submodule_requests</span><span class="plain"> *</span><span class="identifier">SR</span><span class="plain"> = &amp;</span><span class="identifier">synoptic_subpackages</span><span class="plain">;</span>
<span class="reserved">package_request</span><span class="plain"> *</span><span class="identifier">parent</span><span class="plain"> = </span><span class="functiontext">Packaging::request_synoptic</span><span class="plain">();</span>
&lt;<span class="cwebmacro">Handle the resource request</span> <span class="cwebmacronumber">7.1</span>&gt;<span class="plain">;</span>
<span class="plain">}</span>
@ -334,19 +352,25 @@
<p class="endnote">The function Packaging::request_synoptic appears nowhere else.</p>
<p class="endnote">The function Packaging::register_submodule is used in 27/hr (<a href="27-hr.html#SP1_2">&#167;1.2</a>, <a href="27-hr.html#SP1_4">&#167;1.4</a>, <a href="27-hr.html#SP1_6">&#167;1.6</a>, <a href="27-hr.html#SP1_8">&#167;1.8</a>, <a href="27-hr.html#SP1_10">&#167;1.10</a>, <a href="27-hr.html#SP1_12">&#167;1.12</a>, <a href="27-hr.html#SP1_14">&#167;1.14</a>, <a href="27-hr.html#SP1_16">&#167;1.16</a>, <a href="27-hr.html#SP1_18">&#167;1.18</a>, <a href="27-hr.html#SP1_20">&#167;1.20</a>, <a href="27-hr.html#SP1_22">&#167;1.22</a>, <a href="27-hr.html#SP1_24">&#167;1.24</a>, <a href="27-hr.html#SP1_26">&#167;1.26</a>, <a href="27-hr.html#SP1_28">&#167;1.28</a>, <a href="27-hr.html#SP1_30">&#167;1.30</a>, <a href="27-hr.html#SP1_32">&#167;1.32</a>, <a href="27-hr.html#SP1_34">&#167;1.34</a>, <a href="27-hr.html#SP1_36">&#167;1.36</a>, <a href="27-hr.html#SP1_38">&#167;1.38</a>, <a href="27-hr.html#SP1_40">&#167;1.40</a>, <a href="27-hr.html#SP1_42">&#167;1.42</a>, <a href="27-hr.html#SP1_44">&#167;1.44</a>).</p>
<p class="endnote">The function Packaging::resources_for_new_submodule is used in 27/cm (<a href="27-cm.html#SP2">&#167;2</a>).</p>
<p class="endnote">The function Packaging::initialise_subpackages appears nowhere else.</p>
<p class="endnote">The function Packaging::initialise_submodules appears nowhere else.</p>
<p class="endnote">The function Packaging::request_resource is used in 27/hl (<a href="27-hl.html#SP2">&#167;2</a>).</p>
<p class="endnote">The function Packaging::local_resource appears nowhere else.</p>
<p class="endnote">The function Packaging::generic_resource is used in 27/hr (<a href="27-hr.html#SP2_2">&#167;2.2</a>, <a href="27-hr.html#SP2_4">&#167;2.4</a>, <a href="27-hr.html#SP2_14">&#167;2.14</a>, <a href="27-hr.html#SP2_28">&#167;2.28</a>, <a href="27-hr.html#SP2_36">&#167;2.36</a>, <a href="27-hr.html#SP2_38">&#167;2.38</a>).</p>
<p class="endnote">The function Packaging::generic_resource is used in 27/hl (<a href="27-hl.html#SP1">&#167;1</a>).</p>
<p class="endnote">The function Packaging::synoptic_resource is used in 27/hl (<a href="27-hl.html#SP2">&#167;2</a>), 27/hr (<a href="27-hr.html#SP2_2">&#167;2.2</a>, <a href="27-hr.html#SP2_4">&#167;2.4</a>, <a href="27-hr.html#SP2_6">&#167;2.6</a>, <a href="27-hr.html#SP2_10">&#167;2.10</a>, <a href="27-hr.html#SP2_12">&#167;2.12</a>, <a href="27-hr.html#SP2_18">&#167;2.18</a>, <a href="27-hr.html#SP2_22">&#167;2.22</a>, <a href="27-hr.html#SP2_26">&#167;2.26</a>, <a href="27-hr.html#SP2_28">&#167;2.28</a>, <a href="27-hr.html#SP2_34">&#167;2.34</a>, <a href="27-hr.html#SP2_36">&#167;2.36</a>, <a href="27-hr.html#SP2_38">&#167;2.38</a>, <a href="27-hr.html#SP2_40">&#167;2.40</a>, <a href="27-hr.html#SP2_42">&#167;2.42</a>, <a href="27-hr.html#SP6">&#167;6</a>).</p>
<p class="endnote">The function Packaging::synoptic_resource is used in 27/hl (<a href="27-hl.html#SP1">&#167;1</a>).</p>
<p class="endnote">The structure subpackage_requests is private to this section.</p>
<p class="endnote">The structure submodule_identity is private to this section.</p>
<p class="endnote">The structure submodule_request is private to this section.</p>
<p class="endnote">The structure submodule_requests is private to this section.</p>
<p class="inwebparagraph"><a id="SP7_1"></a><b>&#167;7.1. </b><code class="display">
&lt;<span class="cwebmacrodefn">Handle the resource request</span> <span class="cwebmacronumber">7.1</span>&gt; =
@ -354,12 +378,16 @@
<pre class="displaydefn">
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">SR</span><span class="plain">-</span><span class="element">&gt;subs</span><span class="plain">[</span><span class="identifier">ix</span><span class="plain">] == </span><span class="identifier">NULL</span><span class="plain">) {</span>
<span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">N</span><span class="plain"> = </span><span class="functiontext">Hierarchy::submodule_name</span><span class="plain">(</span><span class="identifier">ix</span><span class="plain">);</span>
<span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">iname</span><span class="plain"> = </span><span class="functiontext">InterNames::one_off</span><span class="plain">(</span><span class="identifier">N</span><span class="plain">, </span><span class="identifier">parent</span><span class="plain">);</span>
<span class="identifier">SR</span><span class="plain">-</span><span class="element">&gt;subs</span><span class="plain">[</span><span class="identifier">ix</span><span class="plain">] = </span><span class="functiontext">Packaging::request</span><span class="plain">(</span><span class="identifier">iname</span><span class="plain">, </span><span class="identifier">parent</span><span class="plain">, </span><span class="identifier">plain_ptype</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">SR</span><span class="plain">-</span><span class="element">&gt;subs</span><span class="plain">[</span><span class="identifier">ix</span><span class="plain">];</span>
<span class="reserved">submodule_request</span><span class="plain"> *</span><span class="identifier">sr</span><span class="plain">;</span>
<span class="identifier">LOOP_OVER_LINKED_LIST</span><span class="plain">(</span><span class="identifier">sr</span><span class="plain">, </span><span class="reserved">submodule_request</span><span class="plain">, </span><span class="identifier">SR</span><span class="plain">-</span><span class="element">&gt;submodules</span><span class="plain">)</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">sid</span><span class="plain"> == </span><span class="identifier">sr</span><span class="plain">-</span><span class="element">&gt;which_submodule</span><span class="plain">)</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">sr</span><span class="plain">-</span><span class="element">&gt;where_found</span><span class="plain">;</span>
<span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">iname</span><span class="plain"> = </span><span class="functiontext">InterNames::one_off</span><span class="plain">(</span><span class="identifier">sid</span><span class="plain">-</span><span class="element">&gt;submodule_name</span><span class="plain">, </span><span class="identifier">parent</span><span class="plain">);</span>
<span class="identifier">sr</span><span class="plain"> = </span><span class="identifier">CREATE</span><span class="plain">(</span><span class="reserved">submodule_request</span><span class="plain">);</span>
<span class="identifier">sr</span><span class="plain">-</span><span class="element">&gt;which_submodule</span><span class="plain"> = </span><span class="identifier">sid</span><span class="plain">;</span>
<span class="identifier">sr</span><span class="plain">-</span><span class="element">&gt;where_found</span><span class="plain"> = </span><span class="functiontext">Packaging::request</span><span class="plain">(</span><span class="identifier">iname</span><span class="plain">, </span><span class="identifier">parent</span><span class="plain">, </span><span class="identifier">plain_ptype</span><span class="plain">);</span>
<span class="identifier">ADD_TO_LINKED_LIST</span><span class="plain">(</span><span class="identifier">sr</span><span class="plain">, </span><span class="reserved">submodule_request</span><span class="plain">, </span><span class="identifier">SR</span><span class="plain">-</span><span class="element">&gt;submodules</span><span class="plain">);</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">sr</span><span class="plain">-</span><span class="element">&gt;where_found</span><span class="plain">;</span>
</pre>
<p class="inwebparagraph"></p>
@ -393,19 +421,19 @@
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">R</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"no request"</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">what_for</span><span class="plain"> &lt; 0) || (</span><span class="identifier">what_for</span><span class="plain"> &gt;= </span><span class="identifier">no_pr_counters_registered</span><span class="plain">)) </span><span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"out of range"</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">R</span><span class="plain">-</span><span class="element">&gt;counters</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">)</span>
<span class="identifier">R</span><span class="plain">-</span><span class="element">&gt;counters</span><span class="plain"> = </span><span class="identifier">NEW_LINKED_LIST</span><span class="plain">(</span><span class="reserved">subpackage_request_counter</span><span class="plain">);</span>
<span class="identifier">R</span><span class="plain">-</span><span class="element">&gt;counters</span><span class="plain"> = </span><span class="identifier">NEW_LINKED_LIST</span><span class="plain">(</span><span class="reserved">submodule_request_counter</span><span class="plain">);</span>
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">N</span><span class="plain"> = -1;</span>
<span class="reserved">subpackage_request_counter</span><span class="plain"> *</span><span class="identifier">src</span><span class="plain">;</span>
<span class="identifier">LOOP_OVER_LINKED_LIST</span><span class="plain">(</span><span class="identifier">src</span><span class="plain">, </span><span class="reserved">subpackage_request_counter</span><span class="plain">, </span><span class="identifier">R</span><span class="plain">-</span><span class="element">&gt;counters</span><span class="plain">)</span>
<span class="reserved">submodule_request_counter</span><span class="plain"> *</span><span class="identifier">src</span><span class="plain">;</span>
<span class="identifier">LOOP_OVER_LINKED_LIST</span><span class="plain">(</span><span class="identifier">src</span><span class="plain">, </span><span class="reserved">submodule_request_counter</span><span class="plain">, </span><span class="identifier">R</span><span class="plain">-</span><span class="element">&gt;counters</span><span class="plain">)</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">src</span><span class="plain">-</span><span class="element">&gt;counter_id</span><span class="plain"> == </span><span class="identifier">what_for</span><span class="plain">) {</span>
<span class="identifier">N</span><span class="plain"> = ++(</span><span class="identifier">src</span><span class="plain">-</span><span class="element">&gt;counter_value</span><span class="plain">); </span><span class="reserved">break</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">N</span><span class="plain"> &lt; 0) {</span>
<span class="reserved">subpackage_request_counter</span><span class="plain"> *</span><span class="identifier">src</span><span class="plain"> = </span><span class="identifier">CREATE</span><span class="plain">(</span><span class="reserved">subpackage_request_counter</span><span class="plain">);</span>
<span class="reserved">submodule_request_counter</span><span class="plain"> *</span><span class="identifier">src</span><span class="plain"> = </span><span class="identifier">CREATE</span><span class="plain">(</span><span class="reserved">submodule_request_counter</span><span class="plain">);</span>
<span class="identifier">src</span><span class="plain">-</span><span class="element">&gt;counter_id</span><span class="plain"> = </span><span class="identifier">what_for</span><span class="plain">;</span>
<span class="identifier">src</span><span class="plain">-</span><span class="element">&gt;counter_value</span><span class="plain"> = 1;</span>
<span class="identifier">N</span><span class="plain"> = 1;</span>
<span class="identifier">ADD_TO_LINKED_LIST</span><span class="plain">(</span><span class="identifier">src</span><span class="plain">, </span><span class="reserved">subpackage_request_counter</span><span class="plain">, </span><span class="identifier">R</span><span class="plain">-</span><span class="element">&gt;counters</span><span class="plain">);</span>
<span class="identifier">ADD_TO_LINKED_LIST</span><span class="plain">(</span><span class="identifier">src</span><span class="plain">, </span><span class="reserved">submodule_request_counter</span><span class="plain">, </span><span class="identifier">R</span><span class="plain">-</span><span class="element">&gt;counters</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="identifier">TEMPORARY_TEXT</span><span class="plain">(</span><span class="identifier">P</span><span class="plain">);</span>
<span class="identifier">WRITE_TO</span><span class="plain">(</span><span class="identifier">P</span><span class="plain">, </span><span class="string">"%S_%d"</span><span class="plain">, </span><span class="identifier">pr_counter_names</span><span class="plain">[</span><span class="identifier">what_for</span><span class="plain">], </span><span class="identifier">N</span><span class="plain">);</span>
@ -466,13 +494,13 @@
<p class="inwebparagraph"></p>
<p class="endnote">The function Packaging::register_counter is used in 27/hl (<a href="27-hl.html#SP2">&#167;2</a>), 27/hr (<a href="27-hr.html#SP2">&#167;2</a>).</p>
<p class="endnote">The function Packaging::register_counter is used in 27/hl (<a href="27-hl.html#SP2">&#167;2</a>), 27/hr (<a href="27-hr.html#SP1">&#167;1</a>).</p>
<p class="endnote">The function Packaging::register_ptype is used in 27/hr (<a href="27-hr.html#SP2_4">&#167;2.4</a>, <a href="27-hr.html#SP2_6">&#167;2.6</a>, <a href="27-hr.html#SP2_8">&#167;2.8</a>, <a href="27-hr.html#SP2_12">&#167;2.12</a>, <a href="27-hr.html#SP2_14">&#167;2.14</a>, <a href="27-hr.html#SP2_16">&#167;2.16</a>, <a href="27-hr.html#SP2_20">&#167;2.20</a>, <a href="27-hr.html#SP2_22">&#167;2.22</a>, <a href="27-hr.html#SP2_24">&#167;2.24</a>, <a href="27-hr.html#SP2_28">&#167;2.28</a>, <a href="27-hr.html#SP2_30">&#167;2.30</a>, <a href="27-hr.html#SP2_32">&#167;2.32</a>, <a href="27-hr.html#SP2_34">&#167;2.34</a>, <a href="27-hr.html#SP2_36">&#167;2.36</a>, <a href="27-hr.html#SP2_38">&#167;2.38</a>, <a href="27-hr.html#SP2_40">&#167;2.40</a>, <a href="27-hr.html#SP2_42">&#167;2.42</a>, <a href="27-hr.html#SP2_44">&#167;2.44</a>).</p>
<p class="endnote">The function Packaging::register_ptype is used in 27/hl (<a href="27-hl.html#SP3">&#167;3</a>).</p>
<p class="endnote">The function Packaging::supply_iname is used in 4/am (<a href="4-am.html#SP6">&#167;6</a>), 6/rlt (<a href="6-rlt.html#SP15_1_2">&#167;15.1.2</a>), 12/dtd (<a href="12-dtd.html#SP4">&#167;4</a>), 13/rsfk (<a href="13-rsfk.html#SP19">&#167;19</a>), 17/tl (<a href="17-tl.html#SP7">&#167;7</a>, <a href="17-tl.html#SP10_2_1">&#167;10.2.1</a>, <a href="17-tl.html#SP14_2">&#167;14.2</a>), 17/ts (<a href="17-ts.html#SP5">&#167;5</a>), 18/lc (<a href="18-lc.html#SP11">&#167;11</a>), 27/ei (<a href="27-ei.html#SP4">&#167;4</a>), 27/hl (<a href="27-hl.html#SP2">&#167;2</a>).</p>
<p class="endnote">The function Packaging::function is used in 6/bp (<a href="6-bp.html#SP32">&#167;32</a>), 6/rlt (<a href="6-rlt.html#SP9">&#167;9</a>, <a href="6-rlt.html#SP9_13">&#167;9.13</a>), 12/dtd (<a href="12-dtd.html#SP4">&#167;4</a>), 13/rsfk (<a href="13-rsfk.html#SP15">&#167;15</a>), 15/ma (<a href="15-ma.html#SP11_3">&#167;11.3</a>), 17/tl (<a href="17-tl.html#SP14_2">&#167;14.2</a>), 17/ts (<a href="17-ts.html#SP5">&#167;5</a>), 17/rs (<a href="17-rs.html#SP6_1">&#167;6.1</a>), 20/eq (<a href="20-eq.html#SP10_1">&#167;10.1</a>), 21/rl (<a href="21-rl.html#SP19">&#167;19</a>), 21/rl2 (<a href="21-rl2.html#SP10">&#167;10</a>, <a href="21-rl2.html#SP14">&#167;14</a>), 21/ac (<a href="21-ac.html#SP8">&#167;8</a>), 22/ph (<a href="22-ph.html#SP11">&#167;11</a>), 22/pu (<a href="22-pu.html#SP6">&#167;6</a>), 22/pav (<a href="22-pav.html#SP9">&#167;9</a>), 22/tp (<a href="22-tp.html#SP7">&#167;7</a>), 24/ch (<a href="24-ch.html#SP3">&#167;3</a>), 26/lt (<a href="26-lt.html#SP3">&#167;3</a>), 27/hl (<a href="27-hl.html#SP1">&#167;1</a>).</p>
<p class="endnote">The function Packaging::function is used in 6/bp (<a href="6-bp.html#SP32">&#167;32</a>), 6/rlt (<a href="6-rlt.html#SP9">&#167;9</a>, <a href="6-rlt.html#SP9_13">&#167;9.13</a>), 12/dtd (<a href="12-dtd.html#SP4">&#167;4</a>), 13/rsfk (<a href="13-rsfk.html#SP15">&#167;15</a>), 15/ma (<a href="15-ma.html#SP11_3">&#167;11.3</a>), 17/tl (<a href="17-tl.html#SP14_2">&#167;14.2</a>), 17/ts (<a href="17-ts.html#SP5">&#167;5</a>), 20/eq (<a href="20-eq.html#SP10_1">&#167;10.1</a>), 21/rl (<a href="21-rl.html#SP19">&#167;19</a>), 21/rl2 (<a href="21-rl2.html#SP10">&#167;10</a>, <a href="21-rl2.html#SP14">&#167;14</a>), 21/ac (<a href="21-ac.html#SP8">&#167;8</a>), 22/ph (<a href="22-ph.html#SP11">&#167;11</a>), 22/pu (<a href="22-pu.html#SP6">&#167;6</a>), 22/pav (<a href="22-pav.html#SP9">&#167;9</a>), 22/tp (<a href="22-tp.html#SP7">&#167;7</a>), 24/ch (<a href="24-ch.html#SP3">&#167;3</a>), 26/lt (<a href="26-lt.html#SP3">&#167;3</a>), 27/hl (<a href="27-hl.html#SP1">&#167;1</a>).</p>
<p class="endnote">The function Packaging::function_text is used in 21/rl (<a href="21-rl.html#SP9">&#167;9</a>), 27/hl (<a href="27-hl.html#SP1">&#167;1</a>).</p>
@ -485,7 +513,7 @@
<p class="endnote">The function Packaging::houseed_in_function is used in 26/rt (<a href="26-rt.html#SP4">&#167;4</a>), 27/ei (<a href="27-ei.html#SP4">&#167;4</a>).</p>
<hr class="tocbar">
<ul class="toc"><li><a href="27-in.html">Back to 'Inter Namespace'</a></li><li><a href="27-hl.html">Continue with 'Hierarchy Locations'</a></li></ul><hr class="tocbar">
<ul class="toc"><li><a href="27-in.html">Back to 'Inter Namespace'</a></li><li><a href="27-tr.html">Continue with 'Translation'</a></li></ul><hr class="tocbar">
<!--End of weave-->
</body>
</html>

View file

@ -0,0 +1,67 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>27/pc</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="Content-Language" content="en-gb">
<link href="inweb.css" rel="stylesheet" rev="stylesheet" type="text/css">
</head>
<body>
<!--Weave of '27/tr' generated by 7-->
<ul class="crumbs"><li><a href="../webs.html">&#9733;</a></li><li><a href="index.html">core</a></li><li><a href="index.html#27">Chapter 27: Bridge to Inter Module</a></li><li><b>Translation</b></li></ul><p class="inwebparagraph"><a id="SP1"></a><b>&#167;1. </b></p>
<pre class="display">
<span class="reserved">typedef</span><span class="plain"> </span><span class="reserved">struct</span><span class="plain"> </span><span class="reserved">name_translation</span><span class="plain"> {</span>
<span class="reserved">struct</span><span class="plain"> </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">translate_to</span><span class="plain">;</span>
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">then_make_unique</span><span class="plain">;</span>
<span class="plain">} </span><span class="reserved">name_translation</span><span class="plain">;</span>
<span class="reserved">name_translation</span><span class="plain"> </span><span class="functiontext">Translation::same</span><span class="plain">(</span><span class="reserved">void</span><span class="plain">) {</span>
<span class="reserved">name_translation</span><span class="plain"> </span><span class="identifier">nt</span><span class="plain">;</span>
<span class="identifier">nt</span><span class="element">.translate_to</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">nt</span><span class="element">.then_make_unique</span><span class="plain"> = </span><span class="identifier">FALSE</span><span class="plain">;</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">nt</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="reserved">name_translation</span><span class="plain"> </span><span class="functiontext">Translation::uniqued</span><span class="plain">(</span><span class="reserved">void</span><span class="plain">) {</span>
<span class="reserved">name_translation</span><span class="plain"> </span><span class="identifier">nt</span><span class="plain">;</span>
<span class="identifier">nt</span><span class="element">.translate_to</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">nt</span><span class="element">.then_make_unique</span><span class="plain"> = </span><span class="identifier">TRUE</span><span class="plain">;</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">nt</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="reserved">name_translation</span><span class="plain"> </span><span class="functiontext">Translation::to</span><span class="plain">(</span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">S</span><span class="plain">) {</span>
<span class="reserved">name_translation</span><span class="plain"> </span><span class="identifier">nt</span><span class="plain">;</span>
<span class="identifier">nt</span><span class="element">.translate_to</span><span class="plain"> = </span><span class="identifier">S</span><span class="plain">;</span>
<span class="identifier">nt</span><span class="element">.then_make_unique</span><span class="plain"> = </span><span class="identifier">FALSE</span><span class="plain">;</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">nt</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="reserved">name_translation</span><span class="plain"> </span><span class="functiontext">Translation::to_uniqued</span><span class="plain">(</span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">S</span><span class="plain">) {</span>
<span class="reserved">name_translation</span><span class="plain"> </span><span class="identifier">nt</span><span class="plain">;</span>
<span class="identifier">nt</span><span class="element">.translate_to</span><span class="plain"> = </span><span class="identifier">S</span><span class="plain">;</span>
<span class="identifier">nt</span><span class="element">.then_make_unique</span><span class="plain"> = </span><span class="identifier">TRUE</span><span class="plain">;</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">nt</span><span class="plain">;</span>
<span class="plain">}</span>
</pre>
<p class="inwebparagraph"></p>
<p class="endnote">The function Translation::same is used in 27/hl (<a href="27-hl.html#SP1">&#167;1</a>), 27/hr (<a href="27-hr.html#SP1_2">&#167;1.2</a>, <a href="27-hr.html#SP1_4">&#167;1.4</a>, <a href="27-hr.html#SP1_6">&#167;1.6</a>, <a href="27-hr.html#SP1_10">&#167;1.10</a>, <a href="27-hr.html#SP1_12">&#167;1.12</a>, <a href="27-hr.html#SP1_14">&#167;1.14</a>, <a href="27-hr.html#SP1_22">&#167;1.22</a>, <a href="27-hr.html#SP1_26">&#167;1.26</a>, <a href="27-hr.html#SP1_28">&#167;1.28</a>, <a href="27-hr.html#SP1_34">&#167;1.34</a>, <a href="27-hr.html#SP1_36">&#167;1.36</a>, <a href="27-hr.html#SP1_38">&#167;1.38</a>, <a href="27-hr.html#SP1_40">&#167;1.40</a>, <a href="27-hr.html#SP1_42">&#167;1.42</a>, <a href="27-hr.html#SP1_46">&#167;1.46</a>, <a href="27-hr.html#SP1_48">&#167;1.48</a>, <a href="27-hr.html#SP5">&#167;5</a>).</p>
<p class="endnote">The function Translation::uniqued is used in 27/hr (<a href="27-hr.html#SP1_8">&#167;1.8</a>, <a href="27-hr.html#SP1_20">&#167;1.20</a>, <a href="27-hr.html#SP1_22">&#167;1.22</a>, <a href="27-hr.html#SP1_28">&#167;1.28</a>, <a href="27-hr.html#SP1_30">&#167;1.30</a>, <a href="27-hr.html#SP1_32">&#167;1.32</a>, <a href="27-hr.html#SP1_36">&#167;1.36</a>, <a href="27-hr.html#SP1_40">&#167;1.40</a>, <a href="27-hr.html#SP1_42">&#167;1.42</a>).</p>
<p class="endnote">The function Translation::to is used in 27/hr (<a href="27-hr.html#SP1_4">&#167;1.4</a>, <a href="27-hr.html#SP1_10">&#167;1.10</a>, <a href="27-hr.html#SP1_12">&#167;1.12</a>, <a href="27-hr.html#SP1_18">&#167;1.18</a>, <a href="27-hr.html#SP1_22">&#167;1.22</a>, <a href="27-hr.html#SP1_26">&#167;1.26</a>, <a href="27-hr.html#SP1_28">&#167;1.28</a>, <a href="27-hr.html#SP1_36">&#167;1.36</a>, <a href="27-hr.html#SP1_38">&#167;1.38</a>, <a href="27-hr.html#SP1_40">&#167;1.40</a>, <a href="27-hr.html#SP1_42">&#167;1.42</a>, <a href="27-hr.html#SP1_46">&#167;1.46</a>).</p>
<p class="endnote">The function Translation::to_uniqued appears nowhere else.</p>
<p class="endnote">The structure name_translation is accessed in 27/hl and here.</p>
<hr class="tocbar">
<ul class="toc"><li><a href="27-pc.html">Back to 'Packaging'</a></li><li><a href="27-hl.html">Continue with 'Hierarchy Locations'</a></li></ul><hr class="tocbar">
<!--End of weave-->
</body>
</html>

View file

@ -628,7 +628,7 @@ there's very little to say.
<p class="inwebparagraph"></p>
<p class="endnote">The function NonlocalVariables::iname is used in <a href="#SP12">&#167;12</a>, 26/rt (<a href="26-rt.html#SP4_1_2">&#167;4.1.2</a>, <a href="26-rt.html#SP4_1_4">&#167;4.1.4</a>), 26/iti (<a href="26-iti.html#SP9">&#167;9</a>), 27/hr (<a href="27-hr.html#SP4">&#167;4</a>).</p>
<p class="endnote">The function NonlocalVariables::iname is used in <a href="#SP12">&#167;12</a>, 26/rt (<a href="26-rt.html#SP4_1_2">&#167;4.1.2</a>, <a href="26-rt.html#SP4_1_4">&#167;4.1.4</a>), 26/iti (<a href="26-iti.html#SP9">&#167;9</a>), 27/hr (<a href="27-hr.html#SP3">&#167;3</a>).</p>
<p class="endnote">The function NonlocalVariables::SUBJ_compile_all is used in 16/is (<a href="16-is.html#SP30">&#167;30</a>).</p>

View file

@ -2459,8 +2459,7 @@ logical properties of the two terms of the BP being defined.
&lt;<span class="cwebmacro">Allocate a zeroed-out memory cache for relations with fast route-finding</span> <span class="cwebmacronumber">20.3</span>&gt;<span class="plain">;</span>
<span class="reserved">package_request</span><span class="plain"> *</span><span class="identifier">P</span><span class="plain"> = </span><span class="functiontext">BinaryPredicates::package</span><span class="plain">(</span><span class="identifier">bp</span><span class="plain">);</span>
<span class="identifier">bp</span><span class="plain">-</span><span class="element">&gt;v2v_bitmap_iname</span><span class="plain"> = </span><span class="functiontext">InterNames::one_off</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"bitmap"</span><span class="plain">, </span><span class="identifier">P</span><span class="plain">);</span>
<span class="identifier">Inter::Symbols::set_flag</span><span class="plain">(</span><span class="functiontext">InterNames::to_symbol</span><span class="plain">(</span><span class="identifier">bp</span><span class="plain">-</span><span class="element">&gt;v2v_bitmap_iname</span><span class="plain">), </span><span class="identifier">MAKE_NAME_UNIQUE</span><span class="plain">);</span>
<span class="identifier">bp</span><span class="plain">-</span><span class="element">&gt;v2v_bitmap_iname</span><span class="plain"> = </span><span class="functiontext">Hierarchy::make_iname_in</span><span class="plain">(</span><span class="constant">BITMAP_HL</span><span class="plain">, </span><span class="identifier">P</span><span class="plain">);</span>
<span class="reserved">packaging_state</span><span class="plain"> </span><span class="identifier">save</span><span class="plain"> = </span><span class="functiontext">Packaging::enter_home_of</span><span class="plain">(</span><span class="identifier">bp</span><span class="plain">-</span><span class="element">&gt;v2v_bitmap_iname</span><span class="plain">);</span>
<span class="functiontext">Emit::named_array_begin</span><span class="plain">(</span><span class="identifier">bp</span><span class="plain">-</span><span class="element">&gt;v2v_bitmap_iname</span><span class="plain">, </span><span class="identifier">K_value</span><span class="plain">);</span>
&lt;<span class="cwebmacro">Compile header information in the V-to-V structure</span> <span class="cwebmacronumber">20.2</span>&gt;<span class="plain">;</span>
@ -2575,8 +2574,7 @@ logical properties of the two terms of the BP being defined.
<pre class="displaydefn">
<span class="reserved">package_request</span><span class="plain"> *</span><span class="identifier">P</span><span class="plain"> = </span><span class="functiontext">BinaryPredicates::package</span><span class="plain">(</span><span class="identifier">bp</span><span class="plain">);</span>
<span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">iname</span><span class="plain"> = </span><span class="functiontext">InterNames::one_off</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"route_cache"</span><span class="plain">, </span><span class="identifier">P</span><span class="plain">);</span>
<span class="identifier">Inter::Symbols::set_flag</span><span class="plain">(</span><span class="functiontext">InterNames::to_symbol</span><span class="plain">(</span><span class="identifier">iname</span><span class="plain">), </span><span class="identifier">MAKE_NAME_UNIQUE</span><span class="plain">);</span>
<span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">iname</span><span class="plain"> = </span><span class="functiontext">Hierarchy::make_iname_in</span><span class="plain">(</span><span class="constant">ROUTE_CACHE_HL</span><span class="plain">, </span><span class="identifier">P</span><span class="plain">);</span>
<span class="reserved">packaging_state</span><span class="plain"> </span><span class="identifier">save</span><span class="plain"> = </span><span class="functiontext">Packaging::enter_home_of</span><span class="plain">(</span><span class="identifier">iname</span><span class="plain">);</span>
<span class="identifier">kind</span><span class="plain"> *</span><span class="identifier">left_kind</span><span class="plain"> = </span><span class="functiontext">BinaryPredicates::term_kind</span><span class="plain">(</span><span class="identifier">bp</span><span class="plain">, 0);</span>
<span class="identifier">kind</span><span class="plain"> *</span><span class="identifier">right_kind</span><span class="plain"> = </span><span class="functiontext">BinaryPredicates::term_kind</span><span class="plain">(</span><span class="identifier">bp</span><span class="plain">, 1);</span>

View file

@ -819,6 +819,10 @@
<p><a href="27-pc.html"><spon class="sectiontitle">Packaging</span></a> -
<span class="purpose"></span></p>
</li>
<li>
<p><a href="27-tr.html"><spon class="sectiontitle">Translation</span></a> -
<span class="purpose"></span></p>
</li>
<li>
<p><a href="27-hl.html"><spon class="sectiontitle">Hierarchy Locations</span></a> -
<span class="purpose"></span></p>

View file

@ -36,7 +36,7 @@ but on others it's compiled into the body of an application. So:
<p class="inwebparagraph"></p>
<p class="endnote">The function main is used in 2/pt (<a href="2-pt.html#SP52">&#167;52</a>), 2/pl2 (<a href="2-pl2.html#SP3_1">&#167;3.1</a>), 2/pck (<a href="2-pck.html#SP2">&#167;2</a>), 3/rst (<a href="3-rst.html#SP6">&#167;6</a>), 4/am (<a href="4-am.html#SP26_1">&#167;26.1</a>), 8/ef (<a href="8-ef.html#SP26">&#167;26</a>), 8/ed2 (<a href="8-ed2.html#SP3_2">&#167;3.2</a>), 10/varc (<a href="10-varc.html#SP14">&#167;14</a>), 19/tb (<a href="19-tb.html#SP27">&#167;27</a>, <a href="19-tb.html#SP27_1">&#167;27.1</a>, <a href="19-tb.html#SP27_1_3">&#167;27.1.3</a>, <a href="19-tb.html#SP29">&#167;29</a>), 21/rl2 (<a href="21-rl2.html#SP23">&#167;23</a>), 26/uo (<a href="26-uo.html#SP11_1">&#167;11.1</a>), 27/hr (<a href="27-hr.html#SP6">&#167;6</a>), 2/lnk (<a href="2-lnk.html#SP1">&#167;1</a>), 2/res (<a href="2-res.html#SP1">&#167;1</a>), 3/cg (<a href="3-cg.html#SP1">&#167;1</a>), 2/hf (<a href="2-hf.html#SP6">&#167;6</a>).</p>
<p class="endnote">The function main is used in 2/pt (<a href="2-pt.html#SP52">&#167;52</a>), 2/pl2 (<a href="2-pl2.html#SP3_1">&#167;3.1</a>), 2/pck (<a href="2-pck.html#SP2">&#167;2</a>), 3/rst (<a href="3-rst.html#SP6">&#167;6</a>), 4/am (<a href="4-am.html#SP26_1">&#167;26.1</a>), 8/ef (<a href="8-ef.html#SP26">&#167;26</a>), 8/ed2 (<a href="8-ed2.html#SP3_2">&#167;3.2</a>), 10/varc (<a href="10-varc.html#SP14">&#167;14</a>), 19/tb (<a href="19-tb.html#SP27">&#167;27</a>, <a href="19-tb.html#SP27_1">&#167;27.1</a>, <a href="19-tb.html#SP27_1_3">&#167;27.1.3</a>, <a href="19-tb.html#SP29">&#167;29</a>), 21/rl2 (<a href="21-rl2.html#SP23">&#167;23</a>), 26/uo (<a href="26-uo.html#SP11_1">&#167;11.1</a>), 27/hr (<a href="27-hr.html#SP5">&#167;5</a>), 2/lnk (<a href="2-lnk.html#SP1">&#167;1</a>), 2/res (<a href="2-res.html#SP1">&#167;1</a>), 3/cg (<a href="3-cg.html#SP1">&#167;1</a>), 2/hf (<a href="2-hf.html#SP6">&#167;6</a>).</p>
<p class="inwebparagraph"><a id="SP3"></a><b>&#167;3. </b>As a matter of policy, no module is allowed to start or stop the foundation
module, not even the mighty core; so we take care of that with one more

View file

@ -369,7 +369,7 @@ make that explicit: for instance, "taking" becomes "the taking action".
<span class="identifier">Feeds::feed_text_expanding_strings</span><span class="plain">(</span><span class="identifier">L</span><span class="string">"check"</span><span class="plain">);</span>
<span class="identifier">Feeds::feed_wording</span><span class="plain">(</span><span class="identifier">an</span><span class="plain">-</span><span class="element">&gt;present_name</span><span class="plain">);</span>
<span class="identifier">wording</span><span class="plain"> </span><span class="identifier">W</span><span class="plain"> = </span><span class="identifier">Feeds::end</span><span class="plain">(</span><span class="identifier">id</span><span class="plain">);</span>
<span class="identifier">package_request</span><span class="plain"> *</span><span class="identifier">CR</span><span class="plain"> = </span><span class="identifier">Hierarchy::package_in_package</span><span class="plain">(</span><span class="identifier">CHECK_RB_HL</span><span class="plain">, </span><span class="identifier">an</span><span class="plain">-</span><span class="element">&gt;an_package</span><span class="plain">);</span>
<span class="identifier">package_request</span><span class="plain"> *</span><span class="identifier">CR</span><span class="plain"> = </span><span class="identifier">Hierarchy::make_package_in</span><span class="plain">(</span><span class="identifier">CHECK_RB_HL</span><span class="plain">, </span><span class="identifier">an</span><span class="plain">-</span><span class="element">&gt;an_package</span><span class="plain">);</span>
<span class="identifier">an</span><span class="plain">-</span><span class="element">&gt;check_rules</span><span class="plain"> =</span>
<span class="identifier">Rulebooks::new_automatic</span><span class="plain">(</span><span class="identifier">W</span><span class="plain">, </span><span class="identifier">K_action_name</span><span class="plain">,</span>
<span class="identifier">NO_OUTCOME</span><span class="plain">, </span><span class="identifier">TRUE</span><span class="plain">, </span><span class="identifier">FALSE</span><span class="plain">, </span><span class="identifier">FALSE</span><span class="plain">, </span><span class="identifier">CR</span><span class="plain">);</span>
@ -379,7 +379,7 @@ make that explicit: for instance, "taking" becomes "the taking action".
<span class="identifier">Feeds::feed_text_expanding_strings</span><span class="plain">(</span><span class="identifier">L</span><span class="string">"carry out"</span><span class="plain">);</span>
<span class="identifier">Feeds::feed_wording</span><span class="plain">(</span><span class="identifier">an</span><span class="plain">-</span><span class="element">&gt;present_name</span><span class="plain">);</span>
<span class="identifier">W</span><span class="plain"> = </span><span class="identifier">Feeds::end</span><span class="plain">(</span><span class="identifier">id</span><span class="plain">);</span>
<span class="identifier">package_request</span><span class="plain"> *</span><span class="identifier">OR</span><span class="plain"> = </span><span class="identifier">Hierarchy::package_in_package</span><span class="plain">(</span><span class="identifier">CARRY_OUT_RB_HL</span><span class="plain">, </span><span class="identifier">an</span><span class="plain">-</span><span class="element">&gt;an_package</span><span class="plain">);</span>
<span class="identifier">package_request</span><span class="plain"> *</span><span class="identifier">OR</span><span class="plain"> = </span><span class="identifier">Hierarchy::make_package_in</span><span class="plain">(</span><span class="identifier">CARRY_OUT_RB_HL</span><span class="plain">, </span><span class="identifier">an</span><span class="plain">-</span><span class="element">&gt;an_package</span><span class="plain">);</span>
<span class="identifier">an</span><span class="plain">-</span><span class="element">&gt;carry_out_rules</span><span class="plain"> =</span>
<span class="identifier">Rulebooks::new_automatic</span><span class="plain">(</span><span class="identifier">W</span><span class="plain">, </span><span class="identifier">K_action_name</span><span class="plain">,</span>
<span class="identifier">NO_OUTCOME</span><span class="plain">, </span><span class="identifier">TRUE</span><span class="plain">, </span><span class="identifier">FALSE</span><span class="plain">, </span><span class="identifier">FALSE</span><span class="plain">, </span><span class="identifier">OR</span><span class="plain">);</span>
@ -389,7 +389,7 @@ make that explicit: for instance, "taking" becomes "the taking action".
<span class="identifier">Feeds::feed_text_expanding_strings</span><span class="plain">(</span><span class="identifier">L</span><span class="string">"report"</span><span class="plain">);</span>
<span class="identifier">Feeds::feed_wording</span><span class="plain">(</span><span class="identifier">an</span><span class="plain">-</span><span class="element">&gt;present_name</span><span class="plain">);</span>
<span class="identifier">W</span><span class="plain"> = </span><span class="identifier">Feeds::end</span><span class="plain">(</span><span class="identifier">id</span><span class="plain">);</span>
<span class="identifier">package_request</span><span class="plain"> *</span><span class="identifier">RR</span><span class="plain"> = </span><span class="identifier">Hierarchy::package_in_package</span><span class="plain">(</span><span class="identifier">REPORT_RB_HL</span><span class="plain">, </span><span class="identifier">an</span><span class="plain">-</span><span class="element">&gt;an_package</span><span class="plain">);</span>
<span class="identifier">package_request</span><span class="plain"> *</span><span class="identifier">RR</span><span class="plain"> = </span><span class="identifier">Hierarchy::make_package_in</span><span class="plain">(</span><span class="identifier">REPORT_RB_HL</span><span class="plain">, </span><span class="identifier">an</span><span class="plain">-</span><span class="element">&gt;an_package</span><span class="plain">);</span>
<span class="identifier">an</span><span class="plain">-</span><span class="element">&gt;report_rules</span><span class="plain"> =</span>
<span class="identifier">Rulebooks::new_automatic</span><span class="plain">(</span><span class="identifier">W</span><span class="plain">, </span><span class="identifier">K_action_name</span><span class="plain">,</span>
<span class="identifier">NO_OUTCOME</span><span class="plain">, </span><span class="identifier">TRUE</span><span class="plain">, </span><span class="identifier">FALSE</span><span class="plain">, </span><span class="identifier">FALSE</span><span class="plain">, </span><span class="identifier">RR</span><span class="plain">);</span>

View file

@ -43,7 +43,7 @@ when they want I7 to run.
<p class="inwebparagraph"></p>
<p class="endnote">The function main is used in 2/pt (<a href="2-pt.html#SP52">&#167;52</a>), 2/pl2 (<a href="2-pl2.html#SP3_1">&#167;3.1</a>), 2/pck (<a href="2-pck.html#SP2">&#167;2</a>), 3/rst (<a href="3-rst.html#SP6">&#167;6</a>), 4/am (<a href="4-am.html#SP26_1">&#167;26.1</a>), 8/ef (<a href="8-ef.html#SP26">&#167;26</a>), 8/ed2 (<a href="8-ed2.html#SP3_2">&#167;3.2</a>), 10/varc (<a href="10-varc.html#SP14">&#167;14</a>), 19/tb (<a href="19-tb.html#SP27">&#167;27</a>, <a href="19-tb.html#SP27_1">&#167;27.1</a>, <a href="19-tb.html#SP27_1_3">&#167;27.1.3</a>, <a href="19-tb.html#SP29">&#167;29</a>), 21/rl2 (<a href="21-rl2.html#SP23">&#167;23</a>), 26/uo (<a href="26-uo.html#SP11_1">&#167;11.1</a>), 27/hr (<a href="27-hr.html#SP6">&#167;6</a>), 2/lnk (<a href="2-lnk.html#SP1">&#167;1</a>), 2/res (<a href="2-res.html#SP1">&#167;1</a>), 3/cg (<a href="3-cg.html#SP1">&#167;1</a>), 3/sm (<a href="3-sm.html#SP36">&#167;36</a>, <a href="3-sm.html#SP36_1">&#167;36.1</a>, <a href="3-sm.html#SP38">&#167;38</a>), 3/em2 (<a href="3-em2.html#SP24">&#167;24</a>), 4/ap (<a href="4-ap.html#SP2">&#167;2</a>), 2/hf (<a href="2-hf.html#SP6">&#167;6</a>).</p>
<p class="endnote">The function main is used in 2/pt (<a href="2-pt.html#SP52">&#167;52</a>), 2/pl2 (<a href="2-pl2.html#SP3_1">&#167;3.1</a>), 2/pck (<a href="2-pck.html#SP2">&#167;2</a>), 3/rst (<a href="3-rst.html#SP6">&#167;6</a>), 4/am (<a href="4-am.html#SP26_1">&#167;26.1</a>), 8/ef (<a href="8-ef.html#SP26">&#167;26</a>), 8/ed2 (<a href="8-ed2.html#SP3_2">&#167;3.2</a>), 10/varc (<a href="10-varc.html#SP14">&#167;14</a>), 19/tb (<a href="19-tb.html#SP27">&#167;27</a>, <a href="19-tb.html#SP27_1">&#167;27.1</a>, <a href="19-tb.html#SP27_1_3">&#167;27.1.3</a>, <a href="19-tb.html#SP29">&#167;29</a>), 21/rl2 (<a href="21-rl2.html#SP23">&#167;23</a>), 26/uo (<a href="26-uo.html#SP11_1">&#167;11.1</a>), 27/hr (<a href="27-hr.html#SP5">&#167;5</a>), 2/lnk (<a href="2-lnk.html#SP1">&#167;1</a>), 2/res (<a href="2-res.html#SP1">&#167;1</a>), 3/cg (<a href="3-cg.html#SP1">&#167;1</a>), 3/sm (<a href="3-sm.html#SP36">&#167;36</a>, <a href="3-sm.html#SP36_1">&#167;36.1</a>, <a href="3-sm.html#SP38">&#167;38</a>), 3/em2 (<a href="3-em2.html#SP24">&#167;24</a>), 4/ap (<a href="4-ap.html#SP2">&#167;2</a>), 2/hf (<a href="2-hf.html#SP6">&#167;6</a>).</p>
<p class="inwebparagraph"><a id="SP3"></a><b>&#167;3. </b>Either way, that brings us here. All our modules have to be started up and
shut down, so we take care of that with one more intermediary. These modules

View file

@ -745,36 +745,21 @@ in some human-readable format.
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">K</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"null kind has no inc routine"</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">K</span><span class="plain">-</span><span class="element">&gt;construct</span><span class="plain">-</span><span class="element">&gt;inc_iname</span><span class="plain">) </span><span class="reserved">return</span><span class="plain"> </span><span class="identifier">K</span><span class="plain">-</span><span class="element">&gt;construct</span><span class="plain">-</span><span class="element">&gt;inc_iname</span><span class="plain">;</span>
<span class="identifier">package_request</span><span class="plain"> *</span><span class="identifier">R</span><span class="plain"> = </span><span class="identifier">Kinds::RunTime::package</span><span class="plain">(</span><span class="identifier">K</span><span class="plain">);</span>
<span class="identifier">K</span><span class="plain">-</span><span class="element">&gt;construct</span><span class="plain">-</span><span class="element">&gt;inc_iname</span><span class="plain"> =</span>
<span class="identifier">Packaging::function</span><span class="plain">(</span>
<span class="identifier">InterNames::one_off</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"increment_fn"</span><span class="plain">, </span><span class="identifier">R</span><span class="plain">),</span>
<span class="identifier">R</span><span class="plain">,</span>
<span class="identifier">NULL</span><span class="plain">);</span>
<span class="identifier">Inter::Symbols::set_flag</span><span class="plain">(</span><span class="identifier">InterNames::to_symbol</span><span class="plain">(</span><span class="identifier">K</span><span class="plain">-</span><span class="element">&gt;construct</span><span class="plain">-</span><span class="element">&gt;inc_iname</span><span class="plain">), </span><span class="identifier">MAKE_NAME_UNIQUE</span><span class="plain">);</span>
<span class="identifier">K</span><span class="plain">-</span><span class="element">&gt;construct</span><span class="plain">-</span><span class="element">&gt;inc_iname</span><span class="plain"> = </span><span class="identifier">Hierarchy::make_iname_in</span><span class="plain">(</span><span class="identifier">DECREMENT_FN_HL</span><span class="plain">, </span><span class="identifier">R</span><span class="plain">);</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">K</span><span class="plain">-</span><span class="element">&gt;construct</span><span class="plain">-</span><span class="element">&gt;inc_iname</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="identifier">inter_name</span><span class="plain"> *</span><span class="functiontext">Kinds::Behaviour::get_dec_iname</span><span class="plain">(</span><span class="reserved">kind</span><span class="plain"> *</span><span class="identifier">K</span><span class="plain">) {</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">K</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"null kind has no dec routine"</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">K</span><span class="plain">-</span><span class="element">&gt;construct</span><span class="plain">-</span><span class="element">&gt;dec_iname</span><span class="plain">) </span><span class="reserved">return</span><span class="plain"> </span><span class="identifier">K</span><span class="plain">-</span><span class="element">&gt;construct</span><span class="plain">-</span><span class="element">&gt;dec_iname</span><span class="plain">;</span>
<span class="identifier">package_request</span><span class="plain"> *</span><span class="identifier">R</span><span class="plain"> = </span><span class="identifier">Kinds::RunTime::package</span><span class="plain">(</span><span class="identifier">K</span><span class="plain">);</span>
<span class="identifier">K</span><span class="plain">-</span><span class="element">&gt;construct</span><span class="plain">-</span><span class="element">&gt;dec_iname</span><span class="plain"> =</span>
<span class="identifier">Packaging::function</span><span class="plain">(</span>
<span class="identifier">InterNames::one_off</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"decrement_fn"</span><span class="plain">, </span><span class="identifier">R</span><span class="plain">),</span>
<span class="identifier">R</span><span class="plain">,</span>
<span class="identifier">NULL</span><span class="plain">);</span>
<span class="identifier">Inter::Symbols::set_flag</span><span class="plain">(</span><span class="identifier">InterNames::to_symbol</span><span class="plain">(</span><span class="identifier">K</span><span class="plain">-</span><span class="element">&gt;construct</span><span class="plain">-</span><span class="element">&gt;dec_iname</span><span class="plain">), </span><span class="identifier">MAKE_NAME_UNIQUE</span><span class="plain">);</span>
<span class="identifier">K</span><span class="plain">-</span><span class="element">&gt;construct</span><span class="plain">-</span><span class="element">&gt;dec_iname</span><span class="plain"> = </span><span class="identifier">Hierarchy::make_iname_in</span><span class="plain">(</span><span class="identifier">INCREMENT_FN_HL</span><span class="plain">, </span><span class="identifier">R</span><span class="plain">);</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">K</span><span class="plain">-</span><span class="element">&gt;construct</span><span class="plain">-</span><span class="element">&gt;dec_iname</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="identifier">inter_name</span><span class="plain"> *</span><span class="functiontext">Kinds::Behaviour::get_ranger_iname</span><span class="plain">(</span><span class="reserved">kind</span><span class="plain"> *</span><span class="identifier">K</span><span class="plain">) {</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">K</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"null kind has no inc routine"</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">K</span><span class="plain">-</span><span class="element">&gt;construct</span><span class="plain">-</span><span class="element">&gt;ranger_iname</span><span class="plain">) </span><span class="reserved">return</span><span class="plain"> </span><span class="identifier">K</span><span class="plain">-</span><span class="element">&gt;construct</span><span class="plain">-</span><span class="element">&gt;ranger_iname</span><span class="plain">;</span>
<span class="identifier">package_request</span><span class="plain"> *</span><span class="identifier">R</span><span class="plain"> = </span><span class="identifier">Kinds::RunTime::package</span><span class="plain">(</span><span class="identifier">K</span><span class="plain">);</span>
<span class="identifier">K</span><span class="plain">-</span><span class="element">&gt;construct</span><span class="plain">-</span><span class="element">&gt;ranger_iname</span><span class="plain"> =</span>
<span class="identifier">Packaging::function</span><span class="plain">(</span>
<span class="identifier">InterNames::one_off</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"ranger_fn"</span><span class="plain">, </span><span class="identifier">R</span><span class="plain">),</span>
<span class="identifier">R</span><span class="plain">,</span>
<span class="identifier">NULL</span><span class="plain">);</span>
<span class="identifier">Inter::Symbols::set_flag</span><span class="plain">(</span><span class="identifier">InterNames::to_symbol</span><span class="plain">(</span><span class="identifier">K</span><span class="plain">-</span><span class="element">&gt;construct</span><span class="plain">-</span><span class="element">&gt;ranger_iname</span><span class="plain">), </span><span class="identifier">MAKE_NAME_UNIQUE</span><span class="plain">);</span>
<span class="identifier">K</span><span class="plain">-</span><span class="element">&gt;construct</span><span class="plain">-</span><span class="element">&gt;ranger_iname</span><span class="plain"> = </span><span class="identifier">Hierarchy::make_iname_in</span><span class="plain">(</span><span class="identifier">RANGER_FN_HL</span><span class="plain">, </span><span class="identifier">R</span><span class="plain">);</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">K</span><span class="plain">-</span><span class="element">&gt;construct</span><span class="plain">-</span><span class="element">&gt;ranger_iname</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="identifier">inter_name</span><span class="plain"> *</span><span class="functiontext">Kinds::Behaviour::get_name_of_printing_rule_ACTIONS</span><span class="plain">(</span><span class="reserved">kind</span><span class="plain"> *</span><span class="identifier">K</span><span class="plain">) {</span>

View file

@ -102,8 +102,7 @@ distinct from its meaning, and this is it.
<span class="plain">#</span><span class="identifier">endif</span>
<span class="plain">#</span><span class="identifier">ifdef</span><span class="plain"> </span><span class="identifier">CORE_MODULE</span>
<span class="identifier">aph</span><span class="plain">-</span><span class="element">&gt;aph_package</span><span class="plain"> = </span><span class="identifier">Hierarchy::package</span><span class="plain">(</span><span class="identifier">Modules::current</span><span class="plain">(), </span><span class="identifier">ADJECTIVES_HAP</span><span class="plain">);</span>
<span class="identifier">aph</span><span class="plain">-</span><span class="element">&gt;aph_iname</span><span class="plain"> = </span><span class="identifier">InterNames::one_off</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"adjective"</span><span class="plain">, </span><span class="identifier">aph</span><span class="plain">-</span><span class="element">&gt;aph_package</span><span class="plain">);</span>
<span class="identifier">Inter::Symbols::set_flag</span><span class="plain">(</span><span class="identifier">InterNames::to_symbol</span><span class="plain">(</span><span class="identifier">aph</span><span class="plain">-</span><span class="element">&gt;aph_iname</span><span class="plain">), </span><span class="identifier">MAKE_NAME_UNIQUE</span><span class="plain">);</span>
<span class="identifier">aph</span><span class="plain">-</span><span class="element">&gt;aph_iname</span><span class="plain"> = </span><span class="identifier">Hierarchy::make_iname_in</span><span class="plain">(</span><span class="identifier">ADJECTIVE_HL</span><span class="plain">, </span><span class="identifier">aph</span><span class="plain">-</span><span class="element">&gt;aph_package</span><span class="plain">);</span>
<span class="plain">#</span><span class="identifier">endif</span>
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">nl</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) &amp;&amp; (</span><span class="identifier">Wordings::nonempty</span><span class="plain">(</span><span class="identifier">W</span><span class="plain">))) {</span>
<span class="plain">#</span><span class="identifier">ifdef</span><span class="plain"> </span><span class="identifier">ADJECTIVE_NAME_VETTING</span>

View file

@ -331,12 +331,8 @@ letters or digits, with the first being a letter.
<span class="identifier">exf</span><span class="plain">-</span><span class="element">&gt;IFID_of_owner</span><span class="plain"> = </span><span class="identifier">Str::duplicate</span><span class="plain">(</span><span class="identifier">ifid_of_file</span><span class="plain">);</span>
<span class="identifier">package_request</span><span class="plain"> *</span><span class="identifier">P</span><span class="plain"> = </span><span class="identifier">Hierarchy::local_package</span><span class="plain">(</span><span class="identifier">EXTERNAL_FILES_HAP</span><span class="plain">);</span>
<span class="identifier">exf</span><span class="plain">-</span><span class="element">&gt;exf_iname</span><span class="plain"> = </span><span class="identifier">InterNames::one_off</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"file"</span><span class="plain">, </span><span class="identifier">P</span><span class="plain">);</span>
<span class="identifier">InterNames::attach_memo</span><span class="plain">(</span><span class="identifier">exf</span><span class="plain">-</span><span class="element">&gt;exf_iname</span><span class="plain">, </span><span class="identifier">exf</span><span class="plain">-</span><span class="element">&gt;name</span><span class="plain">);</span>
<span class="identifier">Inter::Symbols::set_flag</span><span class="plain">(</span><span class="identifier">InterNames::to_symbol</span><span class="plain">(</span><span class="identifier">exf</span><span class="plain">-</span><span class="element">&gt;exf_iname</span><span class="plain">), </span><span class="identifier">MAKE_NAME_UNIQUE</span><span class="plain">);</span>
<span class="identifier">exf</span><span class="plain">-</span><span class="element">&gt;IFID_array_iname</span><span class="plain"> = </span><span class="identifier">InterNames::one_off</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"ifid"</span><span class="plain">, </span><span class="identifier">P</span><span class="plain">);</span>
<span class="identifier">InterNames::attach_memo</span><span class="plain">(</span><span class="identifier">exf</span><span class="plain">-</span><span class="element">&gt;IFID_array_iname</span><span class="plain">, </span><span class="identifier">exf</span><span class="plain">-</span><span class="element">&gt;name</span><span class="plain">);</span>
<span class="identifier">Inter::Symbols::set_flag</span><span class="plain">(</span><span class="identifier">InterNames::to_symbol</span><span class="plain">(</span><span class="identifier">exf</span><span class="plain">-</span><span class="element">&gt;IFID_array_iname</span><span class="plain">), </span><span class="identifier">MAKE_NAME_UNIQUE</span><span class="plain">);</span>
<span class="identifier">exf</span><span class="plain">-</span><span class="element">&gt;exf_iname</span><span class="plain"> = </span><span class="identifier">Hierarchy::make_iname_with_memo</span><span class="plain">(</span><span class="identifier">FILE_HL</span><span class="plain">, </span><span class="identifier">P</span><span class="plain">, </span><span class="identifier">exf</span><span class="plain">-</span><span class="element">&gt;name</span><span class="plain">);</span>
<span class="identifier">exf</span><span class="plain">-</span><span class="element">&gt;IFID_array_iname</span><span class="plain"> = </span><span class="identifier">Hierarchy::make_iname_with_memo</span><span class="plain">(</span><span class="identifier">IFID_HL</span><span class="plain">, </span><span class="identifier">P</span><span class="plain">, </span><span class="identifier">exf</span><span class="plain">-</span><span class="element">&gt;name</span><span class="plain">);</span>
<span class="identifier">LOGIF</span><span class="plain">(</span><span class="identifier">FIGURE_CREATIONS</span><span class="plain">, </span><span class="string">"Created external file &lt;%W&gt; = filename '%N'\</span><span class="plain">n</span><span class="string">"</span><span class="plain">,</span>
<span class="identifier">F</span><span class="plain">, </span><span class="identifier">exf</span><span class="plain">-</span><span class="element">&gt;unextended_filename</span><span class="plain">);</span>

View file

@ -110,7 +110,9 @@ We need to itemise the structures we'll want to allocate:
@e package_request_MT
@e named_resource_location_MT
@e hierarchy_attachment_point_MT
@e subpackage_request_counter_MT
@e submodule_request_counter_MT
@e submodule_identity_MT
@e submodule_request_MT
@ Deep breath, then: the following macros define several hundred functions.
@ -193,7 +195,9 @@ ALLOCATE_INDIVIDUALLY(inter_schema_token)
ALLOCATE_INDIVIDUALLY(package_request)
ALLOCATE_INDIVIDUALLY(named_resource_location)
ALLOCATE_INDIVIDUALLY(hierarchy_attachment_point)
ALLOCATE_INDIVIDUALLY(subpackage_request_counter)
ALLOCATE_INDIVIDUALLY(submodule_request_counter)
ALLOCATE_INDIVIDUALLY(submodule_identity)
ALLOCATE_INDIVIDUALLY(submodule_request)
@ So much for the managed structures: now for the unmanaged structures.

View file

@ -587,8 +587,7 @@ compile under Inform 6.
DISCARD_TEXT(TEMP);
InterNames::attach_memo(rks->rks_iname, W);
InterNames::to_symbol(rks->rks_iname);
rks->rks_dv_iname = InterNames::one_off(I"default_value", PR);
Inter::Symbols::set_flag(InterNames::to_symbol(rks->rks_dv_iname), MAKE_NAME_UNIQUE);
rks->rks_dv_iname = Hierarchy::make_iname_in(DEFAULT_VALUE_HL, PR);
@ It's convenient to combine this system with one which constructs default
values for kinds, since both involve tracking constructions uniquely.

View file

@ -72,10 +72,8 @@ response_message *Strings::response_cue(value_holster *VH, rule *owner, int mark
resp->via_I6 = via_I6;
resp->via_I6_routine_compiled = FALSE;
resp->resp_package = Hierarchy::package_within(RESPONSES_HAP, Rules::package(resp->responding_rule));
resp->resp_iname = InterNames::one_off(I"launcher", resp->resp_package);
Inter::Symbols::set_flag(InterNames::to_symbol(resp->resp_iname), MAKE_NAME_UNIQUE);
resp->constant_iname = InterNames::one_off(I"as_constant", resp->resp_package);
Inter::Symbols::set_flag(InterNames::to_symbol(resp->constant_iname), MAKE_NAME_UNIQUE);
resp->resp_iname = Hierarchy::make_iname_in(AS_BLOCK_CONSTANT_HL, resp->resp_package);
resp->constant_iname = Hierarchy::make_iname_in(AS_CONSTANT_HL, resp->resp_package);
if (VH) {
if (Holsters::data_acceptable(VH)) {
Emit::val_iname(K_value, Strings::response_launcher_iname(resp));
@ -107,9 +105,7 @@ a call to an activity based on that value:
@<Compile the actual launcher@> =
package_request *R = resp->resp_package;
inter_name *launcher =
Packaging::function(InterNames::one_off(I"launcher_fn", R), R, NULL);
Inter::Symbols::set_flag(InterNames::to_symbol(launcher), MAKE_NAME_UNIQUE);
inter_name *launcher = Hierarchy::make_iname_in(LAUNCHER_HL, R);
packaging_state save = Routines::begin(launcher);

View file

@ -205,9 +205,7 @@ table_column_usage Tables::Columns::add_to_table(wording W, table *t) {
tcu.observed_kind_cell = NULL;
package_request *R = Hierarchy::package_within(TABLE_COLUMNS_HAP, t->table_package);
tcu.tcu_iname = InterNames::one_off(I"column_data", R);
Inter::Symbols::set_flag(InterNames::to_symbol(tcu.tcu_iname), MAKE_NAME_UNIQUE);
tcu.tcu_iname = Hierarchy::make_iname_in(COLUMN_DATA_HL, R);
return tcu;
}

View file

@ -142,8 +142,7 @@ table *Tables::new_table_structure(void) {
t->amendment_of = NULL;
t->has_been_amended = FALSE;
t->table_package = Hierarchy::local_package(TABLES_HAP);
t->table_identifier = InterNames::one_off(I"data", t->table_package);
Inter::Symbols::set_flag(InterNames::to_symbol(t->table_identifier), MAKE_NAME_UNIQUE);
t->table_identifier = Hierarchy::make_iname_in(TABLE_DATA_HL, t->table_package);
t->approximate_array_space_needed = 0;
t->disable_block_constant_correction = FALSE;
t->no_columns = 0;

View file

@ -222,7 +222,7 @@ activity *Activities::new(kind *creation_kind, wording W) {
Feeds::feed_text_expanding_strings(L"before");
Feeds::feed_wording(av->name);
wording SW = Feeds::end(id);
package_request *BR = Hierarchy::package_in_package(BEFORE_RB_HL, av->av_package);
package_request *BR = Hierarchy::make_package_in(BEFORE_RB_HL, av->av_package);
av->before_rules =
Rulebooks::new_automatic(SW, av->activity_on_what_kind,
NO_OUTCOME, FALSE, future_action_flag, TRUE, BR);
@ -230,7 +230,7 @@ activity *Activities::new(kind *creation_kind, wording W) {
Feeds::feed_text_expanding_strings(L"for");
Feeds::feed_wording(av->name);
SW = Feeds::end(id);
package_request *FR = Hierarchy::package_in_package(FOR_RB_HL, av->av_package);
package_request *FR = Hierarchy::make_package_in(FOR_RB_HL, av->av_package);
av->for_rules =
Rulebooks::new_automatic(SW, av->activity_on_what_kind,
SUCCESS_OUTCOME, FALSE, future_action_flag, TRUE, FR);
@ -238,7 +238,7 @@ activity *Activities::new(kind *creation_kind, wording W) {
Feeds::feed_text_expanding_strings(L"after");
Feeds::feed_wording(av->name);
SW = Feeds::end(id);
package_request *AR = Hierarchy::package_in_package(AFTER_RB_HL, av->av_package);
package_request *AR = Hierarchy::make_package_in(AFTER_RB_HL, av->av_package);
av->after_rules =
Rulebooks::new_automatic(SW, av->activity_on_what_kind,
NO_OUTCOME, FALSE, future_action_flag, TRUE, AR);

View file

@ -203,8 +203,7 @@ void Rules::set_I7_definition(rule *R, phrase *ph) {
void Rules::set_I6_definition(rule *R, wchar_t *identifier) {
TEMPORARY_TEXT(XT);
WRITE_TO(XT, "%w", identifier);
R->rule_extern_iname = InterNames::one_off(I"exterior_rule", R->rule_package);
Inter::Symbols::set_flag(InterNames::to_symbol(R->rule_extern_iname), MAKE_NAME_UNIQUE);
R->rule_extern_iname = Hierarchy::make_iname_in(EXTERIOR_RULE_HL, R->rule_package);
inter_name *xiname = Hierarchy::find_by_name(XT);
packaging_state save = Packaging::enter(R->rule_package);

View file

@ -105,9 +105,8 @@ inter_name *Phrases::Constants::iname(constant_phrase *cphr) {
if (cphr->cphr_iname == NULL) {
phrase *ph = Phrases::Constants::as_phrase(cphr);
if (ph == NULL) internal_error("cannot reconstruct phrase from cphr");
package_request *closure_package = Hierarchy::package_within(CLOSURES_HAP, ph->requests_package);
cphr->cphr_iname = InterNames::one_off(I"closure_data", closure_package);
Inter::Symbols::set_flag(InterNames::to_symbol(cphr->cphr_iname), MAKE_NAME_UNIQUE);
package_request *P = Hierarchy::package_within(CLOSURES_HAP, ph->requests_package);
cphr->cphr_iname = Hierarchy::make_iname_in(CLOSURE_DATA_HL, P);
}
return cphr->cphr_iname;
}

View file

@ -49,8 +49,7 @@ label_namespace *JumpLabels::new_namespace(text_stream *name, compilation_module
lns->label_base_iname = InterNames::label_base_name(lns->label_prefix);
package_request *PR2 = Hierarchy::synoptic_package(LABEL_STORAGES_HAP);
lns->label_storage_iname = InterNames::one_off(I"label_associated_storage", PR2);
Inter::Symbols::set_flag(InterNames::to_symbol(lns->label_storage_iname), MAKE_NAME_UNIQUE);
lns->label_storage_iname = Hierarchy::make_iname_in(LABEL_ASSOCIATED_STORAGE_HL, PR2);
lns->label_counter = 0;
lns->allocate_storage = 0;

View file

@ -35,8 +35,7 @@ inter_name *ListTogether::new(int include_articles) {
InterNames::one_off(I"list_together_fn", PR),
PR,
InterNames::new(LIST_TOGETHER_ROUTINE_INAMEF));
ltr->ltr_array_iname = InterNames::one_off(I"list_together_array", PR);
Inter::Symbols::set_flag(InterNames::to_symbol(ltr->ltr_array_iname), MAKE_NAME_UNIQUE);
ltr->ltr_array_iname = Hierarchy::make_iname_in(LIST_TOGETHER_ARRAY_HL, PR);
ltr->articles_bit = include_articles;
return ltr->ltr_array_iname;

View file

@ -238,10 +238,8 @@ void PL::Parsing::TestScripts::new_test_text(parse_node *PN) {
test->text_of_script = Str::new();
package_request *P = Hierarchy::local_package(TESTS_HAP);
test->text_iname = InterNames::one_off(I"script", P);
test->req_iname = InterNames::one_off(I"requirements", P);
Inter::Symbols::set_flag(InterNames::to_symbol(test->text_iname), MAKE_NAME_UNIQUE);
Inter::Symbols::set_flag(InterNames::to_symbol(test->req_iname), MAKE_NAME_UNIQUE);
test->text_iname = Hierarchy::make_iname_in(SCRIPT_HL, P);
test->req_iname = Hierarchy::make_iname_in(REQUIREMENTS_HL, P);
ts_being_parsed = test;
<test-sentence-object>(ParseTree::get_text(PN->next->next));

View file

@ -4,7 +4,7 @@
typedef struct compilation_module {
struct inter_namespace *namespace;
struct package_request *resources;
struct subpackage_requests subpackages;
struct submodule_requests subpackages;
struct parse_node *hanging_from;
MEMORY_MANAGEMENT
} compilation_module;
@ -74,7 +74,7 @@ compilation_module *Modules::new(parse_node *from) {
return C;
}
subpackage_requests *Modules::subpackages(compilation_module *C) {
submodule_requests *Modules::subpackages(compilation_module *C) {
if (C == NULL) internal_error("no module");
return &(C->subpackages);
}

View file

@ -3,15 +3,66 @@
@
=
typedef struct location_requirement {
struct submodule_identity *this_local_submodule;
struct package_request *this_mundane_package;
int this_exotic_package;
struct inter_symbol *any_package_of_this_type;
} location_requirement;
location_requirement HierarchyLocations::blank(void) {
location_requirement req;
req.this_local_submodule = NULL;
req.this_mundane_package = NULL;
req.this_exotic_package = -1;
req.any_package_of_this_type = NULL;
return req;
}
location_requirement HierarchyLocations::local_submodule(submodule_identity *sid) {
location_requirement req = HierarchyLocations::blank();
req.this_local_submodule = sid;
return req;
}
location_requirement HierarchyLocations::generic_submodule(submodule_identity *sid) {
location_requirement req = HierarchyLocations::blank();
req.this_mundane_package = Packaging::generic_resource(sid);
return req;
}
location_requirement HierarchyLocations::synoptic_submodule(submodule_identity *sid) {
location_requirement req = HierarchyLocations::blank();
req.this_mundane_package = Packaging::synoptic_resource(sid);
return req;
}
location_requirement HierarchyLocations::any_package_of_type(text_stream *ptype_name) {
location_requirement req = HierarchyLocations::blank();
req.any_package_of_this_type = HierarchyLocations::ptype(ptype_name);
return req;
}
location_requirement HierarchyLocations::this_package(package_request *P) {
location_requirement req = HierarchyLocations::blank();
req.this_mundane_package = P;
return req;
}
location_requirement HierarchyLocations::this_exotic_package(int N) {
location_requirement req = HierarchyLocations::blank();
req.this_exotic_package = N;
return req;
}
typedef struct named_resource_location {
int access_number;
struct text_stream *access_name;
struct text_stream *function_package_name;
struct text_stream *datum_package_name;
struct package_request *package;
struct inter_symbol *package_type;
int exotic_package_identifier;
struct location_requirement requirements;
struct inter_name *equates_to_iname;
struct name_translation trans;
MEMORY_MANAGEMENT
} named_resource_location;
@ -21,27 +72,18 @@ named_resource_location *HierarchyLocations::new(void) {
nrl->access_name = NULL;
nrl->function_package_name = NULL;
nrl->datum_package_name = NULL;
nrl->package = NULL;
nrl->package_type = NULL;
nrl->equates_to_iname = NULL;
nrl->exotic_package_identifier = -1;
nrl->trans = Translation::same();
nrl->requirements = HierarchyLocations::blank();
return nrl;
}
named_resource_location *HierarchyLocations::make(int id, text_stream *name, package_request *P) {
named_resource_location *HierarchyLocations::con(int id, text_stream *name, name_translation nt, location_requirement req) {
named_resource_location *nrl = HierarchyLocations::new();
nrl->access_number = id;
nrl->access_name = Str::duplicate(name);
nrl->package = P;
HierarchyLocations::index(nrl);
return nrl;
}
named_resource_location *HierarchyLocations::make_in_exotic(int id, text_stream *name, int x) {
named_resource_location *nrl = HierarchyLocations::new();
nrl->access_number = id;
nrl->access_name = Str::duplicate(name);
nrl->exotic_package_identifier = x;
nrl->requirements = req;
nrl->trans = nt;
HierarchyLocations::index(nrl);
return nrl;
}
@ -50,57 +92,30 @@ named_resource_location *HierarchyLocations::make_as(int id, text_stream *name,
named_resource_location *nrl = HierarchyLocations::new();
nrl->access_number = id;
nrl->access_name = Str::duplicate(name);
nrl->package = iname->eventual_owner;
nrl->requirements = HierarchyLocations::this_package(iname->eventual_owner);
nrl->equates_to_iname = iname;
HierarchyLocations::index(nrl);
return nrl;
}
named_resource_location *HierarchyLocations::make_function(int id, text_stream *name, text_stream *call_name, package_request *P) {
named_resource_location *HierarchyLocations::func(int id, text_stream *name, name_translation nt, location_requirement req) {
named_resource_location *nrl = CREATE(named_resource_location);
nrl->access_number = id;
nrl->access_name = Str::duplicate(call_name);
nrl->access_name = Str::duplicate(nt.translate_to);
nrl->function_package_name = Str::duplicate(name);
nrl->package = P;
nrl->requirements = req;
nrl->trans = nt;
HierarchyLocations::index(nrl);
return nrl;
}
named_resource_location *HierarchyLocations::make_function_in_exotic(int id, text_stream *name, text_stream *call_name, int x) {
named_resource_location *HierarchyLocations::datum(int id, text_stream *name, name_translation nt, location_requirement req) {
named_resource_location *nrl = CREATE(named_resource_location);
nrl->access_number = id;
nrl->access_name = Str::duplicate(call_name);
nrl->function_package_name = Str::duplicate(name);
nrl->exotic_package_identifier = x;
HierarchyLocations::index(nrl);
return nrl;
}
named_resource_location *HierarchyLocations::make_datum(int id, text_stream *name, text_stream *datum_name, package_request *P) {
named_resource_location *nrl = CREATE(named_resource_location);
nrl->access_number = id;
nrl->access_name = Str::duplicate(datum_name);
nrl->access_name = Str::duplicate(nt.translate_to);
nrl->datum_package_name = Str::duplicate(name);
nrl->package = P;
HierarchyLocations::index(nrl);
return nrl;
}
named_resource_location *HierarchyLocations::make_datum_in_exotic(int id, text_stream *name, text_stream *datum_name, int x) {
named_resource_location *nrl = CREATE(named_resource_location);
nrl->access_number = id;
nrl->access_name = Str::duplicate(datum_name);
nrl->datum_package_name = Str::duplicate(name);
nrl->exotic_package_identifier = x;
HierarchyLocations::index(nrl);
return nrl;
}
named_resource_location *HierarchyLocations::make_rulebook_within(int id, text_stream *name, inter_symbol *ptype) {
named_resource_location *nrl = CREATE(named_resource_location);
nrl->access_number = id;
nrl->access_name = Str::duplicate(name);
nrl->package_type = ptype;
nrl->requirements = req;
nrl->trans = nt;
HierarchyLocations::index(nrl);
return nrl;
}
@ -119,7 +134,7 @@ void HierarchyLocations::create_nrls(void) {
void HierarchyLocations::index(named_resource_location *nrl) {
if (nrls_created == FALSE) HierarchyLocations::create_nrls();
if (nrl->access_number >= 0) nrls_indexed_by_id[nrl->access_number] = nrl;
if (nrl->package_type == NULL) {
if (nrl->requirements.any_package_of_this_type == NULL) {
Dictionaries::create(nrls_indexed_by_name, nrl->access_name);
Dictionaries::write_value(nrls_indexed_by_name, nrl->access_name, (void *) nrl);
}
@ -149,47 +164,70 @@ inter_name *HierarchyLocations::function(package_request *R, text_stream *name,
}
inter_name *HierarchyLocations::nrl_to_iname(named_resource_location *nrl) {
if (nrl->package_type) internal_error("NRL accessed inappropriately");
if (nrl->requirements.any_package_of_this_type) internal_error("NRL accessed inappropriately");
if (nrl->equates_to_iname == NULL) {
if (nrl->package == NULL) {
if (nrl->exotic_package_identifier >= 0)
nrl->package = Hierarchy::exotic_package(nrl->exotic_package_identifier);
if (nrl->requirements.this_mundane_package == NULL) {
if (nrl->requirements.this_exotic_package >= 0)
nrl->requirements.this_mundane_package = Hierarchy::exotic_package(nrl->requirements.this_exotic_package);
else internal_error("package can't be found'");
}
if (nrl->package == Hierarchy::template()) {
packaging_state save = Packaging::enter(nrl->package);
if (nrl->requirements.this_mundane_package == Hierarchy::template()) {
packaging_state save = Packaging::enter(nrl->requirements.this_mundane_package);
nrl->equates_to_iname = InterNames::one_off(nrl->access_name, Hierarchy::template());
nrl->equates_to_iname->symbol = Emit::extern(nrl->access_name, K_value);
Packaging::exit(save);
} else if (Str::len(nrl->function_package_name) > 0) {
nrl->equates_to_iname = Packaging::function_text(
InterNames::one_off(nrl->function_package_name, nrl->package),
nrl->package,
InterNames::one_off(nrl->function_package_name, nrl->requirements.this_mundane_package),
nrl->requirements.this_mundane_package,
nrl->access_name);
} else if (Str::len(nrl->datum_package_name) > 0) {
nrl->equates_to_iname = Packaging::datum_text(
InterNames::one_off(nrl->datum_package_name, nrl->package),
nrl->package,
InterNames::one_off(nrl->datum_package_name, nrl->requirements.this_mundane_package),
nrl->requirements.this_mundane_package,
nrl->access_name);
} else if ((nrl->package) && (nrl->equates_to_iname == NULL)) {
nrl->equates_to_iname = InterNames::one_off(nrl->access_name, nrl->package);
} else if ((nrl->requirements.this_mundane_package) && (nrl->equates_to_iname == NULL)) {
nrl->equates_to_iname = InterNames::one_off(nrl->access_name, nrl->requirements.this_mundane_package);
}
nrl->equates_to_iname = Hierarchy::post_process(nrl->access_number, nrl->equates_to_iname);
nrl->package = Packaging::home_of(nrl->equates_to_iname);
nrl->requirements.this_mundane_package = Packaging::home_of(nrl->equates_to_iname);
}
return nrl->equates_to_iname;
}
inter_name *HierarchyLocations::find_in_package(int id, package_request *P, wording W) {
if (nrls_created == FALSE) HierarchyLocations::create_nrls();
if ((id < 0) || (id >= MAX_HL) || (nrls_indexed_by_id[id] == NULL))
internal_error("bad nrl ID");
named_resource_location *nrl = nrls_indexed_by_id[id];
if (nrl->requirements.any_package_of_this_type == NULL) internal_error("NRL accessed inappropriately");
if ((P == NULL) || (P->eventual_type != nrl->requirements.any_package_of_this_type)) internal_error("constant in wrong superpackage");
inter_name *iname = NULL;
if (Str::len(nrl->function_package_name) > 0) {
iname = Packaging::function_text(
InterNames::one_off(nrl->function_package_name, P),
P,
NULL);
} else {
iname = InterNames::one_off(nrl->access_name, P);
}
if (!Wordings::empty(W)) InterNames::attach_memo(iname, W);
if (nrl->trans.translate_to)
InterNames::translate(iname, nrl->trans.translate_to);
if (nrl->trans.then_make_unique)
Inter::Symbols::set_flag(InterNames::to_symbol(iname), MAKE_NAME_UNIQUE);
return iname;
}
package_request *HierarchyLocations::package_in_package(int id, package_request *P) {
if (nrls_created == FALSE) HierarchyLocations::create_nrls();
if ((id < 0) || (id >= MAX_HL) || (nrls_indexed_by_id[id] == NULL))
internal_error("bad nrl ID");
named_resource_location *nrl = nrls_indexed_by_id[id];
if (nrl->package_type == NULL) internal_error("NRL accessed inappropriately");
if ((P == NULL) || (P->eventual_type != nrl->package_type)) internal_error("subpackage in wrong superpackage");
return Packaging::request(InterNames::one_off(nrl->access_name, P), P, nrl->package_type);
if (nrl->requirements.any_package_of_this_type == NULL) internal_error("NRL accessed inappropriately");
if ((P == NULL) || (P->eventual_type != nrl->requirements.any_package_of_this_type)) internal_error("subpackage in wrong superpackage");
return Packaging::request(InterNames::one_off(nrl->access_name, P), P, nrl->requirements.any_package_of_this_type);
}
@
@ -198,11 +236,10 @@ package_request *HierarchyLocations::package_in_package(int id, package_request
=
typedef struct hierarchy_attachment_point {
int submodule;
int hap_id;
int counter;
struct inter_symbol *type;
struct inter_symbol *super_type;
int synoptic_flag;
struct location_requirement requirements;
MEMORY_MANAGEMENT
} hierarchy_attachment_point;
@ -214,63 +251,56 @@ void HierarchyLocations::create_haps(void) {
for (int i=0; i<MAX_HAP; i++) haps_indexed_by_id[i] = NULL;
}
hierarchy_attachment_point *HierarchyLocations::ap(int ap_id, int submodule_id, text_stream *iterated_text, inter_symbol *ptype) {
hierarchy_attachment_point *hap = CREATE(hierarchy_attachment_point);
hap->submodule = submodule_id;
hap->counter = Packaging::register_counter(iterated_text);
hap->type = ptype;
hap->super_type = NULL;
hap->synoptic_flag = FALSE;
void HierarchyLocations::index_ap(hierarchy_attachment_point *hap) {
if (haps_created == FALSE) HierarchyLocations::create_haps();
if (ap_id >= 0) haps_indexed_by_id[ap_id] = hap;
if (hap->hap_id >= 0) haps_indexed_by_id[hap->hap_id] = hap;
}
hierarchy_attachment_point *HierarchyLocations::ap(int ap_id, location_requirement req, text_stream *iterated_text, text_stream *ptype_name) {
hierarchy_attachment_point *hap = CREATE(hierarchy_attachment_point);
hap->hap_id = ap_id;
hap->requirements = req;
hap->counter = Packaging::register_counter(iterated_text);
hap->type = HierarchyLocations::ptype(ptype_name);
HierarchyLocations::index_ap(hap);
return hap;
}
hierarchy_attachment_point *HierarchyLocations::synoptic_ap(int ap_id, int submodule_id, text_stream *iterated_text, inter_symbol *ptype) {
hierarchy_attachment_point *hap = HierarchyLocations::ap(ap_id, submodule_id, iterated_text, ptype);
hap->synoptic_flag = TRUE;
return hap;
}
hierarchy_attachment_point *HierarchyLocations::ap_within(int ap_id, inter_symbol *sptype, text_stream *iterated_text, inter_symbol *ptype) {
hierarchy_attachment_point *hap = HierarchyLocations::ap(ap_id, -1, iterated_text, ptype);
hap->super_type = sptype;
return hap;
}
package_request *HierarchyLocations::resource_package(compilation_module *C, int hap_id) {
package_request *HierarchyLocations::attach_new_package(compilation_module *C, package_request *R, int hap_id) {
if ((hap_id < 0) || (hap_id >= MAX_HAP) || (haps_created == FALSE) || (haps_indexed_by_id[hap_id] == NULL))
internal_error("invalid HAP request");
hierarchy_attachment_point *hap = haps_indexed_by_id[hap_id];
package_request *R = Packaging::request_resource(C, hap->submodule);
if (hap->synoptic_flag) internal_error("subpackage is synoptic");
if (hap->requirements.this_local_submodule)
R = Packaging::request_resource(C, hap->requirements.this_local_submodule);
else if (hap->requirements.this_mundane_package)
R = hap->requirements.this_mundane_package;
else if (hap->requirements.this_exotic_package >= 0)
R = Hierarchy::exotic_package(hap->requirements.this_exotic_package);
else if (hap->requirements.any_package_of_this_type) {
if ((R == NULL) || (R->eventual_type != hap->requirements.any_package_of_this_type))
internal_error("subpackage in wrong superpackage");
}
return Packaging::request(Packaging::supply_iname(R, hap->counter), R, hap->type);
}
package_request *HierarchyLocations::package(compilation_module *C, int hap_id) {
if ((hap_id < 0) || (hap_id >= MAX_HAP) || (haps_created == FALSE) || (haps_indexed_by_id[hap_id] == NULL))
internal_error("invalid HAP request");
hierarchy_attachment_point *hap = haps_indexed_by_id[hap_id];
if (hap->super_type) internal_error("subpackage in top-level submodule");
package_request *R = Packaging::request_resource(C, hap->submodule);
if (hap->synoptic_flag) internal_error("subpackage is synoptic");
return Packaging::request(Packaging::supply_iname(R, hap->counter), R, hap->type);
@
=
dictionary *ptypes_indexed_by_name = NULL;
int ptypes_created = FALSE;
inter_symbol *HierarchyLocations::ptype(text_stream *name) {
if (ptypes_created == FALSE) {
ptypes_created = TRUE;
ptypes_indexed_by_name = Dictionaries::new(512, FALSE);
}
if (Dictionaries::find(ptypes_indexed_by_name, name))
return (inter_symbol *) Dictionaries::read_value(ptypes_indexed_by_name, name);
inter_symbol *new_ptype = Packaging::register_ptype(name, TRUE);
Dictionaries::create(ptypes_indexed_by_name, name);
Dictionaries::write_value(ptypes_indexed_by_name, name, (void *) new_ptype);
return new_ptype;
}
package_request *HierarchyLocations::package_within(package_request *R, int hap_id) {
if ((hap_id < 0) || (hap_id >= MAX_HAP) || (haps_created == FALSE) || (haps_indexed_by_id[hap_id] == NULL))
internal_error("invalid HAP request");
hierarchy_attachment_point *hap = haps_indexed_by_id[hap_id];
if ((R == NULL) || (R->eventual_type != hap->super_type)) internal_error("subpackage in wrong superpackage");
if (hap->synoptic_flag) internal_error("subpackage is synoptic");
return Packaging::request(Packaging::supply_iname(R, hap->counter), R, hap->type);
}
package_request *HierarchyLocations::synoptic_package(int hap_id) {
if ((hap_id < 0) || (hap_id >= MAX_HAP) || (haps_created == FALSE) || (haps_indexed_by_id[hap_id] == NULL))
internal_error("invalid HAP request");
hierarchy_attachment_point *hap = haps_indexed_by_id[hap_id];
if (hap->synoptic_flag == FALSE) internal_error("subpackage not synoptic");
package_request *R = Packaging::synoptic_resource(hap->submodule);
return Packaging::request(Packaging::supply_iname(R, hap->counter), R, hap->type);
}

File diff suppressed because it is too large Load diff

View file

@ -40,14 +40,14 @@ typedef struct package_request {
struct inter_package *actual_package;
struct package_request *parent_request;
struct inter_reading_state write_position;
struct linked_list *counters; /* of |subpackage_request_counter| */
struct linked_list *counters; /* of |submodule_request_counter| */
MEMORY_MANAGEMENT
} package_request;
typedef struct subpackage_request_counter {
typedef struct submodule_request_counter {
int counter_id;
int counter_value;
MEMORY_MANAGEMENT
} subpackage_request_counter;
} submodule_request_counter;
@ =
package_request *Packaging::request(inter_name *name, package_request *parent, inter_symbol *pt) {
@ -190,28 +190,46 @@ package_request *Packaging::request_synoptic(void) {
return synoptic_pr;
}
typedef struct subpackage_requests {
struct package_request *subs[MAX_SUBMODULE];
} subpackage_requests;
typedef struct submodule_identity {
struct text_stream *submodule_name;
MEMORY_MANAGEMENT
} submodule_identity;
package_request *Packaging::resources_for_new_submodule(text_stream *name, subpackage_requests *SR) {
submodule_identity *Packaging::register_submodule(text_stream *name) {
submodule_identity *sid = CREATE(submodule_identity);
sid->submodule_name = Str::duplicate(name);
return sid;
}
typedef struct submodule_request {
struct submodule_identity *which_submodule;
struct package_request *where_found;
MEMORY_MANAGEMENT
} submodule_request;
typedef struct submodule_requests {
struct linked_list *submodules; /* of |submodule_identity| */
} submodule_requests;
package_request *Packaging::resources_for_new_submodule(text_stream *name, submodule_requests *SR) {
inter_name *package_iname = InterNames::one_off(name, Hierarchy::resources());
package_request *P = Packaging::request(package_iname, Hierarchy::resources(), module_ptype);
Packaging::initialise_subpackages(SR);
Packaging::initialise_submodules(SR);
return P;
}
void Packaging::initialise_subpackages(subpackage_requests *SR) {
for (int i=0; i<MAX_SUBMODULE; i++) SR->subs[i] = NULL;
void Packaging::initialise_submodules(submodule_requests *SR) {
SR->submodules = NEW_LINKED_LIST(submodule_request);
}
int generic_subpackages_initialised = FALSE;
subpackage_requests generic_subpackages;
submodule_requests generic_subpackages;
int synoptic_subpackages_initialised = FALSE;
subpackage_requests synoptic_subpackages;
submodule_requests synoptic_subpackages;
package_request *Packaging::request_resource(compilation_module *C, int ix) {
subpackage_requests *SR = NULL;
package_request *Packaging::request_resource(compilation_module *C, submodule_identity *sid) {
submodule_requests *SR = NULL;
package_request *parent = NULL;
if (C) {
SR = Modules::subpackages(C);
@ -219,7 +237,7 @@ package_request *Packaging::request_resource(compilation_module *C, int ix) {
} else {
if (generic_subpackages_initialised == FALSE) {
generic_subpackages_initialised = TRUE;
Packaging::initialise_subpackages(&generic_subpackages);
Packaging::initialise_submodules(&generic_subpackages);
}
SR = &generic_subpackages;
parent = Packaging::request_generic();
@ -227,37 +245,41 @@ package_request *Packaging::request_resource(compilation_module *C, int ix) {
@<Handle the resource request@>;
}
package_request *Packaging::local_resource(int ix) {
return Packaging::request_resource(Modules::find(current_sentence), ix);
package_request *Packaging::local_resource(submodule_identity *sid) {
return Packaging::request_resource(Modules::find(current_sentence), sid);
}
package_request *Packaging::generic_resource(int ix) {
package_request *Packaging::generic_resource(submodule_identity *sid) {
if (generic_subpackages_initialised == FALSE) {
generic_subpackages_initialised = TRUE;
Packaging::initialise_subpackages(&generic_subpackages);
Packaging::initialise_submodules(&generic_subpackages);
}
subpackage_requests *SR = &generic_subpackages;
submodule_requests *SR = &generic_subpackages;
package_request *parent = Packaging::request_generic();
@<Handle the resource request@>;
}
package_request *Packaging::synoptic_resource(int ix) {
package_request *Packaging::synoptic_resource(submodule_identity *sid) {
if (synoptic_subpackages_initialised == FALSE) {
synoptic_subpackages_initialised = TRUE;
Packaging::initialise_subpackages(&synoptic_subpackages);
Packaging::initialise_submodules(&synoptic_subpackages);
}
subpackage_requests *SR = &synoptic_subpackages;
submodule_requests *SR = &synoptic_subpackages;
package_request *parent = Packaging::request_synoptic();
@<Handle the resource request@>;
}
@<Handle the resource request@> =
if (SR->subs[ix] == NULL) {
text_stream *N = Hierarchy::submodule_name(ix);
inter_name *iname = InterNames::one_off(N, parent);
SR->subs[ix] = Packaging::request(iname, parent, plain_ptype);
}
return SR->subs[ix];
submodule_request *sr;
LOOP_OVER_LINKED_LIST(sr, submodule_request, SR->submodules)
if (sid == sr->which_submodule)
return sr->where_found;
inter_name *iname = InterNames::one_off(sid->submodule_name, parent);
sr = CREATE(submodule_request);
sr->which_submodule = sid;
sr->where_found = Packaging::request(iname, parent, plain_ptype);
ADD_TO_LINKED_LIST(sr, submodule_request, SR->submodules);
return sr->where_found;
@
@ -283,19 +305,19 @@ inter_name *Packaging::supply_iname(package_request *R, int what_for) {
if (R == NULL) internal_error("no request");
if ((what_for < 0) || (what_for >= no_pr_counters_registered)) internal_error("out of range");
if (R->counters == NULL)
R->counters = NEW_LINKED_LIST(subpackage_request_counter);
R->counters = NEW_LINKED_LIST(submodule_request_counter);
int N = -1;
subpackage_request_counter *src;
LOOP_OVER_LINKED_LIST(src, subpackage_request_counter, R->counters)
submodule_request_counter *src;
LOOP_OVER_LINKED_LIST(src, submodule_request_counter, R->counters)
if (src->counter_id == what_for) {
N = ++(src->counter_value); break;
}
if (N < 0) {
subpackage_request_counter *src = CREATE(subpackage_request_counter);
submodule_request_counter *src = CREATE(submodule_request_counter);
src->counter_id = what_for;
src->counter_value = 1;
N = 1;
ADD_TO_LINKED_LIST(src, subpackage_request_counter, R->counters);
ADD_TO_LINKED_LIST(src, submodule_request_counter, R->counters);
}
TEMPORARY_TEXT(P);
WRITE_TO(P, "%S_%d", pr_counter_names[what_for], N);

View file

@ -0,0 +1,37 @@
[Translation::] Translation.
@
=
typedef struct name_translation {
struct text_stream *translate_to;
int then_make_unique;
} name_translation;
name_translation Translation::same(void) {
name_translation nt;
nt.translate_to = NULL;
nt.then_make_unique = FALSE;
return nt;
}
name_translation Translation::uniqued(void) {
name_translation nt;
nt.translate_to = NULL;
nt.then_make_unique = TRUE;
return nt;
}
name_translation Translation::to(text_stream *S) {
name_translation nt;
nt.translate_to = S;
nt.then_make_unique = FALSE;
return nt;
}
name_translation Translation::to_uniqued(text_stream *S) {
name_translation nt;
nt.translate_to = S;
nt.then_make_unique = TRUE;
return nt;
}

View file

@ -1816,8 +1816,7 @@ void Relations::compile_vtov_storage(binary_predicate *bp) {
@<Allocate a zeroed-out memory cache for relations with fast route-finding@>;
package_request *P = BinaryPredicates::package(bp);
bp->v2v_bitmap_iname = InterNames::one_off(I"bitmap", P);
Inter::Symbols::set_flag(InterNames::to_symbol(bp->v2v_bitmap_iname), MAKE_NAME_UNIQUE);
bp->v2v_bitmap_iname = Hierarchy::make_iname_in(BITMAP_HL, P);
packaging_state save = Packaging::enter_home_of(bp->v2v_bitmap_iname);
Emit::named_array_begin(bp->v2v_bitmap_iname, K_value);
@<Compile header information in the V-to-V structure@>;
@ -1891,8 +1890,7 @@ above: it forces the template layer to generate the cache when first used.
@<Allocate a zeroed-out memory cache for relations with fast route-finding@> =
package_request *P = BinaryPredicates::package(bp);
inter_name *iname = InterNames::one_off(I"route_cache", P);
Inter::Symbols::set_flag(InterNames::to_symbol(iname), MAKE_NAME_UNIQUE);
inter_name *iname = Hierarchy::make_iname_in(ROUTE_CACHE_HL, P);
packaging_state save = Packaging::enter_home_of(iname);
kind *left_kind = BinaryPredicates::term_kind(bp, 0);
kind *right_kind = BinaryPredicates::term_kind(bp, 1);

View file

@ -281,5 +281,6 @@ Chapter 27: Bridge to Inter Module
Compilation Modules
Inter Namespace
Packaging
Translation
Hierarchy Locations
Hierarchy

View file

@ -271,7 +271,7 @@ action_name *PL::Actions::act_new(wording W, int implemented_by_I7) {
Feeds::feed_text_expanding_strings(L"check");
Feeds::feed_wording(an->present_name);
wording W = Feeds::end(id);
package_request *CR = Hierarchy::package_in_package(CHECK_RB_HL, an->an_package);
package_request *CR = Hierarchy::make_package_in(CHECK_RB_HL, an->an_package);
an->check_rules =
Rulebooks::new_automatic(W, K_action_name,
NO_OUTCOME, TRUE, FALSE, FALSE, CR);
@ -281,7 +281,7 @@ action_name *PL::Actions::act_new(wording W, int implemented_by_I7) {
Feeds::feed_text_expanding_strings(L"carry out");
Feeds::feed_wording(an->present_name);
W = Feeds::end(id);
package_request *OR = Hierarchy::package_in_package(CARRY_OUT_RB_HL, an->an_package);
package_request *OR = Hierarchy::make_package_in(CARRY_OUT_RB_HL, an->an_package);
an->carry_out_rules =
Rulebooks::new_automatic(W, K_action_name,
NO_OUTCOME, TRUE, FALSE, FALSE, OR);
@ -291,7 +291,7 @@ action_name *PL::Actions::act_new(wording W, int implemented_by_I7) {
Feeds::feed_text_expanding_strings(L"report");
Feeds::feed_wording(an->present_name);
W = Feeds::end(id);
package_request *RR = Hierarchy::package_in_package(REPORT_RB_HL, an->an_package);
package_request *RR = Hierarchy::make_package_in(REPORT_RB_HL, an->an_package);
an->report_rules =
Rulebooks::new_automatic(W, K_action_name,
NO_OUTCOME, TRUE, FALSE, FALSE, RR);

View file

@ -501,36 +501,21 @@ inter_name *Kinds::Behaviour::get_inc_iname(kind *K) {
if (K == NULL) internal_error("null kind has no inc routine");
if (K->construct->inc_iname) return K->construct->inc_iname;
package_request *R = Kinds::RunTime::package(K);
K->construct->inc_iname =
Packaging::function(
InterNames::one_off(I"increment_fn", R),
R,
NULL);
Inter::Symbols::set_flag(InterNames::to_symbol(K->construct->inc_iname), MAKE_NAME_UNIQUE);
K->construct->inc_iname = Hierarchy::make_iname_in(DECREMENT_FN_HL, R);
return K->construct->inc_iname;
}
inter_name *Kinds::Behaviour::get_dec_iname(kind *K) {
if (K == NULL) internal_error("null kind has no dec routine");
if (K->construct->dec_iname) return K->construct->dec_iname;
package_request *R = Kinds::RunTime::package(K);
K->construct->dec_iname =
Packaging::function(
InterNames::one_off(I"decrement_fn", R),
R,
NULL);
Inter::Symbols::set_flag(InterNames::to_symbol(K->construct->dec_iname), MAKE_NAME_UNIQUE);
K->construct->dec_iname = Hierarchy::make_iname_in(INCREMENT_FN_HL, R);
return K->construct->dec_iname;
}
inter_name *Kinds::Behaviour::get_ranger_iname(kind *K) {
if (K == NULL) internal_error("null kind has no inc routine");
if (K->construct->ranger_iname) return K->construct->ranger_iname;
package_request *R = Kinds::RunTime::package(K);
K->construct->ranger_iname =
Packaging::function(
InterNames::one_off(I"ranger_fn", R),
R,
NULL);
Inter::Symbols::set_flag(InterNames::to_symbol(K->construct->ranger_iname), MAKE_NAME_UNIQUE);
K->construct->ranger_iname = Hierarchy::make_iname_in(RANGER_FN_HL, R);
return K->construct->ranger_iname;
}
inter_name *Kinds::Behaviour::get_name_of_printing_rule_ACTIONS(kind *K) {

View file

@ -67,8 +67,7 @@ adjectival_phrase *Adjectives::from_word_range(wording W, PREFORM_LANGUAGE_TYPE
#endif
#ifdef CORE_MODULE
aph->aph_package = Hierarchy::package(Modules::current(), ADJECTIVES_HAP);
aph->aph_iname = InterNames::one_off(I"adjective", aph->aph_package);
Inter::Symbols::set_flag(InterNames::to_symbol(aph->aph_iname), MAKE_NAME_UNIQUE);
aph->aph_iname = Hierarchy::make_iname_in(ADJECTIVE_HL, aph->aph_package);
#endif
if ((nl == NULL) && (Wordings::nonempty(W))) {
#ifdef ADJECTIVE_NAME_VETTING

View file

@ -239,12 +239,8 @@ void PL::Files::register_file(wording F, wording FN) {
exf->IFID_of_owner = Str::duplicate(ifid_of_file);
package_request *P = Hierarchy::local_package(EXTERNAL_FILES_HAP);
exf->exf_iname = InterNames::one_off(I"file", P);
InterNames::attach_memo(exf->exf_iname, exf->name);
Inter::Symbols::set_flag(InterNames::to_symbol(exf->exf_iname), MAKE_NAME_UNIQUE);
exf->IFID_array_iname = InterNames::one_off(I"ifid", P);
InterNames::attach_memo(exf->IFID_array_iname, exf->name);
Inter::Symbols::set_flag(InterNames::to_symbol(exf->IFID_array_iname), MAKE_NAME_UNIQUE);
exf->exf_iname = Hierarchy::make_iname_with_memo(FILE_HL, P, exf->name);
exf->IFID_array_iname = Hierarchy::make_iname_with_memo(IFID_HL, P, exf->name);
LOGIF(FIGURE_CREATIONS, "Created external file <%W> = filename '%N'\n",
F, exf->unextended_filename);