mirror of
https://github.com/ganelson/inform.git
synced 2024-07-05 08:34:22 +03:00
Simplified inter names further
This commit is contained in:
parent
4f267ab64c
commit
00f98e0c5a
|
@ -113,10 +113,8 @@
|
|||
<span class="definitionkeyword">enum</span> <span class="constant">dval_written_MT</span>
|
||||
<span class="definitionkeyword">enum</span> <span class="constant">nascent_array_MT</span>
|
||||
<span class="definitionkeyword">enum</span> <span class="constant">value_holster_array_MT</span>
|
||||
<span class="definitionkeyword">enum</span> <span class="constant">inter_namespace_MT</span>
|
||||
<span class="definitionkeyword">enum</span> <span class="constant">inter_name_MT</span>
|
||||
<span class="definitionkeyword">enum</span> <span class="constant">inter_name_family_MT</span>
|
||||
<span class="definitionkeyword">enum</span> <span class="constant">inter_name_consumption_token_MT</span>
|
||||
<span class="definitionkeyword">enum</span> <span class="constant">inter_name_array_MT</span>
|
||||
<span class="definitionkeyword">enum</span> <span class="constant">inter_name_generator_array_MT</span>
|
||||
<span class="definitionkeyword">enum</span> <span class="constant">adjective_iname_holder_MT</span>
|
||||
<span class="definitionkeyword">enum</span> <span class="constant">compilation_module_MT</span>
|
||||
<span class="definitionkeyword">enum</span> <span class="constant">inter_schema_MT</span>
|
||||
|
@ -160,10 +158,6 @@
|
|||
<span class="identifier">ALLOCATE_INDIVIDUALLY</span><span class="plain">(</span><span class="reserved">implication</span><span class="plain">)</span>
|
||||
<span class="identifier">ALLOCATE_INDIVIDUALLY</span><span class="plain">(</span><span class="reserved">inference_subject</span><span class="plain">)</span>
|
||||
<span class="identifier">ALLOCATE_INDIVIDUALLY</span><span class="plain">(</span><span class="reserved">instance</span><span class="plain">)</span>
|
||||
<span class="identifier">ALLOCATE_INDIVIDUALLY</span><span class="plain">(</span><span class="reserved">inter_namespace</span><span class="plain">)</span>
|
||||
<span class="identifier">ALLOCATE_INDIVIDUALLY</span><span class="plain">(</span><span class="reserved">inter_name</span><span class="plain">)</span>
|
||||
<span class="identifier">ALLOCATE_INDIVIDUALLY</span><span class="plain">(</span><span class="reserved">inter_name_family</span><span class="plain">)</span>
|
||||
<span class="identifier">ALLOCATE_INDIVIDUALLY</span><span class="plain">(</span><span class="reserved">inter_name_consumption_token</span><span class="plain">)</span>
|
||||
<span class="identifier">ALLOCATE_INDIVIDUALLY</span><span class="plain">(</span><span class="reserved">internal_test_case</span><span class="plain">)</span>
|
||||
<span class="identifier">ALLOCATE_INDIVIDUALLY</span><span class="plain">(</span><span class="reserved">inv_token_problem_token</span><span class="plain">)</span>
|
||||
<span class="identifier">ALLOCATE_INDIVIDUALLY</span><span class="plain">(</span><span class="reserved">kind_interaction</span><span class="plain">)</span>
|
||||
|
@ -231,6 +225,8 @@
|
|||
<span class="identifier">ALLOCATE_IN_ARRAYS</span><span class="plain">(</span><span class="reserved">i6_schema</span><span class="plain">, 100)</span>
|
||||
<span class="identifier">ALLOCATE_IN_ARRAYS</span><span class="plain">(</span><span class="reserved">inference</span><span class="plain">, 100)</span>
|
||||
<span class="identifier">ALLOCATE_IN_ARRAYS</span><span class="plain">(</span><span class="reserved">instance_usage</span><span class="plain">, 200)</span>
|
||||
<span class="identifier">ALLOCATE_IN_ARRAYS</span><span class="plain">(</span><span class="reserved">inter_name</span><span class="plain">, 1000)</span>
|
||||
<span class="identifier">ALLOCATE_IN_ARRAYS</span><span class="plain">(</span><span class="reserved">inter_name_generator</span><span class="plain">, 1000)</span>
|
||||
<span class="identifier">ALLOCATE_IN_ARRAYS</span><span class="plain">(</span><span class="reserved">invocation_options</span><span class="plain">, 100)</span>
|
||||
<span class="identifier">ALLOCATE_IN_ARRAYS</span><span class="plain">(</span><span class="reserved">local_variable</span><span class="plain">, 100)</span>
|
||||
<span class="identifier">ALLOCATE_IN_ARRAYS</span><span class="plain">(</span><span class="reserved">pcalc_func</span><span class="plain">, 1000)</span>
|
||||
|
|
|
@ -91,6 +91,8 @@ error.
|
|||
</pre>
|
||||
|
||||
<pre class="display">
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">unique_qi_counter</span><span class="plain"> = 0;</span>
|
||||
|
||||
<span class="reserved">i6_schema</span><span class="plain"> *</span><span class="functiontext">Calculus::Schemas::new</span><span class="plain">(</span><span class="reserved">char</span><span class="plain"> *</span><span class="identifier">fmt</span><span class="plain">, ...) {</span>
|
||||
<span class="identifier">va_list</span><span class="plain"> </span><span class="identifier">ap</span><span class="plain">; </span> <span class="comment">the variable argument list signified by the dots</span>
|
||||
<span class="reserved">i6_schema</span><span class="plain"> *</span><span class="identifier">sch</span><span class="plain"> = </span><span class="identifier">CREATE</span><span class="plain">(</span><span class="reserved">i6_schema</span><span class="plain">);</span>
|
||||
|
@ -191,7 +193,7 @@ an integer; <code class="display"><span class="extract">%s</span></code>, a C st
|
|||
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">N</span><span class="plain"> = </span><span class="identifier">sch</span><span class="plain">-</span><span class="element">>no_quoted_inames</span><span class="plain">++;</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">N</span><span class="plain"> >= 2) </span><span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"too many inter_name quotes"</span><span class="plain">);</span>
|
||||
<span class="identifier">sch</span><span class="plain">-</span><span class="element">>quoted_inames</span><span class="plain">[</span><span class="identifier">N</span><span class="plain">] = </span><span class="identifier">iname</span><span class="plain">;</span>
|
||||
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"QUOTED_INAME_%d_%08x"</span><span class="plain">, </span><span class="identifier">N</span><span class="plain">, </span><span class="identifier">iname</span><span class="plain">-></span><span class="identifier">allocation_id</span><span class="plain">);</span>
|
||||
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"QUOTED_INAME_%d_%08x"</span><span class="plain">, </span><span class="identifier">N</span><span class="plain">, </span><span class="identifier">unique_qi_counter</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="character">'N'</span><span class="plain">: </span><span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"%N"</span><span class="plain">, </span><span class="identifier">va_arg</span><span class="plain">(</span><span class="identifier">ap</span><span class="plain">, </span><span class="reserved">int</span><span class="plain">)); </span><span class="reserved">break</span><span class="plain">;</span>
|
||||
|
|
|
@ -1218,7 +1218,7 @@ each such kind, and needed at run-time.
|
|||
<pre class="display">
|
||||
<span class="reserved">package_request</span><span class="plain"> *</span><span class="functiontext">Kinds::RunTime::package</span><span class="plain">(</span><span class="identifier">kind</span><span class="plain"> *</span><span class="identifier">K</span><span class="plain">) {</span>
|
||||
<span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">iname</span><span class="plain"> = </span><span class="functiontext">Kinds::RunTime::iname</span><span class="plain">(</span><span class="identifier">K</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="element">>eventual_owner</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="identifier">iname</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
</pre>
|
||||
|
||||
|
|
|
@ -84,7 +84,7 @@
|
|||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The function Holsters::data_acceptable is used in 13/rsfk (<a href="13-rsfk.html#SP4">§4</a>), 14/rv (<a href="14-rv.html#SP24_1">§24.1</a>, <a href="14-rv.html#SP24_2">§24.2</a>, <a href="14-rv.html#SP24_3">§24.3</a>, <a href="14-rv.html#SP24_3_1">§24.3.1</a>), 15/ep (<a href="15-ep.html#SP11">§11</a>), 15/vp (<a href="15-vp.html#SP11">§11</a>), 17/ts (<a href="17-ts.html#SP8">§8</a>, <a href="17-ts.html#SP8_1">§8.1</a>), 17/rs (<a href="17-rs.html#SP5">§5</a>, <a href="17-rs.html#SP12">§12</a>, <a href="17-rs.html#SP12_1_1">§12.1.1</a>), 27/in (<a href="27-in.html#SP2">§2</a>).</p>
|
||||
<p class="endnote">The function Holsters::data_acceptable is used in 13/rsfk (<a href="13-rsfk.html#SP4">§4</a>), 14/rv (<a href="14-rv.html#SP24_1">§24.1</a>, <a href="14-rv.html#SP24_2">§24.2</a>, <a href="14-rv.html#SP24_3">§24.3</a>, <a href="14-rv.html#SP24_3_1">§24.3.1</a>), 15/ep (<a href="15-ep.html#SP11">§11</a>), 15/vp (<a href="15-vp.html#SP11">§11</a>), 17/ts (<a href="17-ts.html#SP8">§8</a>, <a href="17-ts.html#SP8_1">§8.1</a>), 17/rs (<a href="17-rs.html#SP5">§5</a>, <a href="17-rs.html#SP12">§12</a>, <a href="17-rs.html#SP12_1_1">§12.1.1</a>), 27/in (<a href="27-in.html#SP8">§8</a>).</p>
|
||||
|
||||
<p class="endnote">The function Holsters::to_val_mode is used in 5/nv (<a href="5-nv.html#SP25">§25</a>), 13/rsfk (<a href="13-rsfk.html#SP4">§4</a>), 14/cfs (<a href="14-cfs.html#SP7">§7</a>).</p>
|
||||
|
||||
|
@ -112,7 +112,7 @@
|
|||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The function Holsters::holster_pair is used in 5/nv (<a href="5-nv.html#SP25_1">§25.1</a>), 13/rsfk (<a href="13-rsfk.html#SP4">§4</a>), 14/rv (<a href="14-rv.html#SP24_1">§24.1</a>, <a href="14-rv.html#SP24_3">§24.3</a>), 15/ep (<a href="15-ep.html#SP11">§11</a>), 15/vp (<a href="15-vp.html#SP11">§11</a>), 17/rs (<a href="17-rs.html#SP12">§12</a>), 27/in (<a href="27-in.html#SP2">§2</a>).</p>
|
||||
<p class="endnote">The function Holsters::holster_pair is used in 5/nv (<a href="5-nv.html#SP25_1">§25.1</a>), 13/rsfk (<a href="13-rsfk.html#SP4">§4</a>), 14/rv (<a href="14-rv.html#SP24_1">§24.1</a>, <a href="14-rv.html#SP24_3">§24.3</a>), 15/ep (<a href="15-ep.html#SP11">§11</a>), 15/vp (<a href="15-vp.html#SP11">§11</a>), 17/rs (<a href="17-rs.html#SP12">§12</a>), 27/in (<a href="27-in.html#SP8">§8</a>).</p>
|
||||
|
||||
<p class="endnote">The function Holsters::unholster_pair is used in 5/nv (<a href="5-nv.html#SP16">§16</a>, <a href="5-nv.html#SP25">§25</a>), 13/rsfk (<a href="13-rsfk.html#SP4">§4</a>), 14/cfs (<a href="14-cfs.html#SP9">§9</a>), 15/epv (<a href="15-epv.html#SP2_1">§2.1</a>), 26/iti (<a href="26-iti.html#SP9">§9</a>).</p>
|
||||
|
||||
|
|
|
@ -245,12 +245,22 @@ since Inform always compiles code which knows which kind it's looping over.
|
|||
|
||||
<pre class="display">
|
||||
<span class="reserved">inter_name</span><span class="plain"> *</span><span class="functiontext">PL::Counting::first_instance</span><span class="plain">(</span><span class="identifier">kind</span><span class="plain"> *</span><span class="identifier">K</span><span class="plain">) {</span>
|
||||
<span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">iname</span><span class="plain"> = </span><span class="functiontext">Hierarchy::derive_iname_in</span><span class="plain">(</span><span class="constant">FIRST_INSTANCE_HL</span><span class="plain">, </span><span class="functiontext">Kinds::RunTime::iname</span><span class="plain">(</span><span class="identifier">K</span><span class="plain">), </span><span class="identifier">Kinds::Behaviour::package</span><span class="plain">(</span><span class="identifier">K</span><span class="plain">));</span>
|
||||
<span class="identifier">kind_constructor</span><span class="plain"> *</span><span class="identifier">con</span><span class="plain"> = </span><span class="identifier">Kinds::get_construct</span><span class="plain">(</span><span class="identifier">K</span><span class="plain">);</span>
|
||||
<span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">iname</span><span class="plain"> = </span><span class="identifier">Kinds::Constructors::first_instance_iname</span><span class="plain">(</span><span class="identifier">con</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">iname</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) {</span>
|
||||
<span class="identifier">iname</span><span class="plain"> = </span><span class="functiontext">Hierarchy::derive_iname_in</span><span class="plain">(</span><span class="constant">FIRST_INSTANCE_HL</span><span class="plain">, </span><span class="functiontext">Kinds::RunTime::iname</span><span class="plain">(</span><span class="identifier">K</span><span class="plain">), </span><span class="identifier">Kinds::Behaviour::package</span><span class="plain">(</span><span class="identifier">K</span><span class="plain">));</span>
|
||||
<span class="identifier">Kinds::Constructors::set_first_instance_iname</span><span class="plain">(</span><span class="identifier">con</span><span class="plain">, </span><span class="identifier">iname</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>
|
||||
|
||||
<span class="reserved">inter_name</span><span class="plain"> *</span><span class="functiontext">PL::Counting::next_instance</span><span class="plain">(</span><span class="identifier">kind</span><span class="plain"> *</span><span class="identifier">K</span><span class="plain">) {</span>
|
||||
<span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">iname</span><span class="plain"> = </span><span class="functiontext">Hierarchy::derive_iname_in</span><span class="plain">(</span><span class="constant">NEXT_INSTANCE_HL</span><span class="plain">, </span><span class="functiontext">Kinds::RunTime::iname</span><span class="plain">(</span><span class="identifier">K</span><span class="plain">), </span><span class="identifier">Kinds::Behaviour::package</span><span class="plain">(</span><span class="identifier">K</span><span class="plain">));</span>
|
||||
<span class="identifier">kind_constructor</span><span class="plain"> *</span><span class="identifier">con</span><span class="plain"> = </span><span class="identifier">Kinds::get_construct</span><span class="plain">(</span><span class="identifier">K</span><span class="plain">);</span>
|
||||
<span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">iname</span><span class="plain"> = </span><span class="identifier">Kinds::Constructors::next_instance_iname</span><span class="plain">(</span><span class="identifier">con</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">iname</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) {</span>
|
||||
<span class="identifier">iname</span><span class="plain"> = </span><span class="functiontext">Hierarchy::derive_iname_in</span><span class="plain">(</span><span class="constant">NEXT_INSTANCE_HL</span><span class="plain">, </span><span class="functiontext">Kinds::RunTime::iname</span><span class="plain">(</span><span class="identifier">K</span><span class="plain">), </span><span class="identifier">Kinds::Behaviour::package</span><span class="plain">(</span><span class="identifier">K</span><span class="plain">));</span>
|
||||
<span class="identifier">Kinds::Constructors::set_next_instance_iname</span><span class="plain">(</span><span class="identifier">con</span><span class="plain">, </span><span class="identifier">iname</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>
|
||||
|
||||
|
|
|
@ -430,7 +430,7 @@ text for the response than the one we first created.
|
|||
<span class="plain">}</span>
|
||||
<span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">ts_iname</span><span class="plain"> = </span><span class="functiontext">Strings::TextSubstitutions::text_substitution_iname</span><span class="plain">(</span><span class="identifier">ts</span><span class="plain">);</span>
|
||||
<span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">rc_iname</span><span class="plain"> = </span><span class="functiontext">Strings::response_constant_iname</span><span class="plain">(</span><span class="identifier">R</span><span class="plain">, </span><span class="identifier">marker</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">rc_iname</span><span class="plain">-</span><span class="element">>eventual_owner</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">rc_iname</span><span class="plain">);</span>
|
||||
<span class="functiontext">Emit::response</span><span class="plain">(</span><span class="identifier">rc_iname</span><span class="plain">, </span><span class="identifier">R</span><span class="plain">, </span><span class="identifier">marker</span><span class="plain">, </span><span class="identifier">ts_iname</span><span class="plain">);</span>
|
||||
<span class="functiontext">Packaging::exit</span><span class="plain">(</span><span class="identifier">save</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
|
|
|
@ -1114,7 +1114,7 @@ code are the real outcome of the code in this section.
|
|||
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">par</span><span class="plain"> = </span><span class="identifier">FALSE</span><span class="plain">;</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">Rulebooks::focus</span><span class="plain">(</span><span class="identifier">rb</span><span class="plain">) == </span><span class="constant">PARAMETER_FOCUS</span><span class="plain">) </span><span class="identifier">par</span><span class="plain"> = </span><span class="identifier">TRUE</span><span class="plain">;</span>
|
||||
<span class="identifier">LOGIF</span><span class="plain">(</span><span class="identifier">RULEBOOK_COMPILATION</span><span class="plain">, </span><span class="string">"Compiling rulebook: %W = %n (in $X)\</span><span class="plain">n</span><span class="string">"</span><span class="plain">,</span>
|
||||
<span class="identifier">rb</span><span class="plain">-</span><span class="element">>primary_name</span><span class="plain">, </span><span class="identifier">rb</span><span class="plain">-</span><span class="element">>rb_iname</span><span class="plain">, </span><span class="identifier">rb</span><span class="plain">-</span><span class="element">>rb_iname</span><span class="plain">-</span><span class="element">>eventual_owner</span><span class="plain">);</span>
|
||||
<span class="identifier">rb</span><span class="plain">-</span><span class="element">>primary_name</span><span class="plain">, </span><span class="identifier">rb</span><span class="plain">-</span><span class="element">>rb_iname</span><span class="plain">, </span><span class="functiontext">Packaging::home_of</span><span class="plain">(</span><span class="identifier">rb</span><span class="plain">-</span><span class="element">>rb_iname</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">rb</span><span class="plain">-</span><span class="element">>rb_iname</span><span class="plain">);</span>
|
||||
<span class="functiontext">Rules::Bookings::list_compile</span><span class="plain">(</span><span class="identifier">rb</span><span class="plain">-</span><span class="element">>rule_list</span><span class="plain">, </span><span class="identifier">rb</span><span class="plain">-</span><span class="element">>rb_iname</span><span class="plain">, </span><span class="identifier">act</span><span class="plain">, </span><span class="identifier">par</span><span class="plain">);</span>
|
||||
<span class="functiontext">Packaging::exit</span><span class="plain">(</span><span class="identifier">save</span><span class="plain">);</span>
|
||||
|
|
|
@ -610,13 +610,13 @@ response to "requests". All other phrases are compiled just once.
|
|||
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">effect</span><span class="plain"> = </span><span class="functiontext">Phrases::Usage::get_effect</span><span class="plain">(&(</span><span class="identifier">ph</span><span class="plain">-</span><span class="element">>usage_data</span><span class="plain">));</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">effect</span><span class="plain"> == </span><span class="constant">RULE_NOT_IN_RULEBOOK_EFF</span><span class="plain">) </span><span class="identifier">effect</span><span class="plain"> = </span><span class="constant">RULE_IN_RULEBOOK_EFF</span><span class="plain">;</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">effect</span><span class="plain"> == </span><span class="constant">TO_PHRASE_EFF</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">req</span><span class="plain">-</span><span class="element">>req_iname</span><span class="plain">-</span><span class="element">>eventual_owner</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">req</span><span class="plain">-</span><span class="element">>req_iname</span><span class="plain">);</span>
|
||||
<span class="functiontext">Routines::Compile::routine</span><span class="plain">(</span><span class="identifier">ph</span><span class="plain">, </span><span class="identifier">legible</span><span class="plain">, </span><span class="identifier">req</span><span class="plain">, </span><span class="identifier">acl</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="cwebmacro">Move along the progress bar if it's this phrase's first compilation</span> <span class="cwebmacronumber">12.1</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">ph</span><span class="plain">-</span><span class="element">>at_least_one_compiled_form_needed</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="functiontext">Phrases::iname</span><span class="plain">(</span><span class="identifier">ph</span><span class="plain">)-</span><span class="element">>eventual_owner</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="functiontext">Phrases::iname</span><span class="plain">(</span><span class="identifier">ph</span><span class="plain">));</span>
|
||||
<span class="functiontext">Routines::Compile::routine</span><span class="plain">(</span><span class="identifier">ph</span><span class="plain">, </span><span class="identifier">legible</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">, </span><span class="identifier">acl</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="cwebmacro">Move along the progress bar if it's this phrase's first compilation</span> <span class="cwebmacronumber">12.1</span>><span class="plain">;</span>
|
||||
|
|
|
@ -36,7 +36,6 @@ generates labels <code class="display"><span class="extract">L_0</span></code>,
|
|||
|
||||
<pre class="display">
|
||||
<span class="reserved">typedef</span><span class="plain"> </span><span class="reserved">struct</span><span class="plain"> </span><span class="reserved">label_namespace</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">base_prefix</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">label_prefix</span><span class="plain">;</span>
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">label_counter</span><span class="plain">; </span> <span class="comment">next free ID number for this label namespace</span>
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">allocate_storage</span><span class="plain">; </span> <span class="comment">number of words of memory to reserve for each label</span>
|
||||
|
@ -63,9 +62,7 @@ reserves no memory.
|
|||
<span class="string">"a label namespace prefix is too long"</span><span class="plain">,</span>
|
||||
<span class="string">"and should be shortened to a few alphabetic characters."</span><span class="plain">);</span>
|
||||
<span class="reserved">label_namespace</span><span class="plain"> *</span><span class="identifier">lns</span><span class="plain"> = </span><span class="identifier">CREATE</span><span class="plain">(</span><span class="reserved">label_namespace</span><span class="plain">);</span>
|
||||
<span class="identifier">lns</span><span class="plain">-</span><span class="element">>base_prefix</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">lns</span><span class="plain">-</span><span class="element">>label_prefix</span><span class="plain"> = </span><span class="identifier">Str::new</span><span class="plain">();</span>
|
||||
<span class="identifier">WRITE_TO</span><span class="plain">(</span><span class="identifier">lns</span><span class="plain">-</span><span class="element">>label_prefix</span><span class="plain">, </span><span class="string">"%S%S"</span><span class="plain">, </span><span class="identifier">cm</span><span class="plain">-</span><span class="element">>namespace</span><span class="plain">-</span><span class="element">>namespace_prefix</span><span class="plain">, </span><span class="identifier">name</span><span class="plain">);</span>
|
||||
<span class="identifier">lns</span><span class="plain">-</span><span class="element">>label_prefix</span><span class="plain"> = </span><span class="identifier">Str::duplicate</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">PR2</span><span class="plain"> = </span><span class="functiontext">Hierarchy::synoptic_package</span><span class="plain">(</span><span class="constant">LABEL_STORAGES_HAP</span><span class="plain">);</span>
|
||||
<span class="identifier">lns</span><span class="plain">-</span><span class="element">>label_storage_iname</span><span class="plain"> = </span><span class="functiontext">Hierarchy::make_iname_in</span><span class="plain">(</span><span class="constant">LABEL_ASSOCIATED_STORAGE_HL</span><span class="plain">, </span><span class="identifier">PR2</span><span class="plain">);</span>
|
||||
|
||||
|
@ -91,7 +88,7 @@ optimising.
|
|||
<span class="reserved">label_namespace</span><span class="plain"> *</span><span class="functiontext">JumpLabels::namespace_by_prefix</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">compilation_module</span><span class="plain"> *</span><span class="identifier">cm</span><span class="plain">) {</span>
|
||||
<span class="reserved">label_namespace</span><span class="plain"> *</span><span class="identifier">lns</span><span class="plain">;</span>
|
||||
<span class="identifier">LOOP_OVER</span><span class="plain">(</span><span class="identifier">lns</span><span class="plain">, </span><span class="reserved">label_namespace</span><span class="plain">)</span>
|
||||
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">lns</span><span class="plain">-</span><span class="element">>module</span><span class="plain"> == </span><span class="identifier">cm</span><span class="plain">) && (</span><span class="identifier">Str::eq</span><span class="plain">(</span><span class="identifier">name</span><span class="plain">, </span><span class="identifier">lns</span><span class="plain">-</span><span class="element">>base_prefix</span><span class="plain">)))</span>
|
||||
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">lns</span><span class="plain">-</span><span class="element">>module</span><span class="plain"> == </span><span class="identifier">cm</span><span class="plain">) && (</span><span class="identifier">Str::eq</span><span class="plain">(</span><span class="identifier">name</span><span class="plain">, </span><span class="identifier">lns</span><span class="plain">-</span><span class="element">>label_prefix</span><span class="plain">)))</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">lns</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>
|
||||
|
@ -175,9 +172,6 @@ specification <code class="display"><span class="extract">--> 0</span></code>
|
|||
<span class="functiontext">Packaging::exit</span><span class="plain">(</span><span class="identifier">save</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="plain">}</span>
|
||||
|
||||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">JumpLabels::reset</span><span class="plain">(</span><span class="reserved">void</span><span class="plain">) {</span>
|
||||
<span class="plain">}</span>
|
||||
</pre>
|
||||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
@ -186,8 +180,6 @@ specification <code class="display"><span class="extract">--> 0</span></code>
|
|||
|
||||
<p class="endnote">The function JumpLabels::compile_necessary_storage is used in 1/mr (<a href="1-mr.html#SP4_14">§4.14</a>).</p>
|
||||
|
||||
<p class="endnote">The function JumpLabels::reset is used in 26/rt (<a href="26-rt.html#SP3">§3</a>).</p>
|
||||
|
||||
<hr class="tocbar">
|
||||
<ul class="toc"><li><a href="26-lt.html">Back to 'List Together'</a></li><li><a href="26-ct.html">Continue with 'Compiled Text'</a></li></ul><hr class="tocbar">
|
||||
<!--End of weave-->
|
||||
|
|
|
@ -61,14 +61,13 @@ we need to keep track of:
|
|||
<pre class="display">
|
||||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Routines::begin_framed</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">ph_stack_frame</span><span class="plain"> *</span><span class="identifier">phsf</span><span class="plain">) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">iname</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"no iname for routine"</span><span class="plain">);</span>
|
||||
<span class="reserved">package_request</span><span class="plain"> *</span><span class="identifier">R</span><span class="plain"> = </span><span class="identifier">iname</span><span class="plain">-</span><span class="element">>eventual_owner</span><span class="plain">;</span>
|
||||
<span class="reserved">package_request</span><span class="plain"> *</span><span class="identifier">R</span><span class="plain"> = </span><span class="functiontext">Packaging::home_of</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">R</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) || (</span><span class="identifier">R</span><span class="plain"> == </span><span class="functiontext">Hierarchy::main</span><span class="plain">())) {</span>
|
||||
<span class="identifier">LOG</span><span class="plain">(</span><span class="string">"Routine outside of package: ................................................ %n\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">iname</span><span class="plain">);</span>
|
||||
<span class="identifier">WRITE_TO</span><span class="plain">(</span><span class="identifier">STDERR</span><span class="plain">, </span><span class="string">"Routine outside of package: %n\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">iname</span><span class="plain">);</span>
|
||||
<span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"routine outside of package"</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="identifier">currently_compiling_iname</span><span class="plain"> = </span><span class="identifier">iname</span><span class="plain">;</span>
|
||||
<span class="functiontext">JumpLabels::reset</span><span class="plain">();</span>
|
||||
|
||||
<<span class="cwebmacro">Prepare a suitable stack frame</span> <span class="cwebmacronumber">3.1</span>><span class="plain">;</span>
|
||||
|
||||
|
@ -131,7 +130,7 @@ create a new nonphrasal stack frame.
|
|||
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">currently_compiling_in_frame</span><span class="plain">-</span><span class="element">>allocated_pointers</span><span class="plain">) ||</span>
|
||||
<span class="plain">(</span><span class="identifier">currently_compiling_in_frame</span><span class="plain">-</span><span class="element">>no_formal_parameters_needed</span><span class="plain"> > 0)) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">Packaging::houseed_in_function</span><span class="plain">(</span><span class="identifier">public_name</span><span class="plain">)) {</span>
|
||||
<span class="identifier">kernel_name</span><span class="plain"> = </span><span class="functiontext">Hierarchy::make_kernel_iname</span><span class="plain">(</span><span class="identifier">public_name</span><span class="plain">-</span><span class="element">>eventual_owner</span><span class="plain">);</span>
|
||||
<span class="identifier">kernel_name</span><span class="plain"> = </span><span class="functiontext">Hierarchy::make_kernel_iname</span><span class="plain">(</span><span class="functiontext">Packaging::home_of</span><span class="plain">(</span><span class="identifier">public_name</span><span class="plain">));</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">"routine not housed in function"</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
|
|
|
@ -14,10 +14,10 @@
|
|||
|
||||
<pre class="display">
|
||||
<span class="reserved">typedef</span><span class="plain"> </span><span class="reserved">struct</span><span class="plain"> </span><span class="reserved">compilation_module</span><span class="plain"> {</span>
|
||||
<span class="reserved">struct</span><span class="plain"> </span><span class="reserved">inter_namespace</span><span class="plain"> *</span><span class="identifier">namespace</span><span class="plain">;</span>
|
||||
<span class="reserved">struct</span><span class="plain"> </span><span class="reserved">package_request</span><span class="plain"> *</span><span class="identifier">resources</span><span class="plain">;</span>
|
||||
<span class="reserved">struct</span><span class="plain"> </span><span class="reserved">submodule_requests</span><span class="plain"> </span><span class="identifier">subpackages</span><span class="plain">;</span>
|
||||
<span class="reserved">struct</span><span class="plain"> </span><span class="identifier">parse_node</span><span class="plain"> *</span><span class="identifier">hanging_from</span><span class="plain">;</span>
|
||||
<span class="reserved">struct</span><span class="plain"> </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">abbreviation</span><span class="plain">;</span>
|
||||
<span class="identifier">MEMORY_MANAGEMENT</span>
|
||||
<span class="plain">} </span><span class="reserved">compilation_module</span><span class="plain">;</span>
|
||||
|
||||
|
@ -27,7 +27,7 @@
|
|||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The structure compilation_module is accessed in 26/jl, 27/pc, 27/in and here.</p>
|
||||
<p class="endnote">The structure compilation_module is accessed in 27/pc and here.</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP2"></a><b>§2. </b></p>
|
||||
|
||||
|
@ -61,18 +61,14 @@
|
|||
<span class="reserved">compilation_module</span><span class="plain"> *</span><span class="identifier">C</span><span class="plain"> = </span><span class="identifier">CREATE</span><span class="plain">(</span><span class="reserved">compilation_module</span><span class="plain">);</span>
|
||||
<span class="identifier">C</span><span class="plain">-</span><span class="element">>hanging_from</span><span class="plain"> = </span><span class="identifier">from</span><span class="plain">;</span>
|
||||
<span class="identifier">C</span><span class="plain">-</span><span class="element">>resources</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">C</span><span class="plain">-></span><span class="identifier">allocation_id</span><span class="plain"> == 0) </span><span class="identifier">C</span><span class="plain">-</span><span class="element">>namespace</span><span class="plain"> = </span><span class="functiontext">InterNames::root</span><span class="plain">();</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">C</span><span class="plain">-></span><span class="identifier">allocation_id</span><span class="plain"> == 0) </span><span class="identifier">C</span><span class="plain">-</span><span class="element">>abbreviation</span><span class="plain"> = </span><span class="identifier">I</span><span class="string">"root"</span><span class="plain">;</span>
|
||||
<span class="reserved">else</span><span class="plain"> {</span>
|
||||
<span class="identifier">C</span><span class="plain">-</span><span class="element">>abbreviation</span><span class="plain"> = </span><span class="identifier">Str::new</span><span class="plain">();</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">from</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"unlocated CM"</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">Modules::markable</span><span class="plain">(</span><span class="identifier">from</span><span class="plain">) == </span><span class="identifier">FALSE</span><span class="plain">) </span><span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"inappropriate CM"</span><span class="plain">);</span>
|
||||
<span class="identifier">TEMPORARY_TEXT</span><span class="plain">(</span><span class="identifier">pfx</span><span class="plain">);</span>
|
||||
<span class="reserved">char</span><span class="plain"> *</span><span class="identifier">x</span><span class="plain"> = </span><span class="string">""</span><span class="plain">;</span>
|
||||
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">C</span><span class="plain">-></span><span class="identifier">allocation_id</span><span class="plain"> == 1) && (</span><span class="identifier">export_mode</span><span class="plain">)) </span><span class="identifier">x</span><span class="plain"> = </span><span class="string">"x"</span><span class="plain">;</span>
|
||||
<span class="identifier">WRITE_TO</span><span class="plain">(</span><span class="identifier">pfx</span><span class="plain">, </span><span class="string">"m%s%d"</span><span class="plain">, </span><span class="identifier">x</span><span class="plain">, </span><span class="identifier">C</span><span class="plain">-></span><span class="identifier">allocation_id</span><span class="plain">);</span>
|
||||
<span class="identifier">C</span><span class="plain">-</span><span class="element">>namespace</span><span class="plain"> = </span><span class="functiontext">InterNames::new_namespace</span><span class="plain">(</span><span class="identifier">pfx</span><span class="plain">);</span>
|
||||
<span class="identifier">Str::clear</span><span class="plain">(</span><span class="identifier">C</span><span class="plain">-</span><span class="element">>namespace</span><span class="plain">-</span><span class="element">>unmarked_prefix</span><span class="plain">);</span>
|
||||
<span class="identifier">WRITE_TO</span><span class="plain">(</span><span class="identifier">C</span><span class="plain">-</span><span class="element">>namespace</span><span class="plain">-</span><span class="element">>unmarked_prefix</span><span class="plain">, </span><span class="string">"m%d"</span><span class="plain">, </span><span class="identifier">C</span><span class="plain">-></span><span class="identifier">allocation_id</span><span class="plain">);</span>
|
||||
<span class="identifier">DISCARD_TEXT</span><span class="plain">(</span><span class="identifier">pfx</span><span class="plain">);</span>
|
||||
<span class="identifier">WRITE_TO</span><span class="plain">(</span><span class="identifier">C</span><span class="plain">-</span><span class="element">>abbreviation</span><span class="plain">, </span><span class="string">"m%s%d"</span><span class="plain">, </span><span class="identifier">x</span><span class="plain">, </span><span class="identifier">C</span><span class="plain">-></span><span class="identifier">allocation_id</span><span class="plain">);</span>
|
||||
<span class="identifier">ParseTree::set_module</span><span class="plain">(</span><span class="identifier">from</span><span class="plain">, </span><span class="identifier">C</span><span class="plain">);</span>
|
||||
<span class="functiontext">Modules::propagate_downwards</span><span class="plain">(</span><span class="identifier">from</span><span class="plain">-</span><span class="element">>down</span><span class="plain">, </span><span class="identifier">C</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
|
|
|
@ -397,9 +397,9 @@
|
|||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The function Emit::IRS is used in <a href="#SP4">§4</a>, <a href="#SP5">§5</a>, 13/rsfk (<a href="13-rsfk.html#SP5">§5</a>), 17/tl (<a href="17-tl.html#SP13">§13</a>), 26/iti (<a href="26-iti.html#SP9">§9</a>), 27/pc (<a href="27-pc.html#SP2">§2</a>, <a href="27-pc.html#SP6">§6</a>), 27/in (<a href="27-in.html#SP2">§2</a>).</p>
|
||||
<p class="endnote">The function Emit::IRS is used in <a href="#SP4">§4</a>, <a href="#SP5">§5</a>, 13/rsfk (<a href="13-rsfk.html#SP5">§5</a>), 17/tl (<a href="17-tl.html#SP13">§13</a>), 26/iti (<a href="26-iti.html#SP9">§9</a>), 27/pc (<a href="27-pc.html#SP2">§2</a>, <a href="27-pc.html#SP6">§6</a>), 27/in (<a href="27-in.html#SP8">§8</a>).</p>
|
||||
|
||||
<p class="endnote">The function Emit::repository is used in <a href="#SP4">§4</a>, <a href="#SP5">§5</a>, 1/mr (<a href="1-mr.html#SP4_15">§4.15</a>), 21/rl (<a href="21-rl.html#SP9">§9</a>), 27/pc (<a href="27-pc.html#SP2">§2</a>, <a href="27-pc.html#SP4">§4</a>, <a href="27-pc.html#SP6">§6</a>), 27/in (<a href="27-in.html#SP2">§2</a>).</p>
|
||||
<p class="endnote">The function Emit::repository is used in <a href="#SP4">§4</a>, <a href="#SP5">§5</a>, 1/mr (<a href="1-mr.html#SP4_15">§4.15</a>), 21/rl (<a href="21-rl.html#SP9">§9</a>), 27/pc (<a href="27-pc.html#SP2">§2</a>, <a href="27-pc.html#SP4">§4</a>, <a href="27-pc.html#SP6">§6</a>), 27/in (<a href="27-in.html#SP8">§8</a>).</p>
|
||||
|
||||
<p class="endnote">The function Emit::move_write_position is used in 27/pc (<a href="27-pc.html#SP6">§6</a>).</p>
|
||||
|
||||
|
@ -551,7 +551,7 @@ insert them into the Inter stream close to the top.
|
|||
|
||||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Emit::kind</span><span class="plain">(</span><span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">iname</span><span class="plain">, </span><span class="identifier">inter_t</span><span class="plain"> </span><span class="identifier">TID</span><span class="plain">, </span><span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">super</span><span class="plain">,</span>
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">constructor</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">arity</span><span class="plain">, </span><span class="identifier">kind</span><span class="plain"> **</span><span class="identifier">operand_kinds</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">iname</span><span class="plain">-</span><span class="element">>eventual_owner</span><span class="plain">);</span>
|
||||
<span class="reserved">packaging_state</span><span class="plain"> </span><span class="identifier">save</span><span class="plain"> = </span><span class="functiontext">Packaging::enter_home_of</span><span class="plain">(</span><span class="identifier">iname</span><span class="plain">);</span>
|
||||
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">S</span><span class="plain"> = </span><span class="functiontext">InterNames::to_symbol</span><span class="plain">(</span><span class="identifier">iname</span><span class="plain">);</span>
|
||||
<span class="identifier">inter_t</span><span class="plain"> </span><span class="identifier">SID</span><span class="plain"> = 0;</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">S</span><span class="plain">) </span><span class="identifier">SID</span><span class="plain"> = </span><span class="identifier">Inter::SymbolsTables::id_from_IRS_and_symbol</span><span class="plain">(</span><span class="identifier">default_bookmark</span><span class="plain">, </span><span class="identifier">S</span><span class="plain">);</span>
|
||||
|
@ -610,7 +610,7 @@ insert them into the Inter stream close to the top.
|
|||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Emit::instance_permission</span><span class="plain">(</span><span class="reserved">property</span><span class="plain"> *</span><span class="identifier">prn</span><span class="plain">, </span><span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">inst_iname</span><span class="plain">) {</span>
|
||||
<span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">prop_name</span><span class="plain"> = </span><span class="functiontext">Properties::iname</span><span class="plain">(</span><span class="identifier">prn</span><span class="plain">);</span>
|
||||
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">inst_name</span><span class="plain"> = </span><span class="functiontext">InterNames::to_symbol</span><span class="plain">(</span><span class="identifier">inst_iname</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">inst_iname</span><span class="plain">-</span><span class="element">>eventual_owner</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">inst_iname</span><span class="plain">);</span>
|
||||
<span class="functiontext">Emit::basic_permission</span><span class="plain">(</span><span class="identifier">default_bookmark</span><span class="plain">, </span><span class="identifier">prop_name</span><span class="plain">, </span><span class="identifier">inst_name</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">);</span>
|
||||
<span class="functiontext">Packaging::exit</span><span class="plain">(</span><span class="identifier">save</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
|
@ -1028,7 +1028,7 @@ insert them into the Inter stream close to the top.
|
|||
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">Emit::IRS</span><span class="plain">() == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"no inter repository"</span><span class="plain">);</span>
|
||||
<span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">block_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="functiontext">Packaging::houseed_in_function</span><span class="plain">(</span><span class="identifier">iname</span><span class="plain">))</span>
|
||||
<span class="identifier">block_iname</span><span class="plain"> = </span><span class="functiontext">Hierarchy::make_block_iname</span><span class="plain">(</span><span class="identifier">iname</span><span class="plain">-</span><span class="element">>eventual_owner</span><span class="plain">);</span>
|
||||
<span class="identifier">block_iname</span><span class="plain"> = </span><span class="functiontext">Hierarchy::make_block_iname</span><span class="plain">(</span><span class="functiontext">Packaging::home_of</span><span class="plain">(</span><span class="identifier">iname</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">"routine outside function package"</span><span class="plain">);</span>
|
||||
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">rsymb</span><span class="plain"> = </span><span class="functiontext">Emit::package</span><span class="plain">(</span><span class="identifier">block_iname</span><span class="plain">, </span><span class="identifier">code_packagetype</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">);</span>
|
||||
|
||||
|
@ -1191,17 +1191,17 @@ insert them into the Inter stream close to the top.
|
|||
|
||||
<p class="endnote">The function Emit::seek_symbol is used in 13/rsfk (<a href="13-rsfk.html#SP5">§5</a>), 27/is (<a href="27-is.html#SP32">§32</a>).</p>
|
||||
|
||||
<p class="endnote">The function Emit::new_symbol is used in <a href="#SP3">§3</a>, 27/pc (<a href="27-pc.html#SP2">§2</a>), 27/in (<a href="27-in.html#SP2">§2</a>).</p>
|
||||
<p class="endnote">The function Emit::new_symbol is used in <a href="#SP3">§3</a>, 27/pc (<a href="27-pc.html#SP2">§2</a>), 27/in (<a href="27-in.html#SP8">§8</a>).</p>
|
||||
|
||||
<p class="endnote">The function Emit::holding_symbol is used in 13/rsfk (<a href="13-rsfk.html#SP5">§5</a>).</p>
|
||||
|
||||
<p class="endnote">The function Emit::new_local_symbol appears nowhere else.</p>
|
||||
|
||||
<p class="endnote">The function Emit::annotate_symbol_t is used in 27/in (<a href="27-in.html#SP2">§2</a>).</p>
|
||||
<p class="endnote">The function Emit::annotate_symbol_t is used in 27/in (<a href="27-in.html#SP8">§8</a>).</p>
|
||||
|
||||
<p class="endnote">The function Emit::annotate_symbol_w is used in 27/in (<a href="27-in.html#SP2">§2</a>).</p>
|
||||
<p class="endnote">The function Emit::annotate_symbol_w is used in 27/in (<a href="27-in.html#SP8">§8</a>).</p>
|
||||
|
||||
<p class="endnote">The function Emit::annotate_symbol_i is used in <a href="#SP3">§3</a>, 27/pc (<a href="27-pc.html#SP2">§2</a>), 27/in (<a href="27-in.html#SP2">§2</a>).</p>
|
||||
<p class="endnote">The function Emit::annotate_symbol_i is used in <a href="#SP3">§3</a>, 27/pc (<a href="27-pc.html#SP2">§2</a>), 27/in (<a href="27-in.html#SP8">§8</a>).</p>
|
||||
|
||||
<p class="endnote">The function Emit::annotate_iname_i appears nowhere else.</p>
|
||||
|
||||
|
|
|
@ -122,7 +122,7 @@
|
|||
<span class="reserved">named_resource_location</span><span class="plain"> *</span><span class="identifier">nrl</span><span class="plain"> = </span><span class="functiontext">HierarchyLocations::new</span><span class="plain">();</span>
|
||||
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">>access_number</span><span class="plain"> = </span><span class="identifier">id</span><span class="plain">;</span>
|
||||
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">>access_name</span><span class="plain"> = </span><span class="identifier">Str::duplicate</span><span class="plain">(</span><span class="identifier">name</span><span class="plain">);</span>
|
||||
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">>requirements</span><span class="plain"> = </span><span class="functiontext">HierarchyLocations::this_package</span><span class="plain">(</span><span class="identifier">iname</span><span class="plain">-</span><span class="element">>eventual_owner</span><span class="plain">);</span>
|
||||
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">>requirements</span><span class="plain"> = </span><span class="functiontext">HierarchyLocations::this_package</span><span class="plain">(</span><span class="functiontext">Packaging::home_of</span><span class="plain">(</span><span class="identifier">iname</span><span class="plain">));</span>
|
||||
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">>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>
|
||||
|
@ -188,7 +188,7 @@
|
|||
<span class="plain">}</span>
|
||||
|
||||
<span class="reserved">inter_name</span><span class="plain"> *</span><span class="functiontext">HierarchyLocations::function</span><span class="plain">(</span><span class="reserved">package_request</span><span class="plain"> *</span><span class="identifier">R</span><span class="plain">, </span><span class="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">trans</span><span class="plain">) {</span>
|
||||
<span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">iname</span><span class="plain"> = </span><span class="functiontext">Packaging::function</span><span class="plain">(</span><span class="functiontext">InterNames::one_off</span><span class="plain">(</span><span class="identifier">name</span><span class="plain">, </span><span class="identifier">R</span><span class="plain">), </span><span class="identifier">R</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">);</span>
|
||||
<span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">iname</span><span class="plain"> = </span><span class="functiontext">Packaging::function</span><span class="plain">(</span><span class="functiontext">InterNames::explicitly_named</span><span class="plain">(</span><span class="identifier">name</span><span class="plain">, </span><span class="identifier">R</span><span class="plain">), </span><span class="identifier">R</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">trans</span><span class="plain">) </span><span class="functiontext">InterNames::change_translation</span><span class="plain">(</span><span class="identifier">iname</span><span class="plain">, </span><span class="identifier">trans</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>
|
||||
|
@ -203,21 +203,21 @@
|
|||
<span class="plain">}</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">>requirements.this_mundane_package</span><span class="plain"> == </span><span class="functiontext">Hierarchy::template</span><span class="plain">()) {</span>
|
||||
<span class="reserved">packaging_state</span><span class="plain"> </span><span class="identifier">save</span><span class="plain"> = </span><span class="functiontext">Packaging::enter</span><span class="plain">(</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">>requirements.this_mundane_package</span><span class="plain">);</span>
|
||||
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">>equates_to_iname</span><span class="plain"> = </span><span class="functiontext">InterNames::one_off</span><span class="plain">(</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">>access_name</span><span class="plain">, </span><span class="functiontext">Hierarchy::template</span><span class="plain">());</span>
|
||||
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">>equates_to_iname</span><span class="plain"> = </span><span class="functiontext">InterNames::explicitly_named</span><span class="plain">(</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">>access_name</span><span class="plain">, </span><span class="functiontext">Hierarchy::template</span><span class="plain">());</span>
|
||||
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">>equates_to_iname</span><span class="plain">-</span><span class="element">>symbol</span><span class="plain"> = </span><span class="functiontext">Emit::extern</span><span class="plain">(</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">>access_name</span><span class="plain">, </span><span class="identifier">K_value</span><span class="plain">);</span>
|
||||
<span class="functiontext">Packaging::exit</span><span class="plain">(</span><span class="identifier">save</span><span class="plain">);</span>
|
||||
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> </span><span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Str::len</span><span class="plain">(</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">>function_package_name</span><span class="plain">) > 0) {</span>
|
||||
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">>equates_to_iname</span><span class="plain"> = </span><span class="functiontext">Packaging::function_text</span><span class="plain">(</span>
|
||||
<span class="functiontext">InterNames::one_off</span><span class="plain">(</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">>function_package_name</span><span class="plain">, </span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">>requirements.this_mundane_package</span><span class="plain">),</span>
|
||||
<span class="functiontext">InterNames::explicitly_named</span><span class="plain">(</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">>function_package_name</span><span class="plain">, </span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">>requirements.this_mundane_package</span><span class="plain">),</span>
|
||||
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">>requirements.this_mundane_package</span><span class="plain">,</span>
|
||||
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">>access_name</span><span class="plain">);</span>
|
||||
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> </span><span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Str::len</span><span class="plain">(</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">>datum_package_name</span><span class="plain">) > 0) {</span>
|
||||
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">>equates_to_iname</span><span class="plain"> = </span><span class="functiontext">Packaging::datum_text</span><span class="plain">(</span>
|
||||
<span class="functiontext">InterNames::one_off</span><span class="plain">(</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">>datum_package_name</span><span class="plain">, </span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">>requirements.this_mundane_package</span><span class="plain">),</span>
|
||||
<span class="functiontext">InterNames::explicitly_named</span><span class="plain">(</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">>datum_package_name</span><span class="plain">, </span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">>requirements.this_mundane_package</span><span class="plain">),</span>
|
||||
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">>requirements.this_mundane_package</span><span class="plain">,</span>
|
||||
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">>access_name</span><span class="plain">);</span>
|
||||
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> </span><span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">>requirements.this_mundane_package</span><span class="plain">) && (</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">>equates_to_iname</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">)) {</span>
|
||||
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">>equates_to_iname</span><span class="plain"> = </span><span class="functiontext">InterNames::one_off</span><span class="plain">(</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">>access_name</span><span class="plain">, </span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">>requirements.this_mundane_package</span><span class="plain">);</span>
|
||||
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">>equates_to_iname</span><span class="plain"> = </span><span class="functiontext">InterNames::explicitly_named</span><span class="plain">(</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">>access_name</span><span class="plain">, </span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">>requirements.this_mundane_package</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
|
||||
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">>equates_to_iname</span><span class="plain"> = </span><span class="functiontext">Hierarchy::post_process</span><span class="plain">(</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">>access_number</span><span class="plain">, </span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">>equates_to_iname</span><span class="plain">);</span>
|
||||
|
@ -255,22 +255,13 @@
|
|||
<span class="identifier">TEMPORARY_TEXT</span><span class="plain">(</span><span class="identifier">T</span><span class="plain">);</span>
|
||||
<span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">temp_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">derive_from</span><span class="plain">) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">>trans.faux_letter</span><span class="plain"> >= 0)</span>
|
||||
<span class="identifier">temp_iname</span><span class="plain"> = </span><span class="functiontext">InterNames::letter_parametrised_name_f</span><span class="plain">(</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">>trans.name_generator</span><span class="plain">, </span><span class="identifier">derive_from</span><span class="plain">, </span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">>trans.faux_letter</span><span class="plain">, </span><span class="identifier">P</span><span class="plain">);</span>
|
||||
<span class="reserved">else</span>
|
||||
<span class="identifier">temp_iname</span><span class="plain"> = </span><span class="functiontext">InterNames::new_derived_f</span><span class="plain">(</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">>trans.name_generator</span><span class="plain">, </span><span class="identifier">derive_from</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">>trans.localise</span><span class="plain">) {</span>
|
||||
<span class="identifier">temp_iname</span><span class="plain"> = </span><span class="functiontext">InterNames::new_in_f</span><span class="plain">(</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">>trans.name_generator</span><span class="plain">, </span><span class="identifier">C</span><span class="plain">, </span><span class="identifier">fix</span><span class="plain">);</span>
|
||||
<span class="identifier">temp_iname</span><span class="plain"> = </span><span class="functiontext">InterNames::derived</span><span class="plain">(</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">>trans.name_generator</span><span class="plain">, </span><span class="identifier">derive_from</span><span class="plain">, </span><span class="identifier">W</span><span class="plain">);</span>
|
||||
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> {</span>
|
||||
<span class="identifier">temp_iname</span><span class="plain"> = </span><span class="functiontext">InterNames::new_f</span><span class="plain">(</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">>trans.name_generator</span><span class="plain">, </span><span class="identifier">fix</span><span class="plain">);</span>
|
||||
<span class="identifier">temp_iname</span><span class="plain"> = </span><span class="functiontext">InterNames::generated</span><span class="plain">(</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">>trans.name_generator</span><span class="plain">, </span><span class="identifier">fix</span><span class="plain">, </span><span class="identifier">W</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="reserved">if</span><span class="plain"> (!</span><span class="identifier">Wordings::empty</span><span class="plain">(</span><span class="identifier">W</span><span class="plain">)) {</span>
|
||||
<span class="functiontext">InterNames::attach_memo</span><span class="plain">(</span><span class="identifier">temp_iname</span><span class="plain">, </span><span class="identifier">W</span><span class="plain">);</span>
|
||||
<span class="identifier">W</span><span class="plain"> = </span><span class="identifier">EMPTY_WORDING</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="identifier">WRITE_TO</span><span class="plain">(</span><span class="identifier">T</span><span class="plain">, </span><span class="string">"%n"</span><span class="plain">, </span><span class="identifier">temp_iname</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">>trans.faux_letter</span><span class="plain"> >= 0) </span><span class="identifier">iname</span><span class="plain"> = </span><span class="identifier">temp_iname</span><span class="plain">;</span>
|
||||
<span class="reserved">else</span><span class="plain"> </span><<span class="cwebmacro">Make the actual iname</span> <span class="cwebmacronumber">1.1</span>><span class="plain">;</span>
|
||||
<<span class="cwebmacro">Make the actual iname</span> <span class="cwebmacronumber">1.1</span>><span class="plain">;</span>
|
||||
<span class="identifier">DISCARD_TEXT</span><span class="plain">(</span><span class="identifier">T</span><span class="plain">);</span>
|
||||
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> {</span>
|
||||
<span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">T</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
|
||||
|
@ -337,16 +328,13 @@
|
|||
|
||||
<pre class="displaydefn">
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Str::len</span><span class="plain">(</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">>function_package_name</span><span class="plain">) > 0) {</span>
|
||||
<span class="identifier">iname</span><span class="plain"> = </span><span class="functiontext">Packaging::function_text</span><span class="plain">(</span>
|
||||
<span class="functiontext">InterNames::one_off</span><span class="plain">(</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">>function_package_name</span><span class="plain">, </span><span class="identifier">P</span><span class="plain">),</span>
|
||||
<span class="identifier">P</span><span class="plain">,</span>
|
||||
<span class="identifier">NULL</span><span class="plain">);</span>
|
||||
<span class="identifier">iname</span><span class="plain"> = </span><span class="functiontext">Packaging::function</span><span class="plain">(</span>
|
||||
<span class="functiontext">InterNames::explicitly_named</span><span class="plain">(</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">>function_package_name</span><span class="plain">, </span><span class="identifier">P</span><span class="plain">), </span><span class="identifier">P</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">);</span>
|
||||
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">>trans.by_imposition</span><span class="plain">) </span><span class="identifier">iname</span><span class="plain"> = </span><span class="functiontext">InterNames::one_off</span><span class="plain">(</span><span class="identifier">imposed_name</span><span class="plain">, </span><span class="identifier">P</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">>access_name</span><span class="plain">) == 0) </span><span class="identifier">iname</span><span class="plain"> = </span><span class="functiontext">InterNames::one_off</span><span class="plain">(</span><span class="identifier">T</span><span class="plain">, </span><span class="identifier">P</span><span class="plain">);</span>
|
||||
<span class="reserved">else</span><span class="plain"> </span><span class="identifier">iname</span><span class="plain"> = </span><span class="functiontext">InterNames::one_off</span><span class="plain">(</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">>access_name</span><span class="plain">, </span><span class="identifier">P</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">>trans.by_imposition</span><span class="plain">) </span><span class="identifier">iname</span><span class="plain"> = </span><span class="functiontext">InterNames::explicitly_named_with_memo</span><span class="plain">(</span><span class="identifier">imposed_name</span><span class="plain">, </span><span class="identifier">P</span><span class="plain">, </span><span class="identifier">W</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">>access_name</span><span class="plain">) == 0) </span><span class="identifier">iname</span><span class="plain"> = </span><span class="functiontext">InterNames::explicitly_named_with_memo</span><span class="plain">(</span><span class="identifier">T</span><span class="plain">, </span><span class="identifier">P</span><span class="plain">, </span><span class="identifier">W</span><span class="plain">);</span>
|
||||
<span class="reserved">else</span><span class="plain"> </span><span class="identifier">iname</span><span class="plain"> = </span><span class="functiontext">InterNames::explicitly_named_with_memo</span><span class="plain">(</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">>access_name</span><span class="plain">, </span><span class="identifier">P</span><span class="plain">, </span><span class="identifier">W</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="reserved">if</span><span class="plain"> (!</span><span class="identifier">Wordings::empty</span><span class="plain">(</span><span class="identifier">W</span><span class="plain">)) </span><span class="functiontext">InterNames::attach_memo</span><span class="plain">(</span><span class="identifier">iname</span><span class="plain">, </span><span class="identifier">W</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">Str::len</span><span class="plain">(</span><span class="identifier">T</span><span class="plain">) > 0) && (</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">>access_name</span><span class="plain">)) </span><span class="functiontext">InterNames::change_translation</span><span class="plain">(</span><span class="identifier">iname</span><span class="plain">, </span><span class="identifier">T</span><span class="plain">);</span>
|
||||
</pre>
|
||||
|
||||
|
@ -374,7 +362,7 @@
|
|||
<span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"subpackage not in enclosing superpackage"</span><span class="plain">);</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">"NRL accessed inappropriately"</span><span class="plain">);</span>
|
||||
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="functiontext">Packaging::request</span><span class="plain">(</span><span class="functiontext">InterNames::one_off</span><span class="plain">(</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">>access_name</span><span class="plain">, </span><span class="identifier">P</span><span class="plain">), </span><span class="identifier">P</span><span class="plain">, </span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">>package_type</span><span class="plain">);</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="functiontext">Packaging::request</span><span class="plain">(</span><span class="functiontext">InterNames::explicitly_named</span><span class="plain">(</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">>access_name</span><span class="plain">, </span><span class="identifier">P</span><span class="plain">), </span><span class="identifier">P</span><span class="plain">, </span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">>package_type</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="reserved">typedef</span><span class="plain"> </span><span class="reserved">struct</span><span class="plain"> </span><span class="reserved">hierarchy_attachment_point</span><span class="plain"> {</span>
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">hap_id</span><span class="plain">;</span>
|
||||
|
|
|
@ -767,8 +767,8 @@
|
|||
<span class="functiontext">HierarchyLocations::func</span><span class="plain">(</span><span class="constant">DEFAULT_CLOSURE_FN_HL</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"default_closure_fn"</span><span class="plain">, </span><span class="functiontext">Translation::uniqued</span><span class="plain">(), </span><span class="identifier">in_kind</span><span class="plain">);</span>
|
||||
<span class="functiontext">HierarchyLocations::func</span><span class="plain">(</span><span class="constant">GPR_FN_HL</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"gpr_fn"</span><span class="plain">, </span><span class="functiontext">Translation::uniqued</span><span class="plain">(), </span><span class="identifier">in_kind</span><span class="plain">);</span>
|
||||
<span class="functiontext">HierarchyLocations::func</span><span class="plain">(</span><span class="constant">INSTANCE_GPR_FN_HL</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"instance_gpr_fn"</span><span class="plain">, </span><span class="functiontext">Translation::uniqued</span><span class="plain">(), </span><span class="identifier">in_kind</span><span class="plain">);</span>
|
||||
<span class="functiontext">HierarchyLocations::con</span><span class="plain">(</span><span class="constant">FIRST_INSTANCE_HL</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">, </span><span class="functiontext">Translation::suffix_special</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"_First"</span><span class="plain">, </span><span class="constant">FIRST_INSTANCE_INDERIV</span><span class="plain">), </span><span class="identifier">in_kind</span><span class="plain">);</span>
|
||||
<span class="functiontext">HierarchyLocations::con</span><span class="plain">(</span><span class="constant">NEXT_INSTANCE_HL</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">, </span><span class="functiontext">Translation::suffix_special</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"_Next"</span><span class="plain">, </span><span class="constant">NEXT_INSTANCE_INDERIV</span><span class="plain">), </span><span class="identifier">in_kind</span><span class="plain">);</span>
|
||||
<span class="functiontext">HierarchyLocations::con</span><span class="plain">(</span><span class="constant">FIRST_INSTANCE_HL</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">, </span><span class="functiontext">Translation::suffix</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"_First"</span><span class="plain">), </span><span class="identifier">in_kind</span><span class="plain">);</span>
|
||||
<span class="functiontext">HierarchyLocations::con</span><span class="plain">(</span><span class="constant">NEXT_INSTANCE_HL</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">, </span><span class="functiontext">Translation::suffix</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"_Next"</span><span class="plain">), </span><span class="identifier">in_kind</span><span class="plain">);</span>
|
||||
<span class="functiontext">HierarchyLocations::con</span><span class="plain">(</span><span class="constant">COUNT_INSTANCE_1_HL</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">, </span><span class="functiontext">Translation::to</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"IK1_Count"</span><span class="plain">), </span><span class="identifier">in_kind</span><span class="plain">);</span>
|
||||
<span class="functiontext">HierarchyLocations::con</span><span class="plain">(</span><span class="constant">COUNT_INSTANCE_2_HL</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">, </span><span class="functiontext">Translation::to</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"IK2_Count"</span><span class="plain">), </span><span class="identifier">in_kind</span><span class="plain">);</span>
|
||||
<span class="functiontext">HierarchyLocations::con</span><span class="plain">(</span><span class="constant">COUNT_INSTANCE_3_HL</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">, </span><span class="functiontext">Translation::to</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"IK3_Count"</span><span class="plain">), </span><span class="identifier">in_kind</span><span class="plain">);</span>
|
||||
|
@ -779,7 +779,7 @@
|
|||
<span class="functiontext">HierarchyLocations::con</span><span class="plain">(</span><span class="constant">COUNT_INSTANCE_8_HL</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">, </span><span class="functiontext">Translation::to</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"IK8_Count"</span><span class="plain">), </span><span class="identifier">in_kind</span><span class="plain">);</span>
|
||||
<span class="functiontext">HierarchyLocations::con</span><span class="plain">(</span><span class="constant">COUNT_INSTANCE_9_HL</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">, </span><span class="functiontext">Translation::to</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"IK9_Count"</span><span class="plain">), </span><span class="identifier">in_kind</span><span class="plain">);</span>
|
||||
<span class="functiontext">HierarchyLocations::con</span><span class="plain">(</span><span class="constant">COUNT_INSTANCE_10_HL</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">, </span><span class="functiontext">Translation::to</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"IK10_Count"</span><span class="plain">), </span><span class="identifier">in_kind</span><span class="plain">);</span>
|
||||
<span class="functiontext">HierarchyLocations::con</span><span class="plain">(</span><span class="constant">COUNT_INSTANCE_HL</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">, </span><span class="functiontext">Translation::suffix_special</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"_Count"</span><span class="plain">, </span><span class="constant">COUNT_INSTANCE_INDERIV</span><span class="plain">), </span><span class="identifier">in_kind</span><span class="plain">);</span>
|
||||
<span class="functiontext">HierarchyLocations::con</span><span class="plain">(</span><span class="constant">COUNT_INSTANCE_HL</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">, </span><span class="functiontext">Translation::suffix</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"_Count"</span><span class="plain">), </span><span class="identifier">in_kind</span><span class="plain">);</span>
|
||||
<span class="functiontext">HierarchyLocations::ap</span><span class="plain">(</span><span class="constant">KIND_INLINE_PROPERTIES_HAP</span><span class="plain">, </span><span class="identifier">in_kind</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"inline_property"</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"_inline_property"</span><span class="plain">);</span>
|
||||
<span class="reserved">location_requirement</span><span class="plain"> </span><span class="identifier">in_kind_inline_property</span><span class="plain"> = </span><span class="functiontext">HierarchyLocations::any_package_of_type</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"_inline_property"</span><span class="plain">);</span>
|
||||
<span class="functiontext">HierarchyLocations::con</span><span class="plain">(</span><span class="constant">KIND_INLINE_PROPERTY_HL</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"inline"</span><span class="plain">, </span><span class="functiontext">Translation::uniqued</span><span class="plain">(), </span><span class="identifier">in_kind_inline_property</span><span class="plain">);</span>
|
||||
|
@ -856,7 +856,7 @@
|
|||
<span class="functiontext">HierarchyLocations::con</span><span class="plain">(</span><span class="constant">CLOSURE_DATA_HL</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"closure_data"</span><span class="plain">, </span><span class="functiontext">Translation::uniqued</span><span class="plain">(), </span><span class="identifier">in_closure</span><span class="plain">);</span>
|
||||
<span class="functiontext">HierarchyLocations::ap</span><span class="plain">(</span><span class="constant">REQUESTS_HAP</span><span class="plain">, </span><span class="identifier">in_to_phrase</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"request"</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"_request"</span><span class="plain">);</span>
|
||||
<span class="reserved">location_requirement</span><span class="plain"> </span><span class="identifier">in_request</span><span class="plain"> = </span><span class="functiontext">HierarchyLocations::any_package_of_type</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"_request"</span><span class="plain">);</span>
|
||||
<span class="functiontext">HierarchyLocations::func</span><span class="plain">(</span><span class="constant">PHRASE_FN_HL</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"phrase_fn"</span><span class="plain">, </span><span class="functiontext">Translation::generate_in</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"REQ"</span><span class="plain">), </span><span class="identifier">in_request</span><span class="plain">);</span>
|
||||
<span class="functiontext">HierarchyLocations::func</span><span class="plain">(</span><span class="constant">PHRASE_FN_HL</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"phrase_fn"</span><span class="plain">, </span><span class="functiontext">Translation::uniqued</span><span class="plain">(), </span><span class="identifier">in_request</span><span class="plain">);</span>
|
||||
|
||||
<span class="reserved">location_requirement</span><span class="plain"> </span><span class="identifier">synoptic_phrases</span><span class="plain"> = </span><span class="functiontext">HierarchyLocations::synoptic_submodule</span><span class="plain">(</span><span class="identifier">phrases</span><span class="plain">);</span>
|
||||
<span class="functiontext">HierarchyLocations::ap</span><span class="plain">(</span><span class="constant">LABEL_STORAGES_HAP</span><span class="plain">, </span><span class="identifier">synoptic_phrases</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"label_storage"</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"_label_storage"</span><span class="plain">);</span>
|
||||
|
@ -1067,8 +1067,8 @@
|
|||
<span class="reserved">location_requirement</span><span class="plain"> </span><span class="identifier">local_rules</span><span class="plain"> = </span><span class="functiontext">HierarchyLocations::local_submodule</span><span class="plain">(</span><span class="identifier">rules</span><span class="plain">);</span>
|
||||
<span class="functiontext">HierarchyLocations::ap</span><span class="plain">(</span><span class="constant">RULES_HAP</span><span class="plain">, </span><span class="identifier">local_rules</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"rule"</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"_rule"</span><span class="plain">);</span>
|
||||
<span class="reserved">location_requirement</span><span class="plain"> </span><span class="identifier">in_rule</span><span class="plain"> = </span><span class="functiontext">HierarchyLocations::any_package_of_type</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"_rule"</span><span class="plain">);</span>
|
||||
<span class="functiontext">HierarchyLocations::func</span><span class="plain">(</span><span class="constant">SHELL_FN_HL</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"shell_fn"</span><span class="plain">, </span><span class="functiontext">Translation::generate_in</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"I6_Rule_Shell"</span><span class="plain">), </span><span class="identifier">in_rule</span><span class="plain">);</span>
|
||||
<span class="functiontext">HierarchyLocations::func</span><span class="plain">(</span><span class="constant">RULE_FN_HL</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"rule_fn"</span><span class="plain">, </span><span class="functiontext">Translation::generate_in</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"R"</span><span class="plain">), </span><span class="identifier">in_rule</span><span class="plain">);</span>
|
||||
<span class="functiontext">HierarchyLocations::func</span><span class="plain">(</span><span class="constant">SHELL_FN_HL</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"shell_fn"</span><span class="plain">, </span><span class="functiontext">Translation::uniqued</span><span class="plain">(), </span><span class="identifier">in_rule</span><span class="plain">);</span>
|
||||
<span class="functiontext">HierarchyLocations::func</span><span class="plain">(</span><span class="constant">RULE_FN_HL</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"rule_fn"</span><span class="plain">, </span><span class="functiontext">Translation::uniqued</span><span class="plain">(), </span><span class="identifier">in_rule</span><span class="plain">);</span>
|
||||
<span class="functiontext">HierarchyLocations::con</span><span class="plain">(</span><span class="constant">EXTERIOR_RULE_HL</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"exterior_rule"</span><span class="plain">, </span><span class="functiontext">Translation::uniqued</span><span class="plain">(), </span><span class="identifier">in_rule</span><span class="plain">);</span>
|
||||
<span class="functiontext">HierarchyLocations::func</span><span class="plain">(</span><span class="constant">RESPONDER_FN_HL</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"responder_fn"</span><span class="plain">, </span><span class="functiontext">Translation::suffix</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"M"</span><span class="plain">), </span><span class="identifier">in_rule</span><span class="plain">);</span>
|
||||
<span class="functiontext">HierarchyLocations::ap</span><span class="plain">(</span><span class="constant">RESPONSES_HAP</span><span class="plain">, </span><span class="identifier">in_rule</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"response"</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"_response"</span><span class="plain">);</span>
|
||||
|
@ -1866,7 +1866,7 @@
|
|||
<span class="plain">}</span>
|
||||
|
||||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Hierarchy::make_available</span><span class="plain">(</span><span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">iname</span><span class="plain">) {</span>
|
||||
<span class="functiontext">HierarchyLocations::make_as</span><span class="plain">(-1, </span><span class="functiontext">InterNames::to_symbol</span><span class="plain">(</span><span class="identifier">iname</span><span class="plain">)-></span><span class="identifier">symbol_name</span><span class="plain">, </span><span class="identifier">iname</span><span class="plain">);</span>
|
||||
<span class="functiontext">HierarchyLocations::make_as</span><span class="plain">(-1, </span><span class="functiontext">InterNames::to_text</span><span class="plain">(</span><span class="identifier">iname</span><span class="plain">), </span><span class="identifier">iname</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
|
||||
<span class="reserved">inter_name</span><span class="plain"> *</span><span class="functiontext">Hierarchy::find_by_name</span><span class="plain">(</span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">name</span><span class="plain">) {</span>
|
||||
|
@ -1882,7 +1882,7 @@
|
|||
<span class="reserved">package_request</span><span class="plain"> *</span><span class="identifier">main_pr</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
|
||||
<span class="reserved">package_request</span><span class="plain"> *</span><span class="functiontext">Hierarchy::main</span><span class="plain">(</span><span class="reserved">void</span><span class="plain">) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">main_pr</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">)</span>
|
||||
<span class="identifier">main_pr</span><span class="plain"> = </span><span class="functiontext">Packaging::request</span><span class="plain">(</span><span class="functiontext">InterNames::one_off</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"main"</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">), </span><span class="identifier">NULL</span><span class="plain">, </span><span class="identifier">plain_ptype</span><span class="plain">);</span>
|
||||
<span class="identifier">main_pr</span><span class="plain"> = </span><span class="functiontext">Packaging::request</span><span class="plain">(</span><span class="functiontext">InterNames::explicitly_named</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"main"</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">), </span><span class="identifier">NULL</span><span class="plain">, </span><span class="identifier">plain_ptype</span><span class="plain">);</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">main_pr</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
|
||||
|
@ -1890,7 +1890,7 @@
|
|||
<span class="reserved">package_request</span><span class="plain"> *</span><span class="functiontext">Hierarchy::resources</span><span class="plain">(</span><span class="reserved">void</span><span class="plain">) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">resources_pr</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">)</span>
|
||||
<span class="identifier">resources_pr</span><span class="plain"> = </span><span class="functiontext">Packaging::request</span><span class="plain">(</span>
|
||||
<span class="functiontext">InterNames::one_off</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"resources"</span><span class="plain">, </span><span class="functiontext">Hierarchy::main</span><span class="plain">()),</span>
|
||||
<span class="functiontext">InterNames::explicitly_named</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"resources"</span><span class="plain">, </span><span class="functiontext">Hierarchy::main</span><span class="plain">()),</span>
|
||||
<span class="functiontext">Hierarchy::main</span><span class="plain">(), </span><span class="identifier">plain_ptype</span><span class="plain">);</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">resources_pr</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
|
@ -1899,7 +1899,7 @@
|
|||
<span class="reserved">package_request</span><span class="plain"> *</span><span class="functiontext">Hierarchy::template</span><span class="plain">(</span><span class="reserved">void</span><span class="plain">) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">template_pr</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">)</span>
|
||||
<span class="identifier">template_pr</span><span class="plain"> = </span><span class="functiontext">Packaging::request</span><span class="plain">(</span>
|
||||
<span class="functiontext">InterNames::one_off</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"template"</span><span class="plain">, </span><span class="functiontext">Hierarchy::resources</span><span class="plain">()),</span>
|
||||
<span class="functiontext">InterNames::explicitly_named</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"template"</span><span class="plain">, </span><span class="functiontext">Hierarchy::resources</span><span class="plain">()),</span>
|
||||
<span class="functiontext">Hierarchy::resources</span><span class="plain">(), </span><span class="identifier">module_ptype</span><span class="plain">);</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">template_pr</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
|
@ -1973,7 +1973,7 @@
|
|||
|
||||
<p class="endnote">The function Hierarchy::find_by_name is used in 5/nv (<a href="5-nv.html#SP10">§10</a>), 13/rsfk (<a href="13-rsfk.html#SP7">§7</a>), 21/rl (<a href="21-rl.html#SP9">§9</a>), 22/tp (<a href="22-tp.html#SP8">§8</a>), 27/is (<a href="27-is.html#SP32">§32</a>).</p>
|
||||
|
||||
<p class="endnote">The function Hierarchy::main is used in 26/rt (<a href="26-rt.html#SP3">§3</a>), 27/in (<a href="27-in.html#SP2">§2</a>), 27/ei (<a href="27-ei.html#SP3">§3</a>).</p>
|
||||
<p class="endnote">The function Hierarchy::main is used in 26/rt (<a href="26-rt.html#SP3">§3</a>), 27/ei (<a href="27-ei.html#SP3">§3</a>).</p>
|
||||
|
||||
<p class="endnote">The function Hierarchy::resources is used in 27/pc (<a href="27-pc.html#SP7">§7</a>), 27/ei (<a href="27-ei.html#SP3">§3</a>).</p>
|
||||
|
||||
|
|
|
@ -9,284 +9,352 @@
|
|||
<body>
|
||||
|
||||
<!--Weave of '27/in' generated by 7-->
|
||||
<ul class="crumbs"><li><a href="../webs.html">★</a></li><li><a href="index.html">core</a></li><li><a href="index.html#27">Chapter 27: Bridge to Inter Module</a></li><li><b>Inter Namespace</b></li></ul><p class="inwebparagraph"><a id="SP1"></a><b>§1. </b></p>
|
||||
<ul class="crumbs"><li><a href="../webs.html">★</a></li><li><a href="index.html">core</a></li><li><a href="index.html#27">Chapter 27: Bridge to Inter Module</a></li><li><b>Inter Namespace</b></li></ul><p class="purpose">To manage identifiers, which have names and positions in the Inter hierarchy.</p>
|
||||
|
||||
<ul class="toc"><li><a href="#SP1">§1. Families</a></li><li><a href="#SP2">§2. Printing inames</a></li><li><a href="#SP4">§4. Making new inames</a></li><li><a href="#SP8">§8. Conversion of inames to symbols</a></li></ul><hr class="tocbar">
|
||||
|
||||
<p class="inwebparagraph"><a id="SP1"></a><b>§1. Families. </b>Each inter name comes from a "generator". Some are one-shot, and produce just
|
||||
one name before being discarded; others produce a numbered sequence of names
|
||||
in a given pattern, counting upwards from 1 (<code class="display"><span class="extract">example_1</span></code>, <code class="display"><span class="extract">example_2</span></code>, ...);
|
||||
and others still derive new names from existing ones (for example, turning
|
||||
<code class="display"><span class="extract">fish</span></code> amd <code class="display"><span class="extract">rumour</span></code> into <code class="display"><span class="extract">fishmonger</span></code> and <code class="display"><span class="extract">rumourmonger</span></code>).
|
||||
</p>
|
||||
|
||||
|
||||
<pre class="definitions">
|
||||
<span class="definitionkeyword">enum</span> <span class="constant">UNIQUE_FUSAGE</span><span class="definitionkeyword"> from </span><span class="constant">1</span>
|
||||
<span class="definitionkeyword">enum</span> <span class="constant">UNIQUE_PER_NAMESPACE_FUSAGE</span>
|
||||
<span class="definitionkeyword">enum</span> <span class="constant">MANY_PER_NAMESPACE_FUSAGE</span>
|
||||
<span class="definitionkeyword">enum</span> <span class="constant">DERIVED_FUSAGE</span>
|
||||
<span class="definitionkeyword">enum</span> <span class="constant">UNIQUE_INGEN</span><span class="definitionkeyword"> from </span><span class="constant">1</span>
|
||||
<span class="definitionkeyword">enum</span> <span class="constant">MULTIPLE_INGEN</span>
|
||||
<span class="definitionkeyword">enum</span> <span class="constant">DERIVED_INGEN</span>
|
||||
</pre>
|
||||
|
||||
<pre class="display">
|
||||
<span class="reserved">typedef</span><span class="plain"> </span><span class="reserved">struct</span><span class="plain"> </span><span class="reserved">inter_namespace</span><span class="plain"> {</span>
|
||||
<span class="reserved">struct</span><span class="plain"> </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">namespace_prefix</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">unmarked_prefix</span><span class="plain">;</span>
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">exporting</span><span class="plain">;</span>
|
||||
<span class="identifier">MEMORY_MANAGEMENT</span>
|
||||
<span class="plain">} </span><span class="reserved">inter_namespace</span><span class="plain">;</span>
|
||||
<span class="reserved">typedef</span><span class="plain"> </span><span class="reserved">struct</span><span class="plain"> </span><span class="reserved">inter_name_generator</span><span class="plain"> {</span>
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">ingen</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">name_stem</span><span class="plain">;</span>
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">no_generated</span><span class="plain">; </span> <span class="comment">relevamt only for <code class="display"><span class="extract">MULTIPLE_INGEN</span></code></span>
|
||||
<span class="reserved">struct</span><span class="plain"> </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">derived_prefix</span><span class="plain">; </span> <span class="comment">relevamt only for <code class="display"><span class="extract">DERIVED_INGEN</span></code></span>
|
||||
<span class="reserved">struct</span><span class="plain"> </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">derived_suffix</span><span class="plain">; </span> <span class="comment">relevamt only for <code class="display"><span class="extract">DERIVED_INGEN</span></code></span>
|
||||
<span class="plain">} </span><span class="reserved">inter_name_generator</span><span class="plain">;</span>
|
||||
|
||||
<span class="reserved">inter_namespace</span><span class="plain"> *</span><span class="identifier">root_namespace</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
|
||||
<span class="reserved">inter_name_generator</span><span class="plain"> *</span><span class="functiontext">InterNames::single_use_generator</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_generator</span><span class="plain"> *</span><span class="identifier">F</span><span class="plain"> = </span><span class="identifier">CREATE</span><span class="plain">(</span><span class="reserved">inter_name_generator</span><span class="plain">);</span>
|
||||
<span class="identifier">F</span><span class="plain">-</span><span class="element">>ingen</span><span class="plain"> = </span><span class="constant">UNIQUE_INGEN</span><span class="plain">;</span>
|
||||
<span class="identifier">F</span><span class="plain">-</span><span class="element">>name_stem</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">F</span><span class="plain">-</span><span class="element">>derived_prefix</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">F</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
|
||||
<span class="reserved">typedef</span><span class="plain"> </span><span class="reserved">struct</span><span class="plain"> </span><span class="reserved">inter_name_family</span><span class="plain"> {</span>
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">fusage</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">family_name</span><span class="plain">;</span>
|
||||
<span class="reserved">struct</span><span class="plain"> </span><span class="reserved">inter_name_consumption_token</span><span class="plain"> *</span><span class="identifier">first_ict</span><span class="plain">;</span>
|
||||
<span class="reserved">struct</span><span class="plain"> </span><span class="reserved">inter_name_family</span><span class="plain"> *</span><span class="identifier">derivative_of</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">derived_prefix</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">derived_suffix</span><span class="plain">;</span>
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">mark_exports</span><span class="plain">;</span>
|
||||
<span class="identifier">MEMORY_MANAGEMENT</span>
|
||||
<span class="plain">} </span><span class="reserved">inter_name_family</span><span class="plain">;</span>
|
||||
<span class="reserved">inter_name_generator</span><span class="plain"> *</span><span class="functiontext">InterNames::multiple_use_generator</span><span class="plain">(</span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">prefix</span><span class="plain">, </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">stem</span><span class="plain">, </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">suffix</span><span class="plain">) {</span>
|
||||
<span class="reserved">inter_name_generator</span><span class="plain"> *</span><span class="identifier">gen</span><span class="plain"> = </span><span class="functiontext">InterNames::single_use_generator</span><span class="plain">(</span><span class="identifier">stem</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">prefix</span><span class="plain">) > 0) {</span>
|
||||
<span class="identifier">gen</span><span class="plain">-</span><span class="element">>ingen</span><span class="plain"> = </span><span class="constant">DERIVED_INGEN</span><span class="plain">;</span>
|
||||
<span class="identifier">gen</span><span class="plain">-</span><span class="element">>derived_prefix</span><span class="plain"> = </span><span class="identifier">Str::duplicate</span><span class="plain">(</span><span class="identifier">prefix</span><span class="plain">);</span>
|
||||
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> </span><span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Str::len</span><span class="plain">(</span><span class="identifier">suffix</span><span class="plain">) > 0) {</span>
|
||||
<span class="identifier">gen</span><span class="plain">-</span><span class="element">>ingen</span><span class="plain"> = </span><span class="constant">DERIVED_INGEN</span><span class="plain">;</span>
|
||||
<span class="identifier">gen</span><span class="plain">-</span><span class="element">>derived_suffix</span><span class="plain"> = </span><span class="identifier">Str::duplicate</span><span class="plain">(</span><span class="identifier">suffix</span><span class="plain">);</span>
|
||||
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> </span><span class="identifier">gen</span><span class="plain">-</span><span class="element">>ingen</span><span class="plain"> = </span><span class="constant">MULTIPLE_INGEN</span><span class="plain">;</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">gen</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
</pre>
|
||||
|
||||
<span class="reserved">typedef</span><span class="plain"> </span><span class="reserved">struct</span><span class="plain"> </span><span class="reserved">inter_name_consumption_token</span><span class="plain"> {</span>
|
||||
<span class="reserved">struct</span><span class="plain"> </span><span class="reserved">inter_namespace</span><span class="plain"> *</span><span class="identifier">for_namespace</span><span class="plain">;</span>
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">no_consumed</span><span class="plain">;</span>
|
||||
<span class="reserved">struct</span><span class="plain"> </span><span class="reserved">inter_name_consumption_token</span><span class="plain"> *</span><span class="identifier">next_ict</span><span class="plain">;</span>
|
||||
<span class="identifier">MEMORY_MANAGEMENT</span>
|
||||
<span class="plain">} </span><span class="reserved">inter_name_consumption_token</span><span class="plain">;</span>
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The function InterNames::single_use_generator is used in <a href="#SP5">§5</a>.</p>
|
||||
|
||||
<p class="endnote">The function InterNames::multiple_use_generator is used in 27/tr (<a href="27-tr.html#SP1">§1</a>).</p>
|
||||
|
||||
<p class="endnote">The structure inter_name_generator is private to this section.</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP2"></a><b>§2. Printing inames. </b>Inter names are stored not in textual form, but in terms of what would be
|
||||
required to generate that text. (The memo field, which in principle allows
|
||||
any text to be stored, is used only for a small proportion of inames.)
|
||||
</p>
|
||||
|
||||
|
||||
<pre class="display">
|
||||
<span class="reserved">typedef</span><span class="plain"> </span><span class="reserved">struct</span><span class="plain"> </span><span class="reserved">inter_name</span><span class="plain"> {</span>
|
||||
<span class="reserved">struct</span><span class="plain"> </span><span class="reserved">inter_namespace</span><span class="plain"> *</span><span class="identifier">namespace</span><span class="plain">;</span>
|
||||
<span class="reserved">struct</span><span class="plain"> </span><span class="reserved">inter_name_family</span><span class="plain"> *</span><span class="identifier">family</span><span class="plain">;</span>
|
||||
<span class="reserved">struct</span><span class="plain"> </span><span class="reserved">inter_name_generator</span><span class="plain"> *</span><span class="identifier">family</span><span class="plain">;</span>
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">unique_number</span><span class="plain">;</span>
|
||||
<span class="reserved">struct</span><span class="plain"> </span><span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">symbol</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">eventual_owner</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">location_in_hierarchy</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">memo</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">override</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">derived_from</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">parametrised_derivatives</span><span class="plain">;</span>
|
||||
<span class="reserved">struct</span><span class="plain"> </span><span class="reserved">compilation_module</span><span class="plain"> *</span><span class="identifier">declared_in</span><span class="plain">;</span>
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">to_mark</span><span class="plain">;</span>
|
||||
<span class="identifier">MEMORY_MANAGEMENT</span>
|
||||
<span class="plain">} </span><span class="reserved">inter_name</span><span class="plain">;</span>
|
||||
</pre>
|
||||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The structure inter_namespace is accessed in 26/jl, 27/cm and here.</p>
|
||||
<p class="endnote">The structure inter_name is accessed in 27/hl, 27/pc and here.</p>
|
||||
|
||||
<p class="endnote">The structure inter_name_family is private to this section.</p>
|
||||
|
||||
<p class="endnote">The structure inter_name_consumption_token is private to this section.</p>
|
||||
|
||||
<p class="endnote">The structure inter_name is accessed in 5/ins, 5/nv, 13/rsfk, 17/rs, 21/rl2, 22/ph, 26/jl, 26/rt, 27/hl, 27/cm, 27/pc, 27/ei and here.</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP2"></a><b>§2. </b></p>
|
||||
<p class="inwebparagraph"><a id="SP3"></a><b>§3. </b>This implements the <code class="display"><span class="extract">%n</span></code> escape, which prints an iname:
|
||||
</p>
|
||||
|
||||
|
||||
<pre class="display">
|
||||
<span class="reserved">inter_namespace</span><span class="plain"> *</span><span class="functiontext">InterNames::new_namespace</span><span class="plain">(</span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">prefix</span><span class="plain">) {</span>
|
||||
<span class="reserved">inter_namespace</span><span class="plain"> *</span><span class="identifier">S</span><span class="plain"> = </span><span class="identifier">CREATE</span><span class="plain">(</span><span class="reserved">inter_namespace</span><span class="plain">);</span>
|
||||
<span class="identifier">S</span><span class="plain">-</span><span class="element">>namespace_prefix</span><span class="plain"> = </span><span class="identifier">Str::duplicate</span><span class="plain">(</span><span class="identifier">prefix</span><span class="plain">);</span>
|
||||
<span class="identifier">S</span><span class="plain">-</span><span class="element">>unmarked_prefix</span><span class="plain"> = </span><span class="identifier">Str::duplicate</span><span class="plain">(</span><span class="identifier">prefix</span><span class="plain">);</span>
|
||||
<span class="identifier">S</span><span class="plain">-</span><span class="element">>exporting</span><span class="plain"> = </span><span class="identifier">FALSE</span><span class="plain">;</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">S</span><span class="plain">;</span>
|
||||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">InterNames::writer</span><span class="plain">(</span><span class="identifier">OUTPUT_STREAM</span><span class="plain">, </span><span class="reserved">char</span><span class="plain"> *</span><span class="identifier">format_string</span><span class="plain">, </span><span class="reserved">void</span><span class="plain"> *</span><span class="identifier">vI</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">inter_name</span><span class="plain"> *) </span><span class="identifier">vI</span><span class="plain">;</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">iname</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"<no-inter-name>"</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">iname</span><span class="plain">-</span><span class="element">>family</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"bad inter_name"</span><span class="plain">);</span>
|
||||
<span class="reserved">switch</span><span class="plain"> (</span><span class="identifier">iname</span><span class="plain">-</span><span class="element">>family</span><span class="plain">-</span><span class="element">>ingen</span><span class="plain">) {</span>
|
||||
<span class="reserved">case</span><span class="plain"> </span><span class="constant">DERIVED_INGEN</span><span class="plain">:</span>
|
||||
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"%S"</span><span class="plain">, </span><span class="identifier">iname</span><span class="plain">-</span><span class="element">>family</span><span class="plain">-</span><span class="element">>derived_prefix</span><span class="plain">);</span>
|
||||
<span class="functiontext">InterNames::writer</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">format_string</span><span class="plain">, </span><span class="identifier">iname</span><span class="plain">-</span><span class="element">>derived_from</span><span class="plain">);</span>
|
||||
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"%S"</span><span class="plain">, </span><span class="identifier">iname</span><span class="plain">-</span><span class="element">>family</span><span class="plain">-</span><span class="element">>derived_suffix</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">UNIQUE_INGEN</span><span class="plain">:</span>
|
||||
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"%S"</span><span class="plain">, </span><span class="identifier">iname</span><span class="plain">-</span><span class="element">>family</span><span class="plain">-</span><span class="element">>name_stem</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">MULTIPLE_INGEN</span><span class="plain">:</span>
|
||||
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"%S"</span><span class="plain">, </span><span class="identifier">iname</span><span class="plain">-</span><span class="element">>family</span><span class="plain">-</span><span class="element">>name_stem</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">iname</span><span class="plain">-</span><span class="element">>unique_number</span><span class="plain"> >= 0) </span><span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"%d"</span><span class="plain">, </span><span class="identifier">iname</span><span class="plain">-</span><span class="element">>unique_number</span><span class="plain">);</span>
|
||||
<span class="reserved">break</span><span class="plain">;</span>
|
||||
<span class="reserved">default</span><span class="plain">: </span><span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"unknown ingen"</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
|
||||
<span class="reserved">inter_namespace</span><span class="plain"> *</span><span class="functiontext">InterNames::root</span><span class="plain">(</span><span class="reserved">void</span><span class="plain">) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">root_namespace</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="identifier">root_namespace</span><span class="plain"> = </span><span class="functiontext">InterNames::new_namespace</span><span class="plain">(</span><span class="identifier">NULL</span><span class="plain">);</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">root_namespace</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">iname</span><span class="plain">-</span><span class="element">>memo</span><span class="plain">) > 0) </span><span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"_%S"</span><span class="plain">, </span><span class="identifier">iname</span><span class="plain">-</span><span class="element">>memo</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
|
||||
<span class="reserved">inter_name_family</span><span class="plain"> *</span><span class="functiontext">InterNames::new_family</span><span class="plain">(</span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">fu</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_family</span><span class="plain"> *</span><span class="identifier">F</span><span class="plain"> = </span><span class="identifier">CREATE</span><span class="plain">(</span><span class="reserved">inter_name_family</span><span class="plain">);</span>
|
||||
<span class="identifier">F</span><span class="plain">-</span><span class="element">>fusage</span><span class="plain"> = </span><span class="identifier">fu</span><span class="plain">;</span>
|
||||
<span class="identifier">F</span><span class="plain">-</span><span class="element">>family_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">F</span><span class="plain">-</span><span class="element">>first_ict</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
|
||||
<span class="identifier">F</span><span class="plain">-</span><span class="element">>derivative_of</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
|
||||
<span class="identifier">F</span><span class="plain">-</span><span class="element">>derived_prefix</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
|
||||
<span class="identifier">F</span><span class="plain">-</span><span class="element">>derived_suffix</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
|
||||
<span class="identifier">F</span><span class="plain">-</span><span class="element">>mark_exports</span><span class="plain"> = </span><span class="identifier">TRUE</span><span class="plain">;</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">F</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
</pre>
|
||||
|
||||
<span class="reserved">inter_name_consumption_token</span><span class="plain"> *</span><span class="functiontext">InterNames::new_ict</span><span class="plain">(</span><span class="reserved">inter_namespace</span><span class="plain"> *</span><span class="identifier">S</span><span class="plain">) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">S</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"no namespace"</span><span class="plain">);</span>
|
||||
<span class="reserved">inter_name_consumption_token</span><span class="plain"> *</span><span class="identifier">T</span><span class="plain"> = </span><span class="identifier">CREATE</span><span class="plain">(</span><span class="reserved">inter_name_consumption_token</span><span class="plain">);</span>
|
||||
<span class="identifier">T</span><span class="plain">-</span><span class="element">>for_namespace</span><span class="plain"> = </span><span class="identifier">S</span><span class="plain">;</span>
|
||||
<span class="identifier">T</span><span class="plain">-</span><span class="element">>no_consumed</span><span class="plain"> = 1;</span>
|
||||
<span class="identifier">T</span><span class="plain">-</span><span class="element">>next_ict</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">T</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<span class="reserved">inter_name</span><span class="plain"> *</span><span class="functiontext">InterNames::new_in_space</span><span class="plain">(</span><span class="reserved">inter_namespace</span><span class="plain"> *</span><span class="identifier">S</span><span class="plain">, </span><span class="reserved">inter_name_family</span><span class="plain"> *</span><span class="identifier">F</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">suppress_count</span><span class="plain">) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">S</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"no namespace"</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">F</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"no family"</span><span class="plain">);</span>
|
||||
<span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">N</span><span class="plain"> = </span><span class="identifier">CREATE</span><span class="plain">(</span><span class="reserved">inter_name</span><span class="plain">);</span>
|
||||
<span class="identifier">N</span><span class="plain">-</span><span class="element">>namespace</span><span class="plain"> = </span><span class="identifier">S</span><span class="plain">;</span>
|
||||
<span class="identifier">N</span><span class="plain">-</span><span class="element">>family</span><span class="plain"> = </span><span class="identifier">F</span><span class="plain">;</span>
|
||||
<span class="identifier">N</span><span class="plain">-</span><span class="element">>unique_number</span><span class="plain"> = 0;</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">F</span><span class="plain">-</span><span class="element">>fusage</span><span class="plain"> == </span><span class="constant">UNIQUE_FUSAGE</span><span class="plain">) </span><span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"not a family name"</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">F</span><span class="plain">-</span><span class="element">>fusage</span><span class="plain"> != </span><span class="constant">DERIVED_FUSAGE</span><span class="plain">) && (</span><span class="identifier">suppress_count</span><span class="plain"> == </span><span class="identifier">FALSE</span><span class="plain">)) {</span>
|
||||
<span class="reserved">inter_name_consumption_token</span><span class="plain"> *</span><span class="identifier">ict</span><span class="plain"> = </span><span class="identifier">F</span><span class="plain">-</span><span class="element">>first_ict</span><span class="plain">;</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">ict</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) {</span>
|
||||
<span class="identifier">F</span><span class="plain">-</span><span class="element">>first_ict</span><span class="plain"> = </span><span class="functiontext">InterNames::new_ict</span><span class="plain">(</span><span class="identifier">S</span><span class="plain">);</span>
|
||||
<span class="identifier">N</span><span class="plain">-</span><span class="element">>unique_number</span><span class="plain"> = 1;</span>
|
||||
<p class="endnote">The function InterNames::writer is used in 1/cm (<a href="1-cm.html#SP6_3">§6.3</a>).</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP4"></a><b>§4. Making new inames. </b>We can now make a new iname, which is easy unless there's a memo to attach.
|
||||
For example, attaching the wording "printing the name of a dark room" to
|
||||
an iname which would otherwise just be <code class="display"><span class="extract">V12</span></code> produces <code class="display"><span class="extract">V12_printing_the_name_of_a_da</span></code>.
|
||||
Memos exist almost largely to make the Inter code easier for human eyes to read,
|
||||
as in this case, but sometimes, as with kind names like <code class="display"><span class="extract">K2_thing</span></code>, they're
|
||||
needed because template or explicit I6 inclusion code makes references to them.
|
||||
</p>
|
||||
|
||||
<p class="inwebparagraph">Although most inter names are eventually used to create symbols in the
|
||||
Inter hierarchy's symbols table, this does not happen immediately, and
|
||||
for some inames it never will.
|
||||
</p>
|
||||
|
||||
|
||||
<pre class="display">
|
||||
<span class="reserved">inter_name</span><span class="plain"> *</span><span class="functiontext">InterNames::new</span><span class="plain">(</span><span class="reserved">inter_name_generator</span><span class="plain"> *</span><span class="identifier">F</span><span class="plain">, </span><span class="reserved">package_request</span><span class="plain"> *</span><span class="identifier">R</span><span class="plain">, </span><span class="identifier">wording</span><span class="plain"> </span><span class="identifier">W</span><span class="plain">) {</span>
|
||||
<span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">iname</span><span class="plain"> = </span><span class="identifier">CREATE</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="element">>family</span><span class="plain"> = </span><span class="identifier">F</span><span class="plain">;</span>
|
||||
<span class="identifier">iname</span><span class="plain">-</span><span class="element">>unique_number</span><span class="plain"> = 0;</span>
|
||||
<span class="identifier">iname</span><span class="plain">-</span><span class="element">>symbol</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
|
||||
<span class="identifier">iname</span><span class="plain">-</span><span class="element">>derived_from</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
|
||||
<span class="identifier">iname</span><span class="plain">-</span><span class="element">>location_in_hierarchy</span><span class="plain"> = </span><span class="identifier">R</span><span class="plain">;</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Wordings::empty</span><span class="plain">(</span><span class="identifier">W</span><span class="plain">)) {</span>
|
||||
<span class="identifier">iname</span><span class="plain">-</span><span class="element">>memo</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">while</span><span class="plain"> (</span><span class="identifier">ict</span><span class="plain">) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">ict</span><span class="plain">-</span><span class="element">>for_namespace</span><span class="plain"> == </span><span class="identifier">S</span><span class="plain">) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">F</span><span class="plain">-</span><span class="element">>fusage</span><span class="plain"> == </span><span class="constant">UNIQUE_PER_NAMESPACE_FUSAGE</span><span class="plain">) </span><span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"one per namespace, please"</span><span class="plain">);</span>
|
||||
<span class="identifier">N</span><span class="plain">-</span><span class="element">>unique_number</span><span class="plain"> = ++</span><span class="identifier">ict</span><span class="plain">-</span><span class="element">>no_consumed</span><span class="plain">;</span>
|
||||
<span class="reserved">break</span><span class="plain">;</span>
|
||||
<span class="identifier">iname</span><span class="plain">-</span><span class="element">>memo</span><span class="plain"> = </span><span class="identifier">Str::new</span><span class="plain">();</span>
|
||||
<<span class="cwebmacro">Fill the memo with up to 28 characters of text from the given wording</span> <span class="cwebmacronumber">4.1</span>><span class="plain">;</span>
|
||||
<<span class="cwebmacro">Ensure that the name, as now extended by the memo, is a legal Inter identifier</span> <span class="cwebmacronumber">4.2</span>><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">ict</span><span class="plain">-</span><span class="element">>next_ict</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) {</span>
|
||||
<span class="identifier">ict</span><span class="plain">-</span><span class="element">>next_ict</span><span class="plain"> = </span><span class="functiontext">InterNames::new_ict</span><span class="plain">(</span><span class="identifier">S</span><span class="plain">);</span>
|
||||
<span class="identifier">N</span><span class="plain">-</span><span class="element">>unique_number</span><span class="plain"> = 1;</span>
|
||||
<span class="reserved">break</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="identifier">ict</span><span class="plain"> = </span><span class="identifier">ict</span><span class="plain">-</span><span class="element">>next_ict</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="identifier">N</span><span class="plain">-</span><span class="element">>symbol</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
|
||||
<span class="identifier">N</span><span class="plain">-</span><span class="element">>memo</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
|
||||
<span class="identifier">N</span><span class="plain">-</span><span class="element">>derived_from</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
|
||||
<span class="identifier">N</span><span class="plain">-</span><span class="element">>parametrised_derivatives</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
|
||||
<span class="identifier">N</span><span class="plain">-</span><span class="element">>declared_in</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
|
||||
<span class="identifier">N</span><span class="plain">-</span><span class="element">>to_mark</span><span class="plain"> = 0;</span>
|
||||
<span class="identifier">N</span><span class="plain">-</span><span class="element">>eventual_owner</span><span class="plain"> = </span><span class="functiontext">Hierarchy::main</span><span class="plain">();</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">N</span><span class="plain">;</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">iname</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
</pre>
|
||||
|
||||
<span class="reserved">inter_name_family</span><span class="plain"> *</span><span class="functiontext">InterNames::name_generator</span><span class="plain">(</span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">prefix</span><span class="plain">, </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">stem</span><span class="plain">, </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">suffix</span><span class="plain">) {</span>
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">fusage</span><span class="plain"> = </span><span class="constant">MANY_PER_NAMESPACE_FUSAGE</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">prefix</span><span class="plain">) > 0) || (</span><span class="identifier">Str::len</span><span class="plain">(</span><span class="identifier">suffix</span><span class="plain">) > 0)) </span><span class="identifier">fusage</span><span class="plain"> = </span><span class="constant">DERIVED_FUSAGE</span><span class="plain">;</span>
|
||||
<span class="reserved">inter_name_family</span><span class="plain"> *</span><span class="identifier">family</span><span class="plain"> = </span><span class="functiontext">InterNames::new_family</span><span class="plain">(</span><span class="identifier">fusage</span><span class="plain">, </span><span class="identifier">stem</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">prefix</span><span class="plain">) > 0) </span><span class="identifier">family</span><span class="plain">-</span><span class="element">>derived_prefix</span><span class="plain"> = </span><span class="identifier">Str::duplicate</span><span class="plain">(</span><span class="identifier">prefix</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">suffix</span><span class="plain">) > 0) </span><span class="identifier">family</span><span class="plain">-</span><span class="element">>derived_suffix</span><span class="plain"> = </span><span class="identifier">Str::duplicate</span><span class="plain">(</span><span class="identifier">suffix</span><span class="plain">);</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">family</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<span class="reserved">inter_name</span><span class="plain"> *</span><span class="functiontext">InterNames::one_off</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">R</span><span class="plain">) {</span>
|
||||
<span class="reserved">inter_name_family</span><span class="plain"> *</span><span class="identifier">F</span><span class="plain"> = </span><span class="functiontext">InterNames::new_family</span><span class="plain">(</span><span class="constant">UNIQUE_FUSAGE</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">N</span><span class="plain"> = </span><span class="identifier">CREATE</span><span class="plain">(</span><span class="reserved">inter_name</span><span class="plain">);</span>
|
||||
<span class="identifier">N</span><span class="plain">-</span><span class="element">>namespace</span><span class="plain"> = </span><span class="functiontext">InterNames::root</span><span class="plain">();</span>
|
||||
<span class="identifier">N</span><span class="plain">-</span><span class="element">>family</span><span class="plain"> = </span><span class="identifier">F</span><span class="plain">;</span>
|
||||
<span class="identifier">N</span><span class="plain">-</span><span class="element">>unique_number</span><span class="plain"> = 1;</span>
|
||||
<span class="identifier">N</span><span class="plain">-</span><span class="element">>symbol</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
|
||||
<span class="identifier">N</span><span class="plain">-</span><span class="element">>memo</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
|
||||
<span class="identifier">N</span><span class="plain">-</span><span class="element">>override</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
|
||||
<span class="identifier">N</span><span class="plain">-</span><span class="element">>derived_from</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
|
||||
<span class="identifier">N</span><span class="plain">-</span><span class="element">>parametrised_derivatives</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
|
||||
<span class="identifier">N</span><span class="plain">-</span><span class="element">>declared_in</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
|
||||
<span class="identifier">N</span><span class="plain">-</span><span class="element">>to_mark</span><span class="plain"> = 0;</span>
|
||||
<span class="identifier">N</span><span class="plain">-</span><span class="element">>eventual_owner</span><span class="plain"> = </span><span class="identifier">R</span><span class="plain">;</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">N</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
<p class="endnote">The function InterNames::new is used in <a href="#SP5">§5</a>, <a href="#SP6">§6</a>.</p>
|
||||
|
||||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">InterNames::attach_memo</span><span class="plain">(</span><span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">N</span><span class="plain">, </span><span class="identifier">wording</span><span class="plain"> </span><span class="identifier">W</span><span class="plain">) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">N</span><span class="plain">-</span><span class="element">>symbol</span><span class="plain">) </span><span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"too late to attach memo"</span><span class="plain">);</span>
|
||||
<span class="identifier">N</span><span class="plain">-</span><span class="element">>memo</span><span class="plain"> = </span><span class="identifier">Str::new</span><span class="plain">();</span>
|
||||
<p class="inwebparagraph"><a id="SP4_1"></a><b>§4.1. </b><code class="display">
|
||||
<<span class="cwebmacrodefn">Fill the memo with up to 28 characters of text from the given wording</span> <span class="cwebmacronumber">4.1</span>> =
|
||||
</code></p>
|
||||
|
||||
|
||||
<pre class="displaydefn">
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">c</span><span class="plain"> = 0;</span>
|
||||
<span class="identifier">LOOP_THROUGH_WORDING</span><span class="plain">(</span><span class="identifier">j</span><span class="plain">, </span><span class="identifier">W</span><span class="plain">) {</span>
|
||||
<span class="comment">identifier is at this point 32 chars or fewer in length: add at most 30 more</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">c</span><span class="plain">++ > 0) </span><span class="identifier">WRITE_TO</span><span class="plain">(</span><span class="identifier">N</span><span class="plain">-</span><span class="element">>memo</span><span class="plain">, </span><span class="string">" "</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">c</span><span class="plain">++ > 0) </span><span class="identifier">WRITE_TO</span><span class="plain">(</span><span class="identifier">iname</span><span class="plain">-</span><span class="element">>memo</span><span class="plain">, </span><span class="string">" "</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Wide::len</span><span class="plain">(</span><span class="identifier">Lexer::word_text</span><span class="plain">(</span><span class="identifier">j</span><span class="plain">)) > 30)</span>
|
||||
<span class="identifier">WRITE_TO</span><span class="plain">(</span><span class="identifier">N</span><span class="plain">-</span><span class="element">>memo</span><span class="plain">, </span><span class="string">"etc"</span><span class="plain">);</span>
|
||||
<span class="reserved">else</span><span class="plain"> </span><span class="identifier">WRITE_TO</span><span class="plain">(</span><span class="identifier">N</span><span class="plain">-</span><span class="element">>memo</span><span class="plain">, </span><span class="string">"%N"</span><span class="plain">, </span><span class="identifier">j</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">N</span><span class="plain">-</span><span class="element">>memo</span><span class="plain">) > 32) </span><span class="reserved">break</span><span class="plain">;</span>
|
||||
<span class="identifier">WRITE_TO</span><span class="plain">(</span><span class="identifier">iname</span><span class="plain">-</span><span class="element">>memo</span><span class="plain">, </span><span class="string">"etc"</span><span class="plain">);</span>
|
||||
<span class="reserved">else</span><span class="plain"> </span><span class="identifier">WRITE_TO</span><span class="plain">(</span><span class="identifier">iname</span><span class="plain">-</span><span class="element">>memo</span><span class="plain">, </span><span class="string">"%N"</span><span class="plain">, </span><span class="identifier">j</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">iname</span><span class="plain">-</span><span class="element">>memo</span><span class="plain">) > 32) </span><span class="reserved">break</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="identifier">Str::truncate</span><span class="plain">(</span><span class="identifier">N</span><span class="plain">-</span><span class="element">>memo</span><span class="plain">, 28); </span> <span class="comment">it was at worst 62 chars in size, but is now truncated to 28</span>
|
||||
<span class="identifier">Identifiers::purify</span><span class="plain">(</span><span class="identifier">N</span><span class="plain">-</span><span class="element">>memo</span><span class="plain">);</span>
|
||||
<span class="identifier">Str::truncate</span><span class="plain">(</span><span class="identifier">iname</span><span class="plain">-</span><span class="element">>memo</span><span class="plain">, 28); </span> <span class="comment">it was at worst 62 chars in size, but is now truncated to 28</span>
|
||||
</pre>
|
||||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">This code is used in <a href="#SP4">§4</a>.</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP4_2"></a><b>§4.2. </b><code class="display">
|
||||
<<span class="cwebmacrodefn">Ensure that the name, as now extended by the memo, is a legal Inter identifier</span> <span class="cwebmacronumber">4.2</span>> =
|
||||
</code></p>
|
||||
|
||||
|
||||
<pre class="displaydefn">
|
||||
<span class="identifier">Identifiers::purify</span><span class="plain">(</span><span class="identifier">iname</span><span class="plain">-</span><span class="element">>memo</span><span class="plain">);</span>
|
||||
<span class="identifier">TEMPORARY_TEXT</span><span class="plain">(</span><span class="identifier">NBUFF</span><span class="plain">);</span>
|
||||
<span class="identifier">WRITE_TO</span><span class="plain">(</span><span class="identifier">NBUFF</span><span class="plain">, </span><span class="string">"%n"</span><span class="plain">, </span><span class="identifier">N</span><span class="plain">);</span>
|
||||
<span class="identifier">WRITE_TO</span><span class="plain">(</span><span class="identifier">NBUFF</span><span class="plain">, </span><span class="string">"%n"</span><span class="plain">, </span><span class="identifier">iname</span><span class="plain">);</span>
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">L</span><span class="plain"> = </span><span class="identifier">Str::len</span><span class="plain">(</span><span class="identifier">NBUFF</span><span class="plain">);</span>
|
||||
<span class="identifier">DISCARD_TEXT</span><span class="plain">(</span><span class="identifier">NBUFF</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">L</span><span class="plain"> > 28) </span><span class="identifier">Str::truncate</span><span class="plain">(</span><span class="identifier">N</span><span class="plain">-</span><span class="element">>memo</span><span class="plain">, </span><span class="identifier">Str::len</span><span class="plain">(</span><span class="identifier">N</span><span class="plain">-</span><span class="element">>memo</span><span class="plain">) - (</span><span class="identifier">L</span><span class="plain"> - 28));</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">L</span><span class="plain"> > 28) </span><span class="identifier">Str::truncate</span><span class="plain">(</span><span class="identifier">iname</span><span class="plain">-</span><span class="element">>memo</span><span class="plain">, </span><span class="identifier">Str::len</span><span class="plain">(</span><span class="identifier">iname</span><span class="plain">-</span><span class="element">>memo</span><span class="plain">) - (</span><span class="identifier">L</span><span class="plain"> - 28));</span>
|
||||
</pre>
|
||||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">This code is used in <a href="#SP4">§4</a>.</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP5"></a><b>§5. </b>That creation function should be called only by these, which in turn must
|
||||
be called only from within the current chapter. First, the single-shot cases,
|
||||
where the caller wants a single name with fixed wording (but possibly with
|
||||
a memo to attach):
|
||||
</p>
|
||||
|
||||
|
||||
<pre class="display">
|
||||
<span class="reserved">inter_name</span><span class="plain"> *</span><span class="functiontext">InterNames::explicitly_named_with_memo</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">R</span><span class="plain">, </span><span class="identifier">wording</span><span class="plain"> </span><span class="identifier">W</span><span class="plain">) {</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="functiontext">InterNames::new</span><span class="plain">(</span><span class="functiontext">InterNames::single_use_generator</span><span class="plain">(</span><span class="identifier">name</span><span class="plain">), </span><span class="identifier">R</span><span class="plain">, </span><span class="identifier">W</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
|
||||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">InterNames::change_translation</span><span class="plain">(</span><span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">N</span><span class="plain">, </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">new_text</span><span class="plain">) {</span>
|
||||
<span class="identifier">Inter::Symbols::set_translate</span><span class="plain">(</span><span class="functiontext">InterNames::to_symbol</span><span class="plain">(</span><span class="identifier">N</span><span class="plain">), </span><span class="identifier">new_text</span><span class="plain">);</span>
|
||||
<span class="reserved">inter_name</span><span class="plain"> *</span><span class="functiontext">InterNames::explicitly_named</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">R</span><span class="plain">) {</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="functiontext">InterNames::explicitly_named_with_memo</span><span class="plain">(</span><span class="identifier">name</span><span class="plain">, </span><span class="identifier">R</span><span class="plain">, </span><span class="identifier">EMPTY_WORDING</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
</pre>
|
||||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The function InterNames::explicitly_named_with_memo is used in 27/hl (<a href="27-hl.html#SP1_1">§1.1</a>).</p>
|
||||
|
||||
<p class="endnote">The function InterNames::explicitly_named is used in 27/hr (<a href="27-hr.html#SP5">§5</a>), 27/hl (<a href="27-hl.html#SP1">§1</a>, <a href="27-hl.html#SP1_1">§1.1</a>, <a href="27-hl.html#SP2">§2</a>), 27/pc (<a href="27-pc.html#SP7">§7</a>, <a href="27-pc.html#SP7_1">§7.1</a>, <a href="27-pc.html#SP8">§8</a>).</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP6"></a><b>§6. </b>Second, the generated or derived cases:
|
||||
</p>
|
||||
|
||||
|
||||
<pre class="display">
|
||||
<span class="reserved">inter_name</span><span class="plain"> *</span><span class="functiontext">InterNames::multiple</span><span class="plain">(</span><span class="reserved">inter_name_generator</span><span class="plain"> *</span><span class="identifier">F</span><span class="plain">, </span><span class="reserved">package_request</span><span class="plain"> *</span><span class="identifier">R</span><span class="plain">, </span><span class="identifier">wording</span><span class="plain"> </span><span class="identifier">W</span><span class="plain">) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">F</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"no family"</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">F</span><span class="plain">-</span><span class="element">>ingen</span><span class="plain"> == </span><span class="constant">UNIQUE_INGEN</span><span class="plain">) </span><span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"not a family 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="functiontext">InterNames::new</span><span class="plain">(</span><span class="identifier">F</span><span class="plain">, </span><span class="identifier">R</span><span class="plain">, </span><span class="identifier">W</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">F</span><span class="plain">-</span><span class="element">>ingen</span><span class="plain"> != </span><span class="constant">DERIVED_INGEN</span><span class="plain">) </span><span class="identifier">iname</span><span class="plain">-</span><span class="element">>unique_number</span><span class="plain"> = ++</span><span class="identifier">F</span><span class="plain">-</span><span class="element">>no_generated</span><span class="plain">;</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">iname</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
|
||||
<span class="identifier">text_stream</span><span class="plain"> *</span><span class="functiontext">InterNames::get_translation</span><span class="plain">(</span><span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">N</span><span class="plain">) {</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">Inter::Symbols::get_translate</span><span class="plain">(</span><span class="functiontext">InterNames::to_symbol</span><span class="plain">(</span><span class="identifier">N</span><span class="plain">));</span>
|
||||
<span class="reserved">inter_name</span><span class="plain"> *</span><span class="functiontext">InterNames::generated</span><span class="plain">(</span><span class="reserved">inter_name_generator</span><span class="plain"> *</span><span class="identifier">F</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">fix</span><span class="plain">, </span><span class="identifier">wording</span><span class="plain"> </span><span class="identifier">W</span><span class="plain">) {</span>
|
||||
<span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">iname</span><span class="plain"> = </span><span class="functiontext">InterNames::multiple</span><span class="plain">(</span><span class="identifier">F</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">, </span><span class="identifier">W</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">fix</span><span class="plain"> != -1) </span><span class="identifier">iname</span><span class="plain">-</span><span class="element">>unique_number</span><span class="plain"> = </span><span class="identifier">fix</span><span class="plain">;</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">iname</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
|
||||
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="functiontext">InterNames::to_symbol</span><span class="plain">(</span><span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">N</span><span class="plain">) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">N</span><span class="plain">-</span><span class="element">>symbol</span><span class="plain">) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">N</span><span class="plain">-</span><span class="element">>to_mark</span><span class="plain">) </span><span class="identifier">Inter::Symbols::set_flag</span><span class="plain">(</span><span class="identifier">N</span><span class="plain">-</span><span class="element">>symbol</span><span class="plain">, </span><span class="identifier">N</span><span class="plain">-</span><span class="element">>to_mark</span><span class="plain">);</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">N</span><span class="plain">-</span><span class="element">>symbol</span><span class="plain">;</span>
|
||||
<span class="reserved">inter_name</span><span class="plain"> *</span><span class="functiontext">InterNames::derived</span><span class="plain">(</span><span class="reserved">inter_name_generator</span><span class="plain"> *</span><span class="identifier">F</span><span class="plain">, </span><span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">from</span><span class="plain">, </span><span class="identifier">wording</span><span class="plain"> </span><span class="identifier">W</span><span class="plain">) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">F</span><span class="plain">-</span><span class="element">>ingen</span><span class="plain"> != </span><span class="constant">DERIVED_INGEN</span><span class="plain">) </span><span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"not a derived family"</span><span class="plain">);</span>
|
||||
<span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">iname</span><span class="plain"> = </span><span class="functiontext">InterNames::multiple</span><span class="plain">(</span><span class="identifier">F</span><span class="plain">, </span><span class="identifier">from</span><span class="plain">-</span><span class="element">>location_in_hierarchy</span><span class="plain">, </span><span class="identifier">W</span><span class="plain">);</span>
|
||||
<span class="identifier">iname</span><span class="plain">-</span><span class="element">>derived_from</span><span class="plain"> = </span><span class="identifier">from</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 InterNames::multiple appears nowhere else.</p>
|
||||
|
||||
<p class="endnote">The function InterNames::generated is used in 27/hl (<a href="27-hl.html#SP1">§1</a>).</p>
|
||||
|
||||
<p class="endnote">The function InterNames::derived is used in 27/hl (<a href="27-hl.html#SP1">§1</a>).</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP7"></a><b>§7. </b>An ugly necessity is that a handful of inames representing actions have to
|
||||
be renamed after creation, thanks to sentences such as:
|
||||
</p>
|
||||
|
||||
<blockquote>
|
||||
<p>The taking action translates into I6 as "Take".</p>
|
||||
|
||||
</blockquote>
|
||||
|
||||
|
||||
<pre class="display">
|
||||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">InterNames::override_action_base_iname</span><span class="plain">(</span><span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">iname</span><span class="plain">, </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">to</span><span class="plain">) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">iname</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"no such iname"</span><span class="plain">);</span>
|
||||
<span class="comment">if (iname->symbol) internal_error("too late to rename iname");</span>
|
||||
<span class="identifier">iname</span><span class="plain">-</span><span class="element">>family</span><span class="plain">-</span><span class="element">>name_stem</span><span class="plain"> = </span><span class="identifier">Str::duplicate</span><span class="plain">(</span><span class="identifier">to</span><span class="plain">);</span>
|
||||
<span class="identifier">Str::clear</span><span class="plain">(</span><span class="identifier">iname</span><span class="plain">-</span><span class="element">>memo</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
</pre>
|
||||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The function InterNames::override_action_base_iname appears nowhere else.</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP8"></a><b>§8. Conversion of inames to symbols. </b>The purpose of inames is not quite to represent identifier names occurring in
|
||||
given packages inside the Inter hierarchy: it would be more accurate to say
|
||||
that they represent potential identifiers, which may or may not be used.
|
||||
At some point they will probably (but not certainly) undergo "conversion",
|
||||
when they are matched up with actual symbols in the symbols tables of the
|
||||
given packages. Once this is done, an iname can't be renamed or moved.
|
||||
</p>
|
||||
|
||||
<p class="inwebparagraph">Conversion is done on-demand, and thus left as late as possible. It happens
|
||||
automatically in the following function:
|
||||
</p>
|
||||
|
||||
|
||||
<pre class="display">
|
||||
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="functiontext">InterNames::to_symbol</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">if</span><span class="plain"> (</span><span class="identifier">iname</span><span class="plain">-</span><span class="element">>symbol</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) {</span>
|
||||
<span class="identifier">TEMPORARY_TEXT</span><span class="plain">(</span><span class="identifier">NBUFF</span><span class="plain">);</span>
|
||||
<span class="identifier">WRITE_TO</span><span class="plain">(</span><span class="identifier">NBUFF</span><span class="plain">, </span><span class="string">"%n"</span><span class="plain">, </span><span class="identifier">N</span><span class="plain">);</span>
|
||||
<span class="identifier">inter_symbols_table</span><span class="plain"> *</span><span class="identifier">T</span><span class="plain"> = </span><span class="functiontext">Packaging::scope</span><span class="plain">(</span><span class="functiontext">Emit::repository</span><span class="plain">(), </span><span class="identifier">N</span><span class="plain">);</span>
|
||||
<span class="identifier">N</span><span class="plain">-</span><span class="element">>symbol</span><span class="plain"> = </span><span class="functiontext">Emit::new_symbol</span><span class="plain">(</span><span class="identifier">T</span><span class="plain">, </span><span class="identifier">NBUFF</span><span class="plain">);</span>
|
||||
<span class="identifier">WRITE_TO</span><span class="plain">(</span><span class="identifier">NBUFF</span><span class="plain">, </span><span class="string">"%n"</span><span class="plain">, </span><span class="identifier">iname</span><span class="plain">);</span>
|
||||
<span class="identifier">inter_symbols_table</span><span class="plain"> *</span><span class="identifier">T</span><span class="plain"> = </span><span class="functiontext">Packaging::scope</span><span class="plain">(</span><span class="functiontext">Emit::repository</span><span class="plain">(), </span><span class="identifier">iname</span><span class="plain">);</span>
|
||||
<span class="identifier">iname</span><span class="plain">-</span><span class="element">>symbol</span><span class="plain"> = </span><span class="functiontext">Emit::new_symbol</span><span class="plain">(</span><span class="identifier">T</span><span class="plain">, </span><span class="identifier">NBUFF</span><span class="plain">);</span>
|
||||
<span class="identifier">DISCARD_TEXT</span><span class="plain">(</span><span class="identifier">NBUFF</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">N</span><span class="plain">-</span><span class="element">>to_mark</span><span class="plain">) </span><span class="identifier">Inter::Symbols::set_flag</span><span class="plain">(</span><span class="identifier">N</span><span class="plain">-</span><span class="element">>symbol</span><span class="plain">, </span><span class="identifier">N</span><span class="plain">-</span><span class="element">>to_mark</span><span class="plain">);</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">N</span><span class="plain">-</span><span class="element">>symbol</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="element">>symbol</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
|
||||
<span class="identifier">text_stream</span><span class="plain"> *</span><span class="functiontext">InterNames::to_text</span><span class="plain">(</span><span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">N</span><span class="plain">) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">N</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="reserved">return</span><span class="plain"> </span><span class="identifier">NULL</span><span class="plain">;</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="functiontext">InterNames::to_symbol</span><span class="plain">(</span><span class="identifier">N</span><span class="plain">)-></span><span class="identifier">symbol_name</span><span class="plain">;</span>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">InterNames::change_translation</span><span class="plain">(</span><span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">iname</span><span class="plain">, </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">new_text</span><span class="plain">) {</span>
|
||||
<span class="identifier">Inter::Symbols::set_translate</span><span class="plain">(</span><span class="functiontext">InterNames::to_symbol</span><span class="plain">(</span><span class="identifier">iname</span><span class="plain">), </span><span class="identifier">new_text</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
|
||||
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="functiontext">InterNames::define_symbol</span><span class="plain">(</span><span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">N</span><span class="plain">) {</span>
|
||||
<span class="functiontext">InterNames::to_symbol</span><span class="plain">(</span><span class="identifier">N</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">N</span><span class="plain">-</span><span class="element">>symbol</span><span class="plain">) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Inter::Symbols::is_predeclared</span><span class="plain">(</span><span class="identifier">N</span><span class="plain">-</span><span class="element">>symbol</span><span class="plain">)) {</span>
|
||||
<span class="identifier">Inter::Symbols::undefine</span><span class="plain">(</span><span class="identifier">N</span><span class="plain">-</span><span class="element">>symbol</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">N</span><span class="plain">-</span><span class="element">>symbol</span><span class="plain">) && (</span><span class="identifier">Inter::Symbols::read_annotation</span><span class="plain">(</span><span class="identifier">N</span><span class="plain">-</span><span class="element">>symbol</span><span class="plain">, </span><span class="identifier">HOLDING_IANN</span><span class="plain">) == 1)) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Inter::Symbols::read_annotation</span><span class="plain">(</span><span class="identifier">N</span><span class="plain">-</span><span class="element">>symbol</span><span class="plain">, </span><span class="identifier">DELENDA_EST_IANN</span><span class="plain">) != 1) {</span>
|
||||
<span class="functiontext">Emit::annotate_symbol_i</span><span class="plain">(</span><span class="identifier">N</span><span class="plain">-</span><span class="element">>symbol</span><span class="plain">, </span><span class="identifier">DELENDA_EST_IANN</span><span class="plain">, 1);</span>
|
||||
<span class="identifier">Inter::Symbols::strike_definition</span><span class="plain">(</span><span class="identifier">N</span><span class="plain">-</span><span class="element">>symbol</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">N</span><span class="plain">-</span><span class="element">>symbol</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">N</span><span class="plain">-</span><span class="element">>symbol</span><span class="plain">;</span>
|
||||
<span class="identifier">text_stream</span><span class="plain"> *</span><span class="functiontext">InterNames::get_translation</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">return</span><span class="plain"> </span><span class="identifier">Inter::Symbols::get_translate</span><span class="plain">(</span><span class="functiontext">InterNames::to_symbol</span><span class="plain">(</span><span class="identifier">iname</span><span class="plain">));</span>
|
||||
<span class="plain">}</span>
|
||||
|
||||
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="functiontext">InterNames::destroy_symbol</span><span class="plain">(</span><span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">N</span><span class="plain">) {</span>
|
||||
<span class="functiontext">InterNames::to_symbol</span><span class="plain">(</span><span class="identifier">N</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">N</span><span class="plain">-</span><span class="element">>symbol</span><span class="plain">) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Inter::Symbols::is_predeclared</span><span class="plain">(</span><span class="identifier">N</span><span class="plain">-</span><span class="element">>symbol</span><span class="plain">)) {</span>
|
||||
<span class="identifier">Inter::Symbols::undefine</span><span class="plain">(</span><span class="identifier">N</span><span class="plain">-</span><span class="element">>symbol</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">N</span><span class="plain">-</span><span class="element">>symbol</span><span class="plain">) && (</span><span class="identifier">Inter::Symbols::read_annotation</span><span class="plain">(</span><span class="identifier">N</span><span class="plain">-</span><span class="element">>symbol</span><span class="plain">, </span><span class="identifier">HOLDING_IANN</span><span class="plain">) == 1)) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Inter::Symbols::read_annotation</span><span class="plain">(</span><span class="identifier">N</span><span class="plain">-</span><span class="element">>symbol</span><span class="plain">, </span><span class="identifier">DELENDA_EST_IANN</span><span class="plain">) != 1) {</span>
|
||||
<span class="functiontext">Emit::annotate_symbol_i</span><span class="plain">(</span><span class="identifier">N</span><span class="plain">-</span><span class="element">>symbol</span><span class="plain">, </span><span class="identifier">DELENDA_EST_IANN</span><span class="plain">, 1);</span>
|
||||
<span class="identifier">Inter::Symbols::strike_definition</span><span class="plain">(</span><span class="identifier">N</span><span class="plain">-</span><span class="element">>symbol</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">N</span><span class="plain">-</span><span class="element">>symbol</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">Inter::Symbols::read_annotation</span><span class="plain">(</span><span class="identifier">N</span><span class="plain">-</span><span class="element">>symbol</span><span class="plain">, </span><span class="identifier">DELENDA_EST_IANN</span><span class="plain">) != 1) </span><span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"Bang"</span><span class="plain">);</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">N</span><span class="plain">-</span><span class="element">>symbol</span><span class="plain">;</span>
|
||||
<span class="identifier">text_stream</span><span class="plain"> *</span><span class="functiontext">InterNames::to_text</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">if</span><span class="plain"> (</span><span class="identifier">iname</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="reserved">return</span><span class="plain"> </span><span class="identifier">NULL</span><span class="plain">;</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="functiontext">InterNames::to_symbol</span><span class="plain">(</span><span class="identifier">iname</span><span class="plain">)-></span><span class="identifier">symbol_name</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
|
||||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">InterNames::writer</span><span class="plain">(</span><span class="identifier">OUTPUT_STREAM</span><span class="plain">, </span><span class="reserved">char</span><span class="plain"> *</span><span class="identifier">format_string</span><span class="plain">, </span><span class="reserved">void</span><span class="plain"> *</span><span class="identifier">vI</span><span class="plain">) {</span>
|
||||
<span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">N</span><span class="plain"> = (</span><span class="reserved">inter_name</span><span class="plain"> *) </span><span class="identifier">vI</span><span class="plain">;</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">N</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"<no-inter-name>"</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">N</span><span class="plain">-</span><span class="element">>family</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) || (</span><span class="identifier">N</span><span class="plain">-</span><span class="element">>namespace</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">)) </span><span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"bad inter_name"</span><span class="plain">);</span>
|
||||
<span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">NP</span><span class="plain"> = </span><span class="identifier">N</span><span class="plain">-</span><span class="element">>namespace</span><span class="plain">-</span><span class="element">>namespace_prefix</span><span class="plain">;</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">N</span><span class="plain">-</span><span class="element">>family</span><span class="plain">-</span><span class="element">>mark_exports</span><span class="plain"> == </span><span class="identifier">FALSE</span><span class="plain">) </span><span class="identifier">NP</span><span class="plain"> = </span><span class="identifier">N</span><span class="plain">-</span><span class="element">>namespace</span><span class="plain">-</span><span class="element">>unmarked_prefix</span><span class="plain">;</span>
|
||||
<span class="reserved">switch</span><span class="plain"> (</span><span class="identifier">N</span><span class="plain">-</span><span class="element">>family</span><span class="plain">-</span><span class="element">>fusage</span><span class="plain">) {</span>
|
||||
<span class="reserved">case</span><span class="plain"> </span><span class="constant">DERIVED_FUSAGE</span><span class="plain">:</span>
|
||||
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"%S"</span><span class="plain">, </span><span class="identifier">N</span><span class="plain">-</span><span class="element">>family</span><span class="plain">-</span><span class="element">>derived_prefix</span><span class="plain">);</span>
|
||||
<span class="functiontext">InterNames::writer</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">format_string</span><span class="plain">, </span><span class="identifier">N</span><span class="plain">-</span><span class="element">>derived_from</span><span class="plain">);</span>
|
||||
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"%S"</span><span class="plain">, </span><span class="identifier">N</span><span class="plain">-</span><span class="element">>family</span><span class="plain">-</span><span class="element">>derived_suffix</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">UNIQUE_FUSAGE</span><span class="plain">:</span>
|
||||
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"%S"</span><span class="plain">, </span><span class="identifier">N</span><span class="plain">-</span><span class="element">>family</span><span class="plain">-</span><span class="element">>family_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">UNIQUE_PER_NAMESPACE_FUSAGE</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">NP</span><span class="plain">) > 0) </span><span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"%S_"</span><span class="plain">, </span><span class="identifier">NP</span><span class="plain">);</span>
|
||||
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"%S"</span><span class="plain">, </span><span class="identifier">N</span><span class="plain">-</span><span class="element">>family</span><span class="plain">-</span><span class="element">>family_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">MANY_PER_NAMESPACE_FUSAGE</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">NP</span><span class="plain">) > 0) </span><span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"%S_"</span><span class="plain">, </span><span class="identifier">NP</span><span class="plain">);</span>
|
||||
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"%S"</span><span class="plain">, </span><span class="identifier">N</span><span class="plain">-</span><span class="element">>family</span><span class="plain">-</span><span class="element">>family_name</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">N</span><span class="plain">-</span><span class="element">>unique_number</span><span class="plain"> >= 0) </span><span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"%d"</span><span class="plain">, </span><span class="identifier">N</span><span class="plain">-</span><span class="element">>unique_number</span><span class="plain">);</span>
|
||||
<span class="reserved">break</span><span class="plain">;</span>
|
||||
<span class="reserved">default</span><span class="plain">: </span><span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"unknown fusage"</span><span class="plain">);</span>
|
||||
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="functiontext">InterNames::define_symbol</span><span class="plain">(</span><span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">iname</span><span class="plain">) {</span>
|
||||
<span class="functiontext">InterNames::to_symbol</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">iname</span><span class="plain">-</span><span class="element">>symbol</span><span class="plain">) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Inter::Symbols::is_predeclared</span><span class="plain">(</span><span class="identifier">iname</span><span class="plain">-</span><span class="element">>symbol</span><span class="plain">)) {</span>
|
||||
<span class="identifier">Inter::Symbols::undefine</span><span class="plain">(</span><span class="identifier">iname</span><span class="plain">-</span><span class="element">>symbol</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">N</span><span class="plain">-</span><span class="element">>memo</span><span class="plain">) > 0) </span><span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"_%S"</span><span class="plain">, </span><span class="identifier">N</span><span class="plain">-</span><span class="element">>memo</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">iname</span><span class="plain">-</span><span class="element">>symbol</span><span class="plain">) && (</span><span class="identifier">Inter::Symbols::read_annotation</span><span class="plain">(</span><span class="identifier">iname</span><span class="plain">-</span><span class="element">>symbol</span><span class="plain">, </span><span class="identifier">HOLDING_IANN</span><span class="plain">) == 1)) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Inter::Symbols::read_annotation</span><span class="plain">(</span><span class="identifier">iname</span><span class="plain">-</span><span class="element">>symbol</span><span class="plain">, </span><span class="identifier">DELENDA_EST_IANN</span><span class="plain">) != 1) {</span>
|
||||
<span class="functiontext">Emit::annotate_symbol_i</span><span class="plain">(</span><span class="identifier">iname</span><span class="plain">-</span><span class="element">>symbol</span><span class="plain">, </span><span class="identifier">DELENDA_EST_IANN</span><span class="plain">, 1);</span>
|
||||
<span class="identifier">Inter::Symbols::strike_definition</span><span class="plain">(</span><span class="identifier">iname</span><span class="plain">-</span><span class="element">>symbol</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="element">>symbol</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="element">>symbol</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
|
||||
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="functiontext">InterNames::destroy_symbol</span><span class="plain">(</span><span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">iname</span><span class="plain">) {</span>
|
||||
<span class="functiontext">InterNames::to_symbol</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">iname</span><span class="plain">-</span><span class="element">>symbol</span><span class="plain">) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Inter::Symbols::is_predeclared</span><span class="plain">(</span><span class="identifier">iname</span><span class="plain">-</span><span class="element">>symbol</span><span class="plain">)) {</span>
|
||||
<span class="identifier">Inter::Symbols::undefine</span><span class="plain">(</span><span class="identifier">iname</span><span class="plain">-</span><span class="element">>symbol</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">iname</span><span class="plain">-</span><span class="element">>symbol</span><span class="plain">) && (</span><span class="identifier">Inter::Symbols::read_annotation</span><span class="plain">(</span><span class="identifier">iname</span><span class="plain">-</span><span class="element">>symbol</span><span class="plain">, </span><span class="identifier">HOLDING_IANN</span><span class="plain">) == 1)) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Inter::Symbols::read_annotation</span><span class="plain">(</span><span class="identifier">iname</span><span class="plain">-</span><span class="element">>symbol</span><span class="plain">, </span><span class="identifier">DELENDA_EST_IANN</span><span class="plain">) != 1) {</span>
|
||||
<span class="functiontext">Emit::annotate_symbol_i</span><span class="plain">(</span><span class="identifier">iname</span><span class="plain">-</span><span class="element">>symbol</span><span class="plain">, </span><span class="identifier">DELENDA_EST_IANN</span><span class="plain">, 1);</span>
|
||||
<span class="identifier">Inter::Symbols::strike_definition</span><span class="plain">(</span><span class="identifier">iname</span><span class="plain">-</span><span class="element">>symbol</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="element">>symbol</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">Inter::Symbols::read_annotation</span><span class="plain">(</span><span class="identifier">iname</span><span class="plain">-</span><span class="element">>symbol</span><span class="plain">, </span><span class="identifier">DELENDA_EST_IANN</span><span class="plain">) != 1) </span><span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"Bang"</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="element">>symbol</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
|
||||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">InterNames::set_flag</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">int</span><span class="plain"> </span><span class="identifier">f</span><span class="plain">) {</span>
|
||||
|
@ -334,73 +402,22 @@
|
|||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Inter::Symbols::is_defined</span><span class="plain">(</span><span class="identifier">S</span><span class="plain">)) </span><span class="reserved">return</span><span class="plain"> </span><span class="identifier">TRUE</span><span class="plain">;</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">FALSE</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
|
||||
<span class="reserved">inter_name</span><span class="plain"> *</span><span class="functiontext">InterNames::new_f</span><span class="plain">(</span><span class="reserved">inter_name_family</span><span class="plain"> *</span><span class="identifier">F</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">fix</span><span class="plain">) {</span>
|
||||
<span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">iname</span><span class="plain"> = </span><span class="functiontext">InterNames::new_in_space</span><span class="plain">(</span><span class="functiontext">InterNames::root</span><span class="plain">(), </span><span class="identifier">F</span><span class="plain">, </span><span class="identifier">FALSE</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">fix</span><span class="plain"> != -1) </span><span class="identifier">iname</span><span class="plain">-</span><span class="element">>unique_number</span><span class="plain"> = </span><span class="identifier">fix</span><span class="plain">;</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">iname</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
|
||||
<span class="reserved">inter_name</span><span class="plain"> *</span><span class="functiontext">InterNames::new_in_f</span><span class="plain">(</span><span class="reserved">inter_name_family</span><span class="plain"> *</span><span class="identifier">F</span><span class="plain">, </span><span class="reserved">compilation_module</span><span class="plain"> *</span><span class="identifier">C</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">fix</span><span class="plain">) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">C</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="reserved">return</span><span class="plain"> </span><span class="functiontext">InterNames::new_f</span><span class="plain">(</span><span class="identifier">F</span><span class="plain">, </span><span class="identifier">fix</span><span class="plain">);</span>
|
||||
<span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">iname</span><span class="plain"> = </span><span class="functiontext">InterNames::new_in_space</span><span class="plain">(</span><span class="identifier">C</span><span class="plain">-</span><span class="element">>namespace</span><span class="plain">, </span><span class="identifier">F</span><span class="plain">, </span><span class="identifier">FALSE</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">fix</span><span class="plain"> != -1) </span><span class="identifier">iname</span><span class="plain">-</span><span class="element">>unique_number</span><span class="plain"> = </span><span class="identifier">fix</span><span class="plain">;</span>
|
||||
<span class="functiontext">InterNames::mark</span><span class="plain">(</span><span class="identifier">F</span><span class="plain">, </span><span class="identifier">iname</span><span class="plain">, </span><span class="identifier">C</span><span class="plain">);</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">iname</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
|
||||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">InterNames::mark</span><span class="plain">(</span><span class="reserved">inter_name_family</span><span class="plain"> *</span><span class="identifier">F</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">compilation_module</span><span class="plain"> *</span><span class="identifier">C</span><span class="plain">) {</span>
|
||||
<span class="identifier">iname</span><span class="plain">-</span><span class="element">>declared_in</span><span class="plain"> = </span><span class="identifier">C</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
|
||||
<span class="reserved">compilation_module</span><span class="plain"> *</span><span class="functiontext">InterNames::to_module</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">if</span><span class="plain"> (</span><span class="identifier">iname</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="reserved">return</span><span class="plain"> </span><span class="identifier">NULL</span><span class="plain">;</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">iname</span><span class="plain">-</span><span class="element">>declared_in</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
|
||||
<span class="reserved">inter_name</span><span class="plain"> *</span><span class="functiontext">InterNames::new_derived_f</span><span class="plain">(</span><span class="reserved">inter_name_family</span><span class="plain"> *</span><span class="identifier">F</span><span class="plain">, </span><span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">from</span><span class="plain">) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">F</span><span class="plain">-</span><span class="element">>fusage</span><span class="plain"> != </span><span class="constant">DERIVED_FUSAGE</span><span class="plain">) </span><span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"not a derived family"</span><span class="plain">);</span>
|
||||
<span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">N</span><span class="plain"> = </span><span class="functiontext">InterNames::new_in_space</span><span class="plain">(</span><span class="functiontext">InterNames::root</span><span class="plain">(), </span><span class="identifier">F</span><span class="plain">, </span><span class="identifier">TRUE</span><span class="plain">);</span>
|
||||
<span class="functiontext">Packaging::house_with</span><span class="plain">(</span><span class="identifier">N</span><span class="plain">, </span><span class="identifier">from</span><span class="plain">);</span>
|
||||
<span class="identifier">N</span><span class="plain">-</span><span class="element">>derived_from</span><span class="plain"> = </span><span class="identifier">from</span><span class="plain">;</span>
|
||||
<span class="reserved">compilation_module</span><span class="plain"> *</span><span class="identifier">C</span><span class="plain"> = </span><span class="functiontext">InterNames::to_module</span><span class="plain">(</span><span class="identifier">from</span><span class="plain">);</span>
|
||||
<span class="functiontext">InterNames::mark</span><span class="plain">(</span><span class="identifier">F</span><span class="plain">, </span><span class="identifier">N</span><span class="plain">, </span><span class="identifier">C</span><span class="plain">);</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">N</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
</pre>
|
||||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The function InterNames::new_namespace is used in 27/cm (<a href="27-cm.html#SP2">§2</a>).</p>
|
||||
|
||||
<p class="endnote">The function InterNames::root is used in 27/cm (<a href="27-cm.html#SP2">§2</a>).</p>
|
||||
|
||||
<p class="endnote">The function InterNames::new_family appears nowhere else.</p>
|
||||
|
||||
<p class="endnote">The function InterNames::new_ict appears nowhere else.</p>
|
||||
|
||||
<p class="endnote">The function InterNames::new_in_space appears nowhere else.</p>
|
||||
|
||||
<p class="endnote">The function InterNames::name_generator is used in 27/tr (<a href="27-tr.html#SP1">§1</a>).</p>
|
||||
|
||||
<p class="endnote">The function InterNames::one_off is used in 27/hr (<a href="27-hr.html#SP5">§5</a>), 27/hl (<a href="27-hl.html#SP1">§1</a>, <a href="27-hl.html#SP1_1">§1.1</a>, <a href="27-hl.html#SP2">§2</a>), 27/pc (<a href="27-pc.html#SP7">§7</a>, <a href="27-pc.html#SP7_1">§7.1</a>, <a href="27-pc.html#SP8">§8</a>).</p>
|
||||
|
||||
<p class="endnote">The function InterNames::attach_memo is used in 27/hl (<a href="27-hl.html#SP1">§1</a>, <a href="27-hl.html#SP1_1">§1.1</a>).</p>
|
||||
<p class="endnote">The function InterNames::to_symbol is used in 13/rsfk (<a href="13-rsfk.html#SP5">§5</a>), 15/epv (<a href="15-epv.html#SP4">§4</a>), 21/rl (<a href="21-rl.html#SP9">§9</a>, <a href="21-rl.html#SP11_2">§11.2</a>, <a href="21-rl.html#SP22">§22</a>), 26/iti (<a href="26-iti.html#SP9">§9</a>), 27/is (<a href="27-is.html#SP32">§32</a>), 27/ei (<a href="27-ei.html#SP3">§3</a>, <a href="27-ei.html#SP4">§4</a>, <a href="27-ei.html#SP5">§5</a>).</p>
|
||||
|
||||
<p class="endnote">The function InterNames::change_translation is used in 5/un (<a href="5-un.html#SP1">§1</a>), 13/rsfk (<a href="13-rsfk.html#SP25">§25</a>), 15/pr (<a href="15-pr.html#SP21">§21</a>), 27/hl (<a href="27-hl.html#SP1">§1</a>, <a href="27-hl.html#SP1_1">§1.1</a>), 27/pc (<a href="27-pc.html#SP8">§8</a>).</p>
|
||||
|
||||
<p class="endnote">The function InterNames::get_translation is used in 15/pr (<a href="15-pr.html#SP22_1">§22.1</a>).</p>
|
||||
|
||||
<p class="endnote">The function InterNames::to_symbol is used in 13/rsfk (<a href="13-rsfk.html#SP5">§5</a>), 15/epv (<a href="15-epv.html#SP4">§4</a>), 21/rl (<a href="21-rl.html#SP9">§9</a>, <a href="21-rl.html#SP11_2">§11.2</a>, <a href="21-rl.html#SP22">§22</a>), 26/iti (<a href="26-iti.html#SP9">§9</a>), 27/hr (<a href="27-hr.html#SP5">§5</a>), 27/is (<a href="27-is.html#SP32">§32</a>), 27/ei (<a href="27-ei.html#SP3">§3</a>, <a href="27-ei.html#SP4">§4</a>, <a href="27-ei.html#SP5">§5</a>).</p>
|
||||
|
||||
<p class="endnote">The function InterNames::to_text is used in 15/vp (<a href="15-vp.html#SP3">§3</a>).</p>
|
||||
<p class="endnote">The function InterNames::to_text is used in 15/vp (<a href="15-vp.html#SP3">§3</a>), 27/hr (<a href="27-hr.html#SP5">§5</a>).</p>
|
||||
|
||||
<p class="endnote">The function InterNames::define_symbol is used in 27/ei (<a href="27-ei.html#SP4">§4</a>).</p>
|
||||
|
||||
<p class="endnote">The function InterNames::destroy_symbol appears nowhere else.</p>
|
||||
|
||||
<p class="endnote">The function InterNames::writer is used in 1/cm (<a href="1-cm.html#SP6_3">§6.3</a>).</p>
|
||||
|
||||
<p class="endnote">The function InterNames::set_flag is used in 27/hr (<a href="27-hr.html#SP5">§5</a>), 27/hl (<a href="27-hl.html#SP1">§1</a>).</p>
|
||||
|
||||
<p class="endnote">The function InterNames::clear_flag is used in 5/un (<a href="5-un.html#SP1">§1</a>).</p>
|
||||
|
@ -419,56 +436,6 @@
|
|||
|
||||
<p class="endnote">The function InterNames::defined is used in 13/rsfk (<a href="13-rsfk.html#SP25">§25</a>).</p>
|
||||
|
||||
<p class="endnote">The function InterNames::new_f is used in <a href="#SP3">§3</a>, 27/hl (<a href="27-hl.html#SP1">§1</a>).</p>
|
||||
|
||||
<p class="endnote">The function InterNames::new_in_f is used in 27/hl (<a href="27-hl.html#SP1">§1</a>).</p>
|
||||
|
||||
<p class="endnote">The function InterNames::mark appears nowhere else.</p>
|
||||
|
||||
<p class="endnote">The function InterNames::to_module appears nowhere else.</p>
|
||||
|
||||
<p class="endnote">The function InterNames::new_derived_f is used in 27/hl (<a href="27-hl.html#SP1">§1</a>).</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP3"></a><b>§3. </b></p>
|
||||
|
||||
|
||||
<pre class="definitions">
|
||||
<span class="definitionkeyword">enum</span> <span class="constant">FIRST_INSTANCE_INDERIV</span><span class="definitionkeyword"> from </span><span class="constant">26</span>
|
||||
<span class="definitionkeyword">enum</span> <span class="constant">COUNT_INSTANCE_INDERIV</span>
|
||||
<span class="definitionkeyword">enum</span> <span class="constant">NEXT_INSTANCE_INDERIV</span>
|
||||
<span class="definitionkeyword">enum</span> <span class="constant">FINAL_INDERIV</span>
|
||||
</pre>
|
||||
|
||||
<pre class="display">
|
||||
<span class="reserved">inter_name</span><span class="plain"> *</span><span class="functiontext">InterNames::letter_parametrised_name_f</span><span class="plain">(</span><span class="reserved">inter_name_family</span><span class="plain"> *</span><span class="identifier">family</span><span class="plain">, </span><span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">rname</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">marker</span><span class="plain">, </span><span class="reserved">package_request</span><span class="plain"> *</span><span class="identifier">R</span><span class="plain">) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">rname</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"can't parametrise null name"</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">rname</span><span class="plain">-</span><span class="element">>parametrised_derivatives</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) {</span>
|
||||
<span class="identifier">rname</span><span class="plain">-</span><span class="element">>parametrised_derivatives</span><span class="plain"> =</span>
|
||||
<span class="identifier">Memory::I7_calloc</span><span class="plain">(</span><span class="constant">FINAL_INDERIV</span><span class="plain">, </span><span class="reserved">sizeof</span><span class="plain">(</span><span class="reserved">inter_name</span><span class="plain"> *), </span><span class="identifier">INTER_SYMBOLS_MREASON</span><span class="plain">);</span>
|
||||
<span class="reserved">for</span><span class="plain"> (</span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">i</span><span class="plain">=0; </span><span class="identifier">i</span><span class="plain"><</span><span class="constant">FINAL_INDERIV</span><span class="plain">; </span><span class="identifier">i</span><span class="plain">++) </span><span class="identifier">rname</span><span class="plain">-</span><span class="element">>parametrised_derivatives</span><span class="plain">[</span><span class="identifier">i</span><span class="plain">] = </span><span class="identifier">NULL</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">marker</span><span class="plain"> < 0) || (</span><span class="identifier">marker</span><span class="plain"> >= </span><span class="constant">FINAL_INDERIV</span><span class="plain">)) </span><span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"respomse parameter out of range"</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">rname</span><span class="plain">-</span><span class="element">>parametrised_derivatives</span><span class="plain">[</span><span class="identifier">marker</span><span class="plain">] == </span><span class="identifier">NULL</span><span class="plain">) {</span>
|
||||
<span class="identifier">rname</span><span class="plain">-</span><span class="element">>parametrised_derivatives</span><span class="plain">[</span><span class="identifier">marker</span><span class="plain">] = </span><span class="functiontext">InterNames::new_f</span><span class="plain">(</span><span class="identifier">family</span><span class="plain">, -1);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">R</span><span class="plain">) </span><span class="functiontext">Packaging::house</span><span class="plain">(</span><span class="identifier">rname</span><span class="plain">-</span><span class="element">>parametrised_derivatives</span><span class="plain">[</span><span class="identifier">marker</span><span class="plain">], </span><span class="identifier">R</span><span class="plain">);</span>
|
||||
<span class="identifier">rname</span><span class="plain">-</span><span class="element">>parametrised_derivatives</span><span class="plain">[</span><span class="identifier">marker</span><span class="plain">]-</span><span class="element">>derived_from</span><span class="plain"> = </span><span class="identifier">rname</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">rname</span><span class="plain">-</span><span class="element">>parametrised_derivatives</span><span class="plain">[</span><span class="identifier">marker</span><span class="plain">];</span>
|
||||
<span class="plain">}</span>
|
||||
|
||||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">InterNames::override_action_base_iname</span><span class="plain">(</span><span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">ab_iname</span><span class="plain">, </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">to</span><span class="plain">) {</span>
|
||||
<span class="identifier">ab_iname</span><span class="plain">-</span><span class="element">>family</span><span class="plain">-</span><span class="element">>family_name</span><span class="plain"> = </span><span class="identifier">Str::duplicate</span><span class="plain">(</span><span class="identifier">to</span><span class="plain">);</span>
|
||||
<span class="identifier">Str::clear</span><span class="plain">(</span><span class="identifier">ab_iname</span><span class="plain">-</span><span class="element">>memo</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
</pre>
|
||||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The function InterNames::letter_parametrised_name_f is used in 27/hl (<a href="27-hl.html#SP1">§1</a>).</p>
|
||||
|
||||
<p class="endnote">The function InterNames::override_action_base_iname appears nowhere else.</p>
|
||||
|
||||
<hr class="tocbar">
|
||||
<ul class="toc"><li><a href="27-pc.html">Back to 'Packaging'</a></li><li><a href="27-is.html">Continue with 'Inter Schemas'</a></li></ul><hr class="tocbar">
|
||||
<!--End of weave-->
|
||||
|
|
|
@ -87,7 +87,7 @@
|
|||
<span class="reserved">package_request</span><span class="plain"> *</span><span class="functiontext">Packaging::request</span><span class="plain">(</span><span class="reserved">inter_name</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">parent</span><span class="plain">, </span><span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">pt</span><span class="plain">) {</span>
|
||||
<span class="reserved">package_request</span><span class="plain"> *</span><span class="identifier">R</span><span class="plain"> = </span><span class="identifier">CREATE</span><span class="plain">(</span><span class="reserved">package_request</span><span class="plain">);</span>
|
||||
<span class="identifier">R</span><span class="plain">-</span><span class="element">>eventual_name</span><span class="plain"> = </span><span class="identifier">name</span><span class="plain">;</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">parent</span><span class="plain">) </span><span class="identifier">name</span><span class="plain">-</span><span class="element">>eventual_owner</span><span class="plain"> = </span><span class="identifier">parent</span><span class="plain">;</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">parent</span><span class="plain">) </span><span class="identifier">name</span><span class="plain">-</span><span class="element">>location_in_hierarchy</span><span class="plain"> = </span><span class="identifier">parent</span><span class="plain">;</span>
|
||||
<span class="identifier">R</span><span class="plain">-</span><span class="element">>eventual_type</span><span class="plain"> = </span><span class="identifier">pt</span><span class="plain">;</span>
|
||||
<span class="identifier">R</span><span class="plain">-</span><span class="element">>actual_package</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
|
||||
<span class="identifier">R</span><span class="plain">-</span><span class="element">>parent_request</span><span class="plain"> = </span><span class="identifier">parent</span><span class="plain">;</span>
|
||||
|
@ -135,11 +135,11 @@
|
|||
<span class="plain">}</span>
|
||||
|
||||
<span class="reserved">package_request</span><span class="plain"> *</span><span class="functiontext">Packaging::home_of</span><span class="plain">(</span><span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">N</span><span class="plain">) {</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">N</span><span class="plain">-</span><span class="element">>eventual_owner</span><span class="plain">;</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">N</span><span class="plain">-</span><span class="element">>location_in_hierarchy</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
|
||||
<span class="reserved">packaging_state</span><span class="plain"> </span><span class="functiontext">Packaging::enter_home_of</span><span class="plain">(</span><span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">N</span><span class="plain">) {</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="functiontext">Packaging::enter</span><span class="plain">(</span><span class="identifier">N</span><span class="plain">-</span><span class="element">>eventual_owner</span><span class="plain">);</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="functiontext">Packaging::enter</span><span class="plain">(</span><span class="functiontext">Packaging::home_of</span><span class="plain">(</span><span class="identifier">N</span><span class="plain">));</span>
|
||||
<span class="plain">}</span>
|
||||
|
||||
<span class="reserved">packaging_state</span><span class="plain"> </span><span class="functiontext">Packaging::enter_current_enclosure</span><span class="plain">(</span><span class="reserved">void</span><span class="plain">) {</span>
|
||||
|
@ -155,9 +155,9 @@
|
|||
|
||||
<p class="endnote">The function Packaging::stateless is used in 15/epv (<a href="15-epv.html#SP2">§2</a>).</p>
|
||||
|
||||
<p class="endnote">The function Packaging::home_of is used in 12/cdp (<a href="12-cdp.html#SP5">§5</a>), 27/hr (<a href="27-hr.html#SP3">§3</a>), 27/hl (<a href="27-hl.html#SP1">§1</a>).</p>
|
||||
<p class="endnote">The function Packaging::home_of is used in 5/ins (<a href="5-ins.html#SP34">§34</a>), 12/cdp (<a href="12-cdp.html#SP5">§5</a>), 13/rsfk (<a href="13-rsfk.html#SP22">§22</a>), 21/rl2 (<a href="21-rl2.html#SP20">§20</a>), 26/rt (<a href="26-rt.html#SP3">§3</a>, <a href="26-rt.html#SP4">§4</a>), 27/hr (<a href="27-hr.html#SP3">§3</a>), 27/hl (<a href="27-hl.html#SP1">§1</a>), 27/ei (<a href="27-ei.html#SP4">§4</a>).</p>
|
||||
|
||||
<p class="endnote">The function Packaging::enter_home_of is used in 6/bp (<a href="6-bp.html#SP42">§42</a>), 6/rlt (<a href="6-rlt.html#SP14">§14</a>, <a href="6-rlt.html#SP15_1">§15.1</a>, <a href="6-rlt.html#SP20">§20</a>, <a href="6-rlt.html#SP20_3">§20.3</a>), 6/nv (<a href="6-nv.html#SP18">§18</a>), 12/cdp (<a href="12-cdp.html#SP2_1_1">§2.1.1</a>), 13/kak (<a href="13-kak.html#SP5">§5</a>), 13/rsfk (<a href="13-rsfk.html#SP4">§4</a>, <a href="13-rsfk.html#SP16_2">§16.2</a>, <a href="13-rsfk.html#SP25">§25</a>), 15/pr (<a href="15-pr.html#SP27">§27</a>), 15/epv (<a href="15-epv.html#SP1_1_2">§1.1.2</a>), 16/ic (<a href="16-ic.html#SP10">§10</a>), 17/tl (<a href="17-tl.html#SP14_1">§14.1</a>, <a href="17-tl.html#SP14_2">§14.2</a>, <a href="17-tl.html#SP16">§16</a>), 17/ts (<a href="17-ts.html#SP8_1">§8.1</a>, <a href="17-ts.html#SP11">§11</a>), 17/rs (<a href="17-rs.html#SP7_3">§7.3</a>), 18/lc (<a href="18-lc.html#SP11">§11</a>, <a href="18-lc.html#SP12_1">§12.1</a>), 19/rsft (<a href="19-rsft.html#SP1_1_1_1">§1.1.1.1</a>, <a href="19-rsft.html#SP1_1_1_1_1">§1.1.1.1.1</a>, <a href="19-rsft.html#SP1_2">§1.2</a>, <a href="19-rsft.html#SP1_3">§1.3</a>), 21/rl2 (<a href="21-rl2.html#SP14">§14</a>, <a href="21-rl2.html#SP20">§20</a>), 21/fao (<a href="21-fao.html#SP10">§10</a>), 21/ac (<a href="21-ac.html#SP6">§6</a>, <a href="21-ac.html#SP8">§8</a>, <a href="21-ac.html#SP14">§14</a>), 22/cs (<a href="22-cs.html#SP8">§8</a>), 22/pav (<a href="22-pav.html#SP8_1">§8.1</a>), 22/tp2 (<a href="22-tp2.html#SP4">§4</a>), 24/ch (<a href="24-ch.html#SP6">§6</a>, <a href="24-ch.html#SP8">§8</a>), 26/vm (<a href="26-vm.html#SP8">§8</a>), 26/uo (<a href="26-uo.html#SP21">§21</a>), 26/lt (<a href="26-lt.html#SP4_1">§4.1</a>), 26/jl (<a href="26-jl.html#SP6">§6</a>), 26/rt (<a href="26-rt.html#SP1">§1</a>), 26/iti (<a href="26-iti.html#SP10">§10</a>), 26/pl (<a href="26-pl.html#SP12">§12</a>), 26/ts (<a href="26-ts.html#SP10">§10</a>), 27/hr (<a href="27-hr.html#SP4">§4</a>), 27/ei (<a href="27-ei.html#SP3">§3</a>, <a href="27-ei.html#SP4">§4</a>).</p>
|
||||
<p class="endnote">The function Packaging::enter_home_of is used in 5/ins (<a href="5-ins.html#SP34">§34</a>), 5/nv (<a href="5-nv.html#SP16">§16</a>), 6/bp (<a href="6-bp.html#SP42">§42</a>), 6/rlt (<a href="6-rlt.html#SP14">§14</a>, <a href="6-rlt.html#SP15_1">§15.1</a>, <a href="6-rlt.html#SP20">§20</a>, <a href="6-rlt.html#SP20_3">§20.3</a>), 6/nv (<a href="6-nv.html#SP18">§18</a>), 12/cdp (<a href="12-cdp.html#SP2_1_1">§2.1.1</a>), 13/kak (<a href="13-kak.html#SP5">§5</a>), 13/rsfk (<a href="13-rsfk.html#SP4">§4</a>, <a href="13-rsfk.html#SP16_2">§16.2</a>, <a href="13-rsfk.html#SP25">§25</a>), 15/pr (<a href="15-pr.html#SP27">§27</a>), 15/epv (<a href="15-epv.html#SP1_1_2">§1.1.2</a>), 16/ic (<a href="16-ic.html#SP10">§10</a>), 17/tl (<a href="17-tl.html#SP14_1">§14.1</a>, <a href="17-tl.html#SP14_2">§14.2</a>, <a href="17-tl.html#SP16">§16</a>), 17/ts (<a href="17-ts.html#SP8_1">§8.1</a>, <a href="17-ts.html#SP11">§11</a>), 17/rs (<a href="17-rs.html#SP7_1">§7.1</a>, <a href="17-rs.html#SP7_3">§7.3</a>), 18/lc (<a href="18-lc.html#SP11">§11</a>, <a href="18-lc.html#SP12_1">§12.1</a>), 19/rsft (<a href="19-rsft.html#SP1_1_1_1">§1.1.1.1</a>, <a href="19-rsft.html#SP1_1_1_1_1">§1.1.1.1.1</a>, <a href="19-rsft.html#SP1_2">§1.2</a>, <a href="19-rsft.html#SP1_3">§1.3</a>), 21/rl2 (<a href="21-rl2.html#SP14">§14</a>, <a href="21-rl2.html#SP20">§20</a>), 21/fao (<a href="21-fao.html#SP10">§10</a>), 21/ac (<a href="21-ac.html#SP6">§6</a>, <a href="21-ac.html#SP8">§8</a>, <a href="21-ac.html#SP14">§14</a>), 22/cs (<a href="22-cs.html#SP8">§8</a>), 22/ph (<a href="22-ph.html#SP12">§12</a>), 22/pav (<a href="22-pav.html#SP8_1">§8.1</a>), 22/tp2 (<a href="22-tp2.html#SP4">§4</a>), 24/ch (<a href="24-ch.html#SP6">§6</a>, <a href="24-ch.html#SP8">§8</a>), 26/vm (<a href="26-vm.html#SP8">§8</a>), 26/uo (<a href="26-uo.html#SP21">§21</a>), 26/lt (<a href="26-lt.html#SP4_1">§4.1</a>), 26/jl (<a href="26-jl.html#SP6">§6</a>), 26/rt (<a href="26-rt.html#SP1">§1</a>), 26/iti (<a href="26-iti.html#SP10">§10</a>), 26/pl (<a href="26-pl.html#SP12">§12</a>), 26/ts (<a href="26-ts.html#SP10">§10</a>), 27/hr (<a href="27-hr.html#SP4">§4</a>), 27/ei (<a href="27-ei.html#SP3">§3</a>, <a href="27-ei.html#SP4">§4</a>).</p>
|
||||
|
||||
<p class="endnote">The function Packaging::enter_current_enclosure appears nowhere else.</p>
|
||||
|
||||
|
@ -229,20 +229,20 @@
|
|||
|
||||
<span class="identifier">inter_symbols_table</span><span class="plain"> *</span><span class="functiontext">Packaging::scope</span><span class="plain">(</span><span class="identifier">inter_repository</span><span class="plain"> *</span><span class="identifier">I</span><span class="plain">, </span><span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">N</span><span class="plain">) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">N</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"can't determine scope of null name"</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">N</span><span class="plain">-</span><span class="element">>eventual_owner</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="reserved">return</span><span class="plain"> </span><span class="identifier">Inter::get_global_symbols</span><span class="plain">(</span><span class="functiontext">Emit::repository</span><span class="plain">());</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">Inter::Packages::scope</span><span class="plain">(</span><span class="functiontext">Packaging::incarnate</span><span class="plain">(</span><span class="identifier">N</span><span class="plain">-</span><span class="element">>eventual_owner</span><span class="plain">));</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">N</span><span class="plain">-</span><span class="element">>location_in_hierarchy</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="reserved">return</span><span class="plain"> </span><span class="identifier">Inter::get_global_symbols</span><span class="plain">(</span><span class="functiontext">Emit::repository</span><span class="plain">());</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">Inter::Packages::scope</span><span class="plain">(</span><span class="functiontext">Packaging::incarnate</span><span class="plain">(</span><span class="identifier">N</span><span class="plain">-</span><span class="element">>location_in_hierarchy</span><span class="plain">));</span>
|
||||
<span class="plain">}</span>
|
||||
</pre>
|
||||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The function Packaging::enter is used in <a href="#SP5">§5</a>, 5/ins (<a href="5-ins.html#SP34">§34</a>), 5/nv (<a href="5-nv.html#SP16">§16</a>), 13/rsfk (<a href="13-rsfk.html#SP16_1">§16.1</a>), 15/epv (<a href="15-epv.html#SP2">§2</a>), 17/rs (<a href="17-rs.html#SP6_1">§6.1</a>, <a href="17-rs.html#SP7_1">§7.1</a>), 21/rl (<a href="21-rl.html#SP9">§9</a>), 21/rl2 (<a href="21-rl2.html#SP20">§20</a>), 22/ph (<a href="22-ph.html#SP12">§12</a>), 27/hl (<a href="27-hl.html#SP1">§1</a>), 27/ei (<a href="27-ei.html#SP3">§3</a>, <a href="27-ei.html#SP4">§4</a>).</p>
|
||||
<p class="endnote">The function Packaging::enter is used in <a href="#SP5">§5</a>, 13/rsfk (<a href="13-rsfk.html#SP16_1">§16.1</a>), 15/epv (<a href="15-epv.html#SP2">§2</a>), 17/rs (<a href="17-rs.html#SP6_1">§6.1</a>), 21/rl (<a href="21-rl.html#SP9">§9</a>), 21/rl2 (<a href="21-rl2.html#SP20">§20</a>), 27/hl (<a href="27-hl.html#SP1">§1</a>), 27/ei (<a href="27-ei.html#SP3">§3</a>, <a href="27-ei.html#SP4">§4</a>).</p>
|
||||
|
||||
<p class="endnote">The function Packaging::exit is used in 5/ins (<a href="5-ins.html#SP34">§34</a>), 5/nv (<a href="5-nv.html#SP16">§16</a>), 6/bp (<a href="6-bp.html#SP42">§42</a>), 6/rlt (<a href="6-rlt.html#SP14">§14</a>, <a href="6-rlt.html#SP15_1">§15.1</a>, <a href="6-rlt.html#SP20">§20</a>, <a href="6-rlt.html#SP20_3">§20.3</a>), 6/nv (<a href="6-nv.html#SP18">§18</a>), 12/cdp (<a href="12-cdp.html#SP2_1_1">§2.1.1</a>), 13/kak (<a href="13-kak.html#SP5">§5</a>), 13/rsfk (<a href="13-rsfk.html#SP4">§4</a>, <a href="13-rsfk.html#SP16_1">§16.1</a>, <a href="13-rsfk.html#SP16_2">§16.2</a>, <a href="13-rsfk.html#SP25">§25</a>), 15/pr (<a href="15-pr.html#SP27">§27</a>), 15/epv (<a href="15-epv.html#SP1_1_2">§1.1.2</a>, <a href="15-epv.html#SP2">§2</a>), 16/ic (<a href="16-ic.html#SP10">§10</a>), 17/tl (<a href="17-tl.html#SP14_1">§14.1</a>, <a href="17-tl.html#SP14_2">§14.2</a>, <a href="17-tl.html#SP16">§16</a>), 17/ts (<a href="17-ts.html#SP8_1">§8.1</a>, <a href="17-ts.html#SP11">§11</a>), 17/rs (<a href="17-rs.html#SP6_1">§6.1</a>, <a href="17-rs.html#SP7_1">§7.1</a>, <a href="17-rs.html#SP7_3">§7.3</a>), 18/lc (<a href="18-lc.html#SP11">§11</a>, <a href="18-lc.html#SP12_1">§12.1</a>), 19/rsft (<a href="19-rsft.html#SP1_1_1_1">§1.1.1.1</a>, <a href="19-rsft.html#SP1_1_1_1_1">§1.1.1.1.1</a>, <a href="19-rsft.html#SP1_2">§1.2</a>, <a href="19-rsft.html#SP1_3">§1.3</a>), 21/rl (<a href="21-rl.html#SP9">§9</a>), 21/rl2 (<a href="21-rl2.html#SP14">§14</a>, <a href="21-rl2.html#SP20">§20</a>), 21/fao (<a href="21-fao.html#SP10">§10</a>), 21/ac (<a href="21-ac.html#SP6">§6</a>, <a href="21-ac.html#SP8">§8</a>, <a href="21-ac.html#SP14">§14</a>), 22/cs (<a href="22-cs.html#SP8">§8</a>), 22/ph (<a href="22-ph.html#SP12">§12</a>), 22/pav (<a href="22-pav.html#SP8_1">§8.1</a>), 22/tp2 (<a href="22-tp2.html#SP4">§4</a>), 24/ch (<a href="24-ch.html#SP6">§6</a>, <a href="24-ch.html#SP8">§8</a>), 26/vm (<a href="26-vm.html#SP8">§8</a>), 26/uo (<a href="26-uo.html#SP21">§21</a>), 26/lt (<a href="26-lt.html#SP4_1">§4.1</a>), 26/jl (<a href="26-jl.html#SP6">§6</a>), 26/rt (<a href="26-rt.html#SP4">§4</a>), 26/iti (<a href="26-iti.html#SP10">§10</a>), 26/pl (<a href="26-pl.html#SP12">§12</a>), 26/ts (<a href="26-ts.html#SP10">§10</a>), 27/hr (<a href="27-hr.html#SP4">§4</a>), 27/hl (<a href="27-hl.html#SP1">§1</a>), 27/ei (<a href="27-ei.html#SP3">§3</a>, <a href="27-ei.html#SP4">§4</a>).</p>
|
||||
|
||||
<p class="endnote">The function Packaging::incarnate is used in 21/rl (<a href="21-rl.html#SP9">§9</a>), 27/ei (<a href="27-ei.html#SP3">§3</a>).</p>
|
||||
|
||||
<p class="endnote">The function Packaging::scope is used in 27/in (<a href="27-in.html#SP2">§2</a>).</p>
|
||||
<p class="endnote">The function Packaging::scope is used in 27/in (<a href="27-in.html#SP8">§8</a>).</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP7"></a><b>§7. </b></p>
|
||||
|
||||
|
@ -252,7 +252,7 @@
|
|||
<span class="reserved">package_request</span><span class="plain"> *</span><span class="functiontext">Packaging::request_generic</span><span class="plain">(</span><span class="reserved">void</span><span class="plain">) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">generic_pr</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">)</span>
|
||||
<span class="identifier">generic_pr</span><span class="plain"> = </span><span class="functiontext">Packaging::request</span><span class="plain">(</span>
|
||||
<span class="functiontext">InterNames::one_off</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"generic"</span><span class="plain">, </span><span class="functiontext">Hierarchy::resources</span><span class="plain">()),</span>
|
||||
<span class="functiontext">InterNames::explicitly_named</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"generic"</span><span class="plain">, </span><span class="functiontext">Hierarchy::resources</span><span class="plain">()),</span>
|
||||
<span class="functiontext">Hierarchy::resources</span><span class="plain">(), </span><span class="identifier">module_ptype</span><span class="plain">);</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">generic_pr</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
|
@ -261,7 +261,7 @@
|
|||
<span class="reserved">package_request</span><span class="plain"> *</span><span class="functiontext">Packaging::request_synoptic</span><span class="plain">(</span><span class="reserved">void</span><span class="plain">) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">synoptic_pr</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">)</span>
|
||||
<span class="identifier">synoptic_pr</span><span class="plain"> = </span><span class="functiontext">Packaging::request</span><span class="plain">(</span>
|
||||
<span class="functiontext">InterNames::one_off</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"synoptic"</span><span class="plain">, </span><span class="functiontext">Hierarchy::resources</span><span class="plain">()),</span>
|
||||
<span class="functiontext">InterNames::explicitly_named</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"synoptic"</span><span class="plain">, </span><span class="functiontext">Hierarchy::resources</span><span class="plain">()),</span>
|
||||
<span class="functiontext">Hierarchy::resources</span><span class="plain">(), </span><span class="identifier">module_ptype</span><span class="plain">);</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">synoptic_pr</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
|
@ -289,7 +289,7 @@
|
|||
<span class="plain">} </span><span class="reserved">submodule_requests</span><span class="plain">;</span>
|
||||
|
||||
<span class="reserved">package_request</span><span class="plain"> *</span><span class="functiontext">Packaging::resources_for_new_submodule</span><span class="plain">(</span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">name</span><span class="plain">, </span><span class="reserved">submodule_requests</span><span class="plain"> *</span><span class="identifier">SR</span><span class="plain">) {</span>
|
||||
<span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">package_iname</span><span class="plain"> = </span><span class="functiontext">InterNames::one_off</span><span class="plain">(</span><span class="identifier">name</span><span class="plain">, </span><span class="functiontext">Hierarchy::resources</span><span class="plain">());</span>
|
||||
<span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">package_iname</span><span class="plain"> = </span><span class="functiontext">InterNames::explicitly_named</span><span class="plain">(</span><span class="identifier">name</span><span class="plain">, </span><span class="functiontext">Hierarchy::resources</span><span class="plain">());</span>
|
||||
<span class="reserved">package_request</span><span class="plain"> *</span><span class="identifier">P</span><span class="plain"> = </span><span class="functiontext">Packaging::request</span><span class="plain">(</span><span class="identifier">package_iname</span><span class="plain">, </span><span class="functiontext">Hierarchy::resources</span><span class="plain">(), </span><span class="identifier">module_ptype</span><span class="plain">);</span>
|
||||
<span class="functiontext">Packaging::initialise_submodules</span><span class="plain">(</span><span class="identifier">SR</span><span class="plain">);</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">P</span><span class="plain">;</span>
|
||||
|
@ -382,7 +382,7 @@
|
|||
<span class="identifier">LOOP_OVER_LINKED_LIST</span><span class="plain">(</span><span class="identifier">sr</span><span class="plain">, </span><span class="reserved">submodule_request</span><span class="plain">, </span><span class="identifier">SR</span><span class="plain">-</span><span class="element">>submodules</span><span class="plain">)</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">sid</span><span class="plain"> == </span><span class="identifier">sr</span><span class="plain">-</span><span class="element">>which_submodule</span><span class="plain">)</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">sr</span><span class="plain">-</span><span class="element">>where_found</span><span class="plain">;</span>
|
||||
<span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">iname</span><span class="plain"> = </span><span class="functiontext">InterNames::one_off</span><span class="plain">(</span><span class="identifier">sid</span><span class="plain">-</span><span class="element">>submodule_name</span><span class="plain">, </span><span class="identifier">parent</span><span class="plain">);</span>
|
||||
<span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">iname</span><span class="plain"> = </span><span class="functiontext">InterNames::explicitly_named</span><span class="plain">(</span><span class="identifier">sid</span><span class="plain">-</span><span class="element">>submodule_name</span><span class="plain">, </span><span class="identifier">parent</span><span class="plain">);</span>
|
||||
<span class="identifier">sr</span><span class="plain"> = </span><span class="identifier">CREATE</span><span class="plain">(</span><span class="reserved">submodule_request</span><span class="plain">);</span>
|
||||
<span class="identifier">sr</span><span class="plain">-</span><span class="element">>which_submodule</span><span class="plain"> = </span><span class="identifier">sid</span><span class="plain">;</span>
|
||||
<span class="identifier">sr</span><span class="plain">-</span><span class="element">>where_found</span><span class="plain"> = </span><span class="functiontext">Packaging::request</span><span class="plain">(</span><span class="identifier">iname</span><span class="plain">, </span><span class="identifier">parent</span><span class="plain">, </span><span class="identifier">plain_ptype</span><span class="plain">);</span>
|
||||
|
@ -431,14 +431,14 @@
|
|||
<span class="plain">}</span>
|
||||
<span class="identifier">TEMPORARY_TEXT</span><span class="plain">(</span><span class="identifier">P</span><span class="plain">);</span>
|
||||
<span class="identifier">WRITE_TO</span><span class="plain">(</span><span class="identifier">P</span><span class="plain">, </span><span class="string">"%S_%d"</span><span class="plain">, </span><span class="identifier">pr_counter_names</span><span class="plain">[</span><span class="identifier">what_for</span><span class="plain">], </span><span class="identifier">N</span><span class="plain">);</span>
|
||||
<span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">iname</span><span class="plain"> = </span><span class="functiontext">InterNames::one_off</span><span class="plain">(</span><span class="identifier">P</span><span class="plain">, </span><span class="identifier">R</span><span class="plain">);</span>
|
||||
<span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">iname</span><span class="plain"> = </span><span class="functiontext">InterNames::explicitly_named</span><span class="plain">(</span><span class="identifier">P</span><span class="plain">, </span><span class="identifier">R</span><span class="plain">);</span>
|
||||
<span class="identifier">DISCARD_TEXT</span><span class="plain">(</span><span class="identifier">P</span><span class="plain">);</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">iname</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
|
||||
<span class="reserved">inter_name</span><span class="plain"> *</span><span class="functiontext">Packaging::function</span><span class="plain">(</span><span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">function_iname</span><span class="plain">, </span><span class="reserved">package_request</span><span class="plain"> *</span><span class="identifier">R2</span><span class="plain">, </span><span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">temp_iname</span><span class="plain">) {</span>
|
||||
<span class="reserved">package_request</span><span class="plain"> *</span><span class="identifier">R3</span><span class="plain"> = </span><span class="functiontext">Packaging::request</span><span class="plain">(</span><span class="identifier">function_iname</span><span class="plain">, </span><span class="identifier">R2</span><span class="plain">, </span><span class="identifier">function_ptype</span><span class="plain">);</span>
|
||||
<span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">iname</span><span class="plain"> = </span><span class="functiontext">InterNames::one_off</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"call"</span><span class="plain">, </span><span class="identifier">R3</span><span class="plain">);</span>
|
||||
<span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">iname</span><span class="plain"> = </span><span class="functiontext">InterNames::explicitly_named</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"call"</span><span class="plain">, </span><span class="identifier">R3</span><span class="plain">);</span>
|
||||
<span class="functiontext">Packaging::house</span><span class="plain">(</span><span class="identifier">iname</span><span class="plain">, </span><span class="identifier">R3</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">temp_iname</span><span class="plain">) {</span>
|
||||
<span class="identifier">TEMPORARY_TEXT</span><span class="plain">(</span><span class="identifier">T</span><span class="plain">);</span>
|
||||
|
@ -451,7 +451,7 @@
|
|||
|
||||
<span class="reserved">inter_name</span><span class="plain"> *</span><span class="functiontext">Packaging::function_text</span><span class="plain">(</span><span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">function_iname</span><span class="plain">, </span><span class="reserved">package_request</span><span class="plain"> *</span><span class="identifier">R2</span><span class="plain">, </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">translation</span><span class="plain">) {</span>
|
||||
<span class="reserved">package_request</span><span class="plain"> *</span><span class="identifier">R3</span><span class="plain"> = </span><span class="functiontext">Packaging::request</span><span class="plain">(</span><span class="identifier">function_iname</span><span class="plain">, </span><span class="identifier">R2</span><span class="plain">, </span><span class="identifier">function_ptype</span><span class="plain">);</span>
|
||||
<span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">iname</span><span class="plain"> = </span><span class="functiontext">InterNames::one_off</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"call"</span><span class="plain">, </span><span class="identifier">R3</span><span class="plain">);</span>
|
||||
<span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">iname</span><span class="plain"> = </span><span class="functiontext">InterNames::explicitly_named</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"call"</span><span class="plain">, </span><span class="identifier">R3</span><span class="plain">);</span>
|
||||
<span class="functiontext">Packaging::house</span><span class="plain">(</span><span class="identifier">iname</span><span class="plain">, </span><span class="identifier">R3</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">translation</span><span class="plain">)</span>
|
||||
<span class="functiontext">InterNames::change_translation</span><span class="plain">(</span><span class="identifier">iname</span><span class="plain">, </span><span class="identifier">translation</span><span class="plain">);</span>
|
||||
|
@ -460,7 +460,7 @@
|
|||
|
||||
<span class="reserved">inter_name</span><span class="plain"> *</span><span class="functiontext">Packaging::datum_text</span><span class="plain">(</span><span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">function_iname</span><span class="plain">, </span><span class="reserved">package_request</span><span class="plain"> *</span><span class="identifier">R2</span><span class="plain">, </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">translation</span><span class="plain">) {</span>
|
||||
<span class="reserved">package_request</span><span class="plain"> *</span><span class="identifier">R3</span><span class="plain"> = </span><span class="functiontext">Packaging::request</span><span class="plain">(</span><span class="identifier">function_iname</span><span class="plain">, </span><span class="identifier">R2</span><span class="plain">, </span><span class="identifier">data_ptype</span><span class="plain">);</span>
|
||||
<span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">iname</span><span class="plain"> = </span><span class="functiontext">InterNames::one_off</span><span class="plain">(</span><span class="identifier">translation</span><span class="plain">, </span><span class="identifier">R3</span><span class="plain">);</span>
|
||||
<span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">iname</span><span class="plain"> = </span><span class="functiontext">InterNames::explicitly_named</span><span class="plain">(</span><span class="identifier">translation</span><span class="plain">, </span><span class="identifier">R3</span><span class="plain">);</span>
|
||||
<span class="functiontext">Packaging::house</span><span class="plain">(</span><span class="identifier">iname</span><span class="plain">, </span><span class="identifier">R3</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>
|
||||
|
@ -468,19 +468,19 @@
|
|||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Packaging::house</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">package_request</span><span class="plain"> *</span><span class="identifier">at</span><span class="plain">) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">iname</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"can't house null name"</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">at</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"can't house nowhere"</span><span class="plain">);</span>
|
||||
<span class="identifier">iname</span><span class="plain">-</span><span class="element">>eventual_owner</span><span class="plain"> = </span><span class="identifier">at</span><span class="plain">;</span>
|
||||
<span class="identifier">iname</span><span class="plain">-</span><span class="element">>location_in_hierarchy</span><span class="plain"> = </span><span class="identifier">at</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
|
||||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Packaging::house_with</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">inter_name</span><span class="plain"> *</span><span class="identifier">landlord</span><span class="plain">) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">iname</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"can't house null name"</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">landlord</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"can't house with nobody"</span><span class="plain">);</span>
|
||||
<span class="identifier">iname</span><span class="plain">-</span><span class="element">>eventual_owner</span><span class="plain"> = </span><span class="identifier">landlord</span><span class="plain">-</span><span class="element">>eventual_owner</span><span class="plain">;</span>
|
||||
<span class="identifier">iname</span><span class="plain">-</span><span class="element">>location_in_hierarchy</span><span class="plain"> = </span><span class="identifier">landlord</span><span class="plain">-</span><span class="element">>location_in_hierarchy</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="functiontext">Packaging::houseed_in_function</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">if</span><span class="plain"> (</span><span class="identifier">iname</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="reserved">return</span><span class="plain"> </span><span class="identifier">FALSE</span><span class="plain">;</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">iname</span><span class="plain">-</span><span class="element">>eventual_owner</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="reserved">return</span><span class="plain"> </span><span class="identifier">FALSE</span><span class="plain">;</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">iname</span><span class="plain">-</span><span class="element">>eventual_owner</span><span class="plain">-</span><span class="element">>eventual_type</span><span class="plain"> == </span><span class="identifier">function_ptype</span><span class="plain">) </span><span class="reserved">return</span><span class="plain"> </span><span class="identifier">TRUE</span><span class="plain">;</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">iname</span><span class="plain">-</span><span class="element">>location_in_hierarchy</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="reserved">return</span><span class="plain"> </span><span class="identifier">FALSE</span><span class="plain">;</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">iname</span><span class="plain">-</span><span class="element">>location_in_hierarchy</span><span class="plain">-</span><span class="element">>eventual_type</span><span class="plain"> == </span><span class="identifier">function_ptype</span><span class="plain">) </span><span class="reserved">return</span><span class="plain"> </span><span class="identifier">TRUE</span><span class="plain">;</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">FALSE</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
</pre>
|
||||
|
@ -491,15 +491,15 @@
|
|||
|
||||
<p class="endnote">The function Packaging::supply_iname is used in 27/hr (<a href="27-hr.html#SP5">§5</a>), 27/hl (<a href="27-hl.html#SP2">§2</a>).</p>
|
||||
|
||||
<p class="endnote">The function Packaging::function is used in 27/hl (<a href="27-hl.html#SP1">§1</a>).</p>
|
||||
<p class="endnote">The function Packaging::function is used in 27/hl (<a href="27-hl.html#SP1">§1</a>, <a href="27-hl.html#SP1_1">§1.1</a>).</p>
|
||||
|
||||
<p class="endnote">The function Packaging::function_text is used in 27/hl (<a href="27-hl.html#SP1">§1</a>, <a href="27-hl.html#SP1_1">§1.1</a>).</p>
|
||||
<p class="endnote">The function Packaging::function_text is used in 27/hl (<a href="27-hl.html#SP1">§1</a>).</p>
|
||||
|
||||
<p class="endnote">The function Packaging::datum_text is used in 27/hl (<a href="27-hl.html#SP1">§1</a>).</p>
|
||||
|
||||
<p class="endnote">The function Packaging::house is used in 27/in (<a href="27-in.html#SP3">§3</a>).</p>
|
||||
<p class="endnote">The function Packaging::house appears nowhere else.</p>
|
||||
|
||||
<p class="endnote">The function Packaging::house_with is used in 26/rt (<a href="26-rt.html#SP4">§4</a>), 27/in (<a href="27-in.html#SP2">§2</a>).</p>
|
||||
<p class="endnote">The function Packaging::house_with is used in 26/rt (<a href="26-rt.html#SP4">§4</a>).</p>
|
||||
|
||||
<p class="endnote">The function Packaging::houseed_in_function is used in 26/rt (<a href="26-rt.html#SP4">§4</a>), 27/ei (<a href="27-ei.html#SP4">§4</a>).</p>
|
||||
|
||||
|
|
|
@ -16,11 +16,9 @@
|
|||
<span class="reserved">typedef</span><span class="plain"> </span><span class="reserved">struct</span><span class="plain"> </span><span class="reserved">name_translation</span><span class="plain"> {</span>
|
||||
<span class="reserved">struct</span><span class="plain"> </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">translate_to</span><span class="plain">;</span>
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">then_make_unique</span><span class="plain">;</span>
|
||||
<span class="reserved">struct</span><span class="plain"> </span><span class="reserved">inter_name_family</span><span class="plain"> *</span><span class="identifier">name_generator</span><span class="plain">;</span>
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">localise</span><span class="plain">;</span>
|
||||
<span class="reserved">struct</span><span class="plain"> </span><span class="reserved">inter_name_generator</span><span class="plain"> *</span><span class="identifier">name_generator</span><span class="plain">;</span>
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">derive</span><span class="plain">;</span>
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">by_imposition</span><span class="plain">;</span>
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">faux_letter</span><span class="plain">;</span>
|
||||
<span class="plain">} </span><span class="reserved">name_translation</span><span class="plain">;</span>
|
||||
|
||||
<span class="reserved">name_translation</span><span class="plain"> </span><span class="functiontext">Translation::same</span><span class="plain">(</span><span class="reserved">void</span><span class="plain">) {</span>
|
||||
|
@ -28,10 +26,8 @@
|
|||
<span class="identifier">nt</span><span class="element">.translate_to</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
|
||||
<span class="identifier">nt</span><span class="element">.then_make_unique</span><span class="plain"> = </span><span class="identifier">FALSE</span><span class="plain">;</span>
|
||||
<span class="identifier">nt</span><span class="element">.name_generator</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
|
||||
<span class="identifier">nt</span><span class="element">.localise</span><span class="plain"> = </span><span class="identifier">FALSE</span><span class="plain">;</span>
|
||||
<span class="identifier">nt</span><span class="element">.derive</span><span class="plain"> = </span><span class="identifier">FALSE</span><span class="plain">;</span>
|
||||
<span class="identifier">nt</span><span class="element">.by_imposition</span><span class="plain"> = </span><span class="identifier">FALSE</span><span class="plain">;</span>
|
||||
<span class="identifier">nt</span><span class="element">.faux_letter</span><span class="plain"> = -1;</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">nt</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
|
||||
|
@ -62,36 +58,21 @@
|
|||
|
||||
<span class="reserved">name_translation</span><span class="plain"> </span><span class="functiontext">Translation::prefix</span><span class="plain">(</span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">S</span><span class="plain">) {</span>
|
||||
<span class="reserved">name_translation</span><span class="plain"> </span><span class="identifier">nt</span><span class="plain"> = </span><span class="functiontext">Translation::same</span><span class="plain">();</span>
|
||||
<span class="identifier">nt</span><span class="element">.name_generator</span><span class="plain"> = </span><span class="functiontext">InterNames::name_generator</span><span class="plain">(</span><span class="identifier">S</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">);</span>
|
||||
<span class="identifier">nt</span><span class="element">.name_generator</span><span class="plain"> = </span><span class="functiontext">InterNames::multiple_use_generator</span><span class="plain">(</span><span class="identifier">S</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">);</span>
|
||||
<span class="identifier">nt</span><span class="element">.derive</span><span class="plain"> = </span><span class="identifier">TRUE</span><span class="plain">;</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">nt</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
|
||||
<span class="reserved">name_translation</span><span class="plain"> </span><span class="functiontext">Translation::suffix</span><span class="plain">(</span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">S</span><span class="plain">) {</span>
|
||||
<span class="reserved">name_translation</span><span class="plain"> </span><span class="identifier">nt</span><span class="plain"> = </span><span class="functiontext">Translation::same</span><span class="plain">();</span>
|
||||
<span class="identifier">nt</span><span class="element">.name_generator</span><span class="plain"> = </span><span class="functiontext">InterNames::name_generator</span><span class="plain">(</span><span class="identifier">NULL</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">, </span><span class="identifier">S</span><span class="plain">);</span>
|
||||
<span class="identifier">nt</span><span class="element">.name_generator</span><span class="plain"> = </span><span class="functiontext">InterNames::multiple_use_generator</span><span class="plain">(</span><span class="identifier">NULL</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">, </span><span class="identifier">S</span><span class="plain">);</span>
|
||||
<span class="identifier">nt</span><span class="element">.derive</span><span class="plain"> = </span><span class="identifier">TRUE</span><span class="plain">;</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">nt</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
|
||||
<span class="reserved">name_translation</span><span class="plain"> </span><span class="functiontext">Translation::suffix_special</span><span class="plain">(</span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">S</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">faux_letter</span><span class="plain">) {</span>
|
||||
<span class="reserved">name_translation</span><span class="plain"> </span><span class="identifier">nt</span><span class="plain"> = </span><span class="functiontext">Translation::same</span><span class="plain">();</span>
|
||||
<span class="identifier">nt</span><span class="element">.name_generator</span><span class="plain"> = </span><span class="functiontext">InterNames::name_generator</span><span class="plain">(</span><span class="identifier">NULL</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">, </span><span class="identifier">S</span><span class="plain">);</span>
|
||||
<span class="identifier">nt</span><span class="element">.derive</span><span class="plain"> = </span><span class="identifier">TRUE</span><span class="plain">;</span>
|
||||
<span class="identifier">nt</span><span class="element">.faux_letter</span><span class="plain"> = </span><span class="identifier">faux_letter</span><span class="plain">;</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">nt</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
|
||||
<span class="reserved">name_translation</span><span class="plain"> </span><span class="functiontext">Translation::generate</span><span class="plain">(</span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">S</span><span class="plain">) {</span>
|
||||
<span class="reserved">name_translation</span><span class="plain"> </span><span class="identifier">nt</span><span class="plain"> = </span><span class="functiontext">Translation::same</span><span class="plain">();</span>
|
||||
<span class="identifier">nt</span><span class="element">.name_generator</span><span class="plain"> = </span><span class="functiontext">InterNames::name_generator</span><span class="plain">(</span><span class="identifier">NULL</span><span class="plain">, </span><span class="identifier">S</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">);</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">nt</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
|
||||
<span class="reserved">name_translation</span><span class="plain"> </span><span class="functiontext">Translation::generate_in</span><span class="plain">(</span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">S</span><span class="plain">) {</span>
|
||||
<span class="reserved">name_translation</span><span class="plain"> </span><span class="identifier">nt</span><span class="plain"> = </span><span class="functiontext">Translation::same</span><span class="plain">();</span>
|
||||
<span class="identifier">nt</span><span class="element">.name_generator</span><span class="plain"> = </span><span class="functiontext">InterNames::name_generator</span><span class="plain">(</span><span class="identifier">NULL</span><span class="plain">, </span><span class="identifier">S</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">);</span>
|
||||
<span class="identifier">nt</span><span class="element">.localise</span><span class="plain"> = </span><span class="identifier">TRUE</span><span class="plain">;</span>
|
||||
<span class="identifier">nt</span><span class="element">.name_generator</span><span class="plain"> = </span><span class="functiontext">InterNames::multiple_use_generator</span><span class="plain">(</span><span class="identifier">NULL</span><span class="plain">, </span><span class="identifier">S</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">);</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">nt</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
</pre>
|
||||
|
@ -110,14 +91,10 @@
|
|||
|
||||
<p class="endnote">The function Translation::prefix is used in 27/hr (<a href="27-hr.html#SP1_4">§1.4</a>).</p>
|
||||
|
||||
<p class="endnote">The function Translation::suffix is used in 27/hr (<a href="27-hr.html#SP1_4">§1.4</a>, <a href="27-hr.html#SP1_40">§1.40</a>).</p>
|
||||
|
||||
<p class="endnote">The function Translation::suffix_special is used in 27/hr (<a href="27-hr.html#SP1_28">§1.28</a>).</p>
|
||||
<p class="endnote">The function Translation::suffix is used in 27/hr (<a href="27-hr.html#SP1_4">§1.4</a>, <a href="27-hr.html#SP1_28">§1.28</a>, <a href="27-hr.html#SP1_40">§1.40</a>).</p>
|
||||
|
||||
<p class="endnote">The function Translation::generate is used in 27/hr (<a href="27-hr.html#SP1_6">§1.6</a>, <a href="27-hr.html#SP1_8">§1.8</a>, <a href="27-hr.html#SP1_12">§1.12</a>, <a href="27-hr.html#SP1_14">§1.14</a>, <a href="27-hr.html#SP1_22">§1.22</a>, <a href="27-hr.html#SP1_24">§1.24</a>, <a href="27-hr.html#SP1_26">§1.26</a>, <a href="27-hr.html#SP1_28">§1.28</a>, <a href="27-hr.html#SP1_30">§1.30</a>, <a href="27-hr.html#SP1_34">§1.34</a>, <a href="27-hr.html#SP1_36">§1.36</a>, <a href="27-hr.html#SP1_44">§1.44</a>).</p>
|
||||
|
||||
<p class="endnote">The function Translation::generate_in is used in 27/hr (<a href="27-hr.html#SP1_32">§1.32</a>, <a href="27-hr.html#SP1_40">§1.40</a>).</p>
|
||||
|
||||
<p class="endnote">The structure name_translation is accessed in 27/hl and here.</p>
|
||||
|
||||
<hr class="tocbar">
|
||||
|
|
|
@ -1061,7 +1061,7 @@ declarations) and finally return <code class="display"><span class="extract">TRU
|
|||
<span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">iname</span><span class="plain"> = </span><span class="functiontext">Instances::iname</span><span class="plain">(</span><span class="identifier">I</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">I</span><span class="plain">-</span><span class="element">>instance_emitted</span><span class="plain"> == </span><span class="identifier">FALSE</span><span class="plain">) {</span>
|
||||
<span class="identifier">I</span><span class="plain">-</span><span class="element">>instance_emitted</span><span class="plain"> = </span><span class="identifier">TRUE</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">iname</span><span class="plain">-</span><span class="element">>eventual_owner</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::instance</span><span class="plain">(</span><span class="identifier">iname</span><span class="plain">, </span><span class="functiontext">Instances::to_kind</span><span class="plain">(</span><span class="identifier">I</span><span class="plain">), </span><span class="identifier">I</span><span class="plain">-</span><span class="element">>enumeration_index</span><span class="plain">);</span>
|
||||
<span class="functiontext">Packaging::exit</span><span class="plain">(</span><span class="identifier">save</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
|
@ -1070,7 +1070,7 @@ declarations) and finally return <code class="display"><span class="extract">TRU
|
|||
|
||||
<span class="reserved">package_request</span><span class="plain"> *</span><span class="functiontext">Instances::package</span><span class="plain">(</span><span class="reserved">instance</span><span class="plain"> *</span><span class="identifier">I</span><span class="plain">) {</span>
|
||||
<span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">iname</span><span class="plain"> = </span><span class="functiontext">Instances::iname</span><span class="plain">(</span><span class="identifier">I</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="element">>eventual_owner</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="identifier">iname</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
</pre>
|
||||
|
||||
|
|
|
@ -595,7 +595,7 @@ there's very little to say.
|
|||
<span class="plain">(</span><span class="identifier">nlv</span><span class="plain">-</span><span class="element">>housed_in_variables_array</span><span class="plain">)) {</span>
|
||||
|
||||
<span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">iname</span><span class="plain"> = </span><span class="functiontext">NonlocalVariables::iname</span><span class="plain">(</span><span class="identifier">nlv</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">iname</span><span class="plain">-</span><span class="element">>eventual_owner</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="reserved">value_holster</span><span class="plain"> </span><span class="identifier">VH</span><span class="plain"> = </span><span class="functiontext">Holsters::new</span><span class="plain">(</span><span class="constant">INTER_DATA_VHMODE</span><span class="plain">);</span>
|
||||
|
||||
|
|
|
@ -821,7 +821,7 @@
|
|||
</li>
|
||||
<li>
|
||||
<p><a href="27-in.html"><spon class="sectiontitle">Inter Namespace</span></a> -
|
||||
<span class="purpose"></span></p>
|
||||
<span class="purpose">To manage identifiers, which have names and positions in the Inter hierarchy.</span></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><a href="27-is.html"><spon class="sectiontitle">Inter Schemas</span></a> -
|
||||
|
|
|
@ -89,7 +89,7 @@ following minimal structure, though it will only be relevant for instances of
|
|||
<span class="identifier">inter_name</span><span class="plain"> *</span><span class="functiontext">PL::Regions::found_in_iname</span><span class="plain">(</span><span class="identifier">instance</span><span class="plain"> *</span><span class="identifier">I</span><span class="plain">) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">PF_I</span><span class="plain">(</span><span class="identifier">regions</span><span class="plain">, </span><span class="identifier">I</span><span class="plain">)-</span><span class="element">>in_region_iname</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) {</span>
|
||||
<span class="identifier">inter_name</span><span class="plain"> *</span><span class="identifier">iname</span><span class="plain"> = </span><span class="identifier">Instances::iname</span><span class="plain">(</span><span class="identifier">I</span><span class="plain">);</span>
|
||||
<span class="identifier">PF_I</span><span class="plain">(</span><span class="identifier">regions</span><span class="plain">, </span><span class="identifier">I</span><span class="plain">)-</span><span class="element">>in_region_iname</span><span class="plain"> = </span><span class="identifier">Hierarchy::make_iname_in</span><span class="plain">(</span><span class="identifier">REGION_FOUND_IN_FN_HL</span><span class="plain">, </span><span class="identifier">iname</span><span class="plain">-></span><span class="identifier">eventual_owner</span><span class="plain">);</span>
|
||||
<span class="identifier">PF_I</span><span class="plain">(</span><span class="identifier">regions</span><span class="plain">, </span><span class="identifier">I</span><span class="plain">)-</span><span class="element">>in_region_iname</span><span class="plain"> = </span><span class="identifier">Hierarchy::make_iname_in</span><span class="plain">(</span><span class="identifier">REGION_FOUND_IN_FN_HL</span><span class="plain">, </span><span class="identifier">Packaging::home_of</span><span class="plain">(</span><span class="identifier">iname</span><span class="plain">));</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">PF_I</span><span class="plain">(</span><span class="identifier">regions</span><span class="plain">, </span><span class="identifier">I</span><span class="plain">)-</span><span class="element">>in_region_iname</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
|
|
|
@ -1406,7 +1406,7 @@ always the way to the other room — the one we are not in.
|
|||
<pre class="displaydefn">
|
||||
<span class="reserved">door_dir_notice</span><span class="plain"> *</span><span class="identifier">notice</span><span class="plain"> = </span><span class="identifier">CREATE</span><span class="plain">(</span><span class="reserved">door_dir_notice</span><span class="plain">);</span>
|
||||
<span class="identifier">inter_name</span><span class="plain"> *</span><span class="identifier">iname</span><span class="plain"> = </span><span class="identifier">Instances::iname</span><span class="plain">(</span><span class="identifier">I</span><span class="plain">);</span>
|
||||
<span class="identifier">notice</span><span class="plain">-</span><span class="element">>ddn_iname</span><span class="plain"> = </span><span class="identifier">Hierarchy::make_iname_in</span><span class="plain">(</span><span class="identifier">TSD_DOOR_DIR_FN_HL</span><span class="plain">, </span><span class="identifier">iname</span><span class="plain">-></span><span class="identifier">eventual_owner</span><span class="plain">);</span>
|
||||
<span class="identifier">notice</span><span class="plain">-</span><span class="element">>ddn_iname</span><span class="plain"> = </span><span class="identifier">Hierarchy::make_iname_in</span><span class="plain">(</span><span class="identifier">TSD_DOOR_DIR_FN_HL</span><span class="plain">, </span><span class="identifier">Packaging::home_of</span><span class="plain">(</span><span class="identifier">iname</span><span class="plain">));</span>
|
||||
<span class="identifier">notice</span><span class="plain">-</span><span class="element">>door</span><span class="plain"> = </span><span class="identifier">I</span><span class="plain">;</span>
|
||||
<span class="identifier">notice</span><span class="plain">-</span><span class="element">>R1</span><span class="plain"> = </span><span class="identifier">R1</span><span class="plain">;</span>
|
||||
<span class="identifier">notice</span><span class="plain">-</span><span class="element">>D1</span><span class="plain"> = </span><span class="identifier">D1</span><span class="plain">;</span>
|
||||
|
@ -1432,7 +1432,7 @@ always the other room — the one we are not in.
|
|||
<pre class="displaydefn">
|
||||
<span class="reserved">door_to_notice</span><span class="plain"> *</span><span class="identifier">notice</span><span class="plain"> = </span><span class="identifier">CREATE</span><span class="plain">(</span><span class="reserved">door_to_notice</span><span class="plain">);</span>
|
||||
<span class="identifier">inter_name</span><span class="plain"> *</span><span class="identifier">iname</span><span class="plain"> = </span><span class="identifier">Instances::iname</span><span class="plain">(</span><span class="identifier">I</span><span class="plain">);</span>
|
||||
<span class="identifier">notice</span><span class="plain">-</span><span class="element">>dtn_iname</span><span class="plain"> = </span><span class="identifier">Hierarchy::make_iname_in</span><span class="plain">(</span><span class="identifier">TSD_DOOR_TO_FN_HL</span><span class="plain">, </span><span class="identifier">iname</span><span class="plain">-></span><span class="identifier">eventual_owner</span><span class="plain">);</span>
|
||||
<span class="identifier">notice</span><span class="plain">-</span><span class="element">>dtn_iname</span><span class="plain"> = </span><span class="identifier">Hierarchy::make_iname_in</span><span class="plain">(</span><span class="identifier">TSD_DOOR_TO_FN_HL</span><span class="plain">, </span><span class="identifier">Packaging::home_of</span><span class="plain">(</span><span class="identifier">iname</span><span class="plain">));</span>
|
||||
<span class="identifier">notice</span><span class="plain">-</span><span class="element">>door</span><span class="plain"> = </span><span class="identifier">I</span><span class="plain">;</span>
|
||||
<span class="identifier">notice</span><span class="plain">-</span><span class="element">>R1</span><span class="plain"> = </span><span class="identifier">R1</span><span class="plain">;</span>
|
||||
<span class="identifier">notice</span><span class="plain">-</span><span class="element">>R2</span><span class="plain"> = </span><span class="identifier">R2</span><span class="plain">;</span>
|
||||
|
|
|
@ -476,11 +476,11 @@ so. These routines allow that to happen.
|
|||
<pre class="displaydefn">
|
||||
<span class="identifier">inter_name</span><span class="plain"> *</span><span class="identifier">iname</span><span class="plain"> = </span><span class="identifier">Instances::iname</span><span class="plain">(</span><span class="identifier">I</span><span class="plain">);</span>
|
||||
<span class="reserved">short_name_notice</span><span class="plain"> *</span><span class="identifier">notice</span><span class="plain"> = </span><span class="identifier">CREATE</span><span class="plain">(</span><span class="reserved">short_name_notice</span><span class="plain">);</span>
|
||||
<span class="identifier">notice</span><span class="plain">-</span><span class="element">>routine_iname</span><span class="plain"> = </span><span class="identifier">Hierarchy::make_iname_in</span><span class="plain">(</span><span class="identifier">SHORT_NAME_FN_HL</span><span class="plain">, </span><span class="identifier">iname</span><span class="plain">-></span><span class="identifier">eventual_owner</span><span class="plain">);</span>
|
||||
<span class="identifier">notice</span><span class="plain">-</span><span class="element">>routine_iname</span><span class="plain"> = </span><span class="identifier">Hierarchy::make_iname_in</span><span class="plain">(</span><span class="identifier">SHORT_NAME_FN_HL</span><span class="plain">, </span><span class="identifier">Packaging::home_of</span><span class="plain">(</span><span class="identifier">iname</span><span class="plain">));</span>
|
||||
<span class="identifier">notice</span><span class="plain">-</span><span class="element">>namee</span><span class="plain"> = </span><span class="identifier">I</span><span class="plain">;</span>
|
||||
<span class="identifier">notice</span><span class="plain">-</span><span class="element">>after_subject</span><span class="plain"> = </span><span class="identifier">subj</span><span class="plain">;</span>
|
||||
<span class="identifier">notice</span><span class="plain">-</span><span class="element">>capped</span><span class="plain"> = </span><span class="identifier">FALSE</span><span class="plain">;</span>
|
||||
<span class="identifier">notice</span><span class="plain">-</span><span class="element">>snn_iname</span><span class="plain"> = </span><span class="identifier">Hierarchy::make_iname_in</span><span class="plain">(</span><span class="identifier">SHORT_NAME_PROPERTY_FN_HL</span><span class="plain">, </span><span class="identifier">iname</span><span class="plain">-></span><span class="identifier">eventual_owner</span><span class="plain">);</span>
|
||||
<span class="identifier">notice</span><span class="plain">-</span><span class="element">>snn_iname</span><span class="plain"> = </span><span class="identifier">Hierarchy::make_iname_in</span><span class="plain">(</span><span class="identifier">SHORT_NAME_PROPERTY_FN_HL</span><span class="plain">, </span><span class="identifier">Packaging::home_of</span><span class="plain">(</span><span class="identifier">iname</span><span class="plain">));</span>
|
||||
<span class="identifier">faux</span><span class="plain"> = </span><span class="identifier">notice</span><span class="plain">-</span><span class="element">>snn_iname</span><span class="plain">;</span>
|
||||
</pre>
|
||||
|
||||
|
@ -496,11 +496,11 @@ so. These routines allow that to happen.
|
|||
<pre class="displaydefn">
|
||||
<span class="identifier">inter_name</span><span class="plain"> *</span><span class="identifier">iname</span><span class="plain"> = </span><span class="identifier">Instances::iname</span><span class="plain">(</span><span class="identifier">I</span><span class="plain">);</span>
|
||||
<span class="reserved">short_name_notice</span><span class="plain"> *</span><span class="identifier">notice</span><span class="plain"> = </span><span class="identifier">CREATE</span><span class="plain">(</span><span class="reserved">short_name_notice</span><span class="plain">);</span>
|
||||
<span class="identifier">notice</span><span class="plain">-</span><span class="element">>routine_iname</span><span class="plain"> = </span><span class="identifier">Hierarchy::make_iname_in</span><span class="plain">(</span><span class="identifier">SHORT_NAME_FN_HL</span><span class="plain">, </span><span class="identifier">iname</span><span class="plain">-></span><span class="identifier">eventual_owner</span><span class="plain">);</span>
|
||||
<span class="identifier">notice</span><span class="plain">-</span><span class="element">>routine_iname</span><span class="plain"> = </span><span class="identifier">Hierarchy::make_iname_in</span><span class="plain">(</span><span class="identifier">SHORT_NAME_FN_HL</span><span class="plain">, </span><span class="identifier">Packaging::home_of</span><span class="plain">(</span><span class="identifier">iname</span><span class="plain">));</span>
|
||||
<span class="identifier">notice</span><span class="plain">-</span><span class="element">>namee</span><span class="plain"> = </span><span class="identifier">I</span><span class="plain">;</span>
|
||||
<span class="identifier">notice</span><span class="plain">-</span><span class="element">>after_subject</span><span class="plain"> = </span><span class="identifier">subj</span><span class="plain">;</span>
|
||||
<span class="identifier">notice</span><span class="plain">-</span><span class="element">>capped</span><span class="plain"> = </span><span class="identifier">TRUE</span><span class="plain">;</span>
|
||||
<span class="identifier">notice</span><span class="plain">-</span><span class="element">>snn_iname</span><span class="plain"> = </span><span class="identifier">Hierarchy::make_iname_in</span><span class="plain">(</span><span class="identifier">SHORT_NAME_PROPERTY_FN_HL</span><span class="plain">, </span><span class="identifier">iname</span><span class="plain">-></span><span class="identifier">eventual_owner</span><span class="plain">);</span>
|
||||
<span class="identifier">notice</span><span class="plain">-</span><span class="element">>snn_iname</span><span class="plain"> = </span><span class="identifier">Hierarchy::make_iname_in</span><span class="plain">(</span><span class="identifier">SHORT_NAME_PROPERTY_FN_HL</span><span class="plain">, </span><span class="identifier">Packaging::home_of</span><span class="plain">(</span><span class="identifier">iname</span><span class="plain">));</span>
|
||||
<span class="identifier">faux</span><span class="plain"> = </span><span class="identifier">notice</span><span class="plain">-</span><span class="element">>snn_iname</span><span class="plain">;</span>
|
||||
</pre>
|
||||
|
||||
|
|
|
@ -672,7 +672,7 @@ following routine finds or creates this for a given property.
|
|||
<span class="identifier">Properties::EitherOr::set_parsing_grammar</span><span class="plain">(</span><span class="identifier">prn</span><span class="plain">, </span><span class="identifier">gv</span><span class="plain">);</span>
|
||||
<span class="identifier">gv</span><span class="plain">-</span><span class="element">>prn_understood</span><span class="plain"> = </span><span class="identifier">prn</span><span class="plain">;</span>
|
||||
<span class="identifier">inter_name</span><span class="plain"> *</span><span class="identifier">iname</span><span class="plain"> = </span><span class="identifier">Properties::iname</span><span class="plain">(</span><span class="identifier">prn</span><span class="plain">);</span>
|
||||
<span class="identifier">gv</span><span class="plain">-</span><span class="element">>gv_prn_iname</span><span class="plain"> = </span><span class="identifier">Hierarchy::make_iname_in</span><span class="plain">(</span><span class="identifier">EITHER_OR_GPR_FN_HL</span><span class="plain">, </span><span class="identifier">iname</span><span class="plain">-></span><span class="identifier">eventual_owner</span><span class="plain">);</span>
|
||||
<span class="identifier">gv</span><span class="plain">-</span><span class="element">>gv_prn_iname</span><span class="plain"> = </span><span class="identifier">Hierarchy::make_iname_in</span><span class="plain">(</span><span class="identifier">EITHER_OR_GPR_FN_HL</span><span class="plain">, </span><span class="identifier">Packaging::home_of</span><span class="plain">(</span><span class="identifier">iname</span><span class="plain">));</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">gv</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
</pre>
|
||||
|
|
|
@ -109,6 +109,8 @@ forge new kind constructors.
|
|||
<span class="plain">#</span><span class="identifier">ifdef</span><span class="plain"> </span><span class="identifier">INTER_MODULE</span>
|
||||
<span class="reserved">struct</span><span class="plain"> </span><span class="identifier">inter_name</span><span class="plain"> *</span><span class="identifier">kind_GPR_iname</span><span class="plain">;</span>
|
||||
<span class="reserved">struct</span><span class="plain"> </span><span class="identifier">inter_name</span><span class="plain"> *</span><span class="identifier">instance_GPR_iname</span><span class="plain">;</span>
|
||||
<span class="reserved">struct</span><span class="plain"> </span><span class="identifier">inter_name</span><span class="plain"> *</span><span class="identifier">first_instance_iname</span><span class="plain">;</span>
|
||||
<span class="reserved">struct</span><span class="plain"> </span><span class="identifier">inter_name</span><span class="plain"> *</span><span class="identifier">next_instance_iname</span><span class="plain">;</span>
|
||||
<span class="reserved">struct</span><span class="plain"> </span><span class="identifier">inter_name</span><span class="plain"> *</span><span class="identifier">pr_iname</span><span class="plain">;</span>
|
||||
<span class="reserved">struct</span><span class="plain"> </span><span class="identifier">inter_name</span><span class="plain"> *</span><span class="identifier">inc_iname</span><span class="plain">;</span>
|
||||
<span class="reserved">struct</span><span class="plain"> </span><span class="identifier">inter_name</span><span class="plain"> *</span><span class="identifier">dec_iname</span><span class="plain">;</span>
|
||||
|
@ -326,6 +328,8 @@ I6 template files.
|
|||
<span class="plain">#</span><span class="identifier">ifdef</span><span class="plain"> </span><span class="identifier">INTER_MODULE</span>
|
||||
<span class="identifier">con</span><span class="plain">-</span><span class="element">>kind_GPR_iname</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
|
||||
<span class="identifier">con</span><span class="plain">-</span><span class="element">>instance_GPR_iname</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
|
||||
<span class="identifier">con</span><span class="plain">-</span><span class="element">>first_instance_iname</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
|
||||
<span class="identifier">con</span><span class="plain">-</span><span class="element">>next_instance_iname</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
|
||||
<span class="identifier">con</span><span class="plain">-</span><span class="element">>pr_iname</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
|
||||
<span class="identifier">con</span><span class="plain">-</span><span class="element">>inc_iname</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
|
||||
<span class="identifier">con</span><span class="plain">-</span><span class="element">>dec_iname</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
|
||||
|
@ -492,6 +496,18 @@ of the kind which the constructor makes:
|
|||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">UNKNOWN_TY_iname</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"no con symbols yet"</span><span class="plain">);</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">con</span><span class="plain">-</span><span class="element">>con_iname</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="identifier">inter_name</span><span class="plain"> *</span><span class="functiontext">Kinds::Constructors::first_instance_iname</span><span class="plain">(</span><span class="reserved">kind_constructor</span><span class="plain"> *</span><span class="identifier">con</span><span class="plain">) {</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">con</span><span class="plain">-</span><span class="element">>first_instance_iname</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Kinds::Constructors::set_first_instance_iname</span><span class="plain">(</span><span class="reserved">kind_constructor</span><span class="plain"> *</span><span class="identifier">con</span><span class="plain">, </span><span class="identifier">inter_name</span><span class="plain"> *</span><span class="identifier">iname</span><span class="plain">) {</span>
|
||||
<span class="identifier">con</span><span class="plain">-</span><span class="element">>first_instance_iname</span><span class="plain"> = </span><span class="identifier">iname</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="identifier">inter_name</span><span class="plain"> *</span><span class="functiontext">Kinds::Constructors::next_instance_iname</span><span class="plain">(</span><span class="reserved">kind_constructor</span><span class="plain"> *</span><span class="identifier">con</span><span class="plain">) {</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">con</span><span class="plain">-</span><span class="element">>next_instance_iname</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Kinds::Constructors::set_next_instance_iname</span><span class="plain">(</span><span class="reserved">kind_constructor</span><span class="plain"> *</span><span class="identifier">con</span><span class="plain">, </span><span class="identifier">inter_name</span><span class="plain"> *</span><span class="identifier">iname</span><span class="plain">) {</span>
|
||||
<span class="identifier">con</span><span class="plain">-</span><span class="element">>next_instance_iname</span><span class="plain"> = </span><span class="identifier">iname</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="plain">#</span><span class="identifier">endif</span>
|
||||
|
||||
<span class="identifier">text_stream</span><span class="plain"> *</span><span class="functiontext">Kinds::Constructors::name_in_template_code</span><span class="plain">(</span><span class="reserved">kind_constructor</span><span class="plain"> *</span><span class="identifier">con</span><span class="plain">) {</span>
|
||||
|
@ -509,6 +525,14 @@ of the kind which the constructor makes:
|
|||
|
||||
<p class="endnote">The function Kinds::Constructors::iname appears nowhere else.</p>
|
||||
|
||||
<p class="endnote">The function Kinds::Constructors::first_instance_iname appears nowhere else.</p>
|
||||
|
||||
<p class="endnote">The function Kinds::Constructors::set_first_instance_iname appears nowhere else.</p>
|
||||
|
||||
<p class="endnote">The function Kinds::Constructors::next_instance_iname appears nowhere else.</p>
|
||||
|
||||
<p class="endnote">The function Kinds::Constructors::set_next_instance_iname appears nowhere else.</p>
|
||||
|
||||
<p class="endnote">The function Kinds::Constructors::name_in_template_code appears nowhere else.</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP10"></a><b>§10. </b>We also need to parse this, occasionally (if we needed this more than a
|
||||
|
|
|
@ -98,8 +98,8 @@ We need to itemise the structures we'll want to allocate:
|
|||
@e dval_written_MT
|
||||
@e nascent_array_MT
|
||||
@e value_holster_array_MT
|
||||
@e inter_name_MT
|
||||
@e inter_name_family_MT
|
||||
@e inter_name_array_MT
|
||||
@e inter_name_generator_array_MT
|
||||
@e adjective_iname_holder_MT
|
||||
@e compilation_module_MT
|
||||
@e inter_schema_MT
|
||||
|
@ -141,8 +141,6 @@ ALLOCATE_INDIVIDUALLY(i6_memory_setting)
|
|||
ALLOCATE_INDIVIDUALLY(implication)
|
||||
ALLOCATE_INDIVIDUALLY(inference_subject)
|
||||
ALLOCATE_INDIVIDUALLY(instance)
|
||||
ALLOCATE_INDIVIDUALLY(inter_name)
|
||||
ALLOCATE_INDIVIDUALLY(inter_name_family)
|
||||
ALLOCATE_INDIVIDUALLY(internal_test_case)
|
||||
ALLOCATE_INDIVIDUALLY(inv_token_problem_token)
|
||||
ALLOCATE_INDIVIDUALLY(kind_interaction)
|
||||
|
@ -205,6 +203,8 @@ ALLOCATE_IN_ARRAYS(extension_identifier_database_entry, 100)
|
|||
ALLOCATE_IN_ARRAYS(i6_schema, 100)
|
||||
ALLOCATE_IN_ARRAYS(inference, 100)
|
||||
ALLOCATE_IN_ARRAYS(instance_usage, 200)
|
||||
ALLOCATE_IN_ARRAYS(inter_name, 1000)
|
||||
ALLOCATE_IN_ARRAYS(inter_name_generator, 1000)
|
||||
ALLOCATE_IN_ARRAYS(invocation_options, 100)
|
||||
ALLOCATE_IN_ARRAYS(local_variable, 100)
|
||||
ALLOCATE_IN_ARRAYS(pcalc_func, 1000)
|
||||
|
|
|
@ -61,6 +61,8 @@ The following makes up a new schema from a |printf|-style formatted string:
|
|||
@d MAX_I6_SCHEMA_ATTEMPT 1024 /* plenty of room for conjectural schema overruns */
|
||||
|
||||
=
|
||||
int unique_qi_counter = 0;
|
||||
|
||||
i6_schema *Calculus::Schemas::new(char *fmt, ...) {
|
||||
va_list ap; /* the variable argument list signified by the dots */
|
||||
i6_schema *sch = CREATE(i6_schema);
|
||||
|
@ -123,7 +125,7 @@ an integer; |%s|, a C string; |%S|, a text stream; and |%k|, a kind ID.
|
|||
int N = sch->no_quoted_inames++;
|
||||
if (N >= 2) internal_error("too many inter_name quotes");
|
||||
sch->quoted_inames[N] = iname;
|
||||
WRITE("QUOTED_INAME_%d_%08x", N, iname->allocation_id);
|
||||
WRITE("QUOTED_INAME_%d_%08x", N, unique_qi_counter++);
|
||||
break;
|
||||
}
|
||||
case 'N': WRITE("%N", va_arg(ap, int)); break;
|
||||
|
|
|
@ -907,7 +907,7 @@ typedef struct kind_interaction {
|
|||
@ =
|
||||
package_request *Kinds::RunTime::package(kind *K) {
|
||||
inter_name *iname = Kinds::RunTime::iname(K);
|
||||
return iname->eventual_owner;
|
||||
return Packaging::home_of(iname);
|
||||
}
|
||||
|
||||
@
|
||||
|
|
|
@ -324,7 +324,7 @@ text for the response than the one we first created.
|
|||
}
|
||||
inter_name *ts_iname = Strings::TextSubstitutions::text_substitution_iname(ts);
|
||||
inter_name *rc_iname = Strings::response_constant_iname(R, marker);
|
||||
packaging_state save = Packaging::enter(rc_iname->eventual_owner);
|
||||
packaging_state save = Packaging::enter_home_of(rc_iname);
|
||||
Emit::response(rc_iname, R, marker, ts_iname);
|
||||
Packaging::exit(save);
|
||||
}
|
||||
|
|
|
@ -885,7 +885,7 @@ void Rulebooks::compile_rulebooks(void) {
|
|||
int par = FALSE;
|
||||
if (Rulebooks::focus(rb) == PARAMETER_FOCUS) par = TRUE;
|
||||
LOGIF(RULEBOOK_COMPILATION, "Compiling rulebook: %W = %n (in $X)\n",
|
||||
rb->primary_name, rb->rb_iname, rb->rb_iname->eventual_owner);
|
||||
rb->primary_name, rb->rb_iname, Packaging::home_of(rb->rb_iname));
|
||||
packaging_state save = Packaging::enter_home_of(rb->rb_iname);
|
||||
Rules::Bookings::list_compile(rb->rule_list, rb->rb_iname, act, par);
|
||||
Packaging::exit(save);
|
||||
|
|
|
@ -377,13 +377,13 @@ void Phrases::compile(phrase *ph, int *i, int max_i,
|
|||
int effect = Phrases::Usage::get_effect(&(ph->usage_data));
|
||||
if (effect == RULE_NOT_IN_RULEBOOK_EFF) effect = RULE_IN_RULEBOOK_EFF;
|
||||
if (effect == TO_PHRASE_EFF) {
|
||||
packaging_state save = Packaging::enter(req->req_iname->eventual_owner);
|
||||
packaging_state save = Packaging::enter_home_of(req->req_iname);
|
||||
Routines::Compile::routine(ph, legible, req, acl);
|
||||
Packaging::exit(save);
|
||||
@<Move along the progress bar if it's this phrase's first compilation@>;
|
||||
} else {
|
||||
if (ph->at_least_one_compiled_form_needed) {
|
||||
packaging_state save = Packaging::enter(Phrases::iname(ph)->eventual_owner);
|
||||
packaging_state save = Packaging::enter_home_of(Phrases::iname(ph));
|
||||
Routines::Compile::routine(ph, legible, NULL, acl);
|
||||
Packaging::exit(save);
|
||||
@<Move along the progress bar if it's this phrase's first compilation@>;
|
||||
|
|
|
@ -35,7 +35,7 @@ inter_name *currently_compiling_iname = NULL; /* routine we end up with */
|
|||
=
|
||||
void Routines::begin_framed(inter_name *iname, ph_stack_frame *phsf) {
|
||||
if (iname == NULL) internal_error("no iname for routine");
|
||||
package_request *R = iname->eventual_owner;
|
||||
package_request *R = Packaging::home_of(iname);
|
||||
if ((R == NULL) || (R == Hierarchy::main())) {
|
||||
LOG("Routine outside of package: ................................................ %n\n", iname);
|
||||
WRITE_TO(STDERR, "Routine outside of package: %n\n", iname);
|
||||
|
@ -83,7 +83,7 @@ void Routines::end_in_current_package(void) {
|
|||
if ((currently_compiling_in_frame->allocated_pointers) ||
|
||||
(currently_compiling_in_frame->no_formal_parameters_needed > 0)) {
|
||||
if (Packaging::houseed_in_function(public_name)) {
|
||||
kernel_name = Hierarchy::make_kernel_iname(public_name->eventual_owner);
|
||||
kernel_name = Hierarchy::make_kernel_iname(Packaging::home_of(public_name));
|
||||
} else {
|
||||
internal_error("routine not housed in function");
|
||||
}
|
||||
|
|
|
@ -497,7 +497,7 @@ void Emit::guard(inter_error_message *ERR) {
|
|||
|
||||
void Emit::kind(inter_name *iname, inter_t TID, inter_name *super,
|
||||
int constructor, int arity, kind **operand_kinds) {
|
||||
packaging_state save = Packaging::enter(iname->eventual_owner);
|
||||
packaging_state save = Packaging::enter_home_of(iname);
|
||||
inter_symbol *S = InterNames::to_symbol(iname);
|
||||
inter_t SID = 0;
|
||||
if (S) SID = Inter::SymbolsTables::id_from_IRS_and_symbol(default_bookmark, S);
|
||||
|
@ -556,7 +556,7 @@ void Emit::permission(property *prn, kind *K, inter_name *name) {
|
|||
void Emit::instance_permission(property *prn, inter_name *inst_iname) {
|
||||
inter_name *prop_name = Properties::iname(prn);
|
||||
inter_symbol *inst_name = InterNames::to_symbol(inst_iname);
|
||||
packaging_state save = Packaging::enter(inst_iname->eventual_owner);
|
||||
packaging_state save = Packaging::enter_home_of(inst_iname);
|
||||
Emit::basic_permission(default_bookmark, prop_name, inst_name, NULL);
|
||||
Packaging::exit(save);
|
||||
}
|
||||
|
@ -974,7 +974,7 @@ inter_symbol *Emit::block(inter_name *iname) {
|
|||
if (Emit::IRS() == NULL) internal_error("no inter repository");
|
||||
inter_name *block_iname = NULL;
|
||||
if (Packaging::houseed_in_function(iname))
|
||||
block_iname = Hierarchy::make_block_iname(iname->eventual_owner);
|
||||
block_iname = Hierarchy::make_block_iname(Packaging::home_of(iname));
|
||||
else internal_error("routine outside function package");
|
||||
inter_symbol *rsymb = Emit::package(block_iname, code_packagetype, NULL);
|
||||
|
||||
|
|
|
@ -112,7 +112,7 @@ named_resource_location *HierarchyLocations::make_as(int id, text_stream *name,
|
|||
named_resource_location *nrl = HierarchyLocations::new();
|
||||
nrl->access_number = id;
|
||||
nrl->access_name = Str::duplicate(name);
|
||||
nrl->requirements = HierarchyLocations::this_package(iname->eventual_owner);
|
||||
nrl->requirements = HierarchyLocations::this_package(Packaging::home_of(iname));
|
||||
nrl->equates_to_iname = iname;
|
||||
HierarchyLocations::index(nrl);
|
||||
return nrl;
|
||||
|
@ -178,7 +178,7 @@ inter_name *HierarchyLocations::find_by_name(text_stream *name) {
|
|||
}
|
||||
|
||||
inter_name *HierarchyLocations::function(package_request *R, text_stream *name, text_stream *trans) {
|
||||
inter_name *iname = Packaging::function(InterNames::make(name, R), R, NULL);
|
||||
inter_name *iname = Packaging::function(InterNames::explicitly_named(name, R), R, NULL);
|
||||
if (trans) InterNames::change_translation(iname, trans);
|
||||
return iname;
|
||||
}
|
||||
|
@ -193,21 +193,21 @@ inter_name *HierarchyLocations::nrl_to_iname(named_resource_location *nrl) {
|
|||
}
|
||||
if (nrl->requirements.this_mundane_package == Hierarchy::template()) {
|
||||
packaging_state save = Packaging::enter(nrl->requirements.this_mundane_package);
|
||||
nrl->equates_to_iname = InterNames::make(nrl->access_name, Hierarchy::template());
|
||||
nrl->equates_to_iname = InterNames::explicitly_named(nrl->access_name, Hierarchy::template());
|
||||
nrl->equates_to_iname->symbol = Emit::extern(nrl->access_name, K_value);
|
||||
Packaging::exit(save);
|
||||
} else if (Str::len(nrl->function_package_name) > 0) {
|
||||
nrl->equates_to_iname = Packaging::function_text(
|
||||
InterNames::make(nrl->function_package_name, nrl->requirements.this_mundane_package),
|
||||
InterNames::explicitly_named(nrl->function_package_name, nrl->requirements.this_mundane_package),
|
||||
nrl->requirements.this_mundane_package,
|
||||
nrl->access_name);
|
||||
} else if (Str::len(nrl->datum_package_name) > 0) {
|
||||
nrl->equates_to_iname = Packaging::datum_text(
|
||||
InterNames::make(nrl->datum_package_name, nrl->requirements.this_mundane_package),
|
||||
InterNames::explicitly_named(nrl->datum_package_name, nrl->requirements.this_mundane_package),
|
||||
nrl->requirements.this_mundane_package,
|
||||
nrl->access_name);
|
||||
} else if ((nrl->requirements.this_mundane_package) && (nrl->equates_to_iname == NULL)) {
|
||||
nrl->equates_to_iname = InterNames::make(nrl->access_name, nrl->requirements.this_mundane_package);
|
||||
nrl->equates_to_iname = InterNames::explicitly_named(nrl->access_name, nrl->requirements.this_mundane_package);
|
||||
}
|
||||
|
||||
nrl->equates_to_iname = Hierarchy::post_process(nrl->access_number, nrl->equates_to_iname);
|
||||
|
@ -245,14 +245,11 @@ inter_name *HierarchyLocations::find_in_package(int id, package_request *P, word
|
|||
TEMPORARY_TEXT(T);
|
||||
inter_name *temp_iname = NULL;
|
||||
if (derive_from) {
|
||||
temp_iname = InterNames::new_derived_f(nrl->trans.name_generator, derive_from);
|
||||
temp_iname = InterNames::derived(nrl->trans.name_generator, derive_from, W);
|
||||
} else {
|
||||
temp_iname = InterNames::new_f(nrl->trans.name_generator, fix);
|
||||
temp_iname = InterNames::generated(nrl->trans.name_generator, fix, W);
|
||||
}
|
||||
if (!Wordings::empty(W)) {
|
||||
InterNames::attach_memo(temp_iname, W);
|
||||
W = EMPTY_WORDING;
|
||||
}
|
||||
WRITE_TO(T, "%n", temp_iname);
|
||||
@<Make the actual iname@>;
|
||||
DISCARD_TEXT(T);
|
||||
|
@ -267,16 +264,13 @@ inter_name *HierarchyLocations::find_in_package(int id, package_request *P, word
|
|||
|
||||
@<Make the actual iname@> =
|
||||
if (Str::len(nrl->function_package_name) > 0) {
|
||||
iname = Packaging::function_text(
|
||||
InterNames::make(nrl->function_package_name, P),
|
||||
P,
|
||||
NULL);
|
||||
iname = Packaging::function(
|
||||
InterNames::explicitly_named(nrl->function_package_name, P), P, NULL);
|
||||
} else {
|
||||
if (nrl->trans.by_imposition) iname = InterNames::make(imposed_name, P);
|
||||
else if (Str::len(nrl->access_name) == 0) iname = InterNames::make(T, P);
|
||||
else iname = InterNames::make(nrl->access_name, P);
|
||||
if (nrl->trans.by_imposition) iname = InterNames::explicitly_named_with_memo(imposed_name, P, W);
|
||||
else if (Str::len(nrl->access_name) == 0) iname = InterNames::explicitly_named_with_memo(T, P, W);
|
||||
else iname = InterNames::explicitly_named_with_memo(nrl->access_name, P, W);
|
||||
}
|
||||
if (!Wordings::empty(W)) InterNames::attach_memo(iname, W);
|
||||
if ((Str::len(T) > 0) && (nrl->access_name)) InterNames::change_translation(iname, T);
|
||||
|
||||
@ =
|
||||
|
@ -296,7 +290,7 @@ package_request *HierarchyLocations::package_in_package(int id, package_request
|
|||
internal_error("subpackage not in enclosing superpackage");
|
||||
} else internal_error("NRL accessed inappropriately");
|
||||
|
||||
return Packaging::request(InterNames::make(nrl->access_name, P), P, nrl->package_type);
|
||||
return Packaging::request(InterNames::explicitly_named(nrl->access_name, P), P, nrl->package_type);
|
||||
}
|
||||
|
||||
=
|
||||
|
|
|
@ -1570,7 +1570,7 @@ inter_name *Hierarchy::find_by_name(text_stream *name) {
|
|||
package_request *main_pr = NULL;
|
||||
package_request *Hierarchy::main(void) {
|
||||
if (main_pr == NULL)
|
||||
main_pr = Packaging::request(InterNames::make(I"main", NULL), NULL, plain_ptype);
|
||||
main_pr = Packaging::request(InterNames::explicitly_named(I"main", NULL), NULL, plain_ptype);
|
||||
return main_pr;
|
||||
}
|
||||
|
||||
|
@ -1578,7 +1578,7 @@ package_request *resources_pr = NULL;
|
|||
package_request *Hierarchy::resources(void) {
|
||||
if (resources_pr == NULL)
|
||||
resources_pr = Packaging::request(
|
||||
InterNames::make(I"resources", Hierarchy::main()),
|
||||
InterNames::explicitly_named(I"resources", Hierarchy::main()),
|
||||
Hierarchy::main(), plain_ptype);
|
||||
return resources_pr;
|
||||
}
|
||||
|
@ -1587,7 +1587,7 @@ package_request *template_pr = NULL;
|
|||
package_request *Hierarchy::template(void) {
|
||||
if (template_pr == NULL)
|
||||
template_pr = Packaging::request(
|
||||
InterNames::make(I"template", Hierarchy::resources()),
|
||||
InterNames::explicitly_named(I"template", Hierarchy::resources()),
|
||||
Hierarchy::resources(), module_ptype);
|
||||
return template_pr;
|
||||
}
|
||||
|
|
|
@ -1,184 +1,265 @@
|
|||
[InterNames::] Inter Namespace.
|
||||
|
||||
@
|
||||
To manage identifiers, which have names and positions in the Inter hierarchy.
|
||||
|
||||
@e UNIQUE_FUSAGE from 1
|
||||
@e MULTIPLE_FUSAGE
|
||||
@e DERIVED_FUSAGE
|
||||
@h Families.
|
||||
Each inter name comes from a "generator". Some are one-shot, and produce just
|
||||
one name before being discarded; others produce a numbered sequence of names
|
||||
in a given pattern, counting upwards from 1 (|example_1|, |example_2|, ...);
|
||||
and others still derive new names from existing ones (for example, turning
|
||||
|fish| amd |rumour| into |fishmonger| and |rumourmonger|).
|
||||
|
||||
@e UNIQUE_INGEN from 1
|
||||
@e MULTIPLE_INGEN
|
||||
@e DERIVED_INGEN
|
||||
|
||||
=
|
||||
typedef struct inter_name_family {
|
||||
int fusage;
|
||||
struct text_stream *family_name;
|
||||
int no_consumed;
|
||||
struct inter_name_family *derivative_of;
|
||||
struct text_stream *derived_prefix;
|
||||
struct text_stream *derived_suffix;
|
||||
MEMORY_MANAGEMENT
|
||||
} inter_name_family;
|
||||
typedef struct inter_name_generator {
|
||||
int ingen;
|
||||
struct text_stream *name_stem;
|
||||
int no_generated; /* relevamt only for |MULTIPLE_INGEN| */
|
||||
struct text_stream *derived_prefix; /* relevamt only for |DERIVED_INGEN| */
|
||||
struct text_stream *derived_suffix; /* relevamt only for |DERIVED_INGEN| */
|
||||
} inter_name_generator;
|
||||
|
||||
typedef struct inter_name {
|
||||
struct inter_name_family *family;
|
||||
int unique_number;
|
||||
struct inter_symbol *symbol;
|
||||
struct package_request *eventual_owner;
|
||||
struct text_stream *memo;
|
||||
struct inter_name *derived_from;
|
||||
struct inter_name **parametrised_derivatives;
|
||||
MEMORY_MANAGEMENT
|
||||
} inter_name;
|
||||
|
||||
@ =
|
||||
inter_name_family *InterNames::new_family(int fu, text_stream *name) {
|
||||
inter_name_family *F = CREATE(inter_name_family);
|
||||
F->fusage = fu;
|
||||
F->family_name = Str::duplicate(name);
|
||||
F->derivative_of = NULL;
|
||||
inter_name_generator *InterNames::single_use_generator(text_stream *name) {
|
||||
inter_name_generator *F = CREATE(inter_name_generator);
|
||||
F->ingen = UNIQUE_INGEN;
|
||||
F->name_stem = Str::duplicate(name);
|
||||
F->derived_prefix = NULL;
|
||||
F->derived_suffix = NULL;
|
||||
return F;
|
||||
}
|
||||
|
||||
inter_name *InterNames::make_in_family(inter_name_family *F, int suppress_count) {
|
||||
if (F == NULL) internal_error("no family");
|
||||
inter_name *N = CREATE(inter_name);
|
||||
N->family = F;
|
||||
N->unique_number = 0;
|
||||
if (F->fusage == UNIQUE_FUSAGE) internal_error("not a family name");
|
||||
if ((F->fusage != DERIVED_FUSAGE) && (suppress_count == FALSE)) {
|
||||
N->unique_number = ++F->no_consumed;
|
||||
}
|
||||
N->symbol = NULL;
|
||||
N->memo = NULL;
|
||||
N->derived_from = NULL;
|
||||
N->parametrised_derivatives = NULL;
|
||||
N->eventual_owner = Hierarchy::main();
|
||||
return N;
|
||||
inter_name_generator *InterNames::multiple_use_generator(text_stream *prefix, text_stream *stem, text_stream *suffix) {
|
||||
inter_name_generator *gen = InterNames::single_use_generator(stem);
|
||||
if (Str::len(prefix) > 0) {
|
||||
gen->ingen = DERIVED_INGEN;
|
||||
gen->derived_prefix = Str::duplicate(prefix);
|
||||
} else if (Str::len(suffix) > 0) {
|
||||
gen->ingen = DERIVED_INGEN;
|
||||
gen->derived_suffix = Str::duplicate(suffix);
|
||||
} else gen->ingen = MULTIPLE_INGEN;
|
||||
return gen;
|
||||
}
|
||||
|
||||
inter_name *InterNames::make(text_stream *name, package_request *R) {
|
||||
inter_name_family *F = InterNames::new_family(UNIQUE_FUSAGE, name);
|
||||
inter_name *N = CREATE(inter_name);
|
||||
N->family = F;
|
||||
N->unique_number = 1;
|
||||
N->symbol = NULL;
|
||||
N->memo = NULL;
|
||||
N->derived_from = NULL;
|
||||
N->parametrised_derivatives = NULL;
|
||||
N->eventual_owner = R;
|
||||
return N;
|
||||
@h Printing inames.
|
||||
Inter names are stored not in textual form, but in terms of what would be
|
||||
required to generate that text. (The memo field, which in principle allows
|
||||
any text to be stored, is used only for a small proportion of inames.)
|
||||
|
||||
=
|
||||
typedef struct inter_name {
|
||||
struct inter_name_generator *family;
|
||||
int unique_number;
|
||||
struct inter_symbol *symbol;
|
||||
struct package_request *location_in_hierarchy;
|
||||
struct text_stream *memo;
|
||||
struct inter_name *derived_from;
|
||||
} inter_name;
|
||||
|
||||
@ This implements the |%n| escape, which prints an iname:
|
||||
|
||||
=
|
||||
void InterNames::writer(OUTPUT_STREAM, char *format_string, void *vI) {
|
||||
inter_name *iname = (inter_name *) vI;
|
||||
if (iname == NULL) WRITE("<no-inter-name>");
|
||||
else {
|
||||
if (iname->family == NULL) internal_error("bad inter_name");
|
||||
switch (iname->family->ingen) {
|
||||
case DERIVED_INGEN:
|
||||
WRITE("%S", iname->family->derived_prefix);
|
||||
InterNames::writer(OUT, format_string, iname->derived_from);
|
||||
WRITE("%S", iname->family->derived_suffix);
|
||||
break;
|
||||
case UNIQUE_INGEN:
|
||||
WRITE("%S", iname->family->name_stem);
|
||||
break;
|
||||
case MULTIPLE_INGEN:
|
||||
WRITE("%S", iname->family->name_stem);
|
||||
if (iname->unique_number >= 0) WRITE("%d", iname->unique_number);
|
||||
break;
|
||||
default: internal_error("unknown ingen");
|
||||
}
|
||||
if (Str::len(iname->memo) > 0) WRITE("_%S", iname->memo);
|
||||
}
|
||||
}
|
||||
|
||||
inter_name_family *InterNames::name_generator(text_stream *prefix, text_stream *stem, text_stream *suffix) {
|
||||
int fusage = MULTIPLE_FUSAGE;
|
||||
if ((Str::len(prefix) > 0) || (Str::len(suffix) > 0)) fusage = DERIVED_FUSAGE;
|
||||
inter_name_family *family = InterNames::new_family(fusage, stem);
|
||||
if (Str::len(prefix) > 0) family->derived_prefix = Str::duplicate(prefix);
|
||||
if (Str::len(suffix) > 0) family->derived_suffix = Str::duplicate(suffix);
|
||||
return family;
|
||||
@h Making new inames.
|
||||
We can now make a new iname, which is easy unless there's a memo to attach.
|
||||
For example, attaching the wording "printing the name of a dark room" to
|
||||
an iname which would otherwise just be |V12| produces |V12_printing_the_name_of_a_da|.
|
||||
Memos exist almost largely to make the Inter code easier for human eyes to read,
|
||||
as in this case, but sometimes, as with kind names like |K2_thing|, they're
|
||||
needed because template or explicit I6 inclusion code makes references to them.
|
||||
|
||||
Although most inter names are eventually used to create symbols in the
|
||||
Inter hierarchy's symbols table, this does not happen immediately, and
|
||||
for some inames it never will.
|
||||
|
||||
=
|
||||
inter_name *InterNames::new(inter_name_generator *F, package_request *R, wording W) {
|
||||
inter_name *iname = CREATE(inter_name);
|
||||
iname->family = F;
|
||||
iname->unique_number = 0;
|
||||
iname->symbol = NULL;
|
||||
iname->derived_from = NULL;
|
||||
iname->location_in_hierarchy = R;
|
||||
if (Wordings::empty(W)) {
|
||||
iname->memo = NULL;
|
||||
} else {
|
||||
iname->memo = Str::new();
|
||||
@<Fill the memo with up to 28 characters of text from the given wording@>;
|
||||
@<Ensure that the name, as now extended by the memo, is a legal Inter identifier@>;
|
||||
}
|
||||
return iname;
|
||||
}
|
||||
|
||||
void InterNames::attach_memo(inter_name *N, wording W) {
|
||||
if (N->symbol) internal_error("too late to attach memo");
|
||||
N->memo = Str::new();
|
||||
@<Fill the memo with up to 28 characters of text from the given wording@> =
|
||||
int c = 0;
|
||||
LOOP_THROUGH_WORDING(j, W) {
|
||||
/* identifier is at this point 32 chars or fewer in length: add at most 30 more */
|
||||
if (c++ > 0) WRITE_TO(N->memo, " ");
|
||||
if (c++ > 0) WRITE_TO(iname->memo, " ");
|
||||
if (Wide::len(Lexer::word_text(j)) > 30)
|
||||
WRITE_TO(N->memo, "etc");
|
||||
else WRITE_TO(N->memo, "%N", j);
|
||||
if (Str::len(N->memo) > 32) break;
|
||||
WRITE_TO(iname->memo, "etc");
|
||||
else WRITE_TO(iname->memo, "%N", j);
|
||||
if (Str::len(iname->memo) > 32) break;
|
||||
}
|
||||
Str::truncate(N->memo, 28); /* it was at worst 62 chars in size, but is now truncated to 28 */
|
||||
Identifiers::purify(N->memo);
|
||||
Str::truncate(iname->memo, 28); /* it was at worst 62 chars in size, but is now truncated to 28 */
|
||||
|
||||
@<Ensure that the name, as now extended by the memo, is a legal Inter identifier@> =
|
||||
Identifiers::purify(iname->memo);
|
||||
TEMPORARY_TEXT(NBUFF);
|
||||
WRITE_TO(NBUFF, "%n", N);
|
||||
WRITE_TO(NBUFF, "%n", iname);
|
||||
int L = Str::len(NBUFF);
|
||||
DISCARD_TEXT(NBUFF);
|
||||
if (L > 28) Str::truncate(N->memo, Str::len(N->memo) - (L - 28));
|
||||
if (L > 28) Str::truncate(iname->memo, Str::len(iname->memo) - (L - 28));
|
||||
|
||||
@ That creation function should be called only by these, which in turn must
|
||||
be called only from within the current chapter. First, the single-shot cases,
|
||||
where the caller wants a single name with fixed wording (but possibly with
|
||||
a memo to attach):
|
||||
|
||||
=
|
||||
inter_name *InterNames::explicitly_named_with_memo(text_stream *name, package_request *R, wording W) {
|
||||
return InterNames::new(InterNames::single_use_generator(name), R, W);
|
||||
}
|
||||
|
||||
void InterNames::change_translation(inter_name *N, text_stream *new_text) {
|
||||
Inter::Symbols::set_translate(InterNames::to_symbol(N), new_text);
|
||||
inter_name *InterNames::explicitly_named(text_stream *name, package_request *R) {
|
||||
return InterNames::explicitly_named_with_memo(name, R, EMPTY_WORDING);
|
||||
}
|
||||
|
||||
text_stream *InterNames::get_translation(inter_name *N) {
|
||||
return Inter::Symbols::get_translate(InterNames::to_symbol(N));
|
||||
@ Second, the generated or derived cases:
|
||||
|
||||
=
|
||||
inter_name *InterNames::multiple(inter_name_generator *F, package_request *R, wording W) {
|
||||
if (F == NULL) internal_error("no family");
|
||||
if (F->ingen == UNIQUE_INGEN) internal_error("not a family name");
|
||||
inter_name *iname = InterNames::new(F, R, W);
|
||||
if (F->ingen != DERIVED_INGEN) iname->unique_number = ++F->no_generated;
|
||||
return iname;
|
||||
}
|
||||
|
||||
inter_symbol *InterNames::to_symbol(inter_name *N) {
|
||||
if (N->symbol == NULL) {
|
||||
inter_name *InterNames::generated(inter_name_generator *F, int fix, wording W) {
|
||||
inter_name *iname = InterNames::multiple(F, NULL, W);
|
||||
if (fix != -1) iname->unique_number = fix;
|
||||
return iname;
|
||||
}
|
||||
|
||||
inter_name *InterNames::derived(inter_name_generator *F, inter_name *from, wording W) {
|
||||
if (F->ingen != DERIVED_INGEN) internal_error("not a derived family");
|
||||
inter_name *iname = InterNames::multiple(F, from->location_in_hierarchy, W);
|
||||
iname->derived_from = from;
|
||||
return iname;
|
||||
}
|
||||
|
||||
@ An ugly necessity is that a handful of inames representing actions have to
|
||||
be renamed after creation, thanks to sentences such as:
|
||||
|
||||
>> The taking action translates into I6 as "Take".
|
||||
|
||||
=
|
||||
void InterNames::override_action_base_iname(inter_name *iname, text_stream *to) {
|
||||
if (iname == NULL) internal_error("no such iname");
|
||||
// if (iname->symbol) internal_error("too late to rename iname");
|
||||
iname->family->name_stem = Str::duplicate(to);
|
||||
Str::clear(iname->memo);
|
||||
}
|
||||
|
||||
@h Conversion of inames to symbols.
|
||||
The purpose of inames is not quite to represent identifier names occurring in
|
||||
given packages inside the Inter hierarchy: it would be more accurate to say
|
||||
that they represent potential identifiers, which may or may not be used.
|
||||
At some point they will probably (but not certainly) undergo "conversion",
|
||||
when they are matched up with actual symbols in the symbols tables of the
|
||||
given packages. Once this is done, an iname can't be renamed or moved.
|
||||
|
||||
Conversion is done on-demand, and thus left as late as possible. It happens
|
||||
automatically in the following function:
|
||||
|
||||
=
|
||||
inter_symbol *InterNames::to_symbol(inter_name *iname) {
|
||||
if (iname->symbol == NULL) {
|
||||
TEMPORARY_TEXT(NBUFF);
|
||||
WRITE_TO(NBUFF, "%n", N);
|
||||
inter_symbols_table *T = Packaging::scope(Emit::repository(), N);
|
||||
N->symbol = Emit::new_symbol(T, NBUFF);
|
||||
WRITE_TO(NBUFF, "%n", iname);
|
||||
inter_symbols_table *T = Packaging::scope(Emit::repository(), iname);
|
||||
iname->symbol = Emit::new_symbol(T, NBUFF);
|
||||
DISCARD_TEXT(NBUFF);
|
||||
}
|
||||
return N->symbol;
|
||||
return iname->symbol;
|
||||
}
|
||||
|
||||
text_stream *InterNames::to_text(inter_name *N) {
|
||||
if (N == NULL) return NULL;
|
||||
return InterNames::to_symbol(N)->symbol_name;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
void InterNames::change_translation(inter_name *iname, text_stream *new_text) {
|
||||
Inter::Symbols::set_translate(InterNames::to_symbol(iname), new_text);
|
||||
}
|
||||
|
||||
inter_symbol *InterNames::define_symbol(inter_name *N) {
|
||||
InterNames::to_symbol(N);
|
||||
if (N->symbol) {
|
||||
if (Inter::Symbols::is_predeclared(N->symbol)) {
|
||||
Inter::Symbols::undefine(N->symbol);
|
||||
}
|
||||
}
|
||||
if ((N->symbol) && (Inter::Symbols::read_annotation(N->symbol, HOLDING_IANN) == 1)) {
|
||||
if (Inter::Symbols::read_annotation(N->symbol, DELENDA_EST_IANN) != 1) {
|
||||
Emit::annotate_symbol_i(N->symbol, DELENDA_EST_IANN, 1);
|
||||
Inter::Symbols::strike_definition(N->symbol);
|
||||
}
|
||||
return N->symbol;
|
||||
}
|
||||
return N->symbol;
|
||||
text_stream *InterNames::get_translation(inter_name *iname) {
|
||||
return Inter::Symbols::get_translate(InterNames::to_symbol(iname));
|
||||
}
|
||||
|
||||
inter_symbol *InterNames::destroy_symbol(inter_name *N) {
|
||||
InterNames::to_symbol(N);
|
||||
if (N->symbol) {
|
||||
if (Inter::Symbols::is_predeclared(N->symbol)) {
|
||||
Inter::Symbols::undefine(N->symbol);
|
||||
}
|
||||
}
|
||||
if ((N->symbol) && (Inter::Symbols::read_annotation(N->symbol, HOLDING_IANN) == 1)) {
|
||||
if (Inter::Symbols::read_annotation(N->symbol, DELENDA_EST_IANN) != 1) {
|
||||
Emit::annotate_symbol_i(N->symbol, DELENDA_EST_IANN, 1);
|
||||
Inter::Symbols::strike_definition(N->symbol);
|
||||
}
|
||||
return N->symbol;
|
||||
} else if (Inter::Symbols::read_annotation(N->symbol, DELENDA_EST_IANN) != 1) internal_error("Bang");
|
||||
return N->symbol;
|
||||
text_stream *InterNames::to_text(inter_name *iname) {
|
||||
if (iname == NULL) return NULL;
|
||||
return InterNames::to_symbol(iname)->symbol_name;
|
||||
}
|
||||
|
||||
void InterNames::writer(OUTPUT_STREAM, char *format_string, void *vI) {
|
||||
inter_name *N = (inter_name *) vI;
|
||||
if (N == NULL) WRITE("<no-inter-name>");
|
||||
else {
|
||||
if (N->family == NULL) internal_error("bad inter_name");
|
||||
switch (N->family->fusage) {
|
||||
case DERIVED_FUSAGE:
|
||||
WRITE("%S", N->family->derived_prefix);
|
||||
InterNames::writer(OUT, format_string, N->derived_from);
|
||||
WRITE("%S", N->family->derived_suffix);
|
||||
break;
|
||||
case UNIQUE_FUSAGE:
|
||||
WRITE("%S", N->family->family_name);
|
||||
break;
|
||||
case MULTIPLE_FUSAGE:
|
||||
WRITE("%S", N->family->family_name);
|
||||
if (N->unique_number >= 0) WRITE("%d", N->unique_number);
|
||||
break;
|
||||
default: internal_error("unknown fusage");
|
||||
inter_symbol *InterNames::define_symbol(inter_name *iname) {
|
||||
InterNames::to_symbol(iname);
|
||||
if (iname->symbol) {
|
||||
if (Inter::Symbols::is_predeclared(iname->symbol)) {
|
||||
Inter::Symbols::undefine(iname->symbol);
|
||||
}
|
||||
if (Str::len(N->memo) > 0) WRITE("_%S", N->memo);
|
||||
}
|
||||
if ((iname->symbol) && (Inter::Symbols::read_annotation(iname->symbol, HOLDING_IANN) == 1)) {
|
||||
if (Inter::Symbols::read_annotation(iname->symbol, DELENDA_EST_IANN) != 1) {
|
||||
Emit::annotate_symbol_i(iname->symbol, DELENDA_EST_IANN, 1);
|
||||
Inter::Symbols::strike_definition(iname->symbol);
|
||||
}
|
||||
return iname->symbol;
|
||||
}
|
||||
return iname->symbol;
|
||||
}
|
||||
|
||||
inter_symbol *InterNames::destroy_symbol(inter_name *iname) {
|
||||
InterNames::to_symbol(iname);
|
||||
if (iname->symbol) {
|
||||
if (Inter::Symbols::is_predeclared(iname->symbol)) {
|
||||
Inter::Symbols::undefine(iname->symbol);
|
||||
}
|
||||
}
|
||||
if ((iname->symbol) && (Inter::Symbols::read_annotation(iname->symbol, HOLDING_IANN) == 1)) {
|
||||
if (Inter::Symbols::read_annotation(iname->symbol, DELENDA_EST_IANN) != 1) {
|
||||
Emit::annotate_symbol_i(iname->symbol, DELENDA_EST_IANN, 1);
|
||||
Inter::Symbols::strike_definition(iname->symbol);
|
||||
}
|
||||
return iname->symbol;
|
||||
} else if (Inter::Symbols::read_annotation(iname->symbol, DELENDA_EST_IANN) != 1) internal_error("Bang");
|
||||
return iname->symbol;
|
||||
}
|
||||
|
||||
void InterNames::set_flag(inter_name *iname, int f) {
|
||||
|
@ -226,22 +307,3 @@ int InterNames::defined(inter_name *iname) {
|
|||
if (Inter::Symbols::is_defined(S)) return TRUE;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
inter_name *InterNames::new_f(inter_name_family *F, int fix) {
|
||||
inter_name *iname = InterNames::make_in_family(F, FALSE);
|
||||
if (fix != -1) iname->unique_number = fix;
|
||||
return iname;
|
||||
}
|
||||
|
||||
inter_name *InterNames::new_derived_f(inter_name_family *F, inter_name *from) {
|
||||
if (F->fusage != DERIVED_FUSAGE) internal_error("not a derived family");
|
||||
inter_name *N = InterNames::make_in_family(F, TRUE);
|
||||
Packaging::house_with(N, from);
|
||||
N->derived_from = from;
|
||||
return N;
|
||||
}
|
||||
|
||||
void InterNames::override_action_base_iname(inter_name *ab_iname, text_stream *to) {
|
||||
ab_iname->family->family_name = Str::duplicate(to);
|
||||
Str::clear(ab_iname->memo);
|
||||
}
|
||||
|
|
|
@ -53,7 +53,7 @@ typedef struct submodule_request_counter {
|
|||
package_request *Packaging::request(inter_name *name, package_request *parent, inter_symbol *pt) {
|
||||
package_request *R = CREATE(package_request);
|
||||
R->eventual_name = name;
|
||||
if (parent) name->eventual_owner = parent;
|
||||
if (parent) name->location_in_hierarchy = parent;
|
||||
R->eventual_type = pt;
|
||||
R->actual_package = NULL;
|
||||
R->parent_request = parent;
|
||||
|
@ -91,11 +91,11 @@ packaging_state Packaging::stateless(void) {
|
|||
}
|
||||
|
||||
package_request *Packaging::home_of(inter_name *N) {
|
||||
return N->eventual_owner;
|
||||
return N->location_in_hierarchy;
|
||||
}
|
||||
|
||||
packaging_state Packaging::enter_home_of(inter_name *N) {
|
||||
return Packaging::enter(N->eventual_owner);
|
||||
return Packaging::enter(Packaging::home_of(N));
|
||||
}
|
||||
|
||||
packaging_state Packaging::enter_current_enclosure(void) {
|
||||
|
@ -167,8 +167,8 @@ inter_package *Packaging::incarnate(package_request *R) {
|
|||
|
||||
inter_symbols_table *Packaging::scope(inter_repository *I, inter_name *N) {
|
||||
if (N == NULL) internal_error("can't determine scope of null name");
|
||||
if (N->eventual_owner == NULL) return Inter::get_global_symbols(Emit::repository());
|
||||
return Inter::Packages::scope(Packaging::incarnate(N->eventual_owner));
|
||||
if (N->location_in_hierarchy == NULL) return Inter::get_global_symbols(Emit::repository());
|
||||
return Inter::Packages::scope(Packaging::incarnate(N->location_in_hierarchy));
|
||||
}
|
||||
|
||||
@ =
|
||||
|
@ -176,7 +176,7 @@ package_request *generic_pr = NULL;
|
|||
package_request *Packaging::request_generic(void) {
|
||||
if (generic_pr == NULL)
|
||||
generic_pr = Packaging::request(
|
||||
InterNames::make(I"generic", Hierarchy::resources()),
|
||||
InterNames::explicitly_named(I"generic", Hierarchy::resources()),
|
||||
Hierarchy::resources(), module_ptype);
|
||||
return generic_pr;
|
||||
}
|
||||
|
@ -185,7 +185,7 @@ package_request *synoptic_pr = NULL;
|
|||
package_request *Packaging::request_synoptic(void) {
|
||||
if (synoptic_pr == NULL)
|
||||
synoptic_pr = Packaging::request(
|
||||
InterNames::make(I"synoptic", Hierarchy::resources()),
|
||||
InterNames::explicitly_named(I"synoptic", Hierarchy::resources()),
|
||||
Hierarchy::resources(), module_ptype);
|
||||
return synoptic_pr;
|
||||
}
|
||||
|
@ -213,7 +213,7 @@ typedef struct submodule_requests {
|
|||
} submodule_requests;
|
||||
|
||||
package_request *Packaging::resources_for_new_submodule(text_stream *name, submodule_requests *SR) {
|
||||
inter_name *package_iname = InterNames::make(name, Hierarchy::resources());
|
||||
inter_name *package_iname = InterNames::explicitly_named(name, Hierarchy::resources());
|
||||
package_request *P = Packaging::request(package_iname, Hierarchy::resources(), module_ptype);
|
||||
Packaging::initialise_submodules(SR);
|
||||
return P;
|
||||
|
@ -274,7 +274,7 @@ package_request *Packaging::synoptic_resource(submodule_identity *sid) {
|
|||
LOOP_OVER_LINKED_LIST(sr, submodule_request, SR->submodules)
|
||||
if (sid == sr->which_submodule)
|
||||
return sr->where_found;
|
||||
inter_name *iname = InterNames::make(sid->submodule_name, parent);
|
||||
inter_name *iname = InterNames::explicitly_named(sid->submodule_name, parent);
|
||||
sr = CREATE(submodule_request);
|
||||
sr->which_submodule = sid;
|
||||
sr->where_found = Packaging::request(iname, parent, plain_ptype);
|
||||
|
@ -315,14 +315,14 @@ inter_name *Packaging::supply_iname(package_request *R, int what_for) {
|
|||
}
|
||||
TEMPORARY_TEXT(P);
|
||||
WRITE_TO(P, "%S_%d", pr_counter_names[what_for], N);
|
||||
inter_name *iname = InterNames::make(P, R);
|
||||
inter_name *iname = InterNames::explicitly_named(P, R);
|
||||
DISCARD_TEXT(P);
|
||||
return iname;
|
||||
}
|
||||
|
||||
inter_name *Packaging::function(inter_name *function_iname, package_request *R2, inter_name *temp_iname) {
|
||||
package_request *R3 = Packaging::request(function_iname, R2, function_ptype);
|
||||
inter_name *iname = InterNames::make(I"call", R3);
|
||||
inter_name *iname = InterNames::explicitly_named(I"call", R3);
|
||||
Packaging::house(iname, R3);
|
||||
if (temp_iname) {
|
||||
TEMPORARY_TEXT(T);
|
||||
|
@ -335,7 +335,7 @@ inter_name *Packaging::function(inter_name *function_iname, package_request *R2,
|
|||
|
||||
inter_name *Packaging::function_text(inter_name *function_iname, package_request *R2, text_stream *translation) {
|
||||
package_request *R3 = Packaging::request(function_iname, R2, function_ptype);
|
||||
inter_name *iname = InterNames::make(I"call", R3);
|
||||
inter_name *iname = InterNames::explicitly_named(I"call", R3);
|
||||
Packaging::house(iname, R3);
|
||||
if (translation)
|
||||
InterNames::change_translation(iname, translation);
|
||||
|
@ -344,7 +344,7 @@ inter_name *Packaging::function_text(inter_name *function_iname, package_request
|
|||
|
||||
inter_name *Packaging::datum_text(inter_name *function_iname, package_request *R2, text_stream *translation) {
|
||||
package_request *R3 = Packaging::request(function_iname, R2, data_ptype);
|
||||
inter_name *iname = InterNames::make(translation, R3);
|
||||
inter_name *iname = InterNames::explicitly_named(translation, R3);
|
||||
Packaging::house(iname, R3);
|
||||
return iname;
|
||||
}
|
||||
|
@ -352,18 +352,18 @@ inter_name *Packaging::datum_text(inter_name *function_iname, package_request *R
|
|||
void Packaging::house(inter_name *iname, package_request *at) {
|
||||
if (iname == NULL) internal_error("can't house null name");
|
||||
if (at == NULL) internal_error("can't house nowhere");
|
||||
iname->eventual_owner = at;
|
||||
iname->location_in_hierarchy = at;
|
||||
}
|
||||
|
||||
void Packaging::house_with(inter_name *iname, inter_name *landlord) {
|
||||
if (iname == NULL) internal_error("can't house null name");
|
||||
if (landlord == NULL) internal_error("can't house with nobody");
|
||||
iname->eventual_owner = landlord->eventual_owner;
|
||||
iname->location_in_hierarchy = landlord->location_in_hierarchy;
|
||||
}
|
||||
|
||||
int Packaging::houseed_in_function(inter_name *iname) {
|
||||
if (iname == NULL) return FALSE;
|
||||
if (iname->eventual_owner == NULL) return FALSE;
|
||||
if (iname->eventual_owner->eventual_type == function_ptype) return TRUE;
|
||||
if (iname->location_in_hierarchy == NULL) return FALSE;
|
||||
if (iname->location_in_hierarchy->eventual_type == function_ptype) return TRUE;
|
||||
return FALSE;
|
||||
}
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
typedef struct name_translation {
|
||||
struct text_stream *translate_to;
|
||||
int then_make_unique;
|
||||
struct inter_name_family *name_generator;
|
||||
struct inter_name_generator *name_generator;
|
||||
int derive;
|
||||
int by_imposition;
|
||||
} name_translation;
|
||||
|
@ -48,20 +48,20 @@ name_translation Translation::to_uniqued(text_stream *S) {
|
|||
|
||||
name_translation Translation::prefix(text_stream *S) {
|
||||
name_translation nt = Translation::same();
|
||||
nt.name_generator = InterNames::name_generator(S, NULL, NULL);
|
||||
nt.name_generator = InterNames::multiple_use_generator(S, NULL, NULL);
|
||||
nt.derive = TRUE;
|
||||
return nt;
|
||||
}
|
||||
|
||||
name_translation Translation::suffix(text_stream *S) {
|
||||
name_translation nt = Translation::same();
|
||||
nt.name_generator = InterNames::name_generator(NULL, NULL, S);
|
||||
nt.name_generator = InterNames::multiple_use_generator(NULL, NULL, S);
|
||||
nt.derive = TRUE;
|
||||
return nt;
|
||||
}
|
||||
|
||||
name_translation Translation::generate(text_stream *S) {
|
||||
name_translation nt = Translation::same();
|
||||
nt.name_generator = InterNames::name_generator(NULL, S, NULL);
|
||||
nt.name_generator = InterNames::multiple_use_generator(NULL, S, NULL);
|
||||
return nt;
|
||||
}
|
||||
|
|
|
@ -711,7 +711,7 @@ inter_name *Instances::emitted_iname(instance *I) {
|
|||
inter_name *iname = Instances::iname(I);
|
||||
if (I->instance_emitted == FALSE) {
|
||||
I->instance_emitted = TRUE;
|
||||
packaging_state save = Packaging::enter(iname->eventual_owner);
|
||||
packaging_state save = Packaging::enter_home_of(iname);
|
||||
Emit::instance(iname, Instances::to_kind(I), I->enumeration_index);
|
||||
Packaging::exit(save);
|
||||
}
|
||||
|
@ -720,7 +720,7 @@ inter_name *Instances::emitted_iname(instance *I) {
|
|||
|
||||
package_request *Instances::package(instance *I) {
|
||||
inter_name *iname = Instances::iname(I);
|
||||
return iname->eventual_owner;
|
||||
return Packaging::home_of(iname);
|
||||
}
|
||||
|
||||
@h Adjectival uses of instances.
|
||||
|
|
|
@ -415,7 +415,7 @@ int NonlocalVariables::SUBJ_compile_all(void) {
|
|||
(nlv->housed_in_variables_array)) {
|
||||
|
||||
inter_name *iname = NonlocalVariables::iname(nlv);
|
||||
packaging_state save = Packaging::enter(iname->eventual_owner);
|
||||
packaging_state save = Packaging::enter_home_of(iname);
|
||||
|
||||
value_holster VH = Holsters::new(INTER_DATA_VHMODE);
|
||||
|
||||
|
|
|
@ -61,7 +61,7 @@ regions_data *PL::Regions::new_data(inference_subject *subj) {
|
|||
inter_name *PL::Regions::found_in_iname(instance *I) {
|
||||
if (PF_I(regions, I)->in_region_iname == NULL) {
|
||||
inter_name *iname = Instances::iname(I);
|
||||
PF_I(regions, I)->in_region_iname = Hierarchy::make_iname_in(REGION_FOUND_IN_FN_HL, iname->eventual_owner);
|
||||
PF_I(regions, I)->in_region_iname = Hierarchy::make_iname_in(REGION_FOUND_IN_FN_HL, Packaging::home_of(iname));
|
||||
}
|
||||
return PF_I(regions, I)->in_region_iname;
|
||||
}
|
||||
|
|
|
@ -968,7 +968,7 @@ always the way to the other room -- the one we are not in.
|
|||
@<Assert door-dir for a two-sided door@> =
|
||||
door_dir_notice *notice = CREATE(door_dir_notice);
|
||||
inter_name *iname = Instances::iname(I);
|
||||
notice->ddn_iname = Hierarchy::make_iname_in(TSD_DOOR_DIR_FN_HL, iname->eventual_owner);
|
||||
notice->ddn_iname = Hierarchy::make_iname_in(TSD_DOOR_DIR_FN_HL, Packaging::home_of(iname));
|
||||
notice->door = I;
|
||||
notice->R1 = R1;
|
||||
notice->D1 = D1;
|
||||
|
@ -982,7 +982,7 @@ always the other room -- the one we are not in.
|
|||
@<Assert door-to for a two-sided door@> =
|
||||
door_to_notice *notice = CREATE(door_to_notice);
|
||||
inter_name *iname = Instances::iname(I);
|
||||
notice->dtn_iname = Hierarchy::make_iname_in(TSD_DOOR_TO_FN_HL, iname->eventual_owner);
|
||||
notice->dtn_iname = Hierarchy::make_iname_in(TSD_DOOR_TO_FN_HL, Packaging::home_of(iname));
|
||||
notice->door = I;
|
||||
notice->R1 = R1;
|
||||
notice->R2 = R2;
|
||||
|
|
|
@ -312,21 +312,21 @@ so. These routines allow that to happen.
|
|||
@<Compose the I6 short-name as a routine dynamically using its owner's short-name@> =
|
||||
inter_name *iname = Instances::iname(I);
|
||||
short_name_notice *notice = CREATE(short_name_notice);
|
||||
notice->routine_iname = Hierarchy::make_iname_in(SHORT_NAME_FN_HL, iname->eventual_owner);
|
||||
notice->routine_iname = Hierarchy::make_iname_in(SHORT_NAME_FN_HL, Packaging::home_of(iname));
|
||||
notice->namee = I;
|
||||
notice->after_subject = subj;
|
||||
notice->capped = FALSE;
|
||||
notice->snn_iname = Hierarchy::make_iname_in(SHORT_NAME_PROPERTY_FN_HL, iname->eventual_owner);
|
||||
notice->snn_iname = Hierarchy::make_iname_in(SHORT_NAME_PROPERTY_FN_HL, Packaging::home_of(iname));
|
||||
faux = notice->snn_iname;
|
||||
|
||||
@<Compose the I6 cap-short-name as a routine dynamically using its owner's cap-short-name@> =
|
||||
inter_name *iname = Instances::iname(I);
|
||||
short_name_notice *notice = CREATE(short_name_notice);
|
||||
notice->routine_iname = Hierarchy::make_iname_in(SHORT_NAME_FN_HL, iname->eventual_owner);
|
||||
notice->routine_iname = Hierarchy::make_iname_in(SHORT_NAME_FN_HL, Packaging::home_of(iname));
|
||||
notice->namee = I;
|
||||
notice->after_subject = subj;
|
||||
notice->capped = TRUE;
|
||||
notice->snn_iname = Hierarchy::make_iname_in(SHORT_NAME_PROPERTY_FN_HL, iname->eventual_owner);
|
||||
notice->snn_iname = Hierarchy::make_iname_in(SHORT_NAME_PROPERTY_FN_HL, Packaging::home_of(iname));
|
||||
faux = notice->snn_iname;
|
||||
|
||||
@ Lastly, then. We don't give this to kinds of room, because it's never necessary
|
||||
|
|
|
@ -527,7 +527,7 @@ grammar_verb *PL::Parsing::Verbs::for_prn(property *prn) {
|
|||
Properties::EitherOr::set_parsing_grammar(prn, gv);
|
||||
gv->prn_understood = prn;
|
||||
inter_name *iname = Properties::iname(prn);
|
||||
gv->gv_prn_iname = Hierarchy::make_iname_in(EITHER_OR_GPR_FN_HL, iname->eventual_owner);
|
||||
gv->gv_prn_iname = Hierarchy::make_iname_in(EITHER_OR_GPR_FN_HL, Packaging::home_of(iname));
|
||||
return gv;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue