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

Fix for Jira bug I7-2192

This commit is contained in:
Graham Nelson 2022-08-28 14:01:38 +01:00
parent 734d9cc784
commit 52baf6cfc1
11 changed files with 93 additions and 86 deletions

View file

@ -242,28 +242,17 @@ where it is to be written, of course: that would corrupt the sentinel.
</pre>
<p class="commentary firstcommentary"><a id="SP8" class="paragraph-anchor"></a><b>&#167;8. Rulebook Variables. </b>Each rulebook has a slate of variables, usually empty, with ID number the
same as the rulebook's own ID number. (Rulebook IDs number upwards from 0
in order of creation in the source text.) The associated creator functions,
usually null, are stored in an array if there is no problem about memory
usage, but with a switch statement if <span class="extract"><span class="extract-syntax">MEMORY_ECONOMY</span></span> is in force; this
costs a very small amount of time, but saves 1K of readable memory.
in order of creation in the source text.)
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax">[ </span><span class="identifier-syntax">MStack_CreateRBVars</span><span class="plain-syntax"> </span><span class="identifier-syntax">rb</span><span class="plain-syntax"> </span><span class="identifier-syntax">cr</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> #</span><span class="identifier-syntax">ifdef</span><span class="plain-syntax"> </span><span class="identifier-syntax">MEMORY_ECONOMY</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">cr</span><span class="plain-syntax"> = </span><span class="identifier-syntax">MStack_GetRBVarCreator</span><span class="plain-syntax">(</span><span class="identifier-syntax">rb</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> #</span><span class="identifier-syntax">ifnot</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">cr</span><span class="plain-syntax"> = </span><span class="identifier-syntax">rulebook_var_creators</span><span class="plain-syntax">--&gt;</span><span class="identifier-syntax">rb</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> #</span><span class="identifier-syntax">endif</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">cr</span><span class="plain-syntax">) </span><span class="identifier-syntax">Mstack_Create_Frame</span><span class="plain-syntax">(</span><span class="identifier-syntax">cr</span><span class="plain-syntax">, </span><span class="identifier-syntax">rb</span><span class="plain-syntax">);</span>
<span class="plain-syntax">];</span>
<span class="plain-syntax">[ </span><span class="identifier-syntax">MStack_DestroyRBVars</span><span class="plain-syntax"> </span><span class="identifier-syntax">rb</span><span class="plain-syntax"> </span><span class="identifier-syntax">cr</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> #</span><span class="identifier-syntax">ifdef</span><span class="plain-syntax"> </span><span class="identifier-syntax">MEMORY_ECONOMY</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">cr</span><span class="plain-syntax"> = </span><span class="identifier-syntax">MStack_GetRBVarCreator</span><span class="plain-syntax">(</span><span class="identifier-syntax">rb</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> #</span><span class="identifier-syntax">ifnot</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">cr</span><span class="plain-syntax"> = </span><span class="identifier-syntax">rulebook_var_creators</span><span class="plain-syntax">--&gt;</span><span class="identifier-syntax">rb</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> #</span><span class="identifier-syntax">endif</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">cr</span><span class="plain-syntax">) </span><span class="identifier-syntax">Mstack_Destroy_Frame</span><span class="plain-syntax">(</span><span class="identifier-syntax">cr</span><span class="plain-syntax">, </span><span class="identifier-syntax">rb</span><span class="plain-syntax">);</span>
<span class="plain-syntax">];</span>
</pre>

View file

@ -168,12 +168,10 @@ or failed if &mdash;
<span class="plain-syntax"> </span><span class="identifier-syntax">spv</span><span class="plain-syntax"> = </span><span class="identifier-syntax">parameter_value</span><span class="plain-syntax">; </span><span class="identifier-syntax">parameter_value</span><span class="plain-syntax"> = </span><span class="identifier-syntax">parameter</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="comment-syntax">we won't need parameter again, so can reuse it</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">parameter</span><span class="plain-syntax"> = </span><span class="identifier-syntax">debugging_rules</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> #</span><span class="identifier-syntax">ifndef</span><span class="plain-syntax"> </span><span class="identifier-syntax">MEMORY_ECONOMY</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">debugging_rules</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">DebugRulebooks</span><span class="plain-syntax">(</span><span class="identifier-syntax">rulebook</span><span class="plain-syntax">, </span><span class="identifier-syntax">parameter</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">process_rulebook_count</span><span class="plain-syntax"> = </span><span class="identifier-syntax">process_rulebook_count</span><span class="plain-syntax"> + </span><span class="identifier-syntax">debugging_rules</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> #</span><span class="identifier-syntax">endif</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">rulebook</span><span class="plain-syntax"> &gt;= </span><span class="constant-syntax">0</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">rulebook</span><span class="plain-syntax"> &lt; </span><span class="identifier-syntax">NUMBER_RULEBOOKS_CREATED</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">rv</span><span class="plain-syntax"> = </span><span class="identifier-syntax">rulebooks_array</span><span class="plain-syntax">--&gt;</span><span class="identifier-syntax">rulebook</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">rv</span><span class="plain-syntax"> ~= </span><span class="identifier-syntax">EMPTY_RULEBOOK</span><span class="plain-syntax">) {</span>
@ -191,7 +189,6 @@ or failed if &mdash;
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">rv</span><span class="plain-syntax">) </span><span class="identifier-syntax">rv</span><span class="plain-syntax"> = </span><span class="identifier-syntax">rulebook</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">rv</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> #</span><span class="identifier-syntax">ifndef</span><span class="plain-syntax"> </span><span class="identifier-syntax">MEMORY_ECONOMY</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">debugging_rules</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">process_rulebook_count</span><span class="plain-syntax"> = </span><span class="identifier-syntax">process_rulebook_count</span><span class="plain-syntax"> - </span><span class="identifier-syntax">debugging_rules</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">process_rulebook_count</span><span class="plain-syntax"> &lt; </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="identifier-syntax">process_rulebook_count</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
@ -199,7 +196,6 @@ or failed if &mdash;
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">latest_rule_result</span><span class="plain-syntax">--&gt;0 == </span><span class="identifier-syntax">RS_SUCCEEDS</span><span class="plain-syntax">) </span><span class="reserved-syntax">print</span><span class="plain-syntax"> </span><span class="string-syntax">"[stopped: success]^"</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">latest_rule_result</span><span class="plain-syntax">--&gt;0 == </span><span class="identifier-syntax">RS_FAILS</span><span class="plain-syntax">) </span><span class="reserved-syntax">print</span><span class="plain-syntax"> </span><span class="string-syntax">"[stopped: fail]^"</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> #</span><span class="identifier-syntax">endif</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">debugging_rules</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">process_rulebook_count</span><span class="plain-syntax"> = </span><span class="identifier-syntax">process_rulebook_count</span><span class="plain-syntax"> - </span><span class="identifier-syntax">debugging_rules</span><span class="plain-syntax">;</span>

View file

@ -471,11 +471,9 @@ more discussion of this.
<span class="plain-syntax"> </span><span class="reserved-syntax">switch</span><span class="plain-syntax"> (</span><span class="identifier-syntax">rv</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">RS_SUCCEEDS</span><span class="plain-syntax">: </span><span class="reserved-syntax">print</span><span class="plain-syntax"> </span><span class="string-syntax">"succeeded"</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">RS_FAILS</span><span class="plain-syntax">: </span><span class="reserved-syntax">print</span><span class="plain-syntax"> </span><span class="string-syntax">"failed"</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> #</span><span class="identifier-syntax">IFNDEF</span><span class="plain-syntax"> </span><span class="identifier-syntax">MEMORY_ECONOMY</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">reason_the_action_failed</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">print</span><span class="plain-syntax"> </span><span class="string-syntax">" the "</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> (</span><span class="identifier-syntax">RulePrintingRule</span><span class="plain-syntax">) </span><span class="identifier-syntax">reason_the_action_failed</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> #</span><span class="identifier-syntax">ENDIF</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">default</span><span class="plain-syntax">: </span><span class="reserved-syntax">print</span><span class="plain-syntax"> </span><span class="string-syntax">"ended without result"</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">print</span><span class="plain-syntax"> </span><span class="string-syntax">"]^"</span><span class="plain-syntax">; </span><span class="identifier-syntax">say__p</span><span class="plain-syntax"> = </span><span class="constant-syntax">1</span><span class="plain-syntax">;</span>

View file

@ -80,10 +80,14 @@ compiler.
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">me_s</span><span class="plain-syntax">) </span><span class="identifier-syntax">economy</span><span class="plain-syntax"> = </span><span class="identifier-syntax">InterSymbol::evaluate_to_int</span><span class="plain-syntax">(</span><span class="identifier-syntax">me_s</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="5-rls.html#SP1_2" class="named-paragraph-link"><span class="named-paragraph">Define NUMBER_RULEBOOKS_CREATED</span><span class="named-paragraph-number">1.2</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="5-rls.html#SP1_3" class="named-paragraph-link"><span class="named-paragraph">Define RulebookNames array</span><span class="named-paragraph-number">1.3</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">economy</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="5-rls.html#SP1_6" class="named-paragraph-link"><span class="named-paragraph">Define SlowLookup function</span><span class="named-paragraph-number">1.6</span></a></span>
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="5-rls.html#SP1_4" class="named-paragraph-link"><span class="named-paragraph">Define rulebook_var_creators array</span><span class="named-paragraph-number">1.4</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">economy</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="5-rls.html#SP1_7" class="named-paragraph-link"><span class="named-paragraph">Define SlowLookup function</span><span class="named-paragraph-number">1.7</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="5-rls.html#SP1_6" class="named-paragraph-link"><span class="named-paragraph">Define faster SlowLookup function</span><span class="named-paragraph-number">1.6</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="5-rls.html#SP1_4" class="named-paragraph-link"><span class="named-paragraph">Define rulebook_var_creators array</span><span class="named-paragraph-number">1.4</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="5-rls.html#SP1_5" class="named-paragraph-link"><span class="named-paragraph">Define rulebooks_array array</span><span class="named-paragraph-number">1.5</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="5-rls.html#SP1_7" class="named-paragraph-link"><span class="named-paragraph">Define RULEPRINTINGRULE function</span><span class="named-paragraph-number">1.7</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="5-rls.html#SP1_8" class="named-paragraph-link"><span class="named-paragraph">Define RULEPRINTINGRULE function</span><span class="named-paragraph-number">1.8</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP1_1" class="paragraph-anchor"></a><b>&#167;1.1. </b>Each rulebook package contains a numeric constant with the symbol name <span class="extract"><span class="extract-syntax">rulebook_id</span></span>.
@ -163,7 +167,25 @@ so we change the values of these constants accordingly.
<span class="plain-syntax"> </span><a href="5-su.html#SP7" class="function-link"><span class="function-syntax">Synoptic::end_array</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">);</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="5-rls.html#SP1">&#167;1</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP1_6" class="paragraph-anchor"></a><b>&#167;1.6. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Define SlowLookup function</span><span class="named-paragraph-number">1.6</span></span><span class="comment-syntax"> =</span>
<p class="commentary firstcommentary"><a id="SP1_6" class="paragraph-anchor"></a><b>&#167;1.6. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Define faster SlowLookup function</span><span class="named-paragraph-number">1.6</span></span><span class="comment-syntax"> =</span>
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">iname</span><span class="plain-syntax"> = </span><span class="identifier-syntax">HierarchyLocations::iname</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="constant-syntax">SLOW_LOOKUP_HL</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="5-su.html#SP5" class="function-link"><span class="function-syntax">Synoptic::begin_function</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">iname</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">rb_s</span><span class="plain-syntax"> = </span><a href="5-su.html#SP6" class="function-link"><span class="function-syntax">Synoptic::local</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"rb"</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::inv_primitive</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">RETURN_BIP</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::down</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::inv_primitive</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">LOOKUP_BIP</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::down</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::val_iname</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_value</span><span class="plain-syntax">, </span><span class="identifier-syntax">HierarchyLocations::iname</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="constant-syntax">RULEBOOK_VAR_CREATORS_HL</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::val_symbol</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_value</span><span class="plain-syntax">, </span><span class="identifier-syntax">rb_s</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::up</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::up</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="5-su.html#SP5" class="function-link"><span class="function-syntax">Synoptic::end_function</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">step</span><span class="plain-syntax">, </span><span class="identifier-syntax">iname</span><span class="plain-syntax">);</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="5-rls.html#SP1">&#167;1</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP1_7" class="paragraph-anchor"></a><b>&#167;1.7. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Define SlowLookup function</span><span class="named-paragraph-number">1.7</span></span><span class="comment-syntax"> =</span>
</p>
<pre class="displayed-code all-displayed-code code-font">
@ -202,7 +224,7 @@ so we change the values of these constants accordingly.
<span class="plain-syntax"> </span><a href="5-su.html#SP5" class="function-link"><span class="function-syntax">Synoptic::end_function</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">step</span><span class="plain-syntax">, </span><span class="identifier-syntax">iname</span><span class="plain-syntax">);</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="5-rls.html#SP1">&#167;1</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP1_7" class="paragraph-anchor"></a><b>&#167;1.7. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Define RULEPRINTINGRULE function</span><span class="named-paragraph-number">1.7</span></span><span class="comment-syntax"> =</span>
<p class="commentary firstcommentary"><a id="SP1_8" class="paragraph-anchor"></a><b>&#167;1.8. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Define RULEPRINTINGRULE function</span><span class="named-paragraph-number">1.8</span></span><span class="comment-syntax"> =</span>
</p>
<pre class="displayed-code all-displayed-code code-font">
@ -228,17 +250,17 @@ so we change the values of these constants accordingly.
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::up</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::code</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::down</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="5-rls.html#SP1_7_1" class="named-paragraph-link"><span class="named-paragraph">Print a rulebook name</span><span class="named-paragraph-number">1.7.1</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="5-rls.html#SP1_8_1" class="named-paragraph-link"><span class="named-paragraph">Print a rulebook name</span><span class="named-paragraph-number">1.8.1</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::up</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::code</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::down</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="5-rls.html#SP1_7_2" class="named-paragraph-link"><span class="named-paragraph">Print a rule name</span><span class="named-paragraph-number">1.7.2</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="5-rls.html#SP1_8_2" class="named-paragraph-link"><span class="named-paragraph">Print a rule name</span><span class="named-paragraph-number">1.8.2</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::up</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::up</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="5-su.html#SP5" class="function-link"><span class="function-syntax">Synoptic::end_function</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">step</span><span class="plain-syntax">, </span><span class="identifier-syntax">iname</span><span class="plain-syntax">);</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="5-rls.html#SP1">&#167;1</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP1_7_1" class="paragraph-anchor"></a><b>&#167;1.7.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Print a rulebook name</span><span class="named-paragraph-number">1.7.1</span></span><span class="comment-syntax"> =</span>
<p class="commentary firstcommentary"><a id="SP1_8_1" class="paragraph-anchor"></a><b>&#167;1.8.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Print a rulebook name</span><span class="named-paragraph-number">1.8.1</span></span><span class="comment-syntax"> =</span>
</p>
<pre class="displayed-code all-displayed-code code-font">
@ -266,8 +288,8 @@ so we change the values of these constants accordingly.
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::up</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="5-rls.html#SP1_7">&#167;1.7</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP1_7_2" class="paragraph-anchor"></a><b>&#167;1.7.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Print a rule name</span><span class="named-paragraph-number">1.7.2</span></span><span class="comment-syntax"> =</span>
<ul class="endnotetexts"><li>This code is used in <a href="5-rls.html#SP1_8">&#167;1.8</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP1_8_2" class="paragraph-anchor"></a><b>&#167;1.8.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Print a rule name</span><span class="named-paragraph-number">1.8.2</span></span><span class="comment-syntax"> =</span>
</p>
<pre class="displayed-code all-displayed-code code-font">
@ -321,7 +343,7 @@ so we change the values of these constants accordingly.
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::up</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="5-rls.html#SP1_7">&#167;1.7</a>.</li></ul>
<ul class="endnotetexts"><li>This code is used in <a href="5-rls.html#SP1_8">&#167;1.8</a>.</li></ul>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="5-rsp.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-pm.html">1</a></li><li class="progresschapter"><a href="2-pp.html">2</a></li><li class="progresschapter"><a href="3-ps.html">3</a></li><li class="progresschapter"><a href="4-lbks.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-msms.html">msms</a></li><li class="progresssection"><a href="5-sh.html">sh</a></li><li class="progresssection"><a href="5-su.html">su</a></li><li class="progresssection"><a href="5-ext.html">ext</a></li><li class="progresssection"><a href="5-lt.html">lt</a></li><li class="progresssection"><a href="5-rsp.html">rsp</a></li><li class="progresscurrent">rls</li><li class="progresssection"><a href="5-act.html">act</a></li><li class="progresssection"><a href="5-act2.html">act2</a></li><li class="progresssection"><a href="5-ins.html">ins</a></li><li class="progresssection"><a href="5-knd.html">knd</a></li><li class="progresssection"><a href="5-prp.html">prp</a></li><li class="progresssection"><a href="5-rlt.html">rlt</a></li><li class="progresssection"><a href="5-tbl.html">tbl</a></li><li class="progresssection"><a href="5-chr.html">chr</a></li><li class="progresssection"><a href="5-scn.html">scn</a></li><li class="progresssection"><a href="5-mlt.html">mlt</a></li><li class="progresssection"><a href="5-uo.html">uo</a></li><li class="progresssection"><a href="5-vrb.html">vrb</a></li><li class="progresssection"><a href="5-tst.html">tst</a></li><li class="progresschapter"><a href="6-erms.html">6</a></li><li class="progressnext"><a href="5-act.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->

View file

@ -122,10 +122,10 @@ does exist, it must have a definition, and we return that.
<pre class="displayed-code all-displayed-code code-font">
<span class="identifier-syntax">inter_package</span><span class="plain-syntax"> *</span><span class="identifier-syntax">synoptic_fn_package</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
<span class="identifier-syntax">packaging_state</span><span class="plain-syntax"> </span><span class="identifier-syntax">synoptic_fn_ps</span><span class="plain-syntax">;</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Synoptic::begin_function</span><button class="popup" onclick="togglePopup('usagePopup6')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup6">Usage of <span class="code-font"><span class="function-syntax">Synoptic::begin_function</span></span>:<br/>Extensions - <a href="5-ext.html#SP1_2">&#167;1.2</a>, <a href="5-ext.html#SP1_3">&#167;1.3</a>, <a href="5-ext.html#SP1_4">&#167;1.4</a><br/>Responses - <a href="5-rsp.html#SP1_5">&#167;1.5</a><br/>Rules - <a href="5-rls.html#SP1_6">&#167;1.6</a>, <a href="5-rls.html#SP1_7">&#167;1.7</a><br/>Actions - <a href="5-act2.html#SP1_7">&#167;1.7</a><br/>Instances - <a href="5-ins.html#SP1_1">&#167;1.1</a><br/>Kinds - <a href="5-knd.html#SP1_3">&#167;1.3</a>, <a href="5-knd.html#SP1_4">&#167;1.4</a>, <a href="5-knd.html#SP1_5">&#167;1.5</a>, <a href="5-knd.html#SP1_6">&#167;1.6</a>, <a href="5-knd.html#SP1_7">&#167;1.7</a>, <a href="5-knd.html#SP1_8">&#167;1.8</a>, <a href="5-knd.html#SP1_9">&#167;1.9</a>, <a href="5-knd.html#SP1_10">&#167;1.10</a>, <a href="5-knd.html#SP1_11">&#167;1.11</a><br/>Relations - <a href="5-rlt.html#SP1_3">&#167;1.3</a>, <a href="5-rlt.html#SP1_4">&#167;1.4</a>, <a href="5-rlt.html#SP1_5">&#167;1.5</a><br/>Tables - <a href="5-tbl.html#SP1_4">&#167;1.4</a>, <a href="5-tbl.html#SP1_5">&#167;1.5</a><br/>Chronology - <a href="5-chr.html#SP1_8">&#167;1.8</a><br/>Scenes - <a href="5-scn.html#SP1_1">&#167;1.1</a>, <a href="5-scn.html#SP1_2">&#167;1.2</a><br/>Use Options - <a href="5-uo.html#SP1_3">&#167;1.3</a>, <a href="5-uo.html#SP1_4">&#167;1.4</a><br/>Tests - <a href="5-tst.html#SP1_1">&#167;1.1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">iname</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Synoptic::begin_function</span><button class="popup" onclick="togglePopup('usagePopup6')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup6">Usage of <span class="code-font"><span class="function-syntax">Synoptic::begin_function</span></span>:<br/>Extensions - <a href="5-ext.html#SP1_2">&#167;1.2</a>, <a href="5-ext.html#SP1_3">&#167;1.3</a>, <a href="5-ext.html#SP1_4">&#167;1.4</a><br/>Responses - <a href="5-rsp.html#SP1_5">&#167;1.5</a><br/>Rules - <a href="5-rls.html#SP1_6">&#167;1.6</a>, <a href="5-rls.html#SP1_7">&#167;1.7</a>, <a href="5-rls.html#SP1_8">&#167;1.8</a><br/>Actions - <a href="5-act2.html#SP1_7">&#167;1.7</a><br/>Instances - <a href="5-ins.html#SP1_1">&#167;1.1</a><br/>Kinds - <a href="5-knd.html#SP1_3">&#167;1.3</a>, <a href="5-knd.html#SP1_4">&#167;1.4</a>, <a href="5-knd.html#SP1_5">&#167;1.5</a>, <a href="5-knd.html#SP1_6">&#167;1.6</a>, <a href="5-knd.html#SP1_7">&#167;1.7</a>, <a href="5-knd.html#SP1_8">&#167;1.8</a>, <a href="5-knd.html#SP1_9">&#167;1.9</a>, <a href="5-knd.html#SP1_10">&#167;1.10</a>, <a href="5-knd.html#SP1_11">&#167;1.11</a><br/>Relations - <a href="5-rlt.html#SP1_3">&#167;1.3</a>, <a href="5-rlt.html#SP1_4">&#167;1.4</a>, <a href="5-rlt.html#SP1_5">&#167;1.5</a><br/>Tables - <a href="5-tbl.html#SP1_4">&#167;1.4</a>, <a href="5-tbl.html#SP1_5">&#167;1.5</a><br/>Chronology - <a href="5-chr.html#SP1_8">&#167;1.8</a><br/>Scenes - <a href="5-scn.html#SP1_1">&#167;1.1</a>, <a href="5-scn.html#SP1_2">&#167;1.2</a><br/>Use Options - <a href="5-uo.html#SP1_3">&#167;1.3</a>, <a href="5-uo.html#SP1_4">&#167;1.4</a><br/>Tests - <a href="5-tst.html#SP1_1">&#167;1.1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">iname</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">synoptic_fn_package</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Produce::function_body</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, &amp;</span><span class="identifier-syntax">synoptic_fn_ps</span><span class="plain-syntax">, </span><span class="identifier-syntax">iname</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Synoptic::end_function</span><button class="popup" onclick="togglePopup('usagePopup7')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup7">Usage of <span class="code-font"><span class="function-syntax">Synoptic::end_function</span></span>:<br/>Extensions - <a href="5-ext.html#SP1_2">&#167;1.2</a>, <a href="5-ext.html#SP1_3">&#167;1.3</a>, <a href="5-ext.html#SP1_4">&#167;1.4</a><br/>Responses - <a href="5-rsp.html#SP1_5">&#167;1.5</a><br/>Rules - <a href="5-rls.html#SP1_6">&#167;1.6</a>, <a href="5-rls.html#SP1_7">&#167;1.7</a><br/>Actions - <a href="5-act2.html#SP1_7">&#167;1.7</a><br/>Instances - <a href="5-ins.html#SP1_1">&#167;1.1</a><br/>Kinds - <a href="5-knd.html#SP1_3">&#167;1.3</a>, <a href="5-knd.html#SP1_4">&#167;1.4</a>, <a href="5-knd.html#SP1_5">&#167;1.5</a>, <a href="5-knd.html#SP1_6">&#167;1.6</a>, <a href="5-knd.html#SP1_7">&#167;1.7</a>, <a href="5-knd.html#SP1_8">&#167;1.8</a>, <a href="5-knd.html#SP1_9">&#167;1.9</a>, <a href="5-knd.html#SP1_10">&#167;1.10</a>, <a href="5-knd.html#SP1_11">&#167;1.11</a><br/>Relations - <a href="5-rlt.html#SP1_3">&#167;1.3</a>, <a href="5-rlt.html#SP1_4">&#167;1.4</a>, <a href="5-rlt.html#SP1_5">&#167;1.5</a><br/>Tables - <a href="5-tbl.html#SP1_4">&#167;1.4</a>, <a href="5-tbl.html#SP1_5">&#167;1.5</a><br/>Chronology - <a href="5-chr.html#SP1_8">&#167;1.8</a><br/>Scenes - <a href="5-scn.html#SP1_1">&#167;1.1</a>, <a href="5-scn.html#SP1_2">&#167;1.2</a><br/>Use Options - <a href="5-uo.html#SP1_3">&#167;1.3</a>, <a href="5-uo.html#SP1_4">&#167;1.4</a><br/>Tests - <a href="5-tst.html#SP1_1">&#167;1.1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="reserved-syntax">pipeline_step</span><span class="plain-syntax"> *</span><span class="identifier-syntax">step</span><span class="plain-syntax">, </span><span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">iname</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Synoptic::end_function</span><button class="popup" onclick="togglePopup('usagePopup7')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup7">Usage of <span class="code-font"><span class="function-syntax">Synoptic::end_function</span></span>:<br/>Extensions - <a href="5-ext.html#SP1_2">&#167;1.2</a>, <a href="5-ext.html#SP1_3">&#167;1.3</a>, <a href="5-ext.html#SP1_4">&#167;1.4</a><br/>Responses - <a href="5-rsp.html#SP1_5">&#167;1.5</a><br/>Rules - <a href="5-rls.html#SP1_6">&#167;1.6</a>, <a href="5-rls.html#SP1_7">&#167;1.7</a>, <a href="5-rls.html#SP1_8">&#167;1.8</a><br/>Actions - <a href="5-act2.html#SP1_7">&#167;1.7</a><br/>Instances - <a href="5-ins.html#SP1_1">&#167;1.1</a><br/>Kinds - <a href="5-knd.html#SP1_3">&#167;1.3</a>, <a href="5-knd.html#SP1_4">&#167;1.4</a>, <a href="5-knd.html#SP1_5">&#167;1.5</a>, <a href="5-knd.html#SP1_6">&#167;1.6</a>, <a href="5-knd.html#SP1_7">&#167;1.7</a>, <a href="5-knd.html#SP1_8">&#167;1.8</a>, <a href="5-knd.html#SP1_9">&#167;1.9</a>, <a href="5-knd.html#SP1_10">&#167;1.10</a>, <a href="5-knd.html#SP1_11">&#167;1.11</a><br/>Relations - <a href="5-rlt.html#SP1_3">&#167;1.3</a>, <a href="5-rlt.html#SP1_4">&#167;1.4</a>, <a href="5-rlt.html#SP1_5">&#167;1.5</a><br/>Tables - <a href="5-tbl.html#SP1_4">&#167;1.4</a>, <a href="5-tbl.html#SP1_5">&#167;1.5</a><br/>Chronology - <a href="5-chr.html#SP1_8">&#167;1.8</a><br/>Scenes - <a href="5-scn.html#SP1_1">&#167;1.1</a>, <a href="5-scn.html#SP1_2">&#167;1.2</a><br/>Use Options - <a href="5-uo.html#SP1_3">&#167;1.3</a>, <a href="5-uo.html#SP1_4">&#167;1.4</a><br/>Tests - <a href="5-tst.html#SP1_1">&#167;1.1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="reserved-syntax">pipeline_step</span><span class="plain-syntax"> *</span><span class="identifier-syntax">step</span><span class="plain-syntax">, </span><span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">iname</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::end_function_body</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Packaging::exit</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">synoptic_fn_ps</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
@ -134,7 +134,7 @@ does exist, it must have a definition, and we return that.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="identifier-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="function-syntax">Synoptic::local</span><button class="popup" onclick="togglePopup('usagePopup8')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup8">Usage of <span class="code-font"><span class="function-syntax">Synoptic::local</span></span>:<br/>Extensions - <a href="5-ext.html#SP1_4">&#167;1.4</a><br/>Responses - <a href="5-rsp.html#SP1_5">&#167;1.5</a><br/>Rules - <a href="5-rls.html#SP1_6">&#167;1.6</a>, <a href="5-rls.html#SP1_7">&#167;1.7</a><br/>Actions - <a href="5-act2.html#SP1_7">&#167;1.7</a><br/>Instances - <a href="5-ins.html#SP1_1">&#167;1.1</a><br/>Kinds - <a href="5-knd.html#SP1_3">&#167;1.3</a>, <a href="5-knd.html#SP1_4">&#167;1.4</a>, <a href="5-knd.html#SP1_5">&#167;1.5</a>, <a href="5-knd.html#SP1_6">&#167;1.6</a>, <a href="5-knd.html#SP1_7">&#167;1.7</a>, <a href="5-knd.html#SP1_8">&#167;1.8</a>, <a href="5-knd.html#SP1_9">&#167;1.9</a>, <a href="5-knd.html#SP1_10">&#167;1.10</a>, <a href="5-knd.html#SP1_11">&#167;1.11</a><br/>Relations - <a href="5-rlt.html#SP1_4">&#167;1.4</a>, <a href="5-rlt.html#SP1_5">&#167;1.5</a><br/>Tables - <a href="5-tbl.html#SP1_4">&#167;1.4</a>, <a href="5-tbl.html#SP1_5">&#167;1.5</a><br/>Chronology - <a href="5-chr.html#SP1_8">&#167;1.8</a><br/>Scenes - <a href="5-scn.html#SP1_2">&#167;1.2</a><br/>Use Options - <a href="5-uo.html#SP1_3">&#167;1.3</a>, <a href="5-uo.html#SP1_4">&#167;1.4</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">name</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">comment</span><span class="plain-syntax">) {</span>
<span class="identifier-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="function-syntax">Synoptic::local</span><button class="popup" onclick="togglePopup('usagePopup8')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup8">Usage of <span class="code-font"><span class="function-syntax">Synoptic::local</span></span>:<br/>Extensions - <a href="5-ext.html#SP1_4">&#167;1.4</a><br/>Responses - <a href="5-rsp.html#SP1_5">&#167;1.5</a><br/>Rules - <a href="5-rls.html#SP1_6">&#167;1.6</a>, <a href="5-rls.html#SP1_7">&#167;1.7</a>, <a href="5-rls.html#SP1_8">&#167;1.8</a><br/>Actions - <a href="5-act2.html#SP1_7">&#167;1.7</a><br/>Instances - <a href="5-ins.html#SP1_1">&#167;1.1</a><br/>Kinds - <a href="5-knd.html#SP1_3">&#167;1.3</a>, <a href="5-knd.html#SP1_4">&#167;1.4</a>, <a href="5-knd.html#SP1_5">&#167;1.5</a>, <a href="5-knd.html#SP1_6">&#167;1.6</a>, <a href="5-knd.html#SP1_7">&#167;1.7</a>, <a href="5-knd.html#SP1_8">&#167;1.8</a>, <a href="5-knd.html#SP1_9">&#167;1.9</a>, <a href="5-knd.html#SP1_10">&#167;1.10</a>, <a href="5-knd.html#SP1_11">&#167;1.11</a><br/>Relations - <a href="5-rlt.html#SP1_4">&#167;1.4</a>, <a href="5-rlt.html#SP1_5">&#167;1.5</a><br/>Tables - <a href="5-tbl.html#SP1_4">&#167;1.4</a>, <a href="5-tbl.html#SP1_5">&#167;1.5</a><br/>Chronology - <a href="5-chr.html#SP1_8">&#167;1.8</a><br/>Scenes - <a href="5-scn.html#SP1_2">&#167;1.2</a><br/>Use Options - <a href="5-uo.html#SP1_3">&#167;1.3</a>, <a href="5-uo.html#SP1_4">&#167;1.4</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">name</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">comment</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">Produce::local</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_value</span><span class="plain-syntax">, </span><span class="identifier-syntax">name</span><span class="plain-syntax">, </span><span class="identifier-syntax">comment</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
</pre>

View file

@ -1,10 +1,10 @@
Total memory consumption was 120953K = 118 MB
---- was used for 2048032 objects, in 364569 frames in 0 x 800K = 0K = 0 MB:
---- was used for 2048036 objects, in 364573 frames in 0 x 800K = 0K = 0 MB:
33.7% inter_tree_node_array 58 x 8192 = 475136 objects, 41813824 bytes
20.9% text_stream_array 4616 x 100 = 461600 objects, 25997312 bytes
19.8% linked_list 43887 objects, 24576720 bytes
19.8% linked_list 43888 objects, 24577280 bytes
11.3% inter_symbol_array 132 x 1024 = 135168 objects, 14061696 bytes
10.6% inter_error_stash_array 101 x 1024 = 103424 objects, 13241504 bytes
8.3% parse_node 129712 objects, 10376960 bytes
@ -20,9 +20,9 @@ Total memory consumption was 120953K = 118 MB
1.4% vocabulary_entry_array 161 x 100 = 16100 objects, 1808352 bytes
1.2% dict_entry_array 473 x 100 = 47300 objects, 1528736 bytes
1.2% match_trie_array 11 x 1000 = 11000 objects, 1496352 bytes
1.2% inter_symbols_table 26592 objects, 1489152 bytes
1.2% inter_symbols_table 26593 objects, 1489208 bytes
1.1% i6_schema_array 23 x 100 = 2300 objects, 1380736 bytes
1.0% inter_package 26592 objects, 1276416 bytes
1.0% inter_package 26593 objects, 1276464 bytes
0.9% map_data 671 objects, 1127280 bytes
0.8% id_body 942 objects, 1077648 bytes
0.8% adjective_meaning 202 objects, 1000304 bytes
@ -42,7 +42,7 @@ Total memory consumption was 120953K = 118 MB
0.2% compilation_subtask 3355 objects, 268400 bytes
0.2% inter_annotation_array 2 x 8192 = 16384 objects, 262208 bytes
0.2% inference_subject 666 objects, 261072 bytes
0.1% vanilla_function 3683 objects, 235712 bytes
0.1% vanilla_function 3684 objects, 235776 bytes
0.1% binary_predicate 322 objects, 170016 bytes
0.1% hierarchy_location 1124 objects, 161856 bytes
0.1% linguistic_stock_item 3318 objects, 159264 bytes
@ -247,7 +247,7 @@ Total memory consumption was 120953K = 118 MB
100.0% was used for memory not allocated for objects:
56.8% text stream storage 70350844 bytes in 478783 claims
56.8% text stream storage 70350608 bytes in 478781 claims
4.2% dictionary storage 5297152 bytes in 7590 claims
---- sorting 1520 bytes in 159 claims
5.8% source text 7200000 bytes in 3 claims
@ -255,7 +255,7 @@ Total memory consumption was 120953K = 118 MB
0.2% documentation fragments 262144 bytes in 1 claim
---- linguistic stock array 81920 bytes in 2 claims
---- small word set array 105600 bytes in 22 claims
3.6% inter symbols storage 4553008 bytes in 27952 claims
3.6% inter symbols storage 4553136 bytes in 27953 claims
13.5% inter bytecode storage 16767568 bytes in 14 claims
5.0% inter links storage 6222976 bytes in 11 claims
0.1% inter tree location list storage 191232 bytes in 32 claims
@ -265,5 +265,5 @@ Total memory consumption was 120953K = 118 MB
---- code generation workspace for objects 3480 bytes in 19 claims
0.2% emitter array storage 280288 bytes in 1999 claims
-150.0% was overhead - -185886160 bytes = -181529K = -177 MB
-150.0% was overhead - -185886888 bytes = -181530K = -177 MB

View file

@ -1,33 +1,34 @@
100.0% in inform7 run
71.2% in compilation to Inter
50.9% in //Sequence::undertake_queued_tasks//
71.0% in compilation to Inter
50.6% in //Sequence::undertake_queued_tasks//
4.6% in //MajorNodes::pre_pass//
3.5% in //MajorNodes::pass_1//
1.9% in //ImperativeDefinitions::assess_all//
1.8% in //ImperativeDefinitions::assess_all//
1.4% in //RTKindConstructors::compile//
1.4% in //RTPhrasebook::compile_entries//
1.0% in //Sequence::lint_inter//
0.6% in //MajorNodes::pass_2//
0.6% in //World::stage_V//
0.4% in //ImperativeDefinitions::compile_first_block//
0.4% in //Sequence::undertake_queued_tasks//
0.4% in //Sequence::undertake_queued_tasks//
0.2% in //CompletionModule::compile//
0.2% in //InferenceSubjects::emit_all//
0.2% in //RTKindConstructors::compile_permissions//
0.2% in //Task::make_built_in_kind_constructors//
0.2% in //World::stages_II_and_III//
2.5% not specifically accounted for
25.7% in running Inter pipeline
10.1% in step 14/15: generate inform6 -> auto.inf
1.1% in //Sequence::lint_inter//
0.5% in //MajorNodes::pass_2//
0.5% in //Sequence::undertake_queued_tasks//
0.5% in //World::stage_V//
0.3% in //ImperativeDefinitions::compile_first_block//
0.3% in //Sequence::undertake_queued_tasks//
0.1% in //CompletionModule::compile//
0.1% in //InferenceSubjects::emit_all//
0.1% in //RTKindConstructors::compile_permissions//
0.1% in //Task::make_built_in_kind_constructors//
0.1% in //World::stages_II_and_III//
2.8% not specifically accounted for
25.9% in running Inter pipeline
10.0% in step 14/15: generate inform6 -> auto.inf
5.7% in step 5/15: load-binary-kits
5.4% in step 6/15: make-synoptic-module
5.6% in step 6/15: make-synoptic-module
1.4% in step 9/15: make-identifiers-unique
0.4% in step 12/15: eliminate-redundant-operations
0.4% in step 4/15: compile-splats
0.4% in step 7/15: shorten-wiring
0.2% in step 11/15: eliminate-redundant-labels
0.2% in step 8/15: detect-indirect-calls
1.2% not specifically accounted for
2.5% in supervisor
0.5% not specifically accounted for
0.5% in step 4/15: compile-splats
0.3% in step 12/15: eliminate-redundant-operations
0.3% in step 7/15: shorten-wiring
0.3% in step 8/15: detect-indirect-calls
0.1% in step 10/15: reconcile-verbs
0.1% in step 11/15: eliminate-redundant-labels
0.9% not specifically accounted for
2.6% in supervisor
0.4% not specifically accounted for

View file

@ -176,27 +176,16 @@ where it is to be written, of course: that would corrupt the sentinel.
@h Rulebook Variables.
Each rulebook has a slate of variables, usually empty, with ID number the
same as the rulebook's own ID number. (Rulebook IDs number upwards from 0
in order of creation in the source text.) The associated creator functions,
usually null, are stored in an array if there is no problem about memory
usage, but with a switch statement if |MEMORY_ECONOMY| is in force; this
costs a very small amount of time, but saves 1K of readable memory.
in order of creation in the source text.)
=
[ MStack_CreateRBVars rb cr;
#ifdef MEMORY_ECONOMY;
cr = MStack_GetRBVarCreator(rb);
#ifnot;
cr = rulebook_var_creators-->rb;
#endif;
if (cr) Mstack_Create_Frame(cr, rb);
];
[ MStack_DestroyRBVars rb cr;
#ifdef MEMORY_ECONOMY;
cr = MStack_GetRBVarCreator(rb);
#ifnot;
cr = rulebook_var_creators-->rb;
#endif;
if (cr) Mstack_Destroy_Frame(cr, rb);
];

View file

@ -98,12 +98,10 @@ Global debugging_rules = false; ! Are we tracing rule invocations?
spv = parameter_value; parameter_value = parameter;
! we won't need parameter again, so can reuse it
parameter = debugging_rules;
#ifndef MEMORY_ECONOMY;
if (debugging_rules) {
DebugRulebooks(rulebook, parameter);
process_rulebook_count = process_rulebook_count + debugging_rules;
}
#endif;
if ((rulebook >= 0) && (rulebook < NUMBER_RULEBOOKS_CREATED)) {
rv = rulebooks_array-->rulebook;
if (rv ~= EMPTY_RULEBOOK) {
@ -121,7 +119,6 @@ Global debugging_rules = false; ! Are we tracing rule invocations?
else if (rv) rv = rulebook;
}
if (rv) {
#ifndef MEMORY_ECONOMY;
if (debugging_rules) {
process_rulebook_count = process_rulebook_count - debugging_rules;
if (process_rulebook_count < 0) process_rulebook_count = 0;
@ -129,7 +126,6 @@ Global debugging_rules = false; ! Are we tracing rule invocations?
if (latest_rule_result-->0 == RS_SUCCEEDS) print "[stopped: success]^";
if (latest_rule_result-->0 == RS_FAILS) print "[stopped: fail]^";
}
#endif;
} else {
if (debugging_rules)
process_rulebook_count = process_rulebook_count - debugging_rules;

View file

@ -394,11 +394,9 @@ more discussion of this.
switch (rv) {
RS_SUCCEEDS: print "succeeded";
RS_FAILS: print "failed";
#IFNDEF MEMORY_ECONOMY;
if (reason_the_action_failed)
print " the ",
(RulePrintingRule) reason_the_action_failed;
#ENDIF;
default: print "ended without result";
}
print "]^"; say__p = 1;

View file

@ -21,8 +21,12 @@ void SynopticRules::compile(inter_tree *I, pipeline_step *step, tree_inventory *
if (me_s) economy = InterSymbol::evaluate_to_int(me_s);
@<Define NUMBER_RULEBOOKS_CREATED@>;
@<Define RulebookNames array@>;
if (economy) @<Define SlowLookup function@>
else @<Define rulebook_var_creators array@>;
if (economy) {
@<Define SlowLookup function@>;
} else {
@<Define faster SlowLookup function@>;
@<Define rulebook_var_creators array@>;
}
@<Define rulebooks_array array@>;
@<Define RULEPRINTINGRULE function@>;
}
@ -83,6 +87,20 @@ so we change the values of these constants accordingly.
Synoptic::numeric_entry(0);
Synoptic::end_array(I);
@<Define faster SlowLookup function@> =
inter_name *iname = HierarchyLocations::iname(I, SLOW_LOOKUP_HL);
Synoptic::begin_function(I, iname);
inter_symbol *rb_s = Synoptic::local(I, I"rb", NULL);
Produce::inv_primitive(I, RETURN_BIP);
Produce::down(I);
Produce::inv_primitive(I, LOOKUP_BIP);
Produce::down(I);
Produce::val_iname(I, K_value, HierarchyLocations::iname(I, RULEBOOK_VAR_CREATORS_HL));
Produce::val_symbol(I, K_value, rb_s);
Produce::up(I);
Produce::up(I);
Synoptic::end_function(I, step, iname);
@<Define SlowLookup function@> =
inter_name *iname = HierarchyLocations::iname(I, SLOW_LOOKUP_HL);
Synoptic::begin_function(I, iname);