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

Improved inventory

This commit is contained in:
Graham Nelson 2019-04-23 23:31:35 +01:00
parent 6ce8f8eab9
commit 081874ba47
24 changed files with 183 additions and 37 deletions

View file

@ -29,19 +29,42 @@
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Str::ne</span><span class="plain">(</span><span class="identifier">M</span><span class="plain">-&gt;</span><span class="identifier">package_name</span><span class="plain">-&gt;</span><span class="identifier">symbol_name</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"template"</span><span class="plain">)) {</span>
<span class="identifier">INDENT</span><span class="plain">;</span>
<span class="reserved">for</span><span class="plain"> (</span><span class="identifier">inter_package</span><span class="plain"> *</span><span class="identifier">SM</span><span class="plain"> = </span><span class="identifier">M</span><span class="plain">-&gt;</span><span class="identifier">child_package</span><span class="plain">; </span><span class="identifier">SM</span><span class="plain">; </span><span class="identifier">SM</span><span class="plain"> = </span><span class="identifier">SM</span><span class="plain">-&gt;</span><span class="identifier">next_package</span><span class="plain">) {</span>
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"%S:\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">SM</span><span class="plain">-&gt;</span><span class="identifier">package_name</span><span class="plain">-&gt;</span><span class="identifier">symbol_name</span><span class="plain">);</span>
<span class="identifier">INDENT</span><span class="plain">;</span>
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">pos</span><span class="plain"> = 0;</span>
<span class="reserved">for</span><span class="plain"> (</span><span class="identifier">inter_package</span><span class="plain"> *</span><span class="identifier">R</span><span class="plain"> = </span><span class="identifier">SM</span><span class="plain">-&gt;</span><span class="identifier">child_package</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">R</span><span class="plain">-&gt;</span><span class="identifier">next_package</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="functiontext">CodeGen::Inventory::read_metadata</span><span class="plain">(</span><span class="identifier">R</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"`name"</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">name</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="identifier">name</span><span class="plain"> = </span><span class="identifier">R</span><span class="plain">-&gt;</span><span class="identifier">package_name</span><span class="plain">-&gt;</span><span class="identifier">symbol_name</span><span class="plain">;</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">pos</span><span class="plain"> &gt; 0) </span><span class="identifier">WRITE</span><span class="plain">(</span><span class="string">", "</span><span class="plain">);</span>
<span class="identifier">pos</span><span class="plain"> += </span><span class="identifier">Str::len</span><span class="plain">(</span><span class="identifier">name</span><span class="plain">) + 2;</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">pos</span><span class="plain"> &gt; 80) { </span><span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"\</span><span class="plain">n</span><span class="string">"</span><span class="plain">); </span><span class="identifier">pos</span><span class="plain"> = </span><span class="identifier">Str::len</span><span class="plain">(</span><span class="identifier">name</span><span class="plain">) + 2; }</span>
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"%S"</span><span class="plain">, </span><span class="identifier">name</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">pos</span><span class="plain"> &gt; 0) </span><span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"\</span><span class="plain">n</span><span class="string">"</span><span class="plain">);</span>
<span class="identifier">OUTDENT</span><span class="plain">;</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">SM</span><span class="plain">-&gt;</span><span class="identifier">child_package</span><span class="plain">) {</span>
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"%S:\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">SM</span><span class="plain">-&gt;</span><span class="identifier">package_name</span><span class="plain">-&gt;</span><span class="identifier">symbol_name</span><span class="plain">);</span>
<span class="identifier">INDENT</span><span class="plain">;</span>
<span class="reserved">for</span><span class="plain"> (</span><span class="identifier">inter_package</span><span class="plain"> *</span><span class="identifier">R</span><span class="plain"> = </span><span class="identifier">SM</span><span class="plain">-&gt;</span><span class="identifier">child_package</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">R</span><span class="plain">-&gt;</span><span class="identifier">next_package</span><span class="plain">)</span>
<span class="functiontext">CodeGen::unmark</span><span class="plain">(</span><span class="identifier">R</span><span class="plain">-&gt;</span><span class="identifier">package_name</span><span class="plain">);</span>
<span class="reserved">for</span><span class="plain"> (</span><span class="identifier">inter_package</span><span class="plain"> *</span><span class="identifier">R</span><span class="plain"> = </span><span class="identifier">SM</span><span class="plain">-&gt;</span><span class="identifier">child_package</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">R</span><span class="plain">-&gt;</span><span class="identifier">next_package</span><span class="plain">) {</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">CodeGen::marked</span><span class="plain">(</span><span class="identifier">R</span><span class="plain">-&gt;</span><span class="identifier">package_name</span><span class="plain">)) </span><span class="reserved">continue</span><span class="plain">;</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">ptype</span><span class="plain"> = </span><span class="identifier">Inter::Packages::type</span><span class="plain">(</span><span class="identifier">R</span><span class="plain">);</span>
<span class="identifier">OUTDENT</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">ptype</span><span class="plain">-&gt;</span><span class="identifier">symbol_name</span><span class="plain">);</span>
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">N</span><span class="plain"> = 1;</span>
<span class="reserved">for</span><span class="plain"> (</span><span class="identifier">inter_package</span><span class="plain"> *</span><span class="identifier">R2</span><span class="plain"> = </span><span class="identifier">R</span><span class="plain">-&gt;</span><span class="identifier">next_package</span><span class="plain">; </span><span class="identifier">R2</span><span class="plain">; </span><span class="identifier">R2</span><span class="plain"> = </span><span class="identifier">R2</span><span class="plain">-&gt;</span><span class="identifier">next_package</span><span class="plain">)</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Inter::Packages::type</span><span class="plain">(</span><span class="identifier">R2</span><span class="plain">) == </span><span class="identifier">ptype</span><span class="plain">)</span>
<span class="identifier">N</span><span class="plain">++;</span>
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"x %d: "</span><span class="plain">, </span><span class="identifier">N</span><span class="plain">);</span>
<span class="identifier">INDENT</span><span class="plain">;</span>
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">pos</span><span class="plain"> = </span><span class="identifier">Str::len</span><span class="plain">(</span><span class="identifier">ptype</span><span class="plain">-&gt;</span><span class="identifier">symbol_name</span><span class="plain">) + 7;</span>
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">first</span><span class="plain"> = </span><span class="identifier">TRUE</span><span class="plain">;</span>
<span class="reserved">for</span><span class="plain"> (</span><span class="identifier">inter_package</span><span class="plain"> *</span><span class="identifier">R2</span><span class="plain"> = </span><span class="identifier">R</span><span class="plain">; </span><span class="identifier">R2</span><span class="plain">; </span><span class="identifier">R2</span><span class="plain"> = </span><span class="identifier">R2</span><span class="plain">-&gt;</span><span class="identifier">next_package</span><span class="plain">) {</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Inter::Packages::type</span><span class="plain">(</span><span class="identifier">R2</span><span class="plain">) == </span><span class="identifier">ptype</span><span class="plain">) {</span>
<span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">name</span><span class="plain"> = </span><span class="functiontext">CodeGen::Inventory::read_metadata</span><span class="plain">(</span><span class="identifier">R2</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"`name"</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">name</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="identifier">name</span><span class="plain"> = </span><span class="identifier">R2</span><span class="plain">-&gt;</span><span class="identifier">package_name</span><span class="plain">-&gt;</span><span class="identifier">symbol_name</span><span class="plain">;</span>
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">pos</span><span class="plain"> &gt; 0) &amp;&amp; (</span><span class="identifier">first</span><span class="plain"> == </span><span class="identifier">FALSE</span><span class="plain">)) </span><span class="identifier">WRITE</span><span class="plain">(</span><span class="string">", "</span><span class="plain">);</span>
<span class="identifier">pos</span><span class="plain"> += </span><span class="identifier">Str::len</span><span class="plain">(</span><span class="identifier">name</span><span class="plain">) + 2;</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">pos</span><span class="plain"> &gt; 80) { </span><span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"\</span><span class="plain">n</span><span class="string">"</span><span class="plain">); </span><span class="identifier">pos</span><span class="plain"> = </span><span class="identifier">Str::len</span><span class="plain">(</span><span class="identifier">name</span><span class="plain">) + 2; }</span>
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"%S"</span><span class="plain">, </span><span class="identifier">name</span><span class="plain">);</span>
<span class="functiontext">CodeGen::mark</span><span class="plain">(</span><span class="identifier">R2</span><span class="plain">-&gt;</span><span class="identifier">package_name</span><span class="plain">);</span>
<span class="identifier">first</span><span class="plain"> = </span><span class="identifier">FALSE</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">pos</span><span class="plain"> &gt; 0) </span><span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"\</span><span class="plain">n</span><span class="string">"</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="reserved">for</span><span class="plain"> (</span><span class="identifier">inter_package</span><span class="plain"> *</span><span class="identifier">R</span><span class="plain"> = </span><span class="identifier">SM</span><span class="plain">-&gt;</span><span class="identifier">child_package</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">R</span><span class="plain">-&gt;</span><span class="identifier">next_package</span><span class="plain">)</span>
<span class="functiontext">CodeGen::unmark</span><span class="plain">(</span><span class="identifier">R</span><span class="plain">-&gt;</span><span class="identifier">package_name</span><span class="plain">);</span>
<span class="identifier">OUTDENT</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="plain">}</span>
<span class="identifier">OUTDENT</span><span class="plain">;</span>
<span class="plain">}</span>

View file

@ -2723,11 +2723,11 @@ then the result.
<p class="endnote">The function CodeGen::pnum is used in 3/iap (<a href="3-iap.html#SP4_8_4_1">&#167;4.8.4.1</a>).</p>
<p class="endnote">The function CodeGen::marked is used in 3/iap (<a href="3-iap.html#SP4_8_4">&#167;4.8.4</a>).</p>
<p class="endnote">The function CodeGen::marked is used in 2/inv (<a href="2-inv.html#SP1">&#167;1</a>), 3/iap (<a href="3-iap.html#SP4_8_4">&#167;4.8.4</a>).</p>
<p class="endnote">The function CodeGen::mark is used in 3/iap (<a href="3-iap.html#SP4_8_4">&#167;4.8.4</a>).</p>
<p class="endnote">The function CodeGen::mark is used in 2/inv (<a href="2-inv.html#SP1">&#167;1</a>), 3/iap (<a href="3-iap.html#SP4_8_4">&#167;4.8.4</a>).</p>
<p class="endnote">The function CodeGen::unmark is used in 3/iap (<a href="3-iap.html#SP4_8">&#167;4.8</a>).</p>
<p class="endnote">The function CodeGen::unmark is used in 2/inv (<a href="2-inv.html#SP1">&#167;1</a>), 3/iap (<a href="3-iap.html#SP4_8">&#167;4.8</a>).</p>
<p class="inwebparagraph"><a id="SP7"></a><b>&#167;7. </b></p>

View file

@ -978,6 +978,7 @@ we find it, we compile it and return <code class="display"><span class="extract"
<span class="reserved">return</span><span class="plain"> </span><span class="functiontext">Properties::iname</span><span class="plain">(</span><span class="functiontext">Properties::EitherOr::get_negation</span><span class="plain">(</span><span class="identifier">prn</span><span class="plain">));</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">prn</span><span class="plain">-</span><span class="element">&gt;prop_iname</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) {</span>
<span class="identifier">prn</span><span class="plain">-</span><span class="element">&gt;prop_package</span><span class="plain"> = </span><span class="functiontext">Hierarchy::package</span><span class="plain">(</span><span class="identifier">prn</span><span class="plain">-</span><span class="element">&gt;owning_module</span><span class="plain">, </span><span class="constant">PROPERTIES_HAP</span><span class="plain">);</span>
<span class="functiontext">Hierarchy::markup_wording</span><span class="plain">(</span><span class="identifier">prn</span><span class="plain">-</span><span class="element">&gt;prop_package</span><span class="plain">, </span><span class="constant">PROPERTY_NAME_HMD</span><span class="plain">, </span><span class="identifier">prn</span><span class="plain">-</span><span class="element">&gt;name</span><span class="plain">);</span>
<span class="identifier">prn</span><span class="plain">-</span><span class="element">&gt;prop_iname</span><span class="plain"> = </span><span class="functiontext">Hierarchy::make_iname_with_memo</span><span class="plain">(</span><span class="constant">PROPERTY_HL</span><span class="plain">, </span><span class="identifier">prn</span><span class="plain">-</span><span class="element">&gt;prop_package</span><span class="plain">, </span><span class="identifier">prn</span><span class="plain">-</span><span class="element">&gt;name</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">prn</span><span class="plain">-</span><span class="element">&gt;prop_iname</span><span class="plain">;</span>

View file

@ -97,6 +97,7 @@ to the end user.
<span class="identifier">wording</span><span class="plain"> </span><span class="identifier">W</span><span class="plain"> = </span><span class="identifier">Feeds::feed_stream</span><span class="plain">(</span><span class="identifier">I6_form</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">K</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"new nameless property without kind"</span><span class="plain">);</span>
<span class="reserved">package_request</span><span class="plain"> *</span><span class="identifier">R</span><span class="plain"> = </span><span class="functiontext">Hierarchy::package</span><span class="plain">(</span><span class="functiontext">Modules::find</span><span class="plain">(</span><span class="identifier">current_sentence</span><span class="plain">), </span><span class="constant">PROPERTIES_HAP</span><span class="plain">);</span>
<span class="functiontext">Hierarchy::markup</span><span class="plain">(</span><span class="identifier">R</span><span class="plain">, </span><span class="constant">PROPERTY_NAME_HMD</span><span class="plain">, </span><span class="identifier">I6_form</span><span class="plain">);</span>
<span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">using_iname</span><span class="plain"> = </span><span class="functiontext">Hierarchy::make_iname_with_memo</span><span class="plain">(</span><span class="constant">PROPERTY_HL</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">property</span><span class="plain"> *</span><span class="identifier">prn</span><span class="plain"> = </span><span class="functiontext">Properties::create</span><span class="plain">(</span><span class="identifier">EMPTY_WORDING</span><span class="plain">, </span><span class="identifier">R</span><span class="plain">, </span><span class="identifier">using_iname</span><span class="plain">);</span>
<span class="functiontext">Properties::exclude_from_index</span><span class="plain">(</span><span class="identifier">prn</span><span class="plain">);</span>

View file

@ -349,6 +349,7 @@ can be used in a void context as a sort of return-from-rule phrase.
<span class="plain">}</span>
<span class="reserved">package_request</span><span class="plain"> *</span><span class="identifier">R</span><span class="plain"> = </span><span class="functiontext">Hierarchy::local_package</span><span class="plain">(</span><span class="constant">OUTCOMES_HAP</span><span class="plain">);</span>
<span class="functiontext">Hierarchy::markup_wording</span><span class="plain">(</span><span class="identifier">R</span><span class="plain">, </span><span class="constant">OUTCOME_NAME_HMD</span><span class="plain">, </span><span class="identifier">W</span><span class="plain">);</span>
<span class="reserved">named_rulebook_outcome</span><span class="plain"> *</span><span class="identifier">rbno</span><span class="plain"> = </span><span class="identifier">CREATE</span><span class="plain">(</span><span class="reserved">named_rulebook_outcome</span><span class="plain">);</span>
<span class="identifier">rbno</span><span class="plain">-</span><span class="element">&gt;name</span><span class="plain"> = </span><span class="identifier">Nouns::new_proper_noun</span><span class="plain">(</span><span class="identifier">W</span><span class="plain">, </span><span class="identifier">NEUTER_GENDER</span><span class="plain">,</span>

View file

@ -176,6 +176,8 @@ later: see below.
<span class="identifier">R</span><span class="plain">-</span><span class="element">&gt;explicitly_named</span><span class="plain"> = </span><span class="identifier">named</span><span class="plain">;</span>
<span class="identifier">R</span><span class="plain">-</span><span class="element">&gt;shell_routine_iname</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">R</span><span class="plain">-</span><span class="element">&gt;rule_package</span><span class="plain"> = </span><span class="functiontext">Hierarchy::local_package</span><span class="plain">(</span><span class="constant">RULES_HAP</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Wordings::nonempty</span><span class="plain">(</span><span class="identifier">W</span><span class="plain">))</span>
<span class="functiontext">Hierarchy::markup_wording</span><span class="plain">(</span><span class="identifier">R</span><span class="plain">-</span><span class="element">&gt;rule_package</span><span class="plain">, </span><span class="constant">RULE_NAME_HMD</span><span class="plain">, </span><span class="identifier">W</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">l</span><span class="plain">=0; </span><span class="identifier">l</span><span class="plain">&lt;26; </span><span class="identifier">l</span><span class="plain">++) {</span>
<span class="identifier">R</span><span class="plain">-</span><span class="element">&gt;lettered_responses</span><span class="plain">[</span><span class="identifier">l</span><span class="plain">] = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">R</span><span class="plain">-</span><span class="element">&gt;lettered_responses_used</span><span class="plain">[</span><span class="identifier">l</span><span class="plain">] = </span><span class="identifier">NULL</span><span class="plain">;</span>

View file

@ -284,6 +284,8 @@ built (for instance, scene endings).
<pre class="display">
<span class="reserved">rulebook</span><span class="plain"> *</span><span class="functiontext">Rulebooks::new</span><span class="plain">(</span><span class="identifier">kind</span><span class="plain"> *</span><span class="identifier">create_as</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">package_request</span><span class="plain"> *</span><span class="identifier">R</span><span class="plain">) {</span>
<span class="functiontext">Hierarchy::markup_wording</span><span class="plain">(</span><span class="identifier">R</span><span class="plain">, </span><span class="constant">RULEBOOK_NAME_HMD</span><span class="plain">, </span><span class="identifier">W</span><span class="plain">);</span>
<span class="reserved">rulebook</span><span class="plain"> *</span><span class="identifier">rb</span><span class="plain"> = </span><span class="identifier">CREATE</span><span class="plain">(</span><span class="reserved">rulebook</span><span class="plain">);</span>
<span class="plain">&lt;</span><span class="identifier">new</span><span class="plain">-</span><span class="reserved">rulebook</span><span class="plain">-</span><span class="identifier">name</span><span class="plain">&gt;(</span><span class="identifier">W</span><span class="plain">);</span>

View file

@ -115,6 +115,8 @@ connect this existing one to the phrase.
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Wordings::nonempty</span><span class="plain">(</span><span class="identifier">W</span><span class="plain">)) </span><span class="identifier">R</span><span class="plain"> = </span><span class="functiontext">Rules::by_name</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">R</span><span class="plain">) </span>&lt;<span class="cwebmacro">Check that this isn't duplicating the name of a rule already made</span> <span class="cwebmacronumber">6.2</span>&gt;
<span class="reserved">else</span><span class="plain"> </span><span class="identifier">R</span><span class="plain"> = </span><span class="functiontext">Rules::new</span><span class="plain">(</span><span class="identifier">W</span><span class="plain">, </span><span class="identifier">explicitly</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">Hierarchy::markup_wording</span><span class="plain">(</span><span class="identifier">R</span><span class="plain">-</span><span class="element">&gt;rule_package</span><span class="plain">, </span><span class="constant">RULE_NAME_HMD</span><span class="plain">, </span><span class="identifier">ParseTree::get_text</span><span class="plain">(</span><span class="identifier">ph</span><span class="plain">-</span><span class="element">&gt;declaration_node</span><span class="plain">));</span>
<span class="functiontext">Rules::set_I7_definition</span><span class="plain">(</span><span class="identifier">R</span><span class="plain">, </span><span class="identifier">ph</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">Rules::package</span><span class="plain">(</span><span class="identifier">R</span><span class="plain">);</span>

View file

@ -518,7 +518,7 @@ following fields set.
<p class="endnote">The function HierarchyLocations::index_md appears nowhere else.</p>
<p class="endnote">The function HierarchyLocations::metadata is used in 27/hr (<a href="27-hr.html#SP1_4">&#167;1.4</a>, <a href="27-hr.html#SP1_6">&#167;1.6</a>, <a href="27-hr.html#SP1_8">&#167;1.8</a>, <a href="27-hr.html#SP1_26">&#167;1.26</a>, <a href="27-hr.html#SP1_44">&#167;1.44</a>, <a href="27-hr.html#SP1_46">&#167;1.46</a>).</p>
<p class="endnote">The function HierarchyLocations::metadata is used in 27/hr (<a href="27-hr.html#SP1_4">&#167;1.4</a>, <a href="27-hr.html#SP1_6">&#167;1.6</a>, <a href="27-hr.html#SP1_8">&#167;1.8</a>, <a href="27-hr.html#SP1_16">&#167;1.16</a>, <a href="27-hr.html#SP1_26">&#167;1.26</a>, <a href="27-hr.html#SP1_30">&#167;1.30</a>, <a href="27-hr.html#SP1_36">&#167;1.36</a>, <a href="27-hr.html#SP1_40">&#167;1.40</a>, <a href="27-hr.html#SP1_42">&#167;1.42</a>, <a href="27-hr.html#SP1_44">&#167;1.44</a>, <a href="27-hr.html#SP1_46">&#167;1.46</a>).</p>
<p class="endnote">The function HierarchyLocations::markup is used in 27/hr (<a href="27-hr.html#SP5">&#167;5</a>).</p>

View file

@ -393,8 +393,10 @@
<span class="definitionkeyword">enum</span> <span class="constant">CV_NEG_HL</span>
<span class="definitionkeyword">enum</span> <span class="constant">CV_POS_HL</span>
<span class="definitionkeyword">enum</span> <span class="constant">MVERBS_HAP</span>
<span class="definitionkeyword">enum</span> <span class="constant">MVERB_NAME_HMD</span>
<span class="definitionkeyword">enum</span> <span class="constant">MODAL_CONJUGATION_FN_HL</span>
<span class="definitionkeyword">enum</span> <span class="constant">VERBS_HAP</span>
<span class="definitionkeyword">enum</span> <span class="constant">VERB_NAME_HMD</span>
<span class="definitionkeyword">enum</span> <span class="constant">NONMODAL_CONJUGATION_FN_HL</span>
<span class="definitionkeyword">enum</span> <span class="constant">VERB_FORMS_HAP</span>
<span class="definitionkeyword">enum</span> <span class="constant">FORM_FN_HL</span>
@ -417,9 +419,11 @@
<span class="reserved">location_requirement</span><span class="plain"> </span><span class="identifier">local_conjugations</span><span class="plain"> = </span><span class="functiontext">HierarchyLocations::local_submodule</span><span class="plain">(</span><span class="identifier">conjugations</span><span class="plain">);</span>
<span class="functiontext">HierarchyLocations::ap</span><span class="plain">(</span><span class="constant">MVERBS_HAP</span><span class="plain">, </span><span class="identifier">local_conjugations</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"mverb"</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"_modal_verb"</span><span class="plain">);</span>
<span class="reserved">location_requirement</span><span class="plain"> </span><span class="identifier">in_modal_verb</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">"_modal_verb"</span><span class="plain">);</span>
<span class="functiontext">HierarchyLocations::metadata</span><span class="plain">(</span><span class="constant">MVERB_NAME_HMD</span><span class="plain">, </span><span class="identifier">in_modal_verb</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"`name"</span><span class="plain">);</span>
<span class="functiontext">HierarchyLocations::func</span><span class="plain">(</span><span class="constant">MODAL_CONJUGATION_FN_HL</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"conjugation_fn"</span><span class="plain">, </span><span class="functiontext">Translation::generate</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"ConjugateModalVerb"</span><span class="plain">), </span><span class="identifier">in_modal_verb</span><span class="plain">);</span>
<span class="functiontext">HierarchyLocations::ap</span><span class="plain">(</span><span class="constant">VERBS_HAP</span><span class="plain">, </span><span class="identifier">local_conjugations</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"verb"</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"_verb"</span><span class="plain">);</span>
<span class="reserved">location_requirement</span><span class="plain"> </span><span class="identifier">in_verb</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">"_verb"</span><span class="plain">);</span>
<span class="functiontext">HierarchyLocations::metadata</span><span class="plain">(</span><span class="constant">VERB_NAME_HMD</span><span class="plain">, </span><span class="identifier">in_verb</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"`name"</span><span class="plain">);</span>
<span class="functiontext">HierarchyLocations::func</span><span class="plain">(</span><span class="constant">NONMODAL_CONJUGATION_FN_HL</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"conjugation_fn"</span><span class="plain">, </span><span class="functiontext">Translation::generate</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"ConjugateVerb"</span><span class="plain">), </span><span class="identifier">in_verb</span><span class="plain">);</span>
<span class="functiontext">HierarchyLocations::ap</span><span class="plain">(</span><span class="constant">VERB_FORMS_HAP</span><span class="plain">, </span><span class="identifier">in_verb</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"form"</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"_verb_form"</span><span class="plain">);</span>
<span class="reserved">location_requirement</span><span class="plain"> </span><span class="identifier">in_verb_form</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">"_verb_form"</span><span class="plain">);</span>
@ -729,6 +733,7 @@
<span class="definitionkeyword">enum</span> <span class="constant">K_TYPELESS_INT_HL</span>
<span class="definitionkeyword">enum</span> <span class="constant">K_TYPELESS_STRING_HL</span>
<span class="definitionkeyword">enum</span> <span class="constant">KIND_HAP</span>
<span class="definitionkeyword">enum</span> <span class="constant">KIND_NAME_HMD</span>
<span class="definitionkeyword">enum</span> <span class="constant">KIND_CLASS_HL</span>
<span class="definitionkeyword">enum</span> <span class="constant">KIND_HL</span>
<span class="definitionkeyword">enum</span> <span class="constant">WEAK_ID_HL</span>
@ -786,6 +791,7 @@
<span class="reserved">location_requirement</span><span class="plain"> </span><span class="identifier">local_kinds</span><span class="plain"> = </span><span class="functiontext">HierarchyLocations::local_submodule</span><span class="plain">(</span><span class="identifier">kinds</span><span class="plain">);</span>
<span class="functiontext">HierarchyLocations::ap</span><span class="plain">(</span><span class="constant">KIND_HAP</span><span class="plain">, </span><span class="identifier">local_kinds</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"kind"</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"_kind"</span><span class="plain">);</span>
<span class="reserved">location_requirement</span><span class="plain"> </span><span class="identifier">in_kind</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">"_kind"</span><span class="plain">);</span>
<span class="functiontext">HierarchyLocations::metadata</span><span class="plain">(</span><span class="constant">KIND_NAME_HMD</span><span class="plain">, </span><span class="identifier">in_kind</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"`name"</span><span class="plain">);</span>
<span class="functiontext">HierarchyLocations::con</span><span class="plain">(</span><span class="constant">KIND_CLASS_HL</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">, </span><span class="functiontext">Translation::generate</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"K"</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">KIND_HL</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">, </span><span class="functiontext">Translation::generate</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"KD"</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">WEAK_ID_HL</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">, </span><span class="functiontext">Translation::imposed</span><span class="plain">(), </span><span class="identifier">in_kind</span><span class="plain">);</span>
@ -905,6 +911,7 @@
<pre class="definitions">
<span class="definitionkeyword">enum</span> <span class="constant">PROPERTIES_HAP</span>
<span class="definitionkeyword">enum</span> <span class="constant">PROPERTY_NAME_HMD</span>
<span class="definitionkeyword">enum</span> <span class="constant">PROPERTY_HL</span>
<span class="definitionkeyword">enum</span> <span class="constant">EITHER_OR_GPR_FN_HL</span>
<span class="definitionkeyword">enum</span> <span class="constant">CCOUNT_PROPERTY_HL</span>
@ -920,6 +927,7 @@
<span class="reserved">location_requirement</span><span class="plain"> </span><span class="identifier">local_properties</span><span class="plain"> = </span><span class="functiontext">HierarchyLocations::local_submodule</span><span class="plain">(</span><span class="identifier">properties</span><span class="plain">);</span>
<span class="functiontext">HierarchyLocations::ap</span><span class="plain">(</span><span class="constant">PROPERTIES_HAP</span><span class="plain">, </span><span class="identifier">local_properties</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"property"</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"_property"</span><span class="plain">);</span>
<span class="reserved">location_requirement</span><span class="plain"> </span><span class="identifier">in_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">"_property"</span><span class="plain">);</span>
<span class="functiontext">HierarchyLocations::metadata</span><span class="plain">(</span><span class="constant">PROPERTY_NAME_HMD</span><span class="plain">, </span><span class="identifier">in_property</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"`name"</span><span class="plain">);</span>
<span class="functiontext">HierarchyLocations::con</span><span class="plain">(</span><span class="constant">PROPERTY_HL</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"P"</span><span class="plain">, </span><span class="functiontext">Translation::same</span><span class="plain">(), </span><span class="identifier">in_property</span><span class="plain">);</span>
<span class="functiontext">HierarchyLocations::func</span><span class="plain">(</span><span class="constant">EITHER_OR_GPR_FN_HL</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"either_or_GPR_fn"</span><span class="plain">, </span><span class="functiontext">Translation::generate</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"PRN_PN"</span><span class="plain">), </span><span class="identifier">in_property</span><span class="plain">);</span>
@ -1030,8 +1038,10 @@
<pre class="definitions">
<span class="definitionkeyword">enum</span> <span class="constant">EMPTY_RULEBOOK_INAME_HL</span>
<span class="definitionkeyword">enum</span> <span class="constant">OUTCOMES_HAP</span>
<span class="definitionkeyword">enum</span> <span class="constant">OUTCOME_NAME_HMD</span>
<span class="definitionkeyword">enum</span> <span class="constant">OUTCOME_HL</span>
<span class="definitionkeyword">enum</span> <span class="constant">RULEBOOKS_HAP</span>
<span class="definitionkeyword">enum</span> <span class="constant">RULEBOOK_NAME_HMD</span>
<span class="definitionkeyword">enum</span> <span class="constant">RUN_FN_HL</span>
<span class="definitionkeyword">enum</span> <span class="constant">RULEBOOK_STV_CREATOR_FN_HL</span>
<span class="definitionkeyword">enum</span> <span class="constant">NUMBER_RULEBOOKS_CREATED_HL</span>
@ -1054,9 +1064,11 @@
<span class="reserved">location_requirement</span><span class="plain"> </span><span class="identifier">local_rulebooks</span><span class="plain"> = </span><span class="functiontext">HierarchyLocations::local_submodule</span><span class="plain">(</span><span class="identifier">rulebooks</span><span class="plain">);</span>
<span class="functiontext">HierarchyLocations::ap</span><span class="plain">(</span><span class="constant">OUTCOMES_HAP</span><span class="plain">, </span><span class="identifier">local_rulebooks</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"rulebook_outcome"</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"_outcome"</span><span class="plain">);</span>
<span class="reserved">location_requirement</span><span class="plain"> </span><span class="identifier">in_outcome</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">"_outcome"</span><span class="plain">);</span>
<span class="functiontext">HierarchyLocations::metadata</span><span class="plain">(</span><span class="constant">OUTCOME_NAME_HMD</span><span class="plain">, </span><span class="identifier">in_outcome</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"`name"</span><span class="plain">);</span>
<span class="functiontext">HierarchyLocations::con</span><span class="plain">(</span><span class="constant">OUTCOME_HL</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"outcome"</span><span class="plain">, </span><span class="functiontext">Translation::uniqued</span><span class="plain">(), </span><span class="identifier">in_outcome</span><span class="plain">);</span>
<span class="functiontext">HierarchyLocations::ap</span><span class="plain">(</span><span class="constant">RULEBOOKS_HAP</span><span class="plain">, </span><span class="identifier">local_rulebooks</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"rulebook"</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"_rulebook"</span><span class="plain">);</span>
<span class="reserved">location_requirement</span><span class="plain"> </span><span class="identifier">in_rulebook</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">"_rulebook"</span><span class="plain">);</span>
<span class="functiontext">HierarchyLocations::metadata</span><span class="plain">(</span><span class="constant">RULEBOOK_NAME_HMD</span><span class="plain">, </span><span class="identifier">in_rulebook</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"`name"</span><span class="plain">);</span>
<span class="functiontext">HierarchyLocations::func</span><span class="plain">(</span><span class="constant">RUN_FN_HL</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"run_fn"</span><span class="plain">, </span><span class="functiontext">Translation::uniqued</span><span class="plain">(), </span><span class="identifier">in_rulebook</span><span class="plain">);</span>
<span class="functiontext">HierarchyLocations::func</span><span class="plain">(</span><span class="constant">RULEBOOK_STV_CREATOR_FN_HL</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"stv_creator_fn"</span><span class="plain">, </span><span class="functiontext">Translation::uniqued</span><span class="plain">(), </span><span class="identifier">in_rulebook</span><span class="plain">);</span>
@ -1077,6 +1089,7 @@
<pre class="definitions">
<span class="definitionkeyword">enum</span> <span class="constant">RULES_HAP</span>
<span class="definitionkeyword">enum</span> <span class="constant">RULE_NAME_HMD</span>
<span class="definitionkeyword">enum</span> <span class="constant">SHELL_FN_HL</span>
<span class="definitionkeyword">enum</span> <span class="constant">RULE_FN_HL</span>
<span class="definitionkeyword">enum</span> <span class="constant">EXTERIOR_RULE_HL</span>
@ -1099,6 +1112,7 @@
<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::metadata</span><span class="plain">(</span><span class="constant">RULE_NAME_HMD</span><span class="plain">, </span><span class="identifier">in_rule</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"`name"</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>
@ -2006,6 +2020,13 @@
<span class="functiontext">Hierarchy::markup</span><span class="plain">(</span><span class="identifier">R</span><span class="plain">, </span><span class="identifier">hm_id</span><span class="plain">, </span><span class="identifier">ANT</span><span class="plain">);</span>
<span class="identifier">DISCARD_TEXT</span><span class="plain">(</span><span class="identifier">ANT</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Hierarchy::markup_wa</span><span class="plain">(</span><span class="reserved">package_request</span><span class="plain"> *</span><span class="identifier">R</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">hm_id</span><span class="plain">, </span><span class="identifier">word_assemblage</span><span class="plain"> </span><span class="identifier">WA</span><span class="plain">) {</span>
<span class="identifier">TEMPORARY_TEXT</span><span class="plain">(</span><span class="identifier">ANT</span><span class="plain">);</span>
<span class="identifier">WRITE_TO</span><span class="plain">(</span><span class="identifier">ANT</span><span class="plain">, </span><span class="string">"%A"</span><span class="plain">, </span><span class="identifier">WA</span><span class="plain">);</span>
<span class="functiontext">Hierarchy::markup</span><span class="plain">(</span><span class="identifier">R</span><span class="plain">, </span><span class="identifier">hm_id</span><span class="plain">, </span><span class="identifier">ANT</span><span class="plain">);</span>
<span class="identifier">DISCARD_TEXT</span><span class="plain">(</span><span class="identifier">ANT</span><span class="plain">);</span>
<span class="plain">}</span>
</pre>
<p class="inwebparagraph"></p>
@ -2050,9 +2071,11 @@
<p class="endnote">The function Hierarchy::make_package_in is used in 21/ac (<a href="21-ac.html#SP6">&#167;6</a>).</p>
<p class="endnote">The function Hierarchy::markup is used in 27/cm (<a href="27-cm.html#SP2">&#167;2</a>).</p>
<p class="endnote">The function Hierarchy::markup is used in 15/vp (<a href="15-vp.html#SP3">&#167;3</a>), 27/cm (<a href="27-cm.html#SP2">&#167;2</a>).</p>
<p class="endnote">The function Hierarchy::markup_wording is used in 5/ins (<a href="5-ins.html#SP14">&#167;14</a>), 5/nv (<a href="5-nv.html#SP16">&#167;16</a>), 19/tb (<a href="19-tb.html#SP20">&#167;20</a>), 21/ac (<a href="21-ac.html#SP6">&#167;6</a>).</p>
<p class="endnote">The function Hierarchy::markup_wording is used in 5/ins (<a href="5-ins.html#SP14">&#167;14</a>), 5/nv (<a href="5-nv.html#SP16">&#167;16</a>), 15/pr (<a href="15-pr.html#SP27">&#167;27</a>), 19/tb (<a href="19-tb.html#SP20">&#167;20</a>), 21/rl (<a href="21-rl.html#SP5">&#167;5</a>), 21/rl2 (<a href="21-rl2.html#SP10">&#167;10</a>), 21/fao (<a href="21-fao.html#SP10">&#167;10</a>), 21/ac (<a href="21-ac.html#SP6">&#167;6</a>), 22/pu (<a href="22-pu.html#SP6">&#167;6</a>).</p>
<p class="endnote">The function Hierarchy::markup_wa appears nowhere else.</p>
<hr class="tocbar">
<ul class="toc"><li><i>(This section begins Chapter 27: Bridge to Inter Module.)</i></li><li><a href="27-hl.html">Continue with 'Hierarchy Locations'</a></li></ul><hr class="tocbar">

View file

@ -1179,7 +1179,9 @@ them by asserting propositions to be true; we act directly.
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">governor</span><span class="plain">)</span>
<span class="identifier">ParseTree::set_evaluation</span><span class="plain">(</span><span class="identifier">governor</span><span class="plain">,</span>
<span class="functiontext">Specifications::from_kind</span><span class="plain">(</span><span class="identifier">create_as</span><span class="plain">));</span>
<span class="reserved">rulebook</span><span class="plain"> *</span><span class="identifier">rb</span><span class="plain"> = </span><span class="functiontext">Rulebooks::new</span><span class="plain">(</span><span class="identifier">create_as</span><span class="plain">, </span><span class="identifier">W</span><span class="plain">, </span><span class="functiontext">Hierarchy::local_package</span><span class="plain">(</span><span class="constant">RULEBOOKS_HAP</span><span class="plain">));</span>
<span class="reserved">package_request</span><span class="plain"> *</span><span class="identifier">P</span><span class="plain"> = </span><span class="functiontext">Hierarchy::local_package</span><span class="plain">(</span><span class="constant">RULEBOOKS_HAP</span><span class="plain">);</span>
<span class="reserved">rulebook</span><span class="plain"> *</span><span class="identifier">rb</span><span class="plain"> = </span><span class="functiontext">Rulebooks::new</span><span class="plain">(</span><span class="identifier">create_as</span><span class="plain">, </span><span class="identifier">W</span><span class="plain">, </span><span class="identifier">P</span><span class="plain">);</span>
<span class="identifier">val</span><span class="plain"> = </span><span class="functiontext">Rvalues::from_rulebook</span><span class="plain">(</span><span class="identifier">rb</span><span class="plain">);</span>
<span class="identifier">ParseTree::annotate_int</span><span class="plain">(</span><span class="identifier">current_sentence</span><span class="plain">, </span><span class="constant">clears_pronouns_ANNOT</span><span class="plain">, </span><span class="identifier">TRUE</span><span class="plain">);</span>
</pre>

View file

@ -324,9 +324,17 @@ and negative senses.
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">vc</span><span class="plain">-</span><span class="element">&gt;vc_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">vc</span><span class="plain">-</span><span class="element">&gt;vc_conjugates</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) {</span>
<span class="identifier">package_request</span><span class="plain"> *</span><span class="identifier">R</span><span class="plain"> = </span><span class="identifier">Hierarchy::package</span><span class="plain">(</span><span class="identifier">Modules::find</span><span class="plain">(</span><span class="identifier">vc</span><span class="plain">-</span><span class="element">&gt;where_vc_created</span><span class="plain">), </span><span class="identifier">MVERBS_HAP</span><span class="plain">);</span>
<span class="identifier">TEMPORARY_TEXT</span><span class="plain">(</span><span class="identifier">ANT</span><span class="plain">);</span>
<span class="identifier">WRITE_TO</span><span class="plain">(</span><span class="identifier">ANT</span><span class="plain">, </span><span class="string">"%A (modal)"</span><span class="plain">, </span><span class="identifier">vc</span><span class="plain">-</span><span class="element">&gt;tabulations</span><span class="plain">[</span><span class="constant">ACTIVE_MOOD</span><span class="plain">]</span><span class="element">.vc_text</span><span class="plain">[0][0][2]);</span>
<span class="identifier">Hierarchy::markup</span><span class="plain">(</span><span class="identifier">R</span><span class="plain">, </span><span class="identifier">MVERB_NAME_HMD</span><span class="plain">, </span><span class="identifier">ANT</span><span class="plain">);</span>
<span class="identifier">DISCARD_TEXT</span><span class="plain">(</span><span class="identifier">ANT</span><span class="plain">);</span>
<span class="identifier">vc</span><span class="plain">-</span><span class="element">&gt;vc_iname</span><span class="plain"> = </span><span class="identifier">Hierarchy::make_iname_in</span><span class="plain">(</span><span class="identifier">MODAL_CONJUGATION_FN_HL</span><span class="plain">, </span><span class="identifier">R</span><span class="plain">);</span>
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> {</span>
<span class="identifier">package_request</span><span class="plain"> *</span><span class="identifier">R</span><span class="plain"> = </span><span class="identifier">Verbs::verb_package</span><span class="plain">(</span><span class="identifier">vc</span><span class="plain">-</span><span class="element">&gt;vc_conjugates</span><span class="plain">, </span><span class="identifier">vc</span><span class="plain">-</span><span class="element">&gt;where_vc_created</span><span class="plain">);</span>
<span class="identifier">TEMPORARY_TEXT</span><span class="plain">(</span><span class="identifier">ANT</span><span class="plain">);</span>
<span class="identifier">WRITE_TO</span><span class="plain">(</span><span class="identifier">ANT</span><span class="plain">, </span><span class="string">"to %A"</span><span class="plain">, </span><span class="identifier">vc</span><span class="plain">-</span><span class="element">&gt;infinitive</span><span class="plain">);</span>
<span class="identifier">Hierarchy::markup</span><span class="plain">(</span><span class="identifier">R</span><span class="plain">, </span><span class="identifier">VERB_NAME_HMD</span><span class="plain">, </span><span class="identifier">ANT</span><span class="plain">);</span>
<span class="identifier">DISCARD_TEXT</span><span class="plain">(</span><span class="identifier">ANT</span><span class="plain">);</span>
<span class="identifier">vc</span><span class="plain">-</span><span class="element">&gt;vc_iname</span><span class="plain"> = </span><span class="identifier">Hierarchy::make_iname_in</span><span class="plain">(</span><span class="identifier">NONMODAL_CONJUGATION_FN_HL</span><span class="plain">, </span><span class="identifier">R</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="plain">}</span>

View file

@ -445,7 +445,7 @@ of the constructor:
<p class="endnote">The function Kinds::Constructors::attach_noun is used in 2/knd (<a href="2-knd.html#SP33_2">&#167;33.2</a>).</p>
<p class="endnote">The function Kinds::Constructors::get_name is used in 2/ki (<a href="2-ki.html#SP21">&#167;21</a>), 2/uk (<a href="2-uk.html#SP1">&#167;1</a>), 2/dk (<a href="2-dk.html#SP14">&#167;14</a>).</p>
<p class="endnote">The function Kinds::Constructors::get_name is used in <a href="#SP9">&#167;9</a>, 2/ki (<a href="2-ki.html#SP21">&#167;21</a>), 2/uk (<a href="2-uk.html#SP1">&#167;1</a>), 2/dk (<a href="2-dk.html#SP14">&#167;14</a>).</p>
<p class="endnote">The function Kinds::Constructors::get_name_in_play is used in 2/uk (<a href="2-uk.html#SP1">&#167;1</a>).</p>
@ -483,7 +483,16 @@ of the kind which the constructor makes:
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">UNKNOWN_TY_iname</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="identifier">package_request</span><span class="plain"> *</span><span class="functiontext">Kinds::Constructors::package</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">if</span><span class="plain"> (</span><span class="identifier">con</span><span class="plain">-</span><span class="element">&gt;kc_package</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">&gt;kc_package</span><span class="plain"> = </span><span class="identifier">Hierarchy::local_package</span><span class="plain">(</span><span class="identifier">KIND_HAP</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">con</span><span class="plain">-</span><span class="element">&gt;kc_package</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">&gt;kc_package</span><span class="plain"> = </span><span class="identifier">Hierarchy::local_package</span><span class="plain">(</span><span class="identifier">KIND_HAP</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="functiontext">Kinds::Constructors::get_name</span><span class="plain">(</span><span class="identifier">con</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">Wordings::nonempty</span><span class="plain">(</span><span class="identifier">W</span><span class="plain">))</span>
<span class="identifier">Hierarchy::markup_wording</span><span class="plain">(</span><span class="identifier">con</span><span class="plain">-</span><span class="element">&gt;kc_package</span><span class="plain">, </span><span class="identifier">KIND_NAME_HMD</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">con</span><span class="plain">-</span><span class="element">&gt;name_in_template_code</span><span class="plain">) &gt; 0)</span>
<span class="identifier">Hierarchy::markup</span><span class="plain">(</span><span class="identifier">con</span><span class="plain">-</span><span class="element">&gt;kc_package</span><span class="plain">, </span><span class="identifier">KIND_NAME_HMD</span><span class="plain">, </span><span class="identifier">con</span><span class="plain">-</span><span class="element">&gt;name_in_template_code</span><span class="plain">);</span>
<span class="reserved">else</span>
<span class="identifier">Hierarchy::markup</span><span class="plain">(</span><span class="identifier">con</span><span class="plain">-</span><span class="element">&gt;kc_package</span><span class="plain">, </span><span class="identifier">KIND_NAME_HMD</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"(anonymous kind)"</span><span class="plain">);</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">&gt;kc_package</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="identifier">inter_name</span><span class="plain"> *</span><span class="functiontext">Kinds::Constructors::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>

View file

@ -684,6 +684,7 @@ inter_name *Properties::iname(property *prn) {
return Properties::iname(Properties::EitherOr::get_negation(prn));
if (prn->prop_iname == NULL) {
prn->prop_package = Hierarchy::package(prn->owning_module, PROPERTIES_HAP);
Hierarchy::markup_wording(prn->prop_package, PROPERTY_NAME_HMD, prn->name);
prn->prop_iname = Hierarchy::make_iname_with_memo(PROPERTY_HL, prn->prop_package, prn->name);
}
return prn->prop_iname;

View file

@ -62,6 +62,7 @@ property *Properties::Valued::new_nameless(text_stream *I6_form, kind *K) {
wording W = Feeds::feed_stream(I6_form);
if (K == NULL) internal_error("new nameless property without kind");
package_request *R = Hierarchy::package(Modules::find(current_sentence), PROPERTIES_HAP);
Hierarchy::markup(R, PROPERTY_NAME_HMD, I6_form);
inter_name *using_iname = Hierarchy::make_iname_with_memo(PROPERTY_HL, R, W);
property *prn = Properties::create(EMPTY_WORDING, R, using_iname);
Properties::exclude_from_index(prn);

View file

@ -223,6 +223,7 @@ named_rulebook_outcome *Rulebooks::Outcomes::rbno_by_name(wording W) {
}
package_request *R = Hierarchy::local_package(OUTCOMES_HAP);
Hierarchy::markup_wording(R, OUTCOME_NAME_HMD, W);
named_rulebook_outcome *rbno = CREATE(named_rulebook_outcome);
rbno->name = Nouns::new_proper_noun(W, NEUTER_GENDER,

View file

@ -206,6 +206,8 @@ built (for instance, scene endings).
=
rulebook *Rulebooks::new(kind *create_as, wording W, package_request *R) {
Hierarchy::markup_wording(R, RULEBOOK_NAME_HMD, W);
rulebook *rb = CREATE(rulebook);
<new-rulebook-name>(W);

View file

@ -126,6 +126,8 @@ rule *Rules::new(wording W, int named) {
R->explicitly_named = named;
R->shell_routine_iname = NULL;
R->rule_package = Hierarchy::local_package(RULES_HAP);
if (Wordings::nonempty(W))
Hierarchy::markup_wording(R->rule_package, RULE_NAME_HMD, W);
for (int l=0; l<26; l++) {
R->lettered_responses[l] = NULL;
R->lettered_responses_used[l] = NULL;

View file

@ -76,6 +76,8 @@ rule *Phrases::Usage::to_rule(ph_usage_data *phud, phrase *ph) {
if (Wordings::nonempty(W)) R = Rules::by_name(W);
if (R) @<Check that this isn't duplicating the name of a rule already made@>
else R = Rules::new(W, explicitly);
if (Wordings::empty(W))
Hierarchy::markup_wording(R->rule_package, RULE_NAME_HMD, ParseTree::get_text(ph->declaration_node));
Rules::set_I7_definition(R, ph);
package_request *P = Rules::package(R);

View file

@ -296,8 +296,10 @@ void Hierarchy::establish(void) {
@e CV_POS_HL
@e MVERBS_HAP
@e MVERB_NAME_HMD
@e MODAL_CONJUGATION_FN_HL
@e VERBS_HAP
@e VERB_NAME_HMD
@e NONMODAL_CONJUGATION_FN_HL
@e VERB_FORMS_HAP
@e FORM_FN_HL
@ -315,9 +317,11 @@ void Hierarchy::establish(void) {
location_requirement local_conjugations = HierarchyLocations::local_submodule(conjugations);
HierarchyLocations::ap(MVERBS_HAP, local_conjugations, I"mverb", I"_modal_verb");
location_requirement in_modal_verb = HierarchyLocations::any_package_of_type(I"_modal_verb");
HierarchyLocations::metadata(MVERB_NAME_HMD, in_modal_verb, I"`name");
HierarchyLocations::func(MODAL_CONJUGATION_FN_HL, I"conjugation_fn", Translation::generate(I"ConjugateModalVerb"), in_modal_verb);
HierarchyLocations::ap(VERBS_HAP, local_conjugations, I"verb", I"_verb");
location_requirement in_verb = HierarchyLocations::any_package_of_type(I"_verb");
HierarchyLocations::metadata(VERB_NAME_HMD, in_verb, I"`name");
HierarchyLocations::func(NONMODAL_CONJUGATION_FN_HL, I"conjugation_fn", Translation::generate(I"ConjugateVerb"), in_verb);
HierarchyLocations::ap(VERB_FORMS_HAP, in_verb, I"form", I"_verb_form");
location_requirement in_verb_form = HierarchyLocations::any_package_of_type(I"_verb_form");
@ -550,6 +554,7 @@ void Hierarchy::establish(void) {
@e K_TYPELESS_STRING_HL
@e KIND_HAP
@e KIND_NAME_HMD
@e KIND_CLASS_HL
@e KIND_HL
@e WEAK_ID_HL
@ -603,6 +608,7 @@ void Hierarchy::establish(void) {
location_requirement local_kinds = HierarchyLocations::local_submodule(kinds);
HierarchyLocations::ap(KIND_HAP, local_kinds, I"kind", I"_kind");
location_requirement in_kind = HierarchyLocations::any_package_of_type(I"_kind");
HierarchyLocations::metadata(KIND_NAME_HMD, in_kind, I"`name");
HierarchyLocations::con(KIND_CLASS_HL, NULL, Translation::generate(I"K"), in_kind);
HierarchyLocations::con(KIND_HL, NULL, Translation::generate(I"KD"), in_kind);
HierarchyLocations::con(WEAK_ID_HL, NULL, Translation::imposed(), in_kind);
@ -691,6 +697,7 @@ void Hierarchy::establish(void) {
@h Properties.
@e PROPERTIES_HAP
@e PROPERTY_NAME_HMD
@e PROPERTY_HL
@e EITHER_OR_GPR_FN_HL
@ -702,6 +709,7 @@ void Hierarchy::establish(void) {
location_requirement local_properties = HierarchyLocations::local_submodule(properties);
HierarchyLocations::ap(PROPERTIES_HAP, local_properties, I"property", I"_property");
location_requirement in_property = HierarchyLocations::any_package_of_type(I"_property");
HierarchyLocations::metadata(PROPERTY_NAME_HMD, in_property, I"`name");
HierarchyLocations::con(PROPERTY_HL, I"P", Translation::same(), in_property);
HierarchyLocations::func(EITHER_OR_GPR_FN_HL, I"either_or_GPR_fn", Translation::generate(I"PRN_PN"), in_property);
@ -796,8 +804,10 @@ void Hierarchy::establish(void) {
@e EMPTY_RULEBOOK_INAME_HL
@e OUTCOMES_HAP
@e OUTCOME_NAME_HMD
@e OUTCOME_HL
@e RULEBOOKS_HAP
@e RULEBOOK_NAME_HMD
@e RUN_FN_HL
@e RULEBOOK_STV_CREATOR_FN_HL
@ -816,9 +826,11 @@ void Hierarchy::establish(void) {
location_requirement local_rulebooks = HierarchyLocations::local_submodule(rulebooks);
HierarchyLocations::ap(OUTCOMES_HAP, local_rulebooks, I"rulebook_outcome", I"_outcome");
location_requirement in_outcome = HierarchyLocations::any_package_of_type(I"_outcome");
HierarchyLocations::metadata(OUTCOME_NAME_HMD, in_outcome, I"`name");
HierarchyLocations::con(OUTCOME_HL, I"outcome", Translation::uniqued(), in_outcome);
HierarchyLocations::ap(RULEBOOKS_HAP, local_rulebooks, I"rulebook", I"_rulebook");
location_requirement in_rulebook = HierarchyLocations::any_package_of_type(I"_rulebook");
HierarchyLocations::metadata(RULEBOOK_NAME_HMD, in_rulebook, I"`name");
HierarchyLocations::func(RUN_FN_HL, I"run_fn", Translation::uniqued(), in_rulebook);
HierarchyLocations::func(RULEBOOK_STV_CREATOR_FN_HL, I"stv_creator_fn", Translation::uniqued(), in_rulebook);
@ -832,6 +844,7 @@ void Hierarchy::establish(void) {
@h Rules.
@e RULES_HAP
@e RULE_NAME_HMD
@e SHELL_FN_HL
@e RULE_FN_HL
@e EXTERIOR_RULE_HL
@ -850,6 +863,7 @@ void Hierarchy::establish(void) {
location_requirement local_rules = HierarchyLocations::local_submodule(rules);
HierarchyLocations::ap(RULES_HAP, local_rules, I"rule", I"_rule");
location_requirement in_rule = HierarchyLocations::any_package_of_type(I"_rule");
HierarchyLocations::metadata(RULE_NAME_HMD, in_rule, I"`name");
HierarchyLocations::func(SHELL_FN_HL, I"shell_fn", Translation::uniqued(), in_rule);
HierarchyLocations::func(RULE_FN_HL, I"rule_fn", Translation::uniqued(), in_rule);
HierarchyLocations::con(EXTERIOR_RULE_HL, I"exterior_rule", Translation::uniqued(), in_rule);
@ -1682,3 +1696,10 @@ void Hierarchy::markup_wording(package_request *R, int hm_id, wording W) {
Hierarchy::markup(R, hm_id, ANT);
DISCARD_TEXT(ANT);
}
void Hierarchy::markup_wa(package_request *R, int hm_id, word_assemblage WA) {
TEMPORARY_TEXT(ANT);
WRITE_TO(ANT, "%A", WA);
Hierarchy::markup(R, hm_id, ANT);
DISCARD_TEXT(ANT);
}

View file

@ -698,7 +698,9 @@ them by asserting propositions to be true; we act directly.
if (governor)
ParseTree::set_evaluation(governor,
Specifications::from_kind(create_as));
rulebook *rb = Rulebooks::new(create_as, W, Hierarchy::local_package(RULEBOOKS_HAP));
package_request *P = Hierarchy::local_package(RULEBOOKS_HAP);
rulebook *rb = Rulebooks::new(create_as, W, P);
val = Rvalues::from_rulebook(rb);
ParseTree::annotate_int(current_sentence, clears_pronouns_ANNOT, TRUE);

View file

@ -204,9 +204,17 @@ inter_name *Conjugation::conj_iname(verb_conjugation *vc) {
if (vc->vc_iname == NULL) {
if (vc->vc_conjugates == NULL) {
package_request *R = Hierarchy::package(Modules::find(vc->where_vc_created), MVERBS_HAP);
TEMPORARY_TEXT(ANT);
WRITE_TO(ANT, "%A (modal)", vc->tabulations[ACTIVE_MOOD].vc_text[0][0][2]);
Hierarchy::markup(R, MVERB_NAME_HMD, ANT);
DISCARD_TEXT(ANT);
vc->vc_iname = Hierarchy::make_iname_in(MODAL_CONJUGATION_FN_HL, R);
} else {
package_request *R = Verbs::verb_package(vc->vc_conjugates, vc->where_vc_created);
TEMPORARY_TEXT(ANT);
WRITE_TO(ANT, "to %A", vc->infinitive);
Hierarchy::markup(R, VERB_NAME_HMD, ANT);
DISCARD_TEXT(ANT);
vc->vc_iname = Hierarchy::make_iname_in(NONMODAL_CONJUGATION_FN_HL, R);
}
}

View file

@ -392,7 +392,16 @@ inter_name *Kinds::Constructors::UNKNOWN_iname(void) {
return UNKNOWN_TY_iname;
}
package_request *Kinds::Constructors::package(kind_constructor *con) {
if (con->kc_package == NULL) con->kc_package = Hierarchy::local_package(KIND_HAP);
if (con->kc_package == NULL) {
con->kc_package = Hierarchy::local_package(KIND_HAP);
wording W = Kinds::Constructors::get_name(con, FALSE);
if (Wordings::nonempty(W))
Hierarchy::markup_wording(con->kc_package, KIND_NAME_HMD, W);
else if (Str::len(con->name_in_template_code) > 0)
Hierarchy::markup(con->kc_package, KIND_NAME_HMD, con->name_in_template_code);
else
Hierarchy::markup(con->kc_package, KIND_NAME_HMD, I"(anonymous kind)");
}
return con->kc_package;
}
inter_name *Kinds::Constructors::iname(kind_constructor *con) {

View file

@ -17,19 +17,42 @@ void CodeGen::Inventory::print(OUTPUT_STREAM, inter_repository *I) {
if (Str::ne(M->package_name->symbol_name, I"template")) {
INDENT;
for (inter_package *SM = M->child_package; SM; SM = SM->next_package) {
WRITE("%S:\n", SM->package_name->symbol_name);
INDENT;
int pos = 0;
for (inter_package *R = SM->child_package; R; R = R->next_package) {
text_stream *name = CodeGen::Inventory::read_metadata(R, I"`name");
if (name == NULL) name = R->package_name->symbol_name;
if (pos > 0) WRITE(", ");
pos += Str::len(name) + 2;
if (pos > 80) { WRITE("\n"); pos = Str::len(name) + 2; }
WRITE("%S", name);
}
if (pos > 0) WRITE("\n");
OUTDENT;
if (SM->child_package) {
WRITE("%S:\n", SM->package_name->symbol_name);
INDENT;
for (inter_package *R = SM->child_package; R; R = R->next_package)
CodeGen::unmark(R->package_name);
for (inter_package *R = SM->child_package; R; R = R->next_package) {
if (CodeGen::marked(R->package_name)) continue;
inter_symbol *ptype = Inter::Packages::type(R);
OUTDENT;
WRITE(" %S ", ptype->symbol_name);
int N = 1;
for (inter_package *R2 = R->next_package; R2; R2 = R2->next_package)
if (Inter::Packages::type(R2) == ptype)
N++;
WRITE("x %d: ", N);
INDENT;
int pos = Str::len(ptype->symbol_name) + 7;
int first = TRUE;
for (inter_package *R2 = R; R2; R2 = R2->next_package) {
if (Inter::Packages::type(R2) == ptype) {
text_stream *name = CodeGen::Inventory::read_metadata(R2, I"`name");
if (name == NULL) name = R2->package_name->symbol_name;
if ((pos > 0) && (first == FALSE)) WRITE(", ");
pos += Str::len(name) + 2;
if (pos > 80) { WRITE("\n"); pos = Str::len(name) + 2; }
WRITE("%S", name);
CodeGen::mark(R2->package_name);
first = FALSE;
}
}
if (pos > 0) WRITE("\n");
}
for (inter_package *R = SM->child_package; R; R = R->next_package)
CodeGen::unmark(R->package_name);
OUTDENT;
}
}
OUTDENT;
}