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

Handled exotic hierarchy locations better

This commit is contained in:
Graham Nelson 2019-04-12 16:30:28 +01:00
parent 9da9314e28
commit 972993e2e9
13 changed files with 362 additions and 305 deletions

View file

@ -60,7 +60,7 @@ kinds being compiled to an I6 <code class="display"><span class="extract">Class<
<p class="inwebparagraph"></p>
<p class="endnote">The function Kinds::RunTime::I6_classname is used in <a href="#SP27">&#167;27</a>, 6/bp (<a href="6-bp.html#SP25">&#167;25</a>), 6/rlt (<a href="6-rlt.html#SP29_2">&#167;29.2</a>, <a href="6-rlt.html#SP29_3">&#167;29.3</a>, <a href="6-rlt.html#SP29_4">&#167;29.4</a>, <a href="6-rlt.html#SP29_5">&#167;29.5</a>, <a href="6-rlt.html#SP29_6">&#167;29.6</a>), 12/ter (<a href="12-ter.html#SP8_6">&#167;8.6</a>), 12/ca (<a href="12-ca.html#SP6_2">&#167;6.2</a>), 12/dtd (<a href="12-dtd.html#SP24">&#167;24</a>), 13/kak (<a href="13-kak.html#SP2">&#167;2</a>), 25/cii (<a href="25-cii.html#SP3_1_1_4_7_1">&#167;3.1.1.4.7.1</a>), 26/iti (<a href="26-iti.html#SP9">&#167;9</a>), 27/is (<a href="27-is.html#SP31_8_1">&#167;31.8.1</a>), 27/hl (<a href="27-hl.html#SP1">&#167;1</a>).</p>
<p class="endnote">The function Kinds::RunTime::I6_classname is used in <a href="#SP27">&#167;27</a>, 6/bp (<a href="6-bp.html#SP25">&#167;25</a>), 6/rlt (<a href="6-rlt.html#SP29_2">&#167;29.2</a>, <a href="6-rlt.html#SP29_3">&#167;29.3</a>, <a href="6-rlt.html#SP29_4">&#167;29.4</a>, <a href="6-rlt.html#SP29_5">&#167;29.5</a>, <a href="6-rlt.html#SP29_6">&#167;29.6</a>), 12/ter (<a href="12-ter.html#SP8_6">&#167;8.6</a>), 12/ca (<a href="12-ca.html#SP6_2">&#167;6.2</a>), 12/dtd (<a href="12-dtd.html#SP24">&#167;24</a>), 13/kak (<a href="13-kak.html#SP2">&#167;2</a>), 25/cii (<a href="25-cii.html#SP3_1_1_4_7_1">&#167;3.1.1.4.7.1</a>), 26/iti (<a href="26-iti.html#SP9">&#167;9</a>), 27/is (<a href="27-is.html#SP31_8_1">&#167;31.8.1</a>), 27/hr (<a href="27-hr.html#SP5">&#167;5</a>).</p>
<p class="endnote">The function Kinds::RunTime::I6_classnumber is used in 16/ic (<a href="16-ic.html#SP6">&#167;6</a>, <a href="16-ic.html#SP12_2">&#167;12.2</a>), 27/in (<a href="27-in.html#SP3">&#167;3</a>).</p>
@ -1252,7 +1252,7 @@ each such kind, and needed at run-time.
<p class="inwebparagraph"></p>
<p class="endnote">The function Kinds::RunTime::package is used in <a href="#SP15">&#167;15</a>, 15/epv (<a href="15-epv.html#SP2">&#167;2</a>), 22/pav (<a href="22-pav.html#SP9">&#167;9</a>), 27/ei (<a href="27-ei.html#SP4">&#167;4</a>), 27/hl (<a href="27-hl.html#SP1">&#167;1</a>).</p>
<p class="endnote">The function Kinds::RunTime::package is used in <a href="#SP15">&#167;15</a>, 15/epv (<a href="15-epv.html#SP2">&#167;2</a>), 22/pav (<a href="22-pav.html#SP9">&#167;9</a>), 27/ei (<a href="27-ei.html#SP4">&#167;4</a>).</p>
<p class="inwebparagraph"><a id="SP24"></a><b>&#167;24. </b></p>

View file

@ -117,10 +117,8 @@ to the same routines to print them.
<span class="plain">(</span><span class="functiontext">LocalVariables::count</span><span class="plain">(</span><span class="functiontext">Frames::current_stack_frame</span><span class="plain">()) &gt; 0))</span>
<span class="identifier">ts</span><span class="plain">-</span><span class="element">&gt;local_names_existed_at_usage_time</span><span class="plain"> = </span><span class="identifier">TRUE</span><span class="plain">;</span>
<span class="identifier">ts</span><span class="plain">-</span><span class="element">&gt;ts_iname</span><span class="plain"> = </span><span class="functiontext">Packaging::supply_iname</span><span class="plain">(</span><span class="identifier">P</span><span class="plain">, </span><span class="constant">SUBSTITUTION_PR_COUNTER</span><span class="plain">);</span>
<span class="comment">InterNames::new_in(TEXT_SUBSTITUTION_INAMEF, Modules::current());</span>
<span class="identifier">ts</span><span class="plain">-</span><span class="element">&gt;ts_routine_iname</span><span class="plain"> =</span>
<span class="functiontext">Packaging::function</span><span class="plain">(</span><span class="functiontext">Packaging::supply_iname</span><span class="plain">(</span><span class="identifier">P</span><span class="plain">, </span><span class="constant">SUBSTITUTIONF_PR_COUNTER</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="comment">InterNames::new_derived(TEXT_ROUTINE_INAMEF, ts-&gt;ts_iname);</span>
<span class="identifier">ts</span><span class="plain">-</span><span class="element">&gt;belongs_to_module</span><span class="plain"> = </span><span class="functiontext">Modules::current</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">ts</span><span class="plain">-</span><span class="element">&gt;ts_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">ts</span><span class="plain">-</span><span class="element">&gt;ts_routine_iname</span><span class="plain">), </span><span class="identifier">MAKE_NAME_UNIQUE</span><span class="plain">);</span>

View file

@ -297,9 +297,7 @@ built (for instance, scene endings).
<span class="reserved">else</span><span class="plain"> </span><span class="identifier">package_name</span><span class="plain"> = </span><span class="functiontext">InterNames::one_off</span><span class="plain">(</span><span class="identifier">supplied</span><span class="plain">, </span><span class="identifier">R</span><span class="plain">);</span>
<span class="identifier">rb</span><span class="plain">-</span><span class="element">&gt;rb_package</span><span class="plain"> = </span><span class="functiontext">Packaging::request</span><span class="plain">(</span><span class="identifier">package_name</span><span class="plain">, </span><span class="identifier">R</span><span class="plain">, </span><span class="identifier">rulebook_ptype</span><span class="plain">);</span>
<span class="identifier">rb</span><span class="plain">-</span><span class="element">&gt;rb_iname</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">"run_fn"</span><span class="plain">, </span><span class="identifier">rb</span><span class="plain">-</span><span class="element">&gt;rb_package</span><span class="plain">), </span><span class="identifier">rb</span><span class="plain">-</span><span class="element">&gt;rb_package</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">);</span>
<span class="comment">InterNames::attach_memo(rb-&gt;rb_iname, rb-&gt;primary_name);</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">rb</span><span class="plain">-</span><span class="element">&gt;rb_iname</span><span class="plain">), </span><span class="identifier">MAKE_NAME_UNIQUE</span><span class="plain">);</span>
<span class="comment">InterNames::new(RULEBOOK_INAMEF);</span>
<span class="identifier">rb</span><span class="plain">-</span><span class="element">&gt;rule_list</span><span class="plain"> = </span><span class="functiontext">Rules::Bookings::list_new</span><span class="plain">();</span>

View file

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

View file

@ -19,52 +19,48 @@
<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">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">inter_name</span><span class="plain"> *</span><span class="identifier">equates_to_iname</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>
<span class="reserved">named_resource_location</span><span class="plain"> *</span><span class="identifier">nrls_indexed_by_id</span><span class="plain">[</span><span class="constant">MAX_HL</span><span class="plain">];</span>
<span class="identifier">dictionary</span><span class="plain"> *</span><span class="identifier">nrls_indexed_by_name</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="reserved">named_resource_location</span><span class="plain"> *</span><span class="functiontext">HierarchyLocations::make_in</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::new</span><span class="plain">(</span><span class="reserved">void</span><span class="plain">) {</span>
<span class="reserved">named_resource_location</span><span class="plain"> *</span><span class="identifier">nrl</span><span class="plain"> = </span><span class="identifier">CREATE</span><span class="plain">(</span><span class="reserved">named_resource_location</span><span class="plain">);</span>
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;access_number</span><span class="plain"> = </span><span class="identifier">id</span><span class="plain">;</span>
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;access_name</span><span class="plain"> = </span><span class="identifier">Str::duplicate</span><span class="plain">(</span><span class="identifier">name</span><span class="plain">);</span>
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;function_package_name</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;datum_package_name</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;package</span><span class="plain"> = </span><span class="identifier">P</span><span class="plain">;</span>
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;equates_to_iname</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">id</span><span class="plain"> &gt;= 0) </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">nrl</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">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">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="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_as</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">inter_name</span><span class="plain"> *</span><span class="identifier">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="identifier">CREATE</span><span class="plain">(</span><span class="reserved">named_resource_location</span><span class="plain">);</span>
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;access_number</span><span class="plain"> = </span><span class="identifier">id</span><span class="plain">;</span>
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;access_name</span><span class="plain"> = </span><span class="identifier">Str::duplicate</span><span class="plain">(</span><span class="identifier">name</span><span class="plain">);</span>
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;function_package_name</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;datum_package_name</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;package</span><span class="plain"> = </span><span class="identifier">iname</span><span class="plain">-</span><span class="element">&gt;eventual_owner</span><span class="plain">;</span>
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;equates_to_iname</span><span class="plain"> = </span><span class="identifier">iname</span><span class="plain">;</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">id</span><span class="plain"> &gt;= 0) </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">nrl</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">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">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="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_on_demand</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">named_resource_location</span><span class="plain"> *</span><span class="identifier">nrl</span><span class="plain"> = </span><span class="identifier">CREATE</span><span class="plain">(</span><span class="reserved">named_resource_location</span><span class="plain">);</span>
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;access_number</span><span class="plain"> = </span><span class="identifier">id</span><span class="plain">;</span>
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;access_name</span><span class="plain"> = </span><span class="identifier">Str::duplicate</span><span class="plain">(</span><span class="identifier">name</span><span class="plain">);</span>
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;access_number</span><span class="plain"> = -1;</span>
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;access_name</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;function_package_name</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;datum_package_name</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;package</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;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">id</span><span class="plain"> &gt;= 0) </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">nrl</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">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">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="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;exotic_package_identifier</span><span class="plain"> = -1;</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</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="identifier">nrl</span><span class="plain"> = </span><span class="functiontext">HierarchyLocations::new</span><span class="plain">();</span>
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;access_number</span><span class="plain"> = </span><span class="identifier">id</span><span class="plain">;</span>
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;access_name</span><span class="plain"> = </span><span class="identifier">Str::duplicate</span><span class="plain">(</span><span class="identifier">name</span><span class="plain">);</span>
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;package</span><span class="plain"> = </span><span class="identifier">P</span><span class="plain">;</span>
<span class="functiontext">HierarchyLocations::index</span><span class="plain">(</span><span class="identifier">nrl</span><span class="plain">);</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">nrl</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="reserved">named_resource_location</span><span class="plain"> *</span><span class="functiontext">HierarchyLocations::make_in_exotic</span><span class="plain">(</span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">id</span><span class="plain">, </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">name</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">x</span><span class="plain">) {</span>
<span class="reserved">named_resource_location</span><span class="plain"> *</span><span class="identifier">nrl</span><span class="plain"> = </span><span class="functiontext">HierarchyLocations::new</span><span class="plain">();</span>
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;access_number</span><span class="plain"> = </span><span class="identifier">id</span><span class="plain">;</span>
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;access_name</span><span class="plain"> = </span><span class="identifier">Str::duplicate</span><span class="plain">(</span><span class="identifier">name</span><span class="plain">);</span>
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;exotic_package_identifier</span><span class="plain"> = </span><span class="identifier">x</span><span class="plain">;</span>
<span class="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_as</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">inter_name</span><span class="plain"> *</span><span class="identifier">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="functiontext">HierarchyLocations::new</span><span class="plain">();</span>
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;access_number</span><span class="plain"> = </span><span class="identifier">id</span><span class="plain">;</span>
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;access_name</span><span class="plain"> = </span><span class="identifier">Str::duplicate</span><span class="plain">(</span><span class="identifier">name</span><span class="plain">);</span>
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;package</span><span class="plain"> = </span><span class="identifier">iname</span><span class="plain">-</span><span class="element">&gt;eventual_owner</span><span class="plain">;</span>
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;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>
@ -73,12 +69,18 @@
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;access_number</span><span class="plain"> = </span><span class="identifier">id</span><span class="plain">;</span>
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;access_name</span><span class="plain"> = </span><span class="identifier">Str::duplicate</span><span class="plain">(</span><span class="identifier">call_name</span><span class="plain">);</span>
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;function_package_name</span><span class="plain"> = </span><span class="identifier">Str::duplicate</span><span class="plain">(</span><span class="identifier">name</span><span class="plain">);</span>
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;datum_package_name</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;package</span><span class="plain"> = </span><span class="identifier">P</span><span class="plain">;</span>
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;equates_to_iname</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">id</span><span class="plain"> &gt;= 0) </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">nrl</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">call_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">call_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="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="identifier">nrl</span><span class="plain"> = </span><span class="identifier">CREATE</span><span class="plain">(</span><span class="reserved">named_resource_location</span><span class="plain">);</span>
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;access_number</span><span class="plain"> = </span><span class="identifier">id</span><span class="plain">;</span>
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;access_name</span><span class="plain"> = </span><span class="identifier">Str::duplicate</span><span class="plain">(</span><span class="identifier">call_name</span><span class="plain">);</span>
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;function_package_name</span><span class="plain"> = </span><span class="identifier">Str::duplicate</span><span class="plain">(</span><span class="identifier">name</span><span class="plain">);</span>
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;exotic_package_identifier</span><span class="plain"> = </span><span class="identifier">x</span><span class="plain">;</span>
<span class="functiontext">HierarchyLocations::index</span><span class="plain">(</span><span class="identifier">nrl</span><span class="plain">);</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">nrl</span><span class="plain">;</span>
<span class="plain">}</span>
@ -86,16 +88,25 @@
<span class="reserved">named_resource_location</span><span class="plain"> *</span><span class="identifier">nrl</span><span class="plain"> = </span><span class="identifier">CREATE</span><span class="plain">(</span><span class="reserved">named_resource_location</span><span class="plain">);</span>
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;access_number</span><span class="plain"> = </span><span class="identifier">id</span><span class="plain">;</span>
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;access_name</span><span class="plain"> = </span><span class="identifier">Str::duplicate</span><span class="plain">(</span><span class="identifier">datum_name</span><span class="plain">);</span>
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;function_package_name</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;datum_package_name</span><span class="plain"> = </span><span class="identifier">Str::duplicate</span><span class="plain">(</span><span class="identifier">name</span><span class="plain">);</span>
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;package</span><span class="plain"> = </span><span class="identifier">P</span><span class="plain">;</span>
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;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">id</span><span class="plain"> &gt;= 0) </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">nrl</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">datum_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">datum_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="functiontext">HierarchyLocations::index</span><span class="plain">(</span><span class="identifier">nrl</span><span class="plain">);</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">nrl</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="reserved">named_resource_location</span><span class="plain"> *</span><span class="functiontext">HierarchyLocations::make_datum_in_exotic</span><span class="plain">(</span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">id</span><span class="plain">, </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">name</span><span class="plain">, </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">datum_name</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">x</span><span class="plain">) {</span>
<span class="reserved">named_resource_location</span><span class="plain"> *</span><span class="identifier">nrl</span><span class="plain"> = </span><span class="identifier">CREATE</span><span class="plain">(</span><span class="reserved">named_resource_location</span><span class="plain">);</span>
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;access_number</span><span class="plain"> = </span><span class="identifier">id</span><span class="plain">;</span>
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;access_name</span><span class="plain"> = </span><span class="identifier">Str::duplicate</span><span class="plain">(</span><span class="identifier">datum_name</span><span class="plain">);</span>
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;datum_package_name</span><span class="plain"> = </span><span class="identifier">Str::duplicate</span><span class="plain">(</span><span class="identifier">name</span><span class="plain">);</span>
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;exotic_package_identifier</span><span class="plain"> = </span><span class="identifier">x</span><span class="plain">;</span>
<span class="functiontext">HierarchyLocations::index</span><span class="plain">(</span><span class="identifier">nrl</span><span class="plain">);</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">nrl</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="reserved">named_resource_location</span><span class="plain"> *</span><span class="identifier">nrls_indexed_by_id</span><span class="plain">[</span><span class="constant">MAX_HL</span><span class="plain">];</span>
<span class="identifier">dictionary</span><span class="plain"> *</span><span class="identifier">nrls_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">nrls_created</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::create_nrls</span><span class="plain">(</span><span class="reserved">void</span><span class="plain">) {</span>
<span class="identifier">nrls_created</span><span class="plain"> = </span><span class="identifier">TRUE</span><span class="plain">;</span>
@ -104,6 +115,13 @@
<span class="functiontext">Hierarchy::establish</span><span class="plain">();</span>
<span class="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">HierarchyLocations::index</span><span class="plain">(</span><span class="reserved">named_resource_location</span><span class="plain"> *</span><span class="identifier">nrl</span><span class="plain">) {</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">nrls_created</span><span class="plain"> == </span><span class="identifier">FALSE</span><span class="plain">) </span><span class="functiontext">HierarchyLocations::create_nrls</span><span class="plain">();</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;access_number</span><span class="plain"> &gt;= 0) </span><span class="identifier">nrls_indexed_by_id</span><span class="plain">[</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;access_number</span><span class="plain">] = </span><span class="identifier">nrl</span><span class="plain">;</span>
<span class="identifier">Dictionaries::create</span><span class="plain">(</span><span class="identifier">nrls_indexed_by_name</span><span class="plain">, </span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;access_name</span><span class="plain">);</span>
<span class="identifier">Dictionaries::write_value</span><span class="plain">(</span><span class="identifier">nrls_indexed_by_name</span><span class="plain">, </span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;access_name</span><span class="plain">, (</span><span class="reserved">void</span><span class="plain"> *) </span><span class="identifier">nrl</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="reserved">inter_name</span><span class="plain"> *</span><span class="functiontext">HierarchyLocations::find</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">if</span><span class="plain"> (</span><span class="identifier">nrls_created</span><span class="plain"> == </span><span class="identifier">FALSE</span><span class="plain">) </span><span class="functiontext">HierarchyLocations::create_nrls</span><span class="plain">();</span>
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">id</span><span class="plain"> &lt; 0) || (</span><span class="identifier">id</span><span class="plain"> &gt;= </span><span class="constant">MAX_HL</span><span class="plain">) || (</span><span class="identifier">nrls_indexed_by_id</span><span class="plain">[</span><span class="identifier">id</span><span class="plain">] == </span><span class="identifier">NULL</span><span class="plain">))</span>
@ -129,100 +147,33 @@
<span class="reserved">inter_name</span><span class="plain"> *</span><span class="functiontext">HierarchyLocations::nrl_to_iname</span><span class="plain">(</span><span class="reserved">named_resource_location</span><span class="plain"> *</span><span class="identifier">nrl</span><span class="plain">) {</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;equates_to_iname</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) {</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;package</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) {</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;exotic_package_identifier</span><span class="plain"> &gt;= 0)</span>
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;package</span><span class="plain"> = </span><span class="functiontext">Hierarchy::exotic_package</span><span class="plain">(</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;exotic_package_identifier</span><span class="plain">);</span>
<span class="reserved">else</span><span class="plain"> </span><span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"package can't be found'"</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;package</span><span class="plain"> == </span><span class="functiontext">Packaging::request_template</span><span class="plain">()) {</span>
<span class="reserved">packaging_state</span><span class="plain"> </span><span class="identifier">save</span><span class="plain"> = </span><span class="functiontext">Packaging::enter</span><span class="plain">(</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;package</span><span class="plain">);</span>
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;equates_to_iname</span><span class="plain"> = </span><span class="functiontext">InterNames::one_off</span><span class="plain">(</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;access_name</span><span class="plain">, </span><span class="functiontext">Packaging::request_template</span><span class="plain">());</span>
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;equates_to_iname</span><span class="plain">-</span><span class="element">&gt;symbol</span><span class="plain"> = </span><span class="functiontext">Emit::extern</span><span class="plain">(</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;access_name</span><span class="plain">, </span><span class="identifier">K_value</span><span class="plain">);</span>
<span class="functiontext">Packaging::exit</span><span class="plain">(</span><span class="identifier">save</span><span class="plain">);</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;equates_to_iname</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Str::len</span><span class="plain">(</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;function_package_name</span><span class="plain">) &gt; 0) {</span>
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> </span><span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Str::len</span><span class="plain">(</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;function_package_name</span><span class="plain">) &gt; 0) {</span>
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;equates_to_iname</span><span class="plain"> = </span><span class="functiontext">Packaging::function_text</span><span class="plain">(</span>
<span class="functiontext">InterNames::one_off</span><span class="plain">(</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;function_package_name</span><span class="plain">, </span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;package</span><span class="plain">),</span>
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;package</span><span class="plain">,</span>
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;access_name</span><span class="plain">);</span>
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;package</span><span class="plain"> = </span><span class="functiontext">Packaging::home_of</span><span class="plain">(</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;equates_to_iname</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Str::len</span><span class="plain">(</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;datum_package_name</span><span class="plain">) &gt; 0) {</span>
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> </span><span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Str::len</span><span class="plain">(</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;datum_package_name</span><span class="plain">) &gt; 0) {</span>
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;equates_to_iname</span><span class="plain"> = </span><span class="functiontext">Packaging::datum_text</span><span class="plain">(</span>
<span class="functiontext">InterNames::one_off</span><span class="plain">(</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;datum_package_name</span><span class="plain">, </span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;package</span><span class="plain">),</span>
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;package</span><span class="plain">,</span>
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;access_name</span><span class="plain">);</span>
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;package</span><span class="plain"> = </span><span class="functiontext">Packaging::home_of</span><span class="plain">(</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;equates_to_iname</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;package</span><span class="plain">) &amp;&amp; (</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;equates_to_iname</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">))</span>
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> </span><span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;package</span><span class="plain">) &amp;&amp; (</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;equates_to_iname</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">)) {</span>
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;equates_to_iname</span><span class="plain"> = </span><span class="functiontext">InterNames::one_off</span><span class="plain">(</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;access_name</span><span class="plain">, </span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;package</span><span class="plain">);</span>
<span class="reserved">switch</span><span class="plain"> (</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;access_number</span><span class="plain">) {</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">THESAME_HL</span><span class="plain">:</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">PLURALFOUND_HL</span><span class="plain">:</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">PARENT_HL</span><span class="plain">:</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">CHILD_HL</span><span class="plain">:</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">SIBLING_HL</span><span class="plain">:</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">THEDARK_HL</span><span class="plain">:</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">FLOAT_NAN_HL</span><span class="plain">:</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">RESPONSETEXTS_HL</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">nrl</span><span class="plain">-</span><span class="element">&gt;equates_to_iname</span><span class="plain">);</span>
<span class="functiontext">Emit::named_numeric_constant</span><span class="plain">(</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;equates_to_iname</span><span class="plain">, 0);</span>
<span class="functiontext">Packaging::exit</span><span class="plain">(</span><span class="identifier">save</span><span class="plain">);</span>
<span class="reserved">break</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">SELF_HL</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">nrl</span><span class="plain">-</span><span class="element">&gt;equates_to_iname</span><span class="plain">);</span>
<span class="functiontext">Emit::variable</span><span class="plain">(</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;equates_to_iname</span><span class="plain">, </span><span class="identifier">K_value</span><span class="plain">, </span><span class="identifier">UNDEF_IVAL</span><span class="plain">, 0, </span><span class="identifier">I</span><span class="string">"self"</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="reserved">break</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="plain">}</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">NOTHING_HL</span><span class="plain">:</span>
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;package</span><span class="plain"> = </span><span class="identifier">Kinds::Behaviour::package</span><span class="plain">(</span><span class="identifier">K_object</span><span class="plain">);</span>
<span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">OBJECT_HL</span><span class="plain">:</span>
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;equates_to_iname</span><span class="plain"> = </span><span class="functiontext">Kinds::RunTime::I6_classname</span><span class="plain">(</span><span class="identifier">K_object</span><span class="plain">);</span>
<span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">TESTUSEOPTION_HL</span><span class="plain">:</span>
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;equates_to_iname</span><span class="plain"> = </span><span class="functiontext">HierarchyLocations::function</span><span class="plain">(</span>
<span class="functiontext">Kinds::RunTime::package</span><span class="plain">(</span><span class="identifier">K_use_option</span><span class="plain">), </span><span class="identifier">I</span><span class="string">"test_fn"</span><span class="plain">, </span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;access_name</span><span class="plain">);</span>
<span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">TABLEOFTABLES_HL</span><span class="plain">:</span>
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;package</span><span class="plain"> = </span><span class="identifier">Kinds::Behaviour::package</span><span class="plain">(</span><span class="identifier">K_table</span><span class="plain">);</span>
<span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">TABLEOFVERBS_HL</span><span class="plain">:</span>
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;package</span><span class="plain"> = </span><span class="identifier">Kinds::Behaviour::package</span><span class="plain">(</span><span class="identifier">K_verb</span><span class="plain">);</span>
<span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">CAPSHORTNAME_HL</span><span class="plain">:</span>
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;package</span><span class="plain"> = </span><span class="identifier">Kinds::Behaviour::package</span><span class="plain">(</span><span class="identifier">K_object</span><span class="plain">);</span>
<span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">RESOURCEIDSOFFIGURES_HL</span><span class="plain">:</span>
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;package</span><span class="plain"> = </span><span class="identifier">Kinds::Behaviour::package</span><span class="plain">(</span><span class="identifier">K_figure_name</span><span class="plain">);</span>
<span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">RESOURCEIDSOFSOUNDS_HL</span><span class="plain">:</span>
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;package</span><span class="plain"> = </span><span class="identifier">Kinds::Behaviour::package</span><span class="plain">(</span><span class="identifier">K_sound_name</span><span class="plain">);</span>
<span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">NO_USE_OPTIONS_HL</span><span class="plain">:</span>
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;package</span><span class="plain"> = </span><span class="identifier">Kinds::Behaviour::package</span><span class="plain">(</span><span class="identifier">K_use_option</span><span class="plain">);</span>
<span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">DECIMAL_TOKEN_INNER_HL</span><span class="plain">:</span>
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;equates_to_iname</span><span class="plain"> = </span><span class="functiontext">HierarchyLocations::function</span><span class="plain">(</span>
<span class="functiontext">Kinds::RunTime::package</span><span class="plain">(</span><span class="identifier">K_number</span><span class="plain">), </span><span class="identifier">I</span><span class="string">"gpr_fn"</span><span class="plain">, </span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;access_name</span><span class="plain">);</span>
<span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">TIME_TOKEN_INNER_HL</span><span class="plain">:</span>
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;equates_to_iname</span><span class="plain"> = </span><span class="functiontext">HierarchyLocations::function</span><span class="plain">(</span>
<span class="functiontext">Kinds::RunTime::package</span><span class="plain">(</span><span class="identifier">K_time</span><span class="plain">), </span><span class="identifier">I</span><span class="string">"gpr_fn"</span><span class="plain">, </span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;access_name</span><span class="plain">);</span>
<span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">TRUTH_STATE_TOKEN_INNER_HL</span><span class="plain">:</span>
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;equates_to_iname</span><span class="plain"> = </span><span class="functiontext">HierarchyLocations::function</span><span class="plain">(</span>
<span class="functiontext">Kinds::RunTime::package</span><span class="plain">(</span><span class="identifier">K_truth_state</span><span class="plain">), </span><span class="identifier">I</span><span class="string">"gpr_fn"</span><span class="plain">, </span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;access_name</span><span class="plain">);</span>
<span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">COMMANDPROMPTTEXT_HL</span><span class="plain">:</span>
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;equates_to_iname</span><span class="plain"> = </span><span class="functiontext">HierarchyLocations::function</span><span class="plain">(</span>
<span class="functiontext">Packaging::home_of</span><span class="plain">(</span><span class="functiontext">NonlocalVariables::iname</span><span class="plain">(</span><span class="identifier">command_prompt_VAR</span><span class="plain">)),</span>
<span class="identifier">I</span><span class="string">"command_prompt_text_fn"</span><span class="plain">, </span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;access_name</span><span class="plain">);</span>
<span class="reserved">break</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;equates_to_iname</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">)</span>
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;equates_to_iname</span><span class="plain"> = </span><span class="functiontext">InterNames::one_off</span><span class="plain">(</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;access_name</span><span class="plain">, </span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;package</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;package</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">)</span>
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;package</span><span class="plain"> = </span><span class="functiontext">Packaging::home_of</span><span class="plain">(</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;equates_to_iname</span><span class="plain">);</span>
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;equates_to_iname</span><span class="plain"> = </span><span class="functiontext">Hierarchy::post_process</span><span class="plain">(</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;access_number</span><span class="plain">, </span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;equates_to_iname</span><span class="plain">);</span>
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;package</span><span class="plain"> = </span><span class="functiontext">Packaging::home_of</span><span class="plain">(</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;equates_to_iname</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">&gt;equates_to_iname</span><span class="plain">;</span>
<span class="plain">}</span>
@ -230,21 +181,29 @@
<p class="inwebparagraph"></p>
<p class="endnote">The function HierarchyLocations::make_in is used in 27/hr (<a href="27-hr.html#SP2_2">&#167;2.2</a>, <a href="27-hr.html#SP2_4">&#167;2.4</a>, <a href="27-hr.html#SP2_6">&#167;2.6</a>, <a href="27-hr.html#SP2_8">&#167;2.8</a>, <a href="27-hr.html#SP2_10">&#167;2.10</a>, <a href="27-hr.html#SP2_12">&#167;2.12</a>, <a href="27-hr.html#SP2_14">&#167;2.14</a>, <a href="27-hr.html#SP2_16">&#167;2.16</a>, <a href="27-hr.html#SP2_18">&#167;2.18</a>, <a href="27-hr.html#SP2_20">&#167;2.20</a>, <a href="27-hr.html#SP2_21">&#167;2.21</a>, <a href="27-hr.html#SP2_23">&#167;2.23</a>, <a href="27-hr.html#SP2_25">&#167;2.25</a>, <a href="27-hr.html#SP2_29">&#167;2.29</a>, <a href="27-hr.html#SP2_31">&#167;2.31</a>, <a href="27-hr.html#SP2_33">&#167;2.33</a>, <a href="27-hr.html#SP2_35">&#167;2.35</a>, <a href="27-hr.html#SP2_37">&#167;2.37</a>, <a href="27-hr.html#SP2_43">&#167;2.43</a>, <a href="27-hr.html#SP4">&#167;4</a>).</p>
<p class="endnote">The function HierarchyLocations::new appears nowhere else.</p>
<p class="endnote">The function HierarchyLocations::make_as is used in 27/hr (<a href="27-hr.html#SP4">&#167;4</a>).</p>
<p class="endnote">The function HierarchyLocations::make_in is used in 27/hr (<a href="27-hr.html#SP2_2">&#167;2.2</a>, <a href="27-hr.html#SP2_4">&#167;2.4</a>, <a href="27-hr.html#SP2_6">&#167;2.6</a>, <a href="27-hr.html#SP2_8">&#167;2.8</a>, <a href="27-hr.html#SP2_10">&#167;2.10</a>, <a href="27-hr.html#SP2_12">&#167;2.12</a>, <a href="27-hr.html#SP2_14">&#167;2.14</a>, <a href="27-hr.html#SP2_16">&#167;2.16</a>, <a href="27-hr.html#SP2_18">&#167;2.18</a>, <a href="27-hr.html#SP2_20">&#167;2.20</a>, <a href="27-hr.html#SP2_21">&#167;2.21</a>, <a href="27-hr.html#SP2_23">&#167;2.23</a>, <a href="27-hr.html#SP2_25">&#167;2.25</a>, <a href="27-hr.html#SP2_29">&#167;2.29</a>, <a href="27-hr.html#SP2_31">&#167;2.31</a>, <a href="27-hr.html#SP2_33">&#167;2.33</a>, <a href="27-hr.html#SP2_35">&#167;2.35</a>, <a href="27-hr.html#SP2_37">&#167;2.37</a>, <a href="27-hr.html#SP2_43">&#167;2.43</a>, <a href="27-hr.html#SP6">&#167;6</a>).</p>
<p class="endnote">The function HierarchyLocations::make_on_demand is used in 27/hr (<a href="27-hr.html#SP2_41">&#167;2.41</a>).</p>
<p class="endnote">The function HierarchyLocations::make_in_exotic is used in 27/hr (<a href="27-hr.html#SP2_41">&#167;2.41</a>).</p>
<p class="endnote">The function HierarchyLocations::make_as is used in 27/hr (<a href="27-hr.html#SP6">&#167;6</a>).</p>
<p class="endnote">The function HierarchyLocations::make_function is used in 27/hr (<a href="27-hr.html#SP2_10">&#167;2.10</a>, <a href="27-hr.html#SP2_14">&#167;2.14</a>, <a href="27-hr.html#SP2_18">&#167;2.18</a>, <a href="27-hr.html#SP2_21">&#167;2.21</a>, <a href="27-hr.html#SP2_25">&#167;2.25</a>, <a href="27-hr.html#SP2_27">&#167;2.27</a>, <a href="27-hr.html#SP2_29">&#167;2.29</a>, <a href="27-hr.html#SP2_31">&#167;2.31</a>, <a href="27-hr.html#SP2_33">&#167;2.33</a>, <a href="27-hr.html#SP2_35">&#167;2.35</a>, <a href="27-hr.html#SP2_39">&#167;2.39</a>).</p>
<p class="endnote">The function HierarchyLocations::make_function_in_exotic is used in 27/hr (<a href="27-hr.html#SP2_41">&#167;2.41</a>).</p>
<p class="endnote">The function HierarchyLocations::make_datum is used in 27/hr (<a href="27-hr.html#SP2_37">&#167;2.37</a>).</p>
<p class="endnote">The function HierarchyLocations::make_datum_in_exotic appears nowhere else.</p>
<p class="endnote">The function HierarchyLocations::create_nrls appears nowhere else.</p>
<p class="endnote">The function HierarchyLocations::find is used in 27/hr (<a href="27-hr.html#SP4">&#167;4</a>).</p>
<p class="endnote">The function HierarchyLocations::index appears nowhere else.</p>
<p class="endnote">The function HierarchyLocations::find_by_name is used in 27/hr (<a href="27-hr.html#SP4">&#167;4</a>).</p>
<p class="endnote">The function HierarchyLocations::find is used in 27/hr (<a href="27-hr.html#SP6">&#167;6</a>).</p>
<p class="endnote">The function HierarchyLocations::find_by_name is used in 27/hr (<a href="27-hr.html#SP6">&#167;6</a>).</p>
<p class="endnote">The function HierarchyLocations::function appears nowhere else.</p>

View file

@ -740,6 +740,16 @@
<pre class="definitions">
<span class="definitionkeyword">enum</span> <span class="constant">K_OBJECT_XPACKAGE</span><span class="definitionkeyword"> from </span><span class="constant">0</span>
<span class="definitionkeyword">enum</span> <span class="constant">K_NUMBER_XPACKAGE</span>
<span class="definitionkeyword">enum</span> <span class="constant">K_TIME_XPACKAGE</span>
<span class="definitionkeyword">enum</span> <span class="constant">K_TRUTH_STATE_XPACKAGE</span>
<span class="definitionkeyword">enum</span> <span class="constant">K_TABLE_XPACKAGE</span>
<span class="definitionkeyword">enum</span> <span class="constant">K_VERB_XPACKAGE</span>
<span class="definitionkeyword">enum</span> <span class="constant">K_FIGURE_NAME_XPACKAGE</span>
<span class="definitionkeyword">enum</span> <span class="constant">K_SOUND_NAME_XPACKAGE</span>
<span class="definitionkeyword">enum</span> <span class="constant">K_USE_OPTION_XPACKAGE</span>
<span class="definitionkeyword">enum</span> <span class="constant">V_COMMAND_PROMPT_XPACKAGE</span>
<span class="definitionkeyword">enum</span> <span class="constant">NOTHING_HL</span>
<span class="definitionkeyword">enum</span> <span class="constant">OBJECT_HL</span>
<span class="definitionkeyword">enum</span> <span class="constant">TESTUSEOPTION_HL</span>
@ -760,19 +770,28 @@
<pre class="displaydefn">
<span class="functiontext">HierarchyLocations::make_on_demand</span><span class="plain">(</span><span class="constant">OBJECT_HL</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Object"</span><span class="plain">);</span>
<span class="functiontext">HierarchyLocations::make_on_demand</span><span class="plain">(</span><span class="constant">NOTHING_HL</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"nothing"</span><span class="plain">);</span>
<span class="functiontext">HierarchyLocations::make_on_demand</span><span class="plain">(</span><span class="constant">TESTUSEOPTION_HL</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"TestUseOption"</span><span class="plain">);</span>
<span class="functiontext">HierarchyLocations::make_on_demand</span><span class="plain">(</span><span class="constant">TABLEOFTABLES_HL</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"TableOfTables"</span><span class="plain">);</span>
<span class="functiontext">HierarchyLocations::make_on_demand</span><span class="plain">(</span><span class="constant">TABLEOFVERBS_HL</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"TableOfVerbs"</span><span class="plain">);</span>
<span class="functiontext">HierarchyLocations::make_on_demand</span><span class="plain">(</span><span class="constant">CAPSHORTNAME_HL</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"cap_short_name"</span><span class="plain">);</span>
<span class="functiontext">HierarchyLocations::make_on_demand</span><span class="plain">(</span><span class="constant">COMMANDPROMPTTEXT_HL</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"CommandPromptText"</span><span class="plain">);</span>
<span class="functiontext">HierarchyLocations::make_on_demand</span><span class="plain">(</span><span class="constant">DECIMAL_TOKEN_INNER_HL</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"DECIMAL_TOKEN_INNER"</span><span class="plain">);</span>
<span class="functiontext">HierarchyLocations::make_on_demand</span><span class="plain">(</span><span class="constant">NO_USE_OPTIONS_HL</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"NO_USE_OPTIONS"</span><span class="plain">);</span>
<span class="functiontext">HierarchyLocations::make_on_demand</span><span class="plain">(</span><span class="constant">RESOURCEIDSOFFIGURES_HL</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"ResourceIDsOfFigures"</span><span class="plain">);</span>
<span class="functiontext">HierarchyLocations::make_on_demand</span><span class="plain">(</span><span class="constant">RESOURCEIDSOFSOUNDS_HL</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"ResourceIDsOfSounds"</span><span class="plain">);</span>
<span class="functiontext">HierarchyLocations::make_on_demand</span><span class="plain">(</span><span class="constant">TIME_TOKEN_INNER_HL</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"TIME_TOKEN_INNER"</span><span class="plain">);</span>
<span class="functiontext">HierarchyLocations::make_on_demand</span><span class="plain">(</span><span class="constant">TRUTH_STATE_TOKEN_INNER_HL</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"TRUTH_STATE_TOKEN_INNER"</span><span class="plain">);</span>
<span class="functiontext">HierarchyLocations::make_in_exotic</span><span class="plain">(</span><span class="constant">OBJECT_HL</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Object"</span><span class="plain">, </span><span class="constant">K_OBJECT_XPACKAGE</span><span class="plain">);</span>
<span class="functiontext">HierarchyLocations::make_in_exotic</span><span class="plain">(</span><span class="constant">NOTHING_HL</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"nothing"</span><span class="plain">, </span><span class="constant">K_OBJECT_XPACKAGE</span><span class="plain">);</span>
<span class="functiontext">HierarchyLocations::make_in_exotic</span><span class="plain">(</span><span class="constant">CAPSHORTNAME_HL</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"cap_short_name"</span><span class="plain">, </span><span class="constant">K_OBJECT_XPACKAGE</span><span class="plain">);</span>
<span class="functiontext">HierarchyLocations::make_function_in_exotic</span><span class="plain">(</span><span class="constant">DECIMAL_TOKEN_INNER_HL</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"gpr_fn"</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"DECIMAL_TOKEN_INNER"</span><span class="plain">, </span><span class="constant">K_NUMBER_XPACKAGE</span><span class="plain">);</span>
<span class="functiontext">HierarchyLocations::make_function_in_exotic</span><span class="plain">(</span><span class="constant">TIME_TOKEN_INNER_HL</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"gpr_fn"</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"TIME_TOKEN_INNER"</span><span class="plain">, </span><span class="constant">K_TIME_XPACKAGE</span><span class="plain">);</span>
<span class="functiontext">HierarchyLocations::make_function_in_exotic</span><span class="plain">(</span><span class="constant">TRUTH_STATE_TOKEN_INNER_HL</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"gpr_fn"</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"TRUTH_STATE_TOKEN_INNER"</span><span class="plain">, </span><span class="constant">K_TRUTH_STATE_XPACKAGE</span><span class="plain">);</span>
<span class="functiontext">HierarchyLocations::make_in_exotic</span><span class="plain">(</span><span class="constant">TABLEOFTABLES_HL</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"TableOfTables"</span><span class="plain">, </span><span class="constant">K_TABLE_XPACKAGE</span><span class="plain">);</span>
<span class="functiontext">HierarchyLocations::make_in_exotic</span><span class="plain">(</span><span class="constant">TABLEOFVERBS_HL</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"TableOfVerbs"</span><span class="plain">, </span><span class="constant">K_VERB_XPACKAGE</span><span class="plain">);</span>
<span class="functiontext">HierarchyLocations::make_in_exotic</span><span class="plain">(</span><span class="constant">RESOURCEIDSOFFIGURES_HL</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"ResourceIDsOfFigures"</span><span class="plain">, </span><span class="constant">K_FIGURE_NAME_XPACKAGE</span><span class="plain">);</span>
<span class="functiontext">HierarchyLocations::make_in_exotic</span><span class="plain">(</span><span class="constant">RESOURCEIDSOFSOUNDS_HL</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"ResourceIDsOfSounds"</span><span class="plain">, </span><span class="constant">K_SOUND_NAME_XPACKAGE</span><span class="plain">);</span>
<span class="functiontext">HierarchyLocations::make_in_exotic</span><span class="plain">(</span><span class="constant">NO_USE_OPTIONS_HL</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"NO_USE_OPTIONS"</span><span class="plain">, </span><span class="constant">K_USE_OPTION_XPACKAGE</span><span class="plain">);</span>
<span class="functiontext">HierarchyLocations::make_function_in_exotic</span><span class="plain">(</span><span class="constant">TESTUSEOPTION_HL</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"test_fn"</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"TestUseOption"</span><span class="plain">, </span><span class="constant">K_USE_OPTION_XPACKAGE</span><span class="plain">);</span>
<span class="functiontext">HierarchyLocations::make_function_in_exotic</span><span class="plain">(</span><span class="constant">COMMANDPROMPTTEXT_HL</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"command_prompt_text_fn"</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"CommandPromptText"</span><span class="plain">, </span><span class="constant">V_COMMAND_PROMPT_XPACKAGE</span><span class="plain">);</span>
</pre>
<p class="inwebparagraph"></p>
@ -1272,6 +1291,70 @@
<p class="inwebparagraph"><a id="SP4"></a><b>&#167;4. </b></p>
<pre class="display">
<span class="reserved">package_request</span><span class="plain"> *</span><span class="functiontext">Hierarchy::exotic_package</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">switch</span><span class="plain"> (</span><span class="identifier">x</span><span class="plain">) {</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">K_OBJECT_XPACKAGE</span><span class="plain">: </span><span class="reserved">return</span><span class="plain"> </span><span class="identifier">Kinds::Behaviour::package</span><span class="plain">(</span><span class="identifier">K_object</span><span class="plain">);</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">K_NUMBER_XPACKAGE</span><span class="plain">: </span><span class="reserved">return</span><span class="plain"> </span><span class="identifier">Kinds::Behaviour::package</span><span class="plain">(</span><span class="identifier">K_number</span><span class="plain">);</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">K_TIME_XPACKAGE</span><span class="plain">: </span><span class="reserved">return</span><span class="plain"> </span><span class="identifier">Kinds::Behaviour::package</span><span class="plain">(</span><span class="identifier">K_time</span><span class="plain">);</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">K_TRUTH_STATE_XPACKAGE</span><span class="plain">: </span><span class="reserved">return</span><span class="plain"> </span><span class="identifier">Kinds::Behaviour::package</span><span class="plain">(</span><span class="identifier">K_truth_state</span><span class="plain">);</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">K_TABLE_XPACKAGE</span><span class="plain">: </span><span class="reserved">return</span><span class="plain"> </span><span class="identifier">Kinds::Behaviour::package</span><span class="plain">(</span><span class="identifier">K_table</span><span class="plain">);</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">K_VERB_XPACKAGE</span><span class="plain">: </span><span class="reserved">return</span><span class="plain"> </span><span class="identifier">Kinds::Behaviour::package</span><span class="plain">(</span><span class="identifier">K_verb</span><span class="plain">);</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">K_FIGURE_NAME_XPACKAGE</span><span class="plain">: </span><span class="reserved">return</span><span class="plain"> </span><span class="identifier">Kinds::Behaviour::package</span><span class="plain">(</span><span class="identifier">K_figure_name</span><span class="plain">);</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">K_SOUND_NAME_XPACKAGE</span><span class="plain">: </span><span class="reserved">return</span><span class="plain"> </span><span class="identifier">Kinds::Behaviour::package</span><span class="plain">(</span><span class="identifier">K_sound_name</span><span class="plain">);</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">K_USE_OPTION_XPACKAGE</span><span class="plain">: </span><span class="reserved">return</span><span class="plain"> </span><span class="identifier">Kinds::Behaviour::package</span><span class="plain">(</span><span class="identifier">K_use_option</span><span class="plain">);</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">V_COMMAND_PROMPT_XPACKAGE</span><span class="plain">:</span>
<span class="reserved">return</span><span class="plain"> </span><span class="functiontext">Packaging::home_of</span><span class="plain">(</span><span class="functiontext">NonlocalVariables::iname</span><span class="plain">(</span><span class="identifier">command_prompt_VAR</span><span class="plain">));</span>
<span class="plain">}</span>
<span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"unknown exotic package"</span><span class="plain">);</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="plain">}</span>
</pre>
<p class="inwebparagraph"></p>
<p class="endnote">The function Hierarchy::exotic_package is used in 27/hl (<a href="27-hl.html#SP1">&#167;1</a>).</p>
<p class="inwebparagraph"><a id="SP5"></a><b>&#167;5. </b></p>
<pre class="display">
<span class="reserved">inter_name</span><span class="plain"> *</span><span class="functiontext">Hierarchy::post_process</span><span class="plain">(</span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">HL_id</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="reserved">switch</span><span class="plain"> (</span><span class="identifier">HL_id</span><span class="plain">) {</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">THESAME_HL</span><span class="plain">:</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">PLURALFOUND_HL</span><span class="plain">:</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">PARENT_HL</span><span class="plain">:</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">CHILD_HL</span><span class="plain">:</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">SIBLING_HL</span><span class="plain">:</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">THEDARK_HL</span><span class="plain">:</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">FLOAT_NAN_HL</span><span class="plain">:</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">RESPONSETEXTS_HL</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="functiontext">Emit::named_numeric_constant</span><span class="plain">(</span><span class="identifier">iname</span><span class="plain">, 0);</span>
<span class="functiontext">Packaging::exit</span><span class="plain">(</span><span class="identifier">save</span><span class="plain">);</span>
<span class="reserved">break</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">SELF_HL</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="functiontext">Emit::variable</span><span class="plain">(</span><span class="identifier">iname</span><span class="plain">, </span><span class="identifier">K_value</span><span class="plain">, </span><span class="identifier">UNDEF_IVAL</span><span class="plain">, 0, </span><span class="identifier">I</span><span class="string">"self"</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="reserved">break</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">OBJECT_HL</span><span class="plain">:</span>
<span class="identifier">iname</span><span class="plain"> = </span><span class="functiontext">Kinds::RunTime::I6_classname</span><span class="plain">(</span><span class="identifier">K_object</span><span class="plain">);</span>
<span class="reserved">break</span><span class="plain">;</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>
</pre>
<p class="inwebparagraph"></p>
<p class="endnote">The function Hierarchy::post_process is used in 27/hl (<a href="27-hl.html#SP1">&#167;1</a>).</p>
<p class="inwebparagraph"><a id="SP6"></a><b>&#167;6. </b></p>
<pre class="display">
<span class="reserved">inter_name</span><span class="plain"> *</span><span class="functiontext">Hierarchy::find</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">return</span><span class="plain"> </span><span class="functiontext">HierarchyLocations::find</span><span class="plain">(</span><span class="identifier">id</span><span class="plain">);</span>

File diff suppressed because one or more lines are too long

View file

@ -246,9 +246,9 @@
<p class="endnote">The function Packaging::stateless is used in 15/epv (<a href="15-epv.html#SP2">&#167;2</a>).</p>
<p class="endnote">The function Packaging::home_of is used in 12/cdp (<a href="12-cdp.html#SP5">&#167;5</a>), 27/hl (<a href="27-hl.html#SP1">&#167;1</a>).</p>
<p class="endnote">The function Packaging::home_of is used in 12/cdp (<a href="12-cdp.html#SP5">&#167;5</a>), 27/hl (<a href="27-hl.html#SP1">&#167;1</a>), 27/hr (<a href="27-hr.html#SP4">&#167;4</a>).</p>
<p class="endnote">The function Packaging::enter_home_of is used in 6/bp (<a href="6-bp.html#SP42">&#167;42</a>), 6/rlt (<a href="6-rlt.html#SP14">&#167;14</a>, <a href="6-rlt.html#SP15_1">&#167;15.1</a>, <a href="6-rlt.html#SP20">&#167;20</a>, <a href="6-rlt.html#SP20_3">&#167;20.3</a>), 6/nv (<a href="6-nv.html#SP18">&#167;18</a>), 12/cdp (<a href="12-cdp.html#SP2_1_1">&#167;2.1.1</a>), 13/kak (<a href="13-kak.html#SP5">&#167;5</a>), 13/rsfk (<a href="13-rsfk.html#SP16_2">&#167;16.2</a>, <a href="13-rsfk.html#SP26">&#167;26</a>), 15/pr (<a href="15-pr.html#SP27">&#167;27</a>), 15/epv (<a href="15-epv.html#SP1_1_2">&#167;1.1.2</a>), 17/tl (<a href="17-tl.html#SP14_1">&#167;14.1</a>, <a href="17-tl.html#SP14_2">&#167;14.2</a>), 17/ts (<a href="17-ts.html#SP11">&#167;11</a>), 17/rs (<a href="17-rs.html#SP7_3">&#167;7.3</a>), 18/lc (<a href="18-lc.html#SP12_1">&#167;12.1</a>), 19/rsft (<a href="19-rsft.html#SP1_1_1_1">&#167;1.1.1.1</a>, <a href="19-rsft.html#SP1_1_1_1_1">&#167;1.1.1.1.1</a>, <a href="19-rsft.html#SP1_2">&#167;1.2</a>, <a href="19-rsft.html#SP1_3">&#167;1.3</a>), 21/rl2 (<a href="21-rl2.html#SP14">&#167;14</a>, <a href="21-rl2.html#SP20">&#167;20</a>), 21/fao (<a href="21-fao.html#SP10">&#167;10</a>), 21/ac (<a href="21-ac.html#SP6">&#167;6</a>, <a href="21-ac.html#SP8">&#167;8</a>, <a href="21-ac.html#SP14">&#167;14</a>), 22/cs (<a href="22-cs.html#SP8">&#167;8</a>), 22/pav (<a href="22-pav.html#SP8_1">&#167;8.1</a>), 22/tp2 (<a href="22-tp2.html#SP4">&#167;4</a>), 24/ch (<a href="24-ch.html#SP6">&#167;6</a>, <a href="24-ch.html#SP8">&#167;8</a>), 26/vm (<a href="26-vm.html#SP8">&#167;8</a>), 26/uo (<a href="26-uo.html#SP21">&#167;21</a>), 26/lt (<a href="26-lt.html#SP4_1">&#167;4.1</a>), 26/jl (<a href="26-jl.html#SP6">&#167;6</a>), 26/rt (<a href="26-rt.html#SP1">&#167;1</a>), 26/iti (<a href="26-iti.html#SP10">&#167;10</a>), 26/pl (<a href="26-pl.html#SP12">&#167;12</a>), 26/ts (<a href="26-ts.html#SP10">&#167;10</a>), 27/ei (<a href="27-ei.html#SP4">&#167;4</a>), 27/hl (<a href="27-hl.html#SP1">&#167;1</a>).</p>
<p class="endnote">The function Packaging::enter_home_of is used in 6/bp (<a href="6-bp.html#SP42">&#167;42</a>), 6/rlt (<a href="6-rlt.html#SP14">&#167;14</a>, <a href="6-rlt.html#SP15_1">&#167;15.1</a>, <a href="6-rlt.html#SP20">&#167;20</a>, <a href="6-rlt.html#SP20_3">&#167;20.3</a>), 6/nv (<a href="6-nv.html#SP18">&#167;18</a>), 12/cdp (<a href="12-cdp.html#SP2_1_1">&#167;2.1.1</a>), 13/kak (<a href="13-kak.html#SP5">&#167;5</a>), 13/rsfk (<a href="13-rsfk.html#SP16_2">&#167;16.2</a>, <a href="13-rsfk.html#SP26">&#167;26</a>), 15/pr (<a href="15-pr.html#SP27">&#167;27</a>), 15/epv (<a href="15-epv.html#SP1_1_2">&#167;1.1.2</a>), 17/tl (<a href="17-tl.html#SP14_1">&#167;14.1</a>, <a href="17-tl.html#SP14_2">&#167;14.2</a>), 17/ts (<a href="17-ts.html#SP11">&#167;11</a>), 17/rs (<a href="17-rs.html#SP7_3">&#167;7.3</a>), 18/lc (<a href="18-lc.html#SP12_1">&#167;12.1</a>), 19/rsft (<a href="19-rsft.html#SP1_1_1_1">&#167;1.1.1.1</a>, <a href="19-rsft.html#SP1_1_1_1_1">&#167;1.1.1.1.1</a>, <a href="19-rsft.html#SP1_2">&#167;1.2</a>, <a href="19-rsft.html#SP1_3">&#167;1.3</a>), 21/rl2 (<a href="21-rl2.html#SP14">&#167;14</a>, <a href="21-rl2.html#SP20">&#167;20</a>), 21/fao (<a href="21-fao.html#SP10">&#167;10</a>), 21/ac (<a href="21-ac.html#SP6">&#167;6</a>, <a href="21-ac.html#SP8">&#167;8</a>, <a href="21-ac.html#SP14">&#167;14</a>), 22/cs (<a href="22-cs.html#SP8">&#167;8</a>), 22/pav (<a href="22-pav.html#SP8_1">&#167;8.1</a>), 22/tp2 (<a href="22-tp2.html#SP4">&#167;4</a>), 24/ch (<a href="24-ch.html#SP6">&#167;6</a>, <a href="24-ch.html#SP8">&#167;8</a>), 26/vm (<a href="26-vm.html#SP8">&#167;8</a>), 26/uo (<a href="26-uo.html#SP21">&#167;21</a>), 26/lt (<a href="26-lt.html#SP4_1">&#167;4.1</a>), 26/jl (<a href="26-jl.html#SP6">&#167;6</a>), 26/rt (<a href="26-rt.html#SP1">&#167;1</a>), 26/iti (<a href="26-iti.html#SP10">&#167;10</a>), 26/pl (<a href="26-pl.html#SP12">&#167;12</a>), 26/ts (<a href="26-ts.html#SP10">&#167;10</a>), 27/ei (<a href="27-ei.html#SP4">&#167;4</a>), 27/hr (<a href="27-hr.html#SP5">&#167;5</a>).</p>
<p class="endnote">The function Packaging::enter_current_enclosure is used in 13/rsfk (<a href="13-rsfk.html#SP4">&#167;4</a>), 17/tl (<a href="17-tl.html#SP16">&#167;16</a>), 17/ts (<a href="17-ts.html#SP8_1">&#167;8.1</a>), 18/lc (<a href="18-lc.html#SP11">&#167;11</a>).</p>
@ -343,7 +343,7 @@
<p class="endnote">The function Packaging::enter is used in <a href="#SP5">&#167;5</a>, 4/am (<a href="4-am.html#SP34_2">&#167;34.2</a>), 5/ins (<a href="5-ins.html#SP34">&#167;34</a>), 5/nv (<a href="5-nv.html#SP16">&#167;16</a>), 13/rsfk (<a href="13-rsfk.html#SP16_1">&#167;16.1</a>, <a href="13-rsfk.html#SP26">&#167;26</a>), 15/epv (<a href="15-epv.html#SP2">&#167;2</a>), 16/ic (<a href="16-ic.html#SP10">&#167;10</a>), 17/rs (<a href="17-rs.html#SP6_1">&#167;6.1</a>, <a href="17-rs.html#SP7_1">&#167;7.1</a>), 21/rl (<a href="21-rl.html#SP9">&#167;9</a>), 21/rl2 (<a href="21-rl2.html#SP20">&#167;20</a>), 22/ph (<a href="22-ph.html#SP12">&#167;12</a>), 27/ei (<a href="27-ei.html#SP3">&#167;3</a>, <a href="27-ei.html#SP4">&#167;4</a>), 27/hl (<a href="27-hl.html#SP1">&#167;1</a>).</p>
<p class="endnote">The function Packaging::exit is used in 5/ins (<a href="5-ins.html#SP34">&#167;34</a>), 5/nv (<a href="5-nv.html#SP16">&#167;16</a>), 6/bp (<a href="6-bp.html#SP42">&#167;42</a>), 6/rlt (<a href="6-rlt.html#SP14">&#167;14</a>, <a href="6-rlt.html#SP15_1">&#167;15.1</a>, <a href="6-rlt.html#SP20">&#167;20</a>, <a href="6-rlt.html#SP20_3">&#167;20.3</a>), 6/nv (<a href="6-nv.html#SP18">&#167;18</a>), 12/cdp (<a href="12-cdp.html#SP2_1_1">&#167;2.1.1</a>), 13/kak (<a href="13-kak.html#SP5">&#167;5</a>), 13/rsfk (<a href="13-rsfk.html#SP4">&#167;4</a>, <a href="13-rsfk.html#SP16_1">&#167;16.1</a>, <a href="13-rsfk.html#SP16_2">&#167;16.2</a>, <a href="13-rsfk.html#SP26">&#167;26</a>), 15/pr (<a href="15-pr.html#SP27">&#167;27</a>), 15/epv (<a href="15-epv.html#SP1_1_2">&#167;1.1.2</a>, <a href="15-epv.html#SP2">&#167;2</a>), 16/ic (<a href="16-ic.html#SP10">&#167;10</a>), 17/tl (<a href="17-tl.html#SP14_1">&#167;14.1</a>, <a href="17-tl.html#SP14_2">&#167;14.2</a>, <a href="17-tl.html#SP16">&#167;16</a>), 17/ts (<a href="17-ts.html#SP8_1">&#167;8.1</a>, <a href="17-ts.html#SP11">&#167;11</a>), 17/rs (<a href="17-rs.html#SP6_1">&#167;6.1</a>, <a href="17-rs.html#SP7_1">&#167;7.1</a>, <a href="17-rs.html#SP7_3">&#167;7.3</a>), 18/lc (<a href="18-lc.html#SP11">&#167;11</a>, <a href="18-lc.html#SP12_1">&#167;12.1</a>), 19/rsft (<a href="19-rsft.html#SP1_1_1_1">&#167;1.1.1.1</a>, <a href="19-rsft.html#SP1_1_1_1_1">&#167;1.1.1.1.1</a>, <a href="19-rsft.html#SP1_2">&#167;1.2</a>, <a href="19-rsft.html#SP1_3">&#167;1.3</a>), 21/rl (<a href="21-rl.html#SP9">&#167;9</a>), 21/rl2 (<a href="21-rl2.html#SP14">&#167;14</a>, <a href="21-rl2.html#SP20">&#167;20</a>), 21/fao (<a href="21-fao.html#SP10">&#167;10</a>), 21/ac (<a href="21-ac.html#SP6">&#167;6</a>, <a href="21-ac.html#SP8">&#167;8</a>, <a href="21-ac.html#SP14">&#167;14</a>), 22/cs (<a href="22-cs.html#SP8">&#167;8</a>), 22/ph (<a href="22-ph.html#SP12">&#167;12</a>), 22/pav (<a href="22-pav.html#SP8_1">&#167;8.1</a>), 22/tp2 (<a href="22-tp2.html#SP4">&#167;4</a>), 24/ch (<a href="24-ch.html#SP6">&#167;6</a>, <a href="24-ch.html#SP8">&#167;8</a>), 26/vm (<a href="26-vm.html#SP8">&#167;8</a>), 26/uo (<a href="26-uo.html#SP21">&#167;21</a>), 26/lt (<a href="26-lt.html#SP4_1">&#167;4.1</a>), 26/jl (<a href="26-jl.html#SP6">&#167;6</a>), 26/rt (<a href="26-rt.html#SP4">&#167;4</a>), 26/iti (<a href="26-iti.html#SP10">&#167;10</a>), 26/pl (<a href="26-pl.html#SP12">&#167;12</a>), 26/ts (<a href="26-ts.html#SP10">&#167;10</a>), 27/ei (<a href="27-ei.html#SP3">&#167;3</a>, <a href="27-ei.html#SP4">&#167;4</a>), 27/hl (<a href="27-hl.html#SP1">&#167;1</a>).</p>
<p class="endnote">The function Packaging::exit is used in 5/ins (<a href="5-ins.html#SP34">&#167;34</a>), 5/nv (<a href="5-nv.html#SP16">&#167;16</a>), 6/bp (<a href="6-bp.html#SP42">&#167;42</a>), 6/rlt (<a href="6-rlt.html#SP14">&#167;14</a>, <a href="6-rlt.html#SP15_1">&#167;15.1</a>, <a href="6-rlt.html#SP20">&#167;20</a>, <a href="6-rlt.html#SP20_3">&#167;20.3</a>), 6/nv (<a href="6-nv.html#SP18">&#167;18</a>), 12/cdp (<a href="12-cdp.html#SP2_1_1">&#167;2.1.1</a>), 13/kak (<a href="13-kak.html#SP5">&#167;5</a>), 13/rsfk (<a href="13-rsfk.html#SP4">&#167;4</a>, <a href="13-rsfk.html#SP16_1">&#167;16.1</a>, <a href="13-rsfk.html#SP16_2">&#167;16.2</a>, <a href="13-rsfk.html#SP26">&#167;26</a>), 15/pr (<a href="15-pr.html#SP27">&#167;27</a>), 15/epv (<a href="15-epv.html#SP1_1_2">&#167;1.1.2</a>, <a href="15-epv.html#SP2">&#167;2</a>), 16/ic (<a href="16-ic.html#SP10">&#167;10</a>), 17/tl (<a href="17-tl.html#SP14_1">&#167;14.1</a>, <a href="17-tl.html#SP14_2">&#167;14.2</a>, <a href="17-tl.html#SP16">&#167;16</a>), 17/ts (<a href="17-ts.html#SP8_1">&#167;8.1</a>, <a href="17-ts.html#SP11">&#167;11</a>), 17/rs (<a href="17-rs.html#SP6_1">&#167;6.1</a>, <a href="17-rs.html#SP7_1">&#167;7.1</a>, <a href="17-rs.html#SP7_3">&#167;7.3</a>), 18/lc (<a href="18-lc.html#SP11">&#167;11</a>, <a href="18-lc.html#SP12_1">&#167;12.1</a>), 19/rsft (<a href="19-rsft.html#SP1_1_1_1">&#167;1.1.1.1</a>, <a href="19-rsft.html#SP1_1_1_1_1">&#167;1.1.1.1.1</a>, <a href="19-rsft.html#SP1_2">&#167;1.2</a>, <a href="19-rsft.html#SP1_3">&#167;1.3</a>), 21/rl (<a href="21-rl.html#SP9">&#167;9</a>), 21/rl2 (<a href="21-rl2.html#SP14">&#167;14</a>, <a href="21-rl2.html#SP20">&#167;20</a>), 21/fao (<a href="21-fao.html#SP10">&#167;10</a>), 21/ac (<a href="21-ac.html#SP6">&#167;6</a>, <a href="21-ac.html#SP8">&#167;8</a>, <a href="21-ac.html#SP14">&#167;14</a>), 22/cs (<a href="22-cs.html#SP8">&#167;8</a>), 22/ph (<a href="22-ph.html#SP12">&#167;12</a>), 22/pav (<a href="22-pav.html#SP8_1">&#167;8.1</a>), 22/tp2 (<a href="22-tp2.html#SP4">&#167;4</a>), 24/ch (<a href="24-ch.html#SP6">&#167;6</a>, <a href="24-ch.html#SP8">&#167;8</a>), 26/vm (<a href="26-vm.html#SP8">&#167;8</a>), 26/uo (<a href="26-uo.html#SP21">&#167;21</a>), 26/lt (<a href="26-lt.html#SP4_1">&#167;4.1</a>), 26/jl (<a href="26-jl.html#SP6">&#167;6</a>), 26/rt (<a href="26-rt.html#SP4">&#167;4</a>), 26/iti (<a href="26-iti.html#SP10">&#167;10</a>), 26/pl (<a href="26-pl.html#SP12">&#167;12</a>), 26/ts (<a href="26-ts.html#SP10">&#167;10</a>), 27/ei (<a href="27-ei.html#SP3">&#167;3</a>, <a href="27-ei.html#SP4">&#167;4</a>), 27/hl (<a href="27-hl.html#SP1">&#167;1</a>), 27/hr (<a href="27-hr.html#SP5">&#167;5</a>).</p>
<p class="endnote">The function Packaging::incarnate is used in 21/rl (<a href="21-rl.html#SP9">&#167;9</a>), 27/ei (<a href="27-ei.html#SP3">&#167;3</a>).</p>
@ -459,7 +459,7 @@
<p class="endnote">The function Packaging::request_generic appears nowhere else.</p>
<p class="endnote">The function Packaging::request_template is used in 15/ep (<a href="15-ep.html#SP4">&#167;4</a>), 27/ei (<a href="27-ei.html#SP3">&#167;3</a>), 27/hl (<a href="27-hl.html#SP1">&#167;1</a>), 27/hr (<a href="27-hr.html#SP2_43">&#167;2.43</a>, <a href="27-hr.html#SP4">&#167;4</a>).</p>
<p class="endnote">The function Packaging::request_template is used in 15/ep (<a href="15-ep.html#SP4">&#167;4</a>), 27/ei (<a href="27-ei.html#SP3">&#167;3</a>), 27/hl (<a href="27-hl.html#SP1">&#167;1</a>), 27/hr (<a href="27-hr.html#SP2_43">&#167;2.43</a>, <a href="27-hr.html#SP6">&#167;6</a>).</p>
<p class="endnote">The function Packaging::request_synoptic appears nowhere else.</p>

View file

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

View file

@ -81,10 +81,8 @@ text_substitution *Strings::TextSubstitutions::new_text_substitution(wording W,
(LocalVariables::count(Frames::current_stack_frame()) > 0))
ts->local_names_existed_at_usage_time = TRUE;
ts->ts_iname = Packaging::supply_iname(P, SUBSTITUTION_PR_COUNTER);
// InterNames::new_in(TEXT_SUBSTITUTION_INAMEF, Modules::current());
ts->ts_routine_iname =
Packaging::function(Packaging::supply_iname(P, SUBSTITUTIONF_PR_COUNTER), P, NULL);
// InterNames::new_derived(TEXT_ROUTINE_INAMEF, ts->ts_iname);
ts->belongs_to_module = Modules::current();
Inter::Symbols::set_flag(InterNames::to_symbol(ts->ts_iname), MAKE_NAME_UNIQUE);
Inter::Symbols::set_flag(InterNames::to_symbol(ts->ts_routine_iname), MAKE_NAME_UNIQUE);

View file

@ -219,9 +219,7 @@ rulebook *Rulebooks::new(kind *create_as, wording W, package_request *R, text_st
else package_name = InterNames::one_off(supplied, R);
rb->rb_package = Packaging::request(package_name, R, rulebook_ptype);
rb->rb_iname = Packaging::function(InterNames::one_off(I"run_fn", rb->rb_package), rb->rb_package, NULL);
// InterNames::attach_memo(rb->rb_iname, rb->primary_name);
Inter::Symbols::set_flag(InterNames::to_symbol(rb->rb_iname), MAKE_NAME_UNIQUE);
// InterNames::new(RULEBOOK_INAMEF);
rb->rule_list = Rules::Bookings::list_new();

View file

@ -9,52 +9,48 @@ typedef struct named_resource_location {
struct text_stream *function_package_name;
struct text_stream *datum_package_name;
struct package_request *package;
int exotic_package_identifier;
struct inter_name *equates_to_iname;
MEMORY_MANAGEMENT
} named_resource_location;
named_resource_location *nrls_indexed_by_id[MAX_HL];
dictionary *nrls_indexed_by_name = NULL;
named_resource_location *HierarchyLocations::make_in(int id, text_stream *name, package_request *P) {
named_resource_location *HierarchyLocations::new(void) {
named_resource_location *nrl = CREATE(named_resource_location);
nrl->access_number = id;
nrl->access_name = Str::duplicate(name);
nrl->function_package_name = NULL;
nrl->datum_package_name = NULL;
nrl->package = P;
nrl->equates_to_iname = NULL;
if (id >= 0) nrls_indexed_by_id[id] = nrl;
Dictionaries::create(nrls_indexed_by_name, name);
Dictionaries::write_value(nrls_indexed_by_name, name, (void *) nrl);
return nrl;
}
named_resource_location *HierarchyLocations::make_as(int id, text_stream *name, inter_name *iname) {
named_resource_location *nrl = CREATE(named_resource_location);
nrl->access_number = id;
nrl->access_name = Str::duplicate(name);
nrl->function_package_name = NULL;
nrl->datum_package_name = NULL;
nrl->package = iname->eventual_owner;
nrl->equates_to_iname = iname;
if (id >= 0) nrls_indexed_by_id[id] = nrl;
Dictionaries::create(nrls_indexed_by_name, name);
Dictionaries::write_value(nrls_indexed_by_name, name, (void *) nrl);
return nrl;
}
named_resource_location *HierarchyLocations::make_on_demand(int id, text_stream *name) {
named_resource_location *nrl = CREATE(named_resource_location);
nrl->access_number = id;
nrl->access_name = Str::duplicate(name);
nrl->access_number = -1;
nrl->access_name = NULL;
nrl->function_package_name = NULL;
nrl->datum_package_name = NULL;
nrl->package = NULL;
nrl->equates_to_iname = NULL;
if (id >= 0) nrls_indexed_by_id[id] = nrl;
Dictionaries::create(nrls_indexed_by_name, name);
Dictionaries::write_value(nrls_indexed_by_name, name, (void *) nrl);
nrl->exotic_package_identifier = -1;
return nrl;
}
named_resource_location *HierarchyLocations::make_in(int id, text_stream *name, package_request *P) {
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;
HierarchyLocations::index(nrl);
return nrl;
}
named_resource_location *HierarchyLocations::make_as(int id, text_stream *name, inter_name *iname) {
named_resource_location *nrl = HierarchyLocations::new();
nrl->access_number = id;
nrl->access_name = Str::duplicate(name);
nrl->package = iname->eventual_owner;
nrl->equates_to_iname = iname;
HierarchyLocations::index(nrl);
return nrl;
}
@ -63,12 +59,18 @@ named_resource_location *HierarchyLocations::make_function(int id, text_stream *
nrl->access_number = id;
nrl->access_name = Str::duplicate(call_name);
nrl->function_package_name = Str::duplicate(name);
nrl->datum_package_name = NULL;
nrl->package = P;
nrl->equates_to_iname = NULL;
if (id >= 0) nrls_indexed_by_id[id] = nrl;
Dictionaries::create(nrls_indexed_by_name, call_name);
Dictionaries::write_value(nrls_indexed_by_name, call_name, (void *) nrl);
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 *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;
}
@ -76,16 +78,25 @@ named_resource_location *HierarchyLocations::make_datum(int id, text_stream *nam
named_resource_location *nrl = CREATE(named_resource_location);
nrl->access_number = id;
nrl->access_name = Str::duplicate(datum_name);
nrl->function_package_name = NULL;
nrl->datum_package_name = Str::duplicate(name);
nrl->package = P;
nrl->equates_to_iname = NULL;
if (id >= 0) nrls_indexed_by_id[id] = nrl;
Dictionaries::create(nrls_indexed_by_name, datum_name);
Dictionaries::write_value(nrls_indexed_by_name, datum_name, (void *) nrl);
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 *nrls_indexed_by_id[MAX_HL];
dictionary *nrls_indexed_by_name = NULL;
int nrls_created = FALSE;
void HierarchyLocations::create_nrls(void) {
nrls_created = TRUE;
@ -94,6 +105,13 @@ void HierarchyLocations::create_nrls(void) {
Hierarchy::establish();
}
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;
Dictionaries::create(nrls_indexed_by_name, nrl->access_name);
Dictionaries::write_value(nrls_indexed_by_name, nrl->access_name, (void *) nrl);
}
inter_name *HierarchyLocations::find(int id) {
if (nrls_created == FALSE) HierarchyLocations::create_nrls();
if ((id < 0) || (id >= MAX_HL) || (nrls_indexed_by_id[id] == NULL))
@ -119,100 +137,33 @@ inter_name *HierarchyLocations::function(package_request *R, text_stream *name,
inter_name *HierarchyLocations::nrl_to_iname(named_resource_location *nrl) {
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);
else internal_error("package can't be found'");
}
if (nrl->package == Packaging::request_template()) {
packaging_state save = Packaging::enter(nrl->package);
nrl->equates_to_iname = InterNames::one_off(nrl->access_name, Packaging::request_template());
nrl->equates_to_iname->symbol = Emit::extern(nrl->access_name, K_value);
Packaging::exit(save);
return nrl->equates_to_iname;
}
if (Str::len(nrl->function_package_name) > 0) {
} 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,
nrl->access_name);
nrl->package = Packaging::home_of(nrl->equates_to_iname);
}
if (Str::len(nrl->datum_package_name) > 0) {
} 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,
nrl->access_name);
nrl->package = Packaging::home_of(nrl->equates_to_iname);
}
if ((nrl->package) && (nrl->equates_to_iname == NULL))
} else if ((nrl->package) && (nrl->equates_to_iname == NULL)) {
nrl->equates_to_iname = InterNames::one_off(nrl->access_name, nrl->package);
switch (nrl->access_number) {
case THESAME_HL:
case PLURALFOUND_HL:
case PARENT_HL:
case CHILD_HL:
case SIBLING_HL:
case THEDARK_HL:
case FLOAT_NAN_HL:
case RESPONSETEXTS_HL: {
packaging_state save = Packaging::enter_home_of(nrl->equates_to_iname);
Emit::named_numeric_constant(nrl->equates_to_iname, 0);
Packaging::exit(save);
break;
}
case SELF_HL: {
packaging_state save = Packaging::enter_home_of(nrl->equates_to_iname);
Emit::variable(nrl->equates_to_iname, K_value, UNDEF_IVAL, 0, I"self");
Packaging::exit(save);
break;
}
case NOTHING_HL:
nrl->package = Kinds::Behaviour::package(K_object);
break;
case OBJECT_HL:
nrl->equates_to_iname = Kinds::RunTime::I6_classname(K_object);
break;
case TESTUSEOPTION_HL:
nrl->equates_to_iname = HierarchyLocations::function(
Kinds::RunTime::package(K_use_option), I"test_fn", nrl->access_name);
break;
case TABLEOFTABLES_HL:
nrl->package = Kinds::Behaviour::package(K_table);
break;
case TABLEOFVERBS_HL:
nrl->package = Kinds::Behaviour::package(K_verb);
break;
case CAPSHORTNAME_HL:
nrl->package = Kinds::Behaviour::package(K_object);
break;
case RESOURCEIDSOFFIGURES_HL:
nrl->package = Kinds::Behaviour::package(K_figure_name);
break;
case RESOURCEIDSOFSOUNDS_HL:
nrl->package = Kinds::Behaviour::package(K_sound_name);
break;
case NO_USE_OPTIONS_HL:
nrl->package = Kinds::Behaviour::package(K_use_option);
break;
case DECIMAL_TOKEN_INNER_HL:
nrl->equates_to_iname = HierarchyLocations::function(
Kinds::RunTime::package(K_number), I"gpr_fn", nrl->access_name);
break;
case TIME_TOKEN_INNER_HL:
nrl->equates_to_iname = HierarchyLocations::function(
Kinds::RunTime::package(K_time), I"gpr_fn", nrl->access_name);
break;
case TRUTH_STATE_TOKEN_INNER_HL:
nrl->equates_to_iname = HierarchyLocations::function(
Kinds::RunTime::package(K_truth_state), I"gpr_fn", nrl->access_name);
break;
case COMMANDPROMPTTEXT_HL:
nrl->equates_to_iname = HierarchyLocations::function(
Packaging::home_of(NonlocalVariables::iname(command_prompt_VAR)),
I"command_prompt_text_fn", nrl->access_name);
break;
}
if (nrl->equates_to_iname == NULL)
nrl->equates_to_iname = InterNames::one_off(nrl->access_name, nrl->package);
if (nrl->package == NULL)
nrl->package = Packaging::home_of(nrl->equates_to_iname);
nrl->equates_to_iname = Hierarchy::post_process(nrl->access_number, nrl->equates_to_iname);
nrl->package = Packaging::home_of(nrl->equates_to_iname);
}
return nrl->equates_to_iname;
}

View file

@ -474,6 +474,17 @@ void Hierarchy::establish(void) {
@
@e K_OBJECT_XPACKAGE from 0
@e K_NUMBER_XPACKAGE
@e K_TIME_XPACKAGE
@e K_TRUTH_STATE_XPACKAGE
@e K_TABLE_XPACKAGE
@e K_VERB_XPACKAGE
@e K_FIGURE_NAME_XPACKAGE
@e K_SOUND_NAME_XPACKAGE
@e K_USE_OPTION_XPACKAGE
@e V_COMMAND_PROMPT_XPACKAGE
@e NOTHING_HL
@e OBJECT_HL
@e TESTUSEOPTION_HL
@ -491,19 +502,28 @@ void Hierarchy::establish(void) {
@
@<The rest@> =
HierarchyLocations::make_on_demand(OBJECT_HL, I"Object");
HierarchyLocations::make_on_demand(NOTHING_HL, I"nothing");
HierarchyLocations::make_on_demand(TESTUSEOPTION_HL, I"TestUseOption");
HierarchyLocations::make_on_demand(TABLEOFTABLES_HL, I"TableOfTables");
HierarchyLocations::make_on_demand(TABLEOFVERBS_HL, I"TableOfVerbs");
HierarchyLocations::make_on_demand(CAPSHORTNAME_HL, I"cap_short_name");
HierarchyLocations::make_on_demand(COMMANDPROMPTTEXT_HL, I"CommandPromptText");
HierarchyLocations::make_on_demand(DECIMAL_TOKEN_INNER_HL, I"DECIMAL_TOKEN_INNER");
HierarchyLocations::make_on_demand(NO_USE_OPTIONS_HL, I"NO_USE_OPTIONS");
HierarchyLocations::make_on_demand(RESOURCEIDSOFFIGURES_HL, I"ResourceIDsOfFigures");
HierarchyLocations::make_on_demand(RESOURCEIDSOFSOUNDS_HL, I"ResourceIDsOfSounds");
HierarchyLocations::make_on_demand(TIME_TOKEN_INNER_HL, I"TIME_TOKEN_INNER");
HierarchyLocations::make_on_demand(TRUTH_STATE_TOKEN_INNER_HL, I"TRUTH_STATE_TOKEN_INNER");
HierarchyLocations::make_in_exotic(OBJECT_HL, I"Object", K_OBJECT_XPACKAGE);
HierarchyLocations::make_in_exotic(NOTHING_HL, I"nothing", K_OBJECT_XPACKAGE);
HierarchyLocations::make_in_exotic(CAPSHORTNAME_HL, I"cap_short_name", K_OBJECT_XPACKAGE);
HierarchyLocations::make_function_in_exotic(DECIMAL_TOKEN_INNER_HL, I"gpr_fn", I"DECIMAL_TOKEN_INNER", K_NUMBER_XPACKAGE);
HierarchyLocations::make_function_in_exotic(TIME_TOKEN_INNER_HL, I"gpr_fn", I"TIME_TOKEN_INNER", K_TIME_XPACKAGE);
HierarchyLocations::make_function_in_exotic(TRUTH_STATE_TOKEN_INNER_HL, I"gpr_fn", I"TRUTH_STATE_TOKEN_INNER", K_TRUTH_STATE_XPACKAGE);
HierarchyLocations::make_in_exotic(TABLEOFTABLES_HL, I"TableOfTables", K_TABLE_XPACKAGE);
HierarchyLocations::make_in_exotic(TABLEOFVERBS_HL, I"TableOfVerbs", K_VERB_XPACKAGE);
HierarchyLocations::make_in_exotic(RESOURCEIDSOFFIGURES_HL, I"ResourceIDsOfFigures", K_FIGURE_NAME_XPACKAGE);
HierarchyLocations::make_in_exotic(RESOURCEIDSOFSOUNDS_HL, I"ResourceIDsOfSounds", K_SOUND_NAME_XPACKAGE);
HierarchyLocations::make_in_exotic(NO_USE_OPTIONS_HL, I"NO_USE_OPTIONS", K_USE_OPTION_XPACKAGE);
HierarchyLocations::make_function_in_exotic(TESTUSEOPTION_HL, I"test_fn", I"TestUseOption", K_USE_OPTION_XPACKAGE);
HierarchyLocations::make_function_in_exotic(COMMANDPROMPTTEXT_HL, I"command_prompt_text_fn", I"CommandPromptText", V_COMMAND_PROMPT_XPACKAGE);
@
@ -983,6 +1003,58 @@ void Hierarchy::establish(void) {
@
=
package_request *Hierarchy::exotic_package(int x) {
switch (x) {
case K_OBJECT_XPACKAGE: return Kinds::Behaviour::package(K_object);
case K_NUMBER_XPACKAGE: return Kinds::Behaviour::package(K_number);
case K_TIME_XPACKAGE: return Kinds::Behaviour::package(K_time);
case K_TRUTH_STATE_XPACKAGE: return Kinds::Behaviour::package(K_truth_state);
case K_TABLE_XPACKAGE: return Kinds::Behaviour::package(K_table);
case K_VERB_XPACKAGE: return Kinds::Behaviour::package(K_verb);
case K_FIGURE_NAME_XPACKAGE: return Kinds::Behaviour::package(K_figure_name);
case K_SOUND_NAME_XPACKAGE: return Kinds::Behaviour::package(K_sound_name);
case K_USE_OPTION_XPACKAGE: return Kinds::Behaviour::package(K_use_option);
case V_COMMAND_PROMPT_XPACKAGE:
return Packaging::home_of(NonlocalVariables::iname(command_prompt_VAR));
}
internal_error("unknown exotic package");
return NULL;
}
@
=
inter_name *Hierarchy::post_process(int HL_id, inter_name *iname) {
switch (HL_id) {
case THESAME_HL:
case PLURALFOUND_HL:
case PARENT_HL:
case CHILD_HL:
case SIBLING_HL:
case THEDARK_HL:
case FLOAT_NAN_HL:
case RESPONSETEXTS_HL: {
packaging_state save = Packaging::enter_home_of(iname);
Emit::named_numeric_constant(iname, 0);
Packaging::exit(save);
break;
}
case SELF_HL: {
packaging_state save = Packaging::enter_home_of(iname);
Emit::variable(iname, K_value, UNDEF_IVAL, 0, I"self");
Packaging::exit(save);
break;
}
case OBJECT_HL:
iname = Kinds::RunTime::I6_classname(K_object);
break;
}
return iname;
}
@
=
inter_name *Hierarchy::find(int id) {
return HierarchyLocations::find(id);