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:
parent
905274eee1
commit
263b3d9181
|
@ -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>§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>
|
||||
|
|
|
@ -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">§27</a>, 6/bp (<a href="6-bp.html#SP25">§25</a>), 6/rlt (<a href="6-rlt.html#SP29_2">§29.2</a>, <a href="6-rlt.html#SP29_3">§29.3</a>, <a href="6-rlt.html#SP29_4">§29.4</a>, <a href="6-rlt.html#SP29_5">§29.5</a>, <a href="6-rlt.html#SP29_6">§29.6</a>), 12/ter (<a href="12-ter.html#SP8_6">§8.6</a>), 12/ca (<a href="12-ca.html#SP6_2">§6.2</a>), 12/dtd (<a href="12-dtd.html#SP24">§24</a>), 13/kak (<a href="13-kak.html#SP2">§2</a>), 25/cii (<a href="25-cii.html#SP3_1_1_4_7_1">§3.1.1.4.7.1</a>), 26/iti (<a href="26-iti.html#SP9">§9</a>), 27/is (<a href="27-is.html#SP31_8_1">§31.8.1</a>), 27/hr (<a href="27-hr.html#SP5">§5</a>).</p>
|
||||
<p class="endnote">The function Kinds::RunTime::I6_classname is used in <a href="#SP27">§27</a>, 6/bp (<a href="6-bp.html#SP25">§25</a>), 6/rlt (<a href="6-rlt.html#SP29_2">§29.2</a>, <a href="6-rlt.html#SP29_3">§29.3</a>, <a href="6-rlt.html#SP29_4">§29.4</a>, <a href="6-rlt.html#SP29_5">§29.5</a>, <a href="6-rlt.html#SP29_6">§29.6</a>), 12/ter (<a href="12-ter.html#SP8_6">§8.6</a>), 12/ca (<a href="12-ca.html#SP6_2">§6.2</a>), 12/dtd (<a href="12-dtd.html#SP24">§24</a>), 13/kak (<a href="13-kak.html#SP2">§2</a>), 25/cii (<a href="25-cii.html#SP3_1_1_4_7_1">§3.1.1.4.7.1</a>), 26/iti (<a href="26-iti.html#SP9">§9</a>), 27/is (<a href="27-is.html#SP31_8_1">§31.8.1</a>), 27/hr (<a href="27-hr.html#SP4">§4</a>).</p>
|
||||
|
||||
<p class="endnote">The function Kinds::RunTime::I6_classnumber is used in 16/ic (<a href="16-ic.html#SP6">§6</a>, <a href="16-ic.html#SP12_2">§12.2</a>), 27/in (<a href="27-in.html#SP4">§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">>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">>rks_iname</span><span class="plain">);</span>
|
||||
<span class="identifier">rks</span><span class="plain">-</span><span class="element">>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">>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">>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>
|
||||
|
|
|
@ -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">>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">>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">>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">>responding_rule</span><span class="plain">));</span>
|
||||
<span class="identifier">resp</span><span class="plain">-</span><span class="element">>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">>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">>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">>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">>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">>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">>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">>resp_package</span><span class="plain">);</span>
|
||||
<span class="identifier">resp</span><span class="plain">-</span><span class="element">>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">>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">>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>
|
||||
|
||||
|
|
|
@ -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">>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">>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">>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">>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">>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">>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">>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">>table_package</span><span class="plain">);</span>
|
||||
<span class="identifier">t</span><span class="plain">-</span><span class="element">>approximate_array_space_needed</span><span class="plain"> = 0;</span>
|
||||
<span class="identifier">t</span><span class="plain">-</span><span class="element">>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">>no_columns</span><span class="plain"> = 0;</span>
|
||||
|
|
|
@ -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">>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>
|
||||
|
|
|
@ -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">>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">>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">>av_package</span><span class="plain">);</span>
|
||||
<span class="identifier">av</span><span class="plain">-</span><span class="element">>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">>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">>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">>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">>av_package</span><span class="plain">);</span>
|
||||
<span class="identifier">av</span><span class="plain">-</span><span class="element">>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">>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">>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">>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">>av_package</span><span class="plain">);</span>
|
||||
<span class="identifier">av</span><span class="plain">-</span><span class="element">>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">>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>
|
||||
|
|
|
@ -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">>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">>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">>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">>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">>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">>rule_package</span><span class="plain">);</span>
|
||||
|
|
|
@ -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">>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">>requests_package</span><span class="plain">);</span>
|
||||
<span class="identifier">cphr</span><span class="plain">-</span><span class="element">>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">>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">>requests_package</span><span class="plain">);</span>
|
||||
<span class="identifier">cphr</span><span class="plain">-</span><span class="element">>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">>cphr_iname</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
|
|
|
@ -70,8 +70,7 @@ reserves no memory.
|
|||
<span class="identifier">lns</span><span class="plain">-</span><span class="element">>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">>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">>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">>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">>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">>label_counter</span><span class="plain"> = 0;</span>
|
||||
<span class="identifier">lns</span><span class="plain">-</span><span class="element">>allocate_storage</span><span class="plain"> = 0;</span>
|
||||
|
|
|
@ -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">>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">>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">>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">>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">>ltr_array_iname</span><span class="plain">;</span>
|
||||
|
|
|
@ -389,10 +389,8 @@ without notice.
|
|||
<span class="identifier">test</span><span class="plain">-</span><span class="element">>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">>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">>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">>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">>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">>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">>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"><</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">>(</span><span class="identifier">ParseTree::get_text</span><span class="plain">(</span><span class="identifier">PN</span><span class="plain">-</span><span class="element">>next</span><span class="plain">-</span><span class="element">>next</span><span class="plain">));</span>
|
||||
|
|
|
@ -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"> &(</span><span class="identifier">C</span><span class="plain">-</span><span class="element">>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">§16</a>), 6/bp (<a href="6-bp.html#SP31">§31</a>), 15/pr (<a href="15-pr.html#SP5_3">§5.3</a>), 21/rl (<a href="21-rl.html#SP26">§26</a>), 22/ph (<a href="22-ph.html#SP6_8">§6.8</a>), 22/tp (<a href="22-tp.html#SP7">§7</a>), 27/pc (<a href="27-pc.html#SP7">§7</a>), 27/hr (<a href="27-hr.html#SP6">§6</a>).</p>
|
||||
<p class="endnote">The function Modules::find is used in 5/nv (<a href="5-nv.html#SP16">§16</a>), 6/bp (<a href="6-bp.html#SP31">§31</a>), 15/pr (<a href="15-pr.html#SP5_3">§5.3</a>), 21/rl (<a href="21-rl.html#SP26">§26</a>), 22/ph (<a href="22-ph.html#SP6_8">§6.8</a>), 22/tp (<a href="22-tp.html#SP7">§7</a>), 27/pc (<a href="27-pc.html#SP7">§7</a>), 27/hr (<a href="27-hr.html#SP5">§5</a>).</p>
|
||||
|
||||
<p class="endnote">The function Modules::markable appears nowhere else.</p>
|
||||
|
||||
|
|
|
@ -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">§3</a>.</p>
|
||||
|
||||
<p class="endnote">The function Emit::variable is used in 5/nv (<a href="5-nv.html#SP16">§16</a>), 27/hr (<a href="27-hr.html#SP5">§5</a>).</p>
|
||||
<p class="endnote">The function Emit::variable is used in 5/nv (<a href="5-nv.html#SP16">§16</a>), 27/hr (<a href="27-hr.html#SP4">§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">§9</a>).</p>
|
||||
|
||||
<p class="endnote">The function Emit::named_numeric_constant is used in 6/rlt (<a href="6-rlt.html#SP20_3">§20.3</a>), 13/kak (<a href="13-kak.html#SP5">§5</a>), 13/rsfk (<a href="13-rsfk.html#SP26">§26</a>), 21/ac (<a href="21-ac.html#SP6">§6</a>), 22/cs (<a href="22-cs.html#SP8">§8</a>), 24/ch (<a href="24-ch.html#SP8">§8</a>), 26/vm (<a href="26-vm.html#SP8">§8</a>), 26/uo (<a href="26-uo.html#SP21">§21</a>), 26/pl (<a href="26-pl.html#SP12">§12</a>), 26/ts (<a href="26-ts.html#SP10">§10</a>), 27/hr (<a href="27-hr.html#SP5">§5</a>).</p>
|
||||
<p class="endnote">The function Emit::named_numeric_constant is used in 6/rlt (<a href="6-rlt.html#SP20_3">§20.3</a>), 13/kak (<a href="13-kak.html#SP5">§5</a>), 13/rsfk (<a href="13-rsfk.html#SP26">§26</a>), 21/ac (<a href="21-ac.html#SP6">§6</a>), 22/cs (<a href="22-cs.html#SP8">§8</a>), 24/ch (<a href="24-ch.html#SP8">§8</a>), 26/vm (<a href="26-vm.html#SP8">§8</a>), 26/uo (<a href="26-uo.html#SP21">§21</a>), 26/pl (<a href="26-pl.html#SP12">§12</a>), 26/ts (<a href="26-ts.html#SP10">§10</a>), 27/hr (<a href="27-hr.html#SP4">§4</a>).</p>
|
||||
|
||||
<p class="endnote">The function Emit::hold_numeric_constant appears nowhere else.</p>
|
||||
|
||||
|
|
|
@ -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">>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">>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">>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">>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">>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">>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">>exotic_package_identifier</span><span class="plain"> = -1;</span>
|
||||
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">>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">>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">>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">>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">>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">>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">>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">>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">>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">>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">>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">>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">>package</span><span class="plain"> = </span><span class="identifier">iname</span><span class="plain">-</span><span class="element">>eventual_owner</span><span class="plain">;</span>
|
||||
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">>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">>eventual_owner</span><span class="plain">);</span>
|
||||
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">>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">>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">>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">>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">>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">>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">>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">>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">>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">>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">>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">>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">>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">>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">>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">>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">>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">>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">>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">>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">>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">>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">>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">>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">>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">>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">>access_number</span><span class="plain"> >= 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">>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">>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">>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">>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">>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">>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">>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">>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">>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">>exotic_package_identifier</span><span class="plain"> >= 0)</span>
|
||||
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">>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">>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">>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">>requirements.this_exotic_package</span><span class="plain"> >= 0)</span>
|
||||
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">>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">>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">>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">>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">>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">>requirements.this_mundane_package</span><span class="plain">);</span>
|
||||
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">>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">>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">>equates_to_iname</span><span class="plain">-</span><span class="element">>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">>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">>function_package_name</span><span class="plain">) > 0) {</span>
|
||||
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">>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">>function_package_name</span><span class="plain">, </span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">>package</span><span class="plain">),</span>
|
||||
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">>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">>function_package_name</span><span class="plain">, </span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">>requirements.this_mundane_package</span><span class="plain">),</span>
|
||||
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">>requirements.this_mundane_package</span><span class="plain">,</span>
|
||||
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">>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">>datum_package_name</span><span class="plain">) > 0) {</span>
|
||||
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">>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">>datum_package_name</span><span class="plain">, </span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">>package</span><span class="plain">),</span>
|
||||
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">>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">>datum_package_name</span><span class="plain">, </span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">>requirements.this_mundane_package</span><span class="plain">),</span>
|
||||
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">>requirements.this_mundane_package</span><span class="plain">,</span>
|
||||
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">>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">>package</span><span class="plain">) && (</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">>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">>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">>access_name</span><span class="plain">, </span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">>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">>requirements.this_mundane_package</span><span class="plain">) && (</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">>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">>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">>access_name</span><span class="plain">, </span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">>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">>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">>access_number</span><span class="plain">, </span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">>equates_to_iname</span><span class="plain">);</span>
|
||||
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">>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">>equates_to_iname</span><span class="plain">);</span>
|
||||
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">>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">>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">>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"> < 0) || (</span><span class="identifier">id</span><span class="plain"> >= </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">>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">>eventual_type</span><span class="plain"> != </span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">>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">>function_package_name</span><span class="plain">) > 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">>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">>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">>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">>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">>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"> < 0) || (</span><span class="identifier">id</span><span class="plain"> >= </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">>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">>eventual_type</span><span class="plain"> != </span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">>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">>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">>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">>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">>eventual_type</span><span class="plain"> != </span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">>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">>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">>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">§1</a>).</p>
|
||||
|
||||
<p class="endnote">The function HierarchyLocations::local_submodule is used in 27/hr (<a href="27-hr.html#SP1_4">§1.4</a>, <a href="27-hr.html#SP1_6">§1.6</a>, <a href="27-hr.html#SP1_8">§1.8</a>, <a href="27-hr.html#SP1_12">§1.12</a>, <a href="27-hr.html#SP1_14">§1.14</a>, <a href="27-hr.html#SP1_16">§1.16</a>, <a href="27-hr.html#SP1_20">§1.20</a>, <a href="27-hr.html#SP1_22">§1.22</a>, <a href="27-hr.html#SP1_24">§1.24</a>, <a href="27-hr.html#SP1_28">§1.28</a>, <a href="27-hr.html#SP1_30">§1.30</a>, <a href="27-hr.html#SP1_32">§1.32</a>, <a href="27-hr.html#SP1_34">§1.34</a>, <a href="27-hr.html#SP1_36">§1.36</a>, <a href="27-hr.html#SP1_38">§1.38</a>, <a href="27-hr.html#SP1_40">§1.40</a>, <a href="27-hr.html#SP1_42">§1.42</a>, <a href="27-hr.html#SP1_44">§1.44</a>).</p>
|
||||
|
||||
<p class="endnote">The function HierarchyLocations::generic_submodule is used in 27/hr (<a href="27-hr.html#SP1_2">§1.2</a>, <a href="27-hr.html#SP1_4">§1.4</a>, <a href="27-hr.html#SP1_14">§1.14</a>, <a href="27-hr.html#SP1_28">§1.28</a>, <a href="27-hr.html#SP1_36">§1.36</a>, <a href="27-hr.html#SP1_38">§1.38</a>).</p>
|
||||
|
||||
<p class="endnote">The function HierarchyLocations::synoptic_submodule is used in 27/hr (<a href="27-hr.html#SP1_2">§1.2</a>, <a href="27-hr.html#SP1_4">§1.4</a>, <a href="27-hr.html#SP1_6">§1.6</a>, <a href="27-hr.html#SP1_10">§1.10</a>, <a href="27-hr.html#SP1_12">§1.12</a>, <a href="27-hr.html#SP1_18">§1.18</a>, <a href="27-hr.html#SP1_22">§1.22</a>, <a href="27-hr.html#SP1_26">§1.26</a>, <a href="27-hr.html#SP1_28">§1.28</a>, <a href="27-hr.html#SP1_32">§1.32</a>, <a href="27-hr.html#SP1_34">§1.34</a>, <a href="27-hr.html#SP1_36">§1.36</a>, <a href="27-hr.html#SP1_38">§1.38</a>, <a href="27-hr.html#SP1_40">§1.40</a>, <a href="27-hr.html#SP1_42">§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">§1.4</a>, <a href="27-hr.html#SP1_6">§1.6</a>, <a href="27-hr.html#SP1_8">§1.8</a>, <a href="27-hr.html#SP1_20">§1.20</a>, <a href="27-hr.html#SP1_22">§1.22</a>, <a href="27-hr.html#SP1_28">§1.28</a>, <a href="27-hr.html#SP1_30">§1.30</a>, <a href="27-hr.html#SP1_32">§1.32</a>, <a href="27-hr.html#SP1_36">§1.36</a>, <a href="27-hr.html#SP1_40">§1.40</a>, <a href="27-hr.html#SP1_42">§1.42</a>).</p>
|
||||
|
||||
<p class="endnote">The function HierarchyLocations::this_package is used in 27/hr (<a href="27-hr.html#SP1_48">§1.48</a>, <a href="27-hr.html#SP5">§5</a>).</p>
|
||||
|
||||
<p class="endnote">The function HierarchyLocations::this_exotic_package is used in 27/hr (<a href="27-hr.html#SP1_46">§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">§2.2</a>, <a href="27-hr.html#SP2_4">§2.4</a>, <a href="27-hr.html#SP2_6">§2.6</a>, <a href="27-hr.html#SP2_10">§2.10</a>, <a href="27-hr.html#SP2_12">§2.12</a>, <a href="27-hr.html#SP2_14">§2.14</a>, <a href="27-hr.html#SP2_22">§2.22</a>, <a href="27-hr.html#SP2_26">§2.26</a>, <a href="27-hr.html#SP2_28">§2.28</a>, <a href="27-hr.html#SP2_34">§2.34</a>, <a href="27-hr.html#SP2_36">§2.36</a>, <a href="27-hr.html#SP2_38">§2.38</a>, <a href="27-hr.html#SP2_40">§2.40</a>, <a href="27-hr.html#SP2_42">§2.42</a>, <a href="27-hr.html#SP2_48">§2.48</a>, <a href="27-hr.html#SP6">§6</a>).</p>
|
||||
<p class="endnote">The function HierarchyLocations::con is used in 27/hr (<a href="27-hr.html#SP1_2">§1.2</a>, <a href="27-hr.html#SP1_4">§1.4</a>, <a href="27-hr.html#SP1_6">§1.6</a>, <a href="27-hr.html#SP1_8">§1.8</a>, <a href="27-hr.html#SP1_10">§1.10</a>, <a href="27-hr.html#SP1_12">§1.12</a>, <a href="27-hr.html#SP1_14">§1.14</a>, <a href="27-hr.html#SP1_20">§1.20</a>, <a href="27-hr.html#SP1_22">§1.22</a>, <a href="27-hr.html#SP1_26">§1.26</a>, <a href="27-hr.html#SP1_28">§1.28</a>, <a href="27-hr.html#SP1_30">§1.30</a>, <a href="27-hr.html#SP1_32">§1.32</a>, <a href="27-hr.html#SP1_34">§1.34</a>, <a href="27-hr.html#SP1_36">§1.36</a>, <a href="27-hr.html#SP1_38">§1.38</a>, <a href="27-hr.html#SP1_40">§1.40</a>, <a href="27-hr.html#SP1_42">§1.42</a>, <a href="27-hr.html#SP1_46">§1.46</a>, <a href="27-hr.html#SP1_48">§1.48</a>, <a href="27-hr.html#SP5">§5</a>).</p>
|
||||
|
||||
<p class="endnote">The function HierarchyLocations::make_in_exotic is used in 27/hr (<a href="27-hr.html#SP2_46">§2.46</a>).</p>
|
||||
<p class="endnote">The function HierarchyLocations::make_as is used in 27/hr (<a href="27-hr.html#SP5">§5</a>).</p>
|
||||
|
||||
<p class="endnote">The function HierarchyLocations::make_as is used in 27/hr (<a href="27-hr.html#SP6">§6</a>).</p>
|
||||
<p class="endnote">The function HierarchyLocations::func is used in 27/hr (<a href="27-hr.html#SP1_4">§1.4</a>, <a href="27-hr.html#SP1_12">§1.12</a>, <a href="27-hr.html#SP1_18">§1.18</a>, <a href="27-hr.html#SP1_22">§1.22</a>, <a href="27-hr.html#SP1_26">§1.26</a>, <a href="27-hr.html#SP1_28">§1.28</a>, <a href="27-hr.html#SP1_36">§1.36</a>, <a href="27-hr.html#SP1_38">§1.38</a>, <a href="27-hr.html#SP1_40">§1.40</a>, <a href="27-hr.html#SP1_42">§1.42</a>, <a href="27-hr.html#SP1_46">§1.46</a>).</p>
|
||||
|
||||
<p class="endnote">The function HierarchyLocations::make_function is used in 27/hr (<a href="27-hr.html#SP2_4">§2.4</a>, <a href="27-hr.html#SP2_12">§2.12</a>, <a href="27-hr.html#SP2_18">§2.18</a>, <a href="27-hr.html#SP2_22">§2.22</a>, <a href="27-hr.html#SP2_26">§2.26</a>, <a href="27-hr.html#SP2_28">§2.28</a>, <a href="27-hr.html#SP2_36">§2.36</a>, <a href="27-hr.html#SP2_38">§2.38</a>, <a href="27-hr.html#SP2_40">§2.40</a>, <a href="27-hr.html#SP2_42">§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">§2.46</a>).</p>
|
||||
|
||||
<p class="endnote">The function HierarchyLocations::make_datum is used in 27/hr (<a href="27-hr.html#SP2_10">§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">§2.4</a>, <a href="27-hr.html#SP2_6">§2.6</a>).</p>
|
||||
<p class="endnote">The function HierarchyLocations::datum is used in 27/hr (<a href="27-hr.html#SP1_10">§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">§6</a>).</p>
|
||||
<p class="endnote">The function HierarchyLocations::find is used in 27/hr (<a href="27-hr.html#SP5">§5</a>).</p>
|
||||
|
||||
<p class="endnote">The function HierarchyLocations::find_by_name is used in 27/hr (<a href="27-hr.html#SP6">§6</a>).</p>
|
||||
<p class="endnote">The function HierarchyLocations::find_by_name is used in 27/hr (<a href="27-hr.html#SP5">§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">§6</a>).</p>
|
||||
<p class="endnote">The function HierarchyLocations::find_in_package is used in 27/hr (<a href="27-hr.html#SP5">§5</a>).</p>
|
||||
|
||||
<p class="endnote">The function HierarchyLocations::package_in_package is used in 27/hr (<a href="27-hr.html#SP5">§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"><</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">>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">>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">>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">>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">>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"> >= 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">>hap_id</span><span class="plain"> >= 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">>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">>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">>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">>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">>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">>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">>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"> < 0) || (</span><span class="identifier">hap_id</span><span class="plain"> >= </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">>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">>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">>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">>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"> < 0) || (</span><span class="identifier">hap_id</span><span class="plain"> >= </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">>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">>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">>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">>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">>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">>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">>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">>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">>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">>requirements.this_exotic_package</span><span class="plain"> >= 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">>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">>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">>eventual_type</span><span class="plain"> != </span><span class="identifier">hap</span><span class="plain">-</span><span class="element">>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"> < 0) || (</span><span class="identifier">hap_id</span><span class="plain"> >= </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">>eventual_type</span><span class="plain"> != </span><span class="identifier">hap</span><span class="plain">-</span><span class="element">>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">>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">>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">>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"> < 0) || (</span><span class="identifier">hap_id</span><span class="plain"> >= </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">>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">>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">>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">>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">§2.4</a>, <a href="27-hr.html#SP2_6">§2.6</a>, <a href="27-hr.html#SP2_8">§2.8</a>, <a href="27-hr.html#SP2_12">§2.12</a>, <a href="27-hr.html#SP2_14">§2.14</a>, <a href="27-hr.html#SP2_16">§2.16</a>, <a href="27-hr.html#SP2_20">§2.20</a>, <a href="27-hr.html#SP2_22">§2.22</a>, <a href="27-hr.html#SP2_24">§2.24</a>, <a href="27-hr.html#SP2_28">§2.28</a>, <a href="27-hr.html#SP2_30">§2.30</a>, <a href="27-hr.html#SP2_32">§2.32</a>, <a href="27-hr.html#SP2_34">§2.34</a>, <a href="27-hr.html#SP2_36">§2.36</a>, <a href="27-hr.html#SP2_38">§2.38</a>, <a href="27-hr.html#SP2_40">§2.40</a>, <a href="27-hr.html#SP2_42">§2.42</a>, <a href="27-hr.html#SP2_44">§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">§2.22</a>, <a href="27-hr.html#SP2_32">§2.32</a>).</p>
|
||||
<p class="endnote">The function HierarchyLocations::ap is used in 27/hr (<a href="27-hr.html#SP1_4">§1.4</a>, <a href="27-hr.html#SP1_6">§1.6</a>, <a href="27-hr.html#SP1_8">§1.8</a>, <a href="27-hr.html#SP1_12">§1.12</a>, <a href="27-hr.html#SP1_14">§1.14</a>, <a href="27-hr.html#SP1_16">§1.16</a>, <a href="27-hr.html#SP1_20">§1.20</a>, <a href="27-hr.html#SP1_22">§1.22</a>, <a href="27-hr.html#SP1_24">§1.24</a>, <a href="27-hr.html#SP1_28">§1.28</a>, <a href="27-hr.html#SP1_30">§1.30</a>, <a href="27-hr.html#SP1_32">§1.32</a>, <a href="27-hr.html#SP1_34">§1.34</a>, <a href="27-hr.html#SP1_36">§1.36</a>, <a href="27-hr.html#SP1_38">§1.38</a>, <a href="27-hr.html#SP1_40">§1.40</a>, <a href="27-hr.html#SP1_42">§1.42</a>, <a href="27-hr.html#SP1_44">§1.44</a>).</p>
|
||||
|
||||
<p class="endnote">The function HierarchyLocations::ap_within is used in 27/hr (<a href="27-hr.html#SP2_32">§2.32</a>, <a href="27-hr.html#SP2_40">§2.40</a>, <a href="27-hr.html#SP2_42">§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">§6</a>).</p>
|
||||
|
||||
<p class="endnote">The function HierarchyLocations::package_within is used in 27/hr (<a href="27-hr.html#SP6">§6</a>).</p>
|
||||
|
||||
<p class="endnote">The function HierarchyLocations::synoptic_package is used in 27/hr (<a href="27-hr.html#SP6">§6</a>).</p>
|
||||
<p class="endnote">The function HierarchyLocations::attach_new_package is used in 27/hr (<a href="27-hr.html#SP5">§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>§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">§1</a>, <a href="#SP2">§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
|
@ -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>§4. </b></p>
|
||||
|
||||
|
@ -112,7 +112,7 @@
|
|||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The function Packaging::request is used in <a href="#SP7">§7</a>, <a href="#SP7_1">§7.1</a>, <a href="#SP8">§8</a>, 27/hl (<a href="27-hl.html#SP1">§1</a>, <a href="27-hl.html#SP2">§2</a>), 27/hr (<a href="27-hr.html#SP6">§6</a>).</p>
|
||||
<p class="endnote">The function Packaging::request is used in <a href="#SP7">§7</a>, <a href="#SP7_1">§7.1</a>, <a href="#SP8">§8</a>, 27/hl (<a href="27-hl.html#SP1">§1</a>, <a href="27-hl.html#SP2">§2</a>), 27/hr (<a href="27-hr.html#SP5">§5</a>).</p>
|
||||
|
||||
<p class="endnote">The function Packaging::log is used in 1/cm (<a href="1-cm.html#SP5">§5</a>, <a href="1-cm.html#SP6_6">§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">§2</a>).</p>
|
||||
|
||||
<p class="endnote">The function Packaging::home_of is used in 12/cdp (<a href="12-cdp.html#SP5">§5</a>), 27/hl (<a href="27-hl.html#SP1">§1</a>), 27/hr (<a href="27-hr.html#SP4">§4</a>).</p>
|
||||
<p class="endnote">The function Packaging::home_of is used in 12/cdp (<a href="12-cdp.html#SP5">§5</a>), 27/hl (<a href="27-hl.html#SP1">§1</a>), 27/hr (<a href="27-hr.html#SP3">§3</a>).</p>
|
||||
|
||||
<p class="endnote">The function Packaging::enter_home_of is used in 6/bp (<a href="6-bp.html#SP42">§42</a>), 6/rlt (<a href="6-rlt.html#SP14">§14</a>, <a href="6-rlt.html#SP15_1">§15.1</a>, <a href="6-rlt.html#SP20">§20</a>, <a href="6-rlt.html#SP20_3">§20.3</a>), 6/nv (<a href="6-nv.html#SP18">§18</a>), 12/cdp (<a href="12-cdp.html#SP2_1_1">§2.1.1</a>), 13/kak (<a href="13-kak.html#SP5">§5</a>), 13/rsfk (<a href="13-rsfk.html#SP16_2">§16.2</a>, <a href="13-rsfk.html#SP26">§26</a>), 15/pr (<a href="15-pr.html#SP27">§27</a>), 15/epv (<a href="15-epv.html#SP1_1_2">§1.1.2</a>), 17/tl (<a href="17-tl.html#SP14_1">§14.1</a>, <a href="17-tl.html#SP14_2">§14.2</a>), 17/ts (<a href="17-ts.html#SP11">§11</a>), 17/rs (<a href="17-rs.html#SP7_3">§7.3</a>), 18/lc (<a href="18-lc.html#SP12_1">§12.1</a>), 19/rsft (<a href="19-rsft.html#SP1_1_1_1">§1.1.1.1</a>, <a href="19-rsft.html#SP1_1_1_1_1">§1.1.1.1.1</a>, <a href="19-rsft.html#SP1_2">§1.2</a>, <a href="19-rsft.html#SP1_3">§1.3</a>), 21/rl2 (<a href="21-rl2.html#SP14">§14</a>, <a href="21-rl2.html#SP20">§20</a>), 21/fao (<a href="21-fao.html#SP10">§10</a>), 21/ac (<a href="21-ac.html#SP6">§6</a>, <a href="21-ac.html#SP8">§8</a>, <a href="21-ac.html#SP14">§14</a>), 22/cs (<a href="22-cs.html#SP8">§8</a>), 22/pav (<a href="22-pav.html#SP8_1">§8.1</a>), 22/tp2 (<a href="22-tp2.html#SP4">§4</a>), 24/ch (<a href="24-ch.html#SP6">§6</a>, <a href="24-ch.html#SP8">§8</a>), 26/vm (<a href="26-vm.html#SP8">§8</a>), 26/uo (<a href="26-uo.html#SP21">§21</a>), 26/lt (<a href="26-lt.html#SP4_1">§4.1</a>), 26/jl (<a href="26-jl.html#SP6">§6</a>), 26/rt (<a href="26-rt.html#SP1">§1</a>), 26/iti (<a href="26-iti.html#SP10">§10</a>), 26/pl (<a href="26-pl.html#SP12">§12</a>), 26/ts (<a href="26-ts.html#SP10">§10</a>), 27/ei (<a href="27-ei.html#SP3">§3</a>, <a href="27-ei.html#SP4">§4</a>), 27/hr (<a href="27-hr.html#SP5">§5</a>).</p>
|
||||
<p class="endnote">The function Packaging::enter_home_of is used in 6/bp (<a href="6-bp.html#SP42">§42</a>), 6/rlt (<a href="6-rlt.html#SP14">§14</a>, <a href="6-rlt.html#SP15_1">§15.1</a>, <a href="6-rlt.html#SP20">§20</a>, <a href="6-rlt.html#SP20_3">§20.3</a>), 6/nv (<a href="6-nv.html#SP18">§18</a>), 12/cdp (<a href="12-cdp.html#SP2_1_1">§2.1.1</a>), 13/kak (<a href="13-kak.html#SP5">§5</a>), 13/rsfk (<a href="13-rsfk.html#SP16_2">§16.2</a>, <a href="13-rsfk.html#SP26">§26</a>), 15/pr (<a href="15-pr.html#SP27">§27</a>), 15/epv (<a href="15-epv.html#SP1_1_2">§1.1.2</a>), 17/tl (<a href="17-tl.html#SP14_1">§14.1</a>, <a href="17-tl.html#SP14_2">§14.2</a>), 17/ts (<a href="17-ts.html#SP11">§11</a>), 17/rs (<a href="17-rs.html#SP7_3">§7.3</a>), 18/lc (<a href="18-lc.html#SP12_1">§12.1</a>), 19/rsft (<a href="19-rsft.html#SP1_1_1_1">§1.1.1.1</a>, <a href="19-rsft.html#SP1_1_1_1_1">§1.1.1.1.1</a>, <a href="19-rsft.html#SP1_2">§1.2</a>, <a href="19-rsft.html#SP1_3">§1.3</a>), 21/rl2 (<a href="21-rl2.html#SP14">§14</a>, <a href="21-rl2.html#SP20">§20</a>), 21/fao (<a href="21-fao.html#SP10">§10</a>), 21/ac (<a href="21-ac.html#SP6">§6</a>, <a href="21-ac.html#SP8">§8</a>, <a href="21-ac.html#SP14">§14</a>), 22/cs (<a href="22-cs.html#SP8">§8</a>), 22/pav (<a href="22-pav.html#SP8_1">§8.1</a>), 22/tp2 (<a href="22-tp2.html#SP4">§4</a>), 24/ch (<a href="24-ch.html#SP6">§6</a>, <a href="24-ch.html#SP8">§8</a>), 26/vm (<a href="26-vm.html#SP8">§8</a>), 26/uo (<a href="26-uo.html#SP21">§21</a>), 26/lt (<a href="26-lt.html#SP4_1">§4.1</a>), 26/jl (<a href="26-jl.html#SP6">§6</a>), 26/rt (<a href="26-rt.html#SP1">§1</a>), 26/iti (<a href="26-iti.html#SP10">§10</a>), 26/pl (<a href="26-pl.html#SP12">§12</a>), 26/ts (<a href="26-ts.html#SP10">§10</a>), 27/ei (<a href="27-ei.html#SP3">§3</a>, <a href="27-ei.html#SP4">§4</a>), 27/hr (<a href="27-hr.html#SP4">§4</a>).</p>
|
||||
|
||||
<p class="endnote">The function Packaging::enter_current_enclosure is used in 13/rsfk (<a href="13-rsfk.html#SP4">§4</a>), 17/tl (<a href="17-tl.html#SP16">§16</a>), 17/ts (<a href="17-ts.html#SP8_1">§8.1</a>), 18/lc (<a href="18-lc.html#SP11">§11</a>).</p>
|
||||
|
||||
|
@ -238,7 +238,7 @@
|
|||
|
||||
<p class="endnote">The function Packaging::enter is used in <a href="#SP5">§5</a>, 4/am (<a href="4-am.html#SP34_2">§34.2</a>), 5/ins (<a href="5-ins.html#SP34">§34</a>), 5/nv (<a href="5-nv.html#SP16">§16</a>), 13/rsfk (<a href="13-rsfk.html#SP16_1">§16.1</a>, <a href="13-rsfk.html#SP26">§26</a>), 15/epv (<a href="15-epv.html#SP2">§2</a>), 16/ic (<a href="16-ic.html#SP10">§10</a>), 17/rs (<a href="17-rs.html#SP6_1">§6.1</a>, <a href="17-rs.html#SP7_1">§7.1</a>), 21/rl (<a href="21-rl.html#SP9">§9</a>), 21/rl2 (<a href="21-rl2.html#SP20">§20</a>), 22/ph (<a href="22-ph.html#SP12">§12</a>), 27/ei (<a href="27-ei.html#SP3">§3</a>, <a href="27-ei.html#SP4">§4</a>), 27/hl (<a href="27-hl.html#SP1">§1</a>).</p>
|
||||
|
||||
<p class="endnote">The function Packaging::exit is used in 5/ins (<a href="5-ins.html#SP34">§34</a>), 5/nv (<a href="5-nv.html#SP16">§16</a>), 6/bp (<a href="6-bp.html#SP42">§42</a>), 6/rlt (<a href="6-rlt.html#SP14">§14</a>, <a href="6-rlt.html#SP15_1">§15.1</a>, <a href="6-rlt.html#SP20">§20</a>, <a href="6-rlt.html#SP20_3">§20.3</a>), 6/nv (<a href="6-nv.html#SP18">§18</a>), 12/cdp (<a href="12-cdp.html#SP2_1_1">§2.1.1</a>), 13/kak (<a href="13-kak.html#SP5">§5</a>), 13/rsfk (<a href="13-rsfk.html#SP4">§4</a>, <a href="13-rsfk.html#SP16_1">§16.1</a>, <a href="13-rsfk.html#SP16_2">§16.2</a>, <a href="13-rsfk.html#SP26">§26</a>), 15/pr (<a href="15-pr.html#SP27">§27</a>), 15/epv (<a href="15-epv.html#SP1_1_2">§1.1.2</a>, <a href="15-epv.html#SP2">§2</a>), 16/ic (<a href="16-ic.html#SP10">§10</a>), 17/tl (<a href="17-tl.html#SP14_1">§14.1</a>, <a href="17-tl.html#SP14_2">§14.2</a>, <a href="17-tl.html#SP16">§16</a>), 17/ts (<a href="17-ts.html#SP8_1">§8.1</a>, <a href="17-ts.html#SP11">§11</a>), 17/rs (<a href="17-rs.html#SP6_1">§6.1</a>, <a href="17-rs.html#SP7_1">§7.1</a>, <a href="17-rs.html#SP7_3">§7.3</a>), 18/lc (<a href="18-lc.html#SP11">§11</a>, <a href="18-lc.html#SP12_1">§12.1</a>), 19/rsft (<a href="19-rsft.html#SP1_1_1_1">§1.1.1.1</a>, <a href="19-rsft.html#SP1_1_1_1_1">§1.1.1.1.1</a>, <a href="19-rsft.html#SP1_2">§1.2</a>, <a href="19-rsft.html#SP1_3">§1.3</a>), 21/rl (<a href="21-rl.html#SP9">§9</a>), 21/rl2 (<a href="21-rl2.html#SP14">§14</a>, <a href="21-rl2.html#SP20">§20</a>), 21/fao (<a href="21-fao.html#SP10">§10</a>), 21/ac (<a href="21-ac.html#SP6">§6</a>, <a href="21-ac.html#SP8">§8</a>, <a href="21-ac.html#SP14">§14</a>), 22/cs (<a href="22-cs.html#SP8">§8</a>), 22/ph (<a href="22-ph.html#SP12">§12</a>), 22/pav (<a href="22-pav.html#SP8_1">§8.1</a>), 22/tp2 (<a href="22-tp2.html#SP4">§4</a>), 24/ch (<a href="24-ch.html#SP6">§6</a>, <a href="24-ch.html#SP8">§8</a>), 26/vm (<a href="26-vm.html#SP8">§8</a>), 26/uo (<a href="26-uo.html#SP21">§21</a>), 26/lt (<a href="26-lt.html#SP4_1">§4.1</a>), 26/jl (<a href="26-jl.html#SP6">§6</a>), 26/rt (<a href="26-rt.html#SP4">§4</a>), 26/iti (<a href="26-iti.html#SP10">§10</a>), 26/pl (<a href="26-pl.html#SP12">§12</a>), 26/ts (<a href="26-ts.html#SP10">§10</a>), 27/ei (<a href="27-ei.html#SP3">§3</a>, <a href="27-ei.html#SP4">§4</a>), 27/hl (<a href="27-hl.html#SP1">§1</a>), 27/hr (<a href="27-hr.html#SP5">§5</a>).</p>
|
||||
<p class="endnote">The function Packaging::exit is used in 5/ins (<a href="5-ins.html#SP34">§34</a>), 5/nv (<a href="5-nv.html#SP16">§16</a>), 6/bp (<a href="6-bp.html#SP42">§42</a>), 6/rlt (<a href="6-rlt.html#SP14">§14</a>, <a href="6-rlt.html#SP15_1">§15.1</a>, <a href="6-rlt.html#SP20">§20</a>, <a href="6-rlt.html#SP20_3">§20.3</a>), 6/nv (<a href="6-nv.html#SP18">§18</a>), 12/cdp (<a href="12-cdp.html#SP2_1_1">§2.1.1</a>), 13/kak (<a href="13-kak.html#SP5">§5</a>), 13/rsfk (<a href="13-rsfk.html#SP4">§4</a>, <a href="13-rsfk.html#SP16_1">§16.1</a>, <a href="13-rsfk.html#SP16_2">§16.2</a>, <a href="13-rsfk.html#SP26">§26</a>), 15/pr (<a href="15-pr.html#SP27">§27</a>), 15/epv (<a href="15-epv.html#SP1_1_2">§1.1.2</a>, <a href="15-epv.html#SP2">§2</a>), 16/ic (<a href="16-ic.html#SP10">§10</a>), 17/tl (<a href="17-tl.html#SP14_1">§14.1</a>, <a href="17-tl.html#SP14_2">§14.2</a>, <a href="17-tl.html#SP16">§16</a>), 17/ts (<a href="17-ts.html#SP8_1">§8.1</a>, <a href="17-ts.html#SP11">§11</a>), 17/rs (<a href="17-rs.html#SP6_1">§6.1</a>, <a href="17-rs.html#SP7_1">§7.1</a>, <a href="17-rs.html#SP7_3">§7.3</a>), 18/lc (<a href="18-lc.html#SP11">§11</a>, <a href="18-lc.html#SP12_1">§12.1</a>), 19/rsft (<a href="19-rsft.html#SP1_1_1_1">§1.1.1.1</a>, <a href="19-rsft.html#SP1_1_1_1_1">§1.1.1.1.1</a>, <a href="19-rsft.html#SP1_2">§1.2</a>, <a href="19-rsft.html#SP1_3">§1.3</a>), 21/rl (<a href="21-rl.html#SP9">§9</a>), 21/rl2 (<a href="21-rl2.html#SP14">§14</a>, <a href="21-rl2.html#SP20">§20</a>), 21/fao (<a href="21-fao.html#SP10">§10</a>), 21/ac (<a href="21-ac.html#SP6">§6</a>, <a href="21-ac.html#SP8">§8</a>, <a href="21-ac.html#SP14">§14</a>), 22/cs (<a href="22-cs.html#SP8">§8</a>), 22/ph (<a href="22-ph.html#SP12">§12</a>), 22/pav (<a href="22-pav.html#SP8_1">§8.1</a>), 22/tp2 (<a href="22-tp2.html#SP4">§4</a>), 24/ch (<a href="24-ch.html#SP6">§6</a>, <a href="24-ch.html#SP8">§8</a>), 26/vm (<a href="26-vm.html#SP8">§8</a>), 26/uo (<a href="26-uo.html#SP21">§21</a>), 26/lt (<a href="26-lt.html#SP4_1">§4.1</a>), 26/jl (<a href="26-jl.html#SP6">§6</a>), 26/rt (<a href="26-rt.html#SP4">§4</a>), 26/iti (<a href="26-iti.html#SP10">§10</a>), 26/pl (<a href="26-pl.html#SP12">§12</a>), 26/ts (<a href="26-ts.html#SP10">§10</a>), 27/ei (<a href="27-ei.html#SP3">§3</a>, <a href="27-ei.html#SP4">§4</a>), 27/hl (<a href="27-hl.html#SP1">§1</a>), 27/hr (<a href="27-hr.html#SP4">§4</a>).</p>
|
||||
|
||||
<p class="endnote">The function Packaging::incarnate is used in 21/rl (<a href="21-rl.html#SP9">§9</a>), 27/ei (<a href="27-ei.html#SP3">§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">>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"><</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">>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">>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">(&</span><span class="identifier">generic_subpackages</span><span class="plain">);</span>
|
||||
<span class="functiontext">Packaging::initialise_submodules</span><span class="plain">(&</span><span class="identifier">generic_subpackages</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="identifier">SR</span><span class="plain"> = &</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 @@
|
|||
<<span class="cwebmacro">Handle the resource request</span> <span class="cwebmacronumber">7.1</span>><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">(&</span><span class="identifier">generic_subpackages</span><span class="plain">);</span>
|
||||
<span class="functiontext">Packaging::initialise_submodules</span><span class="plain">(&</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"> = &</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"> = &</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>
|
||||
<<span class="cwebmacro">Handle the resource request</span> <span class="cwebmacronumber">7.1</span>><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">(&</span><span class="identifier">synoptic_subpackages</span><span class="plain">);</span>
|
||||
<span class="functiontext">Packaging::initialise_submodules</span><span class="plain">(&</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"> = &</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"> = &</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>
|
||||
<<span class="cwebmacro">Handle the resource request</span> <span class="cwebmacronumber">7.1</span>><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">§1.2</a>, <a href="27-hr.html#SP1_4">§1.4</a>, <a href="27-hr.html#SP1_6">§1.6</a>, <a href="27-hr.html#SP1_8">§1.8</a>, <a href="27-hr.html#SP1_10">§1.10</a>, <a href="27-hr.html#SP1_12">§1.12</a>, <a href="27-hr.html#SP1_14">§1.14</a>, <a href="27-hr.html#SP1_16">§1.16</a>, <a href="27-hr.html#SP1_18">§1.18</a>, <a href="27-hr.html#SP1_20">§1.20</a>, <a href="27-hr.html#SP1_22">§1.22</a>, <a href="27-hr.html#SP1_24">§1.24</a>, <a href="27-hr.html#SP1_26">§1.26</a>, <a href="27-hr.html#SP1_28">§1.28</a>, <a href="27-hr.html#SP1_30">§1.30</a>, <a href="27-hr.html#SP1_32">§1.32</a>, <a href="27-hr.html#SP1_34">§1.34</a>, <a href="27-hr.html#SP1_36">§1.36</a>, <a href="27-hr.html#SP1_38">§1.38</a>, <a href="27-hr.html#SP1_40">§1.40</a>, <a href="27-hr.html#SP1_42">§1.42</a>, <a href="27-hr.html#SP1_44">§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">§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">§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">§2.2</a>, <a href="27-hr.html#SP2_4">§2.4</a>, <a href="27-hr.html#SP2_14">§2.14</a>, <a href="27-hr.html#SP2_28">§2.28</a>, <a href="27-hr.html#SP2_36">§2.36</a>, <a href="27-hr.html#SP2_38">§2.38</a>).</p>
|
||||
<p class="endnote">The function Packaging::generic_resource is used in 27/hl (<a href="27-hl.html#SP1">§1</a>).</p>
|
||||
|
||||
<p class="endnote">The function Packaging::synoptic_resource is used in 27/hl (<a href="27-hl.html#SP2">§2</a>), 27/hr (<a href="27-hr.html#SP2_2">§2.2</a>, <a href="27-hr.html#SP2_4">§2.4</a>, <a href="27-hr.html#SP2_6">§2.6</a>, <a href="27-hr.html#SP2_10">§2.10</a>, <a href="27-hr.html#SP2_12">§2.12</a>, <a href="27-hr.html#SP2_18">§2.18</a>, <a href="27-hr.html#SP2_22">§2.22</a>, <a href="27-hr.html#SP2_26">§2.26</a>, <a href="27-hr.html#SP2_28">§2.28</a>, <a href="27-hr.html#SP2_34">§2.34</a>, <a href="27-hr.html#SP2_36">§2.36</a>, <a href="27-hr.html#SP2_38">§2.38</a>, <a href="27-hr.html#SP2_40">§2.40</a>, <a href="27-hr.html#SP2_42">§2.42</a>, <a href="27-hr.html#SP6">§6</a>).</p>
|
||||
<p class="endnote">The function Packaging::synoptic_resource is used in 27/hl (<a href="27-hl.html#SP1">§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>§7.1. </b><code class="display">
|
||||
<<span class="cwebmacrodefn">Handle the resource request</span> <span class="cwebmacronumber">7.1</span>> =
|
||||
|
@ -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">>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">>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">>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">>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">>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">>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">>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">>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">>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">>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">>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"> < 0) || (</span><span class="identifier">what_for</span><span class="plain"> >= </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">>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">>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">>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">>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">>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">>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">>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"> < 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">>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">>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">>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">>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">§2</a>), 27/hr (<a href="27-hr.html#SP2">§2</a>).</p>
|
||||
<p class="endnote">The function Packaging::register_counter is used in 27/hl (<a href="27-hl.html#SP2">§2</a>), 27/hr (<a href="27-hr.html#SP1">§1</a>).</p>
|
||||
|
||||
<p class="endnote">The function Packaging::register_ptype is used in 27/hr (<a href="27-hr.html#SP2_4">§2.4</a>, <a href="27-hr.html#SP2_6">§2.6</a>, <a href="27-hr.html#SP2_8">§2.8</a>, <a href="27-hr.html#SP2_12">§2.12</a>, <a href="27-hr.html#SP2_14">§2.14</a>, <a href="27-hr.html#SP2_16">§2.16</a>, <a href="27-hr.html#SP2_20">§2.20</a>, <a href="27-hr.html#SP2_22">§2.22</a>, <a href="27-hr.html#SP2_24">§2.24</a>, <a href="27-hr.html#SP2_28">§2.28</a>, <a href="27-hr.html#SP2_30">§2.30</a>, <a href="27-hr.html#SP2_32">§2.32</a>, <a href="27-hr.html#SP2_34">§2.34</a>, <a href="27-hr.html#SP2_36">§2.36</a>, <a href="27-hr.html#SP2_38">§2.38</a>, <a href="27-hr.html#SP2_40">§2.40</a>, <a href="27-hr.html#SP2_42">§2.42</a>, <a href="27-hr.html#SP2_44">§2.44</a>).</p>
|
||||
<p class="endnote">The function Packaging::register_ptype is used in 27/hl (<a href="27-hl.html#SP3">§3</a>).</p>
|
||||
|
||||
<p class="endnote">The function Packaging::supply_iname is used in 4/am (<a href="4-am.html#SP6">§6</a>), 6/rlt (<a href="6-rlt.html#SP15_1_2">§15.1.2</a>), 12/dtd (<a href="12-dtd.html#SP4">§4</a>), 13/rsfk (<a href="13-rsfk.html#SP19">§19</a>), 17/tl (<a href="17-tl.html#SP7">§7</a>, <a href="17-tl.html#SP10_2_1">§10.2.1</a>, <a href="17-tl.html#SP14_2">§14.2</a>), 17/ts (<a href="17-ts.html#SP5">§5</a>), 18/lc (<a href="18-lc.html#SP11">§11</a>), 27/ei (<a href="27-ei.html#SP4">§4</a>), 27/hl (<a href="27-hl.html#SP2">§2</a>).</p>
|
||||
|
||||
<p class="endnote">The function Packaging::function is used in 6/bp (<a href="6-bp.html#SP32">§32</a>), 6/rlt (<a href="6-rlt.html#SP9">§9</a>, <a href="6-rlt.html#SP9_13">§9.13</a>), 12/dtd (<a href="12-dtd.html#SP4">§4</a>), 13/rsfk (<a href="13-rsfk.html#SP15">§15</a>), 15/ma (<a href="15-ma.html#SP11_3">§11.3</a>), 17/tl (<a href="17-tl.html#SP14_2">§14.2</a>), 17/ts (<a href="17-ts.html#SP5">§5</a>), 17/rs (<a href="17-rs.html#SP6_1">§6.1</a>), 20/eq (<a href="20-eq.html#SP10_1">§10.1</a>), 21/rl (<a href="21-rl.html#SP19">§19</a>), 21/rl2 (<a href="21-rl2.html#SP10">§10</a>, <a href="21-rl2.html#SP14">§14</a>), 21/ac (<a href="21-ac.html#SP8">§8</a>), 22/ph (<a href="22-ph.html#SP11">§11</a>), 22/pu (<a href="22-pu.html#SP6">§6</a>), 22/pav (<a href="22-pav.html#SP9">§9</a>), 22/tp (<a href="22-tp.html#SP7">§7</a>), 24/ch (<a href="24-ch.html#SP3">§3</a>), 26/lt (<a href="26-lt.html#SP3">§3</a>), 27/hl (<a href="27-hl.html#SP1">§1</a>).</p>
|
||||
<p class="endnote">The function Packaging::function is used in 6/bp (<a href="6-bp.html#SP32">§32</a>), 6/rlt (<a href="6-rlt.html#SP9">§9</a>, <a href="6-rlt.html#SP9_13">§9.13</a>), 12/dtd (<a href="12-dtd.html#SP4">§4</a>), 13/rsfk (<a href="13-rsfk.html#SP15">§15</a>), 15/ma (<a href="15-ma.html#SP11_3">§11.3</a>), 17/tl (<a href="17-tl.html#SP14_2">§14.2</a>), 17/ts (<a href="17-ts.html#SP5">§5</a>), 20/eq (<a href="20-eq.html#SP10_1">§10.1</a>), 21/rl (<a href="21-rl.html#SP19">§19</a>), 21/rl2 (<a href="21-rl2.html#SP10">§10</a>, <a href="21-rl2.html#SP14">§14</a>), 21/ac (<a href="21-ac.html#SP8">§8</a>), 22/ph (<a href="22-ph.html#SP11">§11</a>), 22/pu (<a href="22-pu.html#SP6">§6</a>), 22/pav (<a href="22-pav.html#SP9">§9</a>), 22/tp (<a href="22-tp.html#SP7">§7</a>), 24/ch (<a href="24-ch.html#SP3">§3</a>), 26/lt (<a href="26-lt.html#SP3">§3</a>), 27/hl (<a href="27-hl.html#SP1">§1</a>).</p>
|
||||
|
||||
<p class="endnote">The function Packaging::function_text is used in 21/rl (<a href="21-rl.html#SP9">§9</a>), 27/hl (<a href="27-hl.html#SP1">§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">§4</a>), 27/ei (<a href="27-ei.html#SP4">§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>
|
||||
|
|
67
docs/core-module/27-tr.html
Normal file
67
docs/core-module/27-tr.html
Normal 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">★</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>§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">§1</a>), 27/hr (<a href="27-hr.html#SP1_2">§1.2</a>, <a href="27-hr.html#SP1_4">§1.4</a>, <a href="27-hr.html#SP1_6">§1.6</a>, <a href="27-hr.html#SP1_10">§1.10</a>, <a href="27-hr.html#SP1_12">§1.12</a>, <a href="27-hr.html#SP1_14">§1.14</a>, <a href="27-hr.html#SP1_22">§1.22</a>, <a href="27-hr.html#SP1_26">§1.26</a>, <a href="27-hr.html#SP1_28">§1.28</a>, <a href="27-hr.html#SP1_34">§1.34</a>, <a href="27-hr.html#SP1_36">§1.36</a>, <a href="27-hr.html#SP1_38">§1.38</a>, <a href="27-hr.html#SP1_40">§1.40</a>, <a href="27-hr.html#SP1_42">§1.42</a>, <a href="27-hr.html#SP1_46">§1.46</a>, <a href="27-hr.html#SP1_48">§1.48</a>, <a href="27-hr.html#SP5">§5</a>).</p>
|
||||
|
||||
<p class="endnote">The function Translation::uniqued is used in 27/hr (<a href="27-hr.html#SP1_8">§1.8</a>, <a href="27-hr.html#SP1_20">§1.20</a>, <a href="27-hr.html#SP1_22">§1.22</a>, <a href="27-hr.html#SP1_28">§1.28</a>, <a href="27-hr.html#SP1_30">§1.30</a>, <a href="27-hr.html#SP1_32">§1.32</a>, <a href="27-hr.html#SP1_36">§1.36</a>, <a href="27-hr.html#SP1_40">§1.40</a>, <a href="27-hr.html#SP1_42">§1.42</a>).</p>
|
||||
|
||||
<p class="endnote">The function Translation::to is used in 27/hr (<a href="27-hr.html#SP1_4">§1.4</a>, <a href="27-hr.html#SP1_10">§1.10</a>, <a href="27-hr.html#SP1_12">§1.12</a>, <a href="27-hr.html#SP1_18">§1.18</a>, <a href="27-hr.html#SP1_22">§1.22</a>, <a href="27-hr.html#SP1_26">§1.26</a>, <a href="27-hr.html#SP1_28">§1.28</a>, <a href="27-hr.html#SP1_36">§1.36</a>, <a href="27-hr.html#SP1_38">§1.38</a>, <a href="27-hr.html#SP1_40">§1.40</a>, <a href="27-hr.html#SP1_42">§1.42</a>, <a href="27-hr.html#SP1_46">§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>
|
||||
|
|
@ -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">§12</a>, 26/rt (<a href="26-rt.html#SP4_1_2">§4.1.2</a>, <a href="26-rt.html#SP4_1_4">§4.1.4</a>), 26/iti (<a href="26-iti.html#SP9">§9</a>), 27/hr (<a href="27-hr.html#SP4">§4</a>).</p>
|
||||
<p class="endnote">The function NonlocalVariables::iname is used in <a href="#SP12">§12</a>, 26/rt (<a href="26-rt.html#SP4_1_2">§4.1.2</a>, <a href="26-rt.html#SP4_1_4">§4.1.4</a>), 26/iti (<a href="26-iti.html#SP9">§9</a>), 27/hr (<a href="27-hr.html#SP3">§3</a>).</p>
|
||||
|
||||
<p class="endnote">The function NonlocalVariables::SUBJ_compile_all is used in 16/is (<a href="16-is.html#SP30">§30</a>).</p>
|
||||
|
||||
|
|
|
@ -2459,8 +2459,7 @@ logical properties of the two terms of the BP being defined.
|
|||
<<span class="cwebmacro">Allocate a zeroed-out memory cache for relations with fast route-finding</span> <span class="cwebmacronumber">20.3</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">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">>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">>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">>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">>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">>v2v_bitmap_iname</span><span class="plain">, </span><span class="identifier">K_value</span><span class="plain">);</span>
|
||||
<<span class="cwebmacro">Compile header information in the V-to-V structure</span> <span class="cwebmacronumber">20.2</span>><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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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">§52</a>), 2/pl2 (<a href="2-pl2.html#SP3_1">§3.1</a>), 2/pck (<a href="2-pck.html#SP2">§2</a>), 3/rst (<a href="3-rst.html#SP6">§6</a>), 4/am (<a href="4-am.html#SP26_1">§26.1</a>), 8/ef (<a href="8-ef.html#SP26">§26</a>), 8/ed2 (<a href="8-ed2.html#SP3_2">§3.2</a>), 10/varc (<a href="10-varc.html#SP14">§14</a>), 19/tb (<a href="19-tb.html#SP27">§27</a>, <a href="19-tb.html#SP27_1">§27.1</a>, <a href="19-tb.html#SP27_1_3">§27.1.3</a>, <a href="19-tb.html#SP29">§29</a>), 21/rl2 (<a href="21-rl2.html#SP23">§23</a>), 26/uo (<a href="26-uo.html#SP11_1">§11.1</a>), 27/hr (<a href="27-hr.html#SP6">§6</a>), 2/lnk (<a href="2-lnk.html#SP1">§1</a>), 2/res (<a href="2-res.html#SP1">§1</a>), 3/cg (<a href="3-cg.html#SP1">§1</a>), 2/hf (<a href="2-hf.html#SP6">§6</a>).</p>
|
||||
<p class="endnote">The function main is used in 2/pt (<a href="2-pt.html#SP52">§52</a>), 2/pl2 (<a href="2-pl2.html#SP3_1">§3.1</a>), 2/pck (<a href="2-pck.html#SP2">§2</a>), 3/rst (<a href="3-rst.html#SP6">§6</a>), 4/am (<a href="4-am.html#SP26_1">§26.1</a>), 8/ef (<a href="8-ef.html#SP26">§26</a>), 8/ed2 (<a href="8-ed2.html#SP3_2">§3.2</a>), 10/varc (<a href="10-varc.html#SP14">§14</a>), 19/tb (<a href="19-tb.html#SP27">§27</a>, <a href="19-tb.html#SP27_1">§27.1</a>, <a href="19-tb.html#SP27_1_3">§27.1.3</a>, <a href="19-tb.html#SP29">§29</a>), 21/rl2 (<a href="21-rl2.html#SP23">§23</a>), 26/uo (<a href="26-uo.html#SP11_1">§11.1</a>), 27/hr (<a href="27-hr.html#SP5">§5</a>), 2/lnk (<a href="2-lnk.html#SP1">§1</a>), 2/res (<a href="2-res.html#SP1">§1</a>), 3/cg (<a href="3-cg.html#SP1">§1</a>), 2/hf (<a href="2-hf.html#SP6">§6</a>).</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP3"></a><b>§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
|
||||
|
|
|
@ -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">>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">>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">>an_package</span><span class="plain">);</span>
|
||||
<span class="identifier">an</span><span class="plain">-</span><span class="element">>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">>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">>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">>an_package</span><span class="plain">);</span>
|
||||
<span class="identifier">an</span><span class="plain">-</span><span class="element">>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">>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">>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">>an_package</span><span class="plain">);</span>
|
||||
<span class="identifier">an</span><span class="plain">-</span><span class="element">>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>
|
||||
|
|
|
@ -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">§52</a>), 2/pl2 (<a href="2-pl2.html#SP3_1">§3.1</a>), 2/pck (<a href="2-pck.html#SP2">§2</a>), 3/rst (<a href="3-rst.html#SP6">§6</a>), 4/am (<a href="4-am.html#SP26_1">§26.1</a>), 8/ef (<a href="8-ef.html#SP26">§26</a>), 8/ed2 (<a href="8-ed2.html#SP3_2">§3.2</a>), 10/varc (<a href="10-varc.html#SP14">§14</a>), 19/tb (<a href="19-tb.html#SP27">§27</a>, <a href="19-tb.html#SP27_1">§27.1</a>, <a href="19-tb.html#SP27_1_3">§27.1.3</a>, <a href="19-tb.html#SP29">§29</a>), 21/rl2 (<a href="21-rl2.html#SP23">§23</a>), 26/uo (<a href="26-uo.html#SP11_1">§11.1</a>), 27/hr (<a href="27-hr.html#SP6">§6</a>), 2/lnk (<a href="2-lnk.html#SP1">§1</a>), 2/res (<a href="2-res.html#SP1">§1</a>), 3/cg (<a href="3-cg.html#SP1">§1</a>), 3/sm (<a href="3-sm.html#SP36">§36</a>, <a href="3-sm.html#SP36_1">§36.1</a>, <a href="3-sm.html#SP38">§38</a>), 3/em2 (<a href="3-em2.html#SP24">§24</a>), 4/ap (<a href="4-ap.html#SP2">§2</a>), 2/hf (<a href="2-hf.html#SP6">§6</a>).</p>
|
||||
<p class="endnote">The function main is used in 2/pt (<a href="2-pt.html#SP52">§52</a>), 2/pl2 (<a href="2-pl2.html#SP3_1">§3.1</a>), 2/pck (<a href="2-pck.html#SP2">§2</a>), 3/rst (<a href="3-rst.html#SP6">§6</a>), 4/am (<a href="4-am.html#SP26_1">§26.1</a>), 8/ef (<a href="8-ef.html#SP26">§26</a>), 8/ed2 (<a href="8-ed2.html#SP3_2">§3.2</a>), 10/varc (<a href="10-varc.html#SP14">§14</a>), 19/tb (<a href="19-tb.html#SP27">§27</a>, <a href="19-tb.html#SP27_1">§27.1</a>, <a href="19-tb.html#SP27_1_3">§27.1.3</a>, <a href="19-tb.html#SP29">§29</a>), 21/rl2 (<a href="21-rl2.html#SP23">§23</a>), 26/uo (<a href="26-uo.html#SP11_1">§11.1</a>), 27/hr (<a href="27-hr.html#SP5">§5</a>), 2/lnk (<a href="2-lnk.html#SP1">§1</a>), 2/res (<a href="2-res.html#SP1">§1</a>), 3/cg (<a href="3-cg.html#SP1">§1</a>), 3/sm (<a href="3-sm.html#SP36">§36</a>, <a href="3-sm.html#SP36_1">§36.1</a>, <a href="3-sm.html#SP38">§38</a>), 3/em2 (<a href="3-em2.html#SP24">§24</a>), 4/ap (<a href="4-ap.html#SP2">§2</a>), 2/hf (<a href="2-hf.html#SP6">§6</a>).</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP3"></a><b>§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
|
||||
|
|
|
@ -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">>construct</span><span class="plain">-</span><span class="element">>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">>construct</span><span class="plain">-</span><span class="element">>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">>construct</span><span class="plain">-</span><span class="element">>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">>construct</span><span class="plain">-</span><span class="element">>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">>construct</span><span class="plain">-</span><span class="element">>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">>construct</span><span class="plain">-</span><span class="element">>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">>construct</span><span class="plain">-</span><span class="element">>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">>construct</span><span class="plain">-</span><span class="element">>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">>construct</span><span class="plain">-</span><span class="element">>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">>construct</span><span class="plain">-</span><span class="element">>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">>construct</span><span class="plain">-</span><span class="element">>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">>construct</span><span class="plain">-</span><span class="element">>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">>construct</span><span class="plain">-</span><span class="element">>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">>construct</span><span class="plain">-</span><span class="element">>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">>construct</span><span class="plain">-</span><span class="element">>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">>construct</span><span class="plain">-</span><span class="element">>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">>construct</span><span class="plain">-</span><span class="element">>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">>construct</span><span class="plain">-</span><span class="element">>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>
|
||||
|
|
|
@ -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">>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">>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">>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">>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">>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">>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">) && (</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>
|
||||
|
|
|
@ -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">>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">>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">>exf_iname</span><span class="plain">, </span><span class="identifier">exf</span><span class="plain">-</span><span class="element">>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">>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">>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">>IFID_array_iname</span><span class="plain">, </span><span class="identifier">exf</span><span class="plain">-</span><span class="element">>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">>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">>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">>name</span><span class="plain">);</span>
|
||||
<span class="identifier">exf</span><span class="plain">-</span><span class="element">>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">>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 <%W> = 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">>unextended_filename</span><span class="plain">);</span>
|
||||
|
|
|
@ -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.
|
||||
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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));
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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
|
@ -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);
|
||||
|
|
37
inform7/core-module/Chapter 27/Translation.w
Normal file
37
inform7/core-module/Chapter 27/Translation.w
Normal 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;
|
||||
}
|
|
@ -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);
|
||||
|
|
|
@ -281,5 +281,6 @@ Chapter 27: Bridge to Inter Module
|
|||
Compilation Modules
|
||||
Inter Namespace
|
||||
Packaging
|
||||
Translation
|
||||
Hierarchy Locations
|
||||
Hierarchy
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Reference in a new issue