1
0
Fork 0
mirror of https://github.com/ganelson/inform.git synced 2024-06-26 04:00:43 +03:00

Fixes for remaining issues arising from PR#106

This commit is contained in:
Graham Nelson 2023-07-04 18:37:04 +01:00
parent e817a25254
commit d6e8609db1
60 changed files with 1703 additions and 1642 deletions

View file

@ -1,6 +1,6 @@
# Inform 7
[Version](notes/versioning.md): 10.2.0-beta+6W70 'Krypton' (3 July 2023)
[Version](notes/versioning.md): 10.2.0-beta+6W71 'Krypton' (4 July 2023)
## About Inform

View file

@ -1,3 +1,3 @@
Prerelease: beta
Build Date: 3 July 2023
Build Number: 6W70
Build Date: 4 July 2023
Build Number: 6W71

View file

@ -51,33 +51,11 @@
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../extensions.html">Kits</a></li><li><a href="index.html">Architecture16Kit</a></li><li><b>Startup Template</b></li></ul></div>
<p class="purpose">How programs for this architecture start up the virtual machine.</p>
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>&#167;1. </b><span class="extract"><span class="extract-syntax">VM_PreInitialise()</span></span> is called; then the "starting the virtual machine"
activity runs; and then <span class="extract"><span class="extract-syntax">VM_Initialise()</span></span> is called.
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>&#167;1. </b><span class="extract"><span class="extract-syntax">VM_Check_Functionality()</span></span> doesn't need to do anything in Z-Code.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax">[ </span><span class="identifier-syntax">VM_PreInitialise</span><span class="plain-syntax">;</span>
<span class="plain-syntax">];</span>
<span class="plain-syntax">[ </span><span class="identifier-syntax">VM_Initialise</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">standard_interpreter</span><span class="plain-syntax"> = </span><span class="identifier-syntax">HDR_TERPSTANDARD</span><span class="plain-syntax">--&gt;0;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">dict_start</span><span class="plain-syntax"> = </span><span class="identifier-syntax">HDR_DICTIONARY</span><span class="plain-syntax">--&gt;0;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">dict_entry_size</span><span class="plain-syntax"> = </span><span class="identifier-syntax">dict_start</span><span class="plain-syntax">-&gt;(</span><span class="identifier-syntax">dict_start</span><span class="plain-syntax">-&gt;0 + </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">dict_start</span><span class="plain-syntax"> = </span><span class="identifier-syntax">dict_start</span><span class="plain-syntax"> + </span><span class="identifier-syntax">dict_start</span><span class="plain-syntax">-&gt;0 + </span><span class="constant-syntax">4</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">dict_end</span><span class="plain-syntax"> = </span><span class="identifier-syntax">dict_start</span><span class="plain-syntax"> + ((</span><span class="identifier-syntax">dict_start</span><span class="plain-syntax"> - </span><span class="constant-syntax">2</span><span class="plain-syntax">)--&gt;0) * </span><span class="identifier-syntax">dict_entry_size</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">buffer</span><span class="plain-syntax">-&gt;0 = </span><span class="identifier-syntax">INPUT_BUFFER_LEN</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">buffer2</span><span class="plain-syntax">-&gt;0 = </span><span class="identifier-syntax">INPUT_BUFFER_LEN</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">buffer3</span><span class="plain-syntax">-&gt;0 = </span><span class="identifier-syntax">INPUT_BUFFER_LEN</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">parse</span><span class="plain-syntax">-&gt;0 = </span><span class="constant-syntax">15</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">parse2</span><span class="plain-syntax">-&gt;0 = </span><span class="constant-syntax">15</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">BasicInformKit</span><span class="plain-syntax">`</span><span class="identifier-syntax">FIX_RNG_CFGF</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> @</span><span class="reserved-syntax">random</span><span class="plain-syntax"> </span><span class="constant-syntax">10000</span><span class="plain-syntax"> -&gt; </span><span class="identifier-syntax">i</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax"> = -</span><span class="identifier-syntax">i</span><span class="plain-syntax">-2000;</span>
<span class="plain-syntax"> @</span><span class="reserved-syntax">random</span><span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax"> -&gt; </span><span class="identifier-syntax">i</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax">[ </span><span class="identifier-syntax">VM_Check_Functionality</span><span class="plain-syntax">;</span>
<span class="plain-syntax">];</span>
</pre>
<nav role="progress"><div class="progresscontainer">

View file

@ -49,7 +49,7 @@
<!--Weave of 'Capabilities Template' generated by Inweb-->
<div class="breadcrumbs">
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../extensions.html">Kits</a></li><li><a href="index.html">Architecture32Kit</a></li><li><b>Capabilities Template</b></li></ul></div>
<p class="purpose">Miscellaneous capabilities of the 16-bit architecture.</p>
<p class="purpose">Miscellaneous capabilities of the 32-bit architecture.</p>
<ul class="toc"><li><a href="S-cpb.html#SP1">&#167;1. Summary</a></li><li><a href="S-cpb.html#SP2">&#167;2. Header layout</a></li><li><a href="S-cpb.html#SP3">&#167;3. Release Number</a></li><li><a href="S-cpb.html#SP4">&#167;4. Random Number Generator</a></li><li><a href="S-cpb.html#SP5">&#167;5. Memory Allocation</a></li><li><a href="S-cpb.html#SP6">&#167;6. Memcpy</a></li><li><a href="S-cpb.html#SP8">&#167;8. Audiovisual Resources</a></li><li><a href="S-cpb.html#SP9">&#167;9. Typography</a></li></ul><hr class="tocbar">

View file

@ -51,7 +51,7 @@
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../extensions.html">Kits</a></li><li><a href="index.html">Architecture32Kit</a></li><li><b>Glk Template</b></li></ul></div>
<p class="purpose">Glk is a fully-featured input-output model, designed by Andrew Plotkin for use with the Glulx virtual machine, but not used only for that. All 32-bit Inform programs use Glk.</p>
<ul class="toc"><li><a href="S-glk.html#SP1">&#167;1. Stubs</a></li><li><a href="S-glk.html#SP2">&#167;2. Definitions</a></li><li><a href="S-glk.html#SP3">&#167;3. Debugging verb</a></li></ul><hr class="tocbar">
<ul class="toc"><li><a href="S-glk.html#SP1">&#167;1. Stubs</a></li><li><a href="S-glk.html#SP2">&#167;2. Definitions</a></li><li><a href="S-glk.html#SP4">&#167;4. Debugging verb</a></li></ul><hr class="tocbar">
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>&#167;1. Stubs. </b>These are I6 library-style entry point routines, not used by I7, but retained
in case I7 extensions want to do interesting things with Glulx.
@ -931,7 +931,83 @@ put together by John Cater.
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">ret</span><span class="plain-syntax">;</span>
<span class="plain-syntax">];</span>
</pre>
<p class="commentary firstcommentary"><a id="SP3" class="paragraph-anchor"></a><b>&#167;3. Debugging verb. </b>This powers the GLKLIST command, when there's a command parser to read it.
<p class="commentary firstcommentary"><a id="SP3" class="paragraph-anchor"></a><b>&#167;3. </b><span class="extract"><span class="extract-syntax">GGRecoverObjects</span></span> handles recovering the Glk objects after restarting or restoring.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax">[ </span><span class="identifier-syntax">GGRecoverObjects</span><span class="plain-syntax"> </span><span class="identifier-syntax">id</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="comment-syntax">If GGRecoverObjects() has been called, all these stored IDs are</span>
<span class="plain-syntax"> </span><span class="comment-syntax">invalid, so we start by clearing them all out.</span>
<span class="plain-syntax"> </span><span class="comment-syntax">(In fact, after a restoreundo, some of them may still be good.</span>
<span class="plain-syntax"> </span><span class="comment-syntax">For simplicity, though, we assume the general case.)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">gg_mainwin</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">gg_statuswin</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">gg_quotewin</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">gg_scriptfref</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">gg_scriptstr</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">gg_savestr</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">statuswin_cursize</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">gg_foregroundchan</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">gg_backgroundchan</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">gg_commandstr</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">gg_command_reading</span><span class="plain-syntax"> = </span><span class="reserved-syntax">false</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="comment-syntax">Also tell the game to clear its object references.</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">IdentifyGlkObject</span><span class="plain-syntax">(0);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">id</span><span class="plain-syntax"> = </span><span class="identifier-syntax">glk_stream_iterate</span><span class="plain-syntax">(0, </span><span class="identifier-syntax">gg_arguments</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">while</span><span class="plain-syntax"> (</span><span class="identifier-syntax">id</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">switch</span><span class="plain-syntax"> (</span><span class="identifier-syntax">gg_arguments</span><span class="plain-syntax">--&gt;0) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">GG_SAVESTR_ROCK</span><span class="plain-syntax">: </span><span class="identifier-syntax">gg_savestr</span><span class="plain-syntax"> = </span><span class="identifier-syntax">id</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">GG_SCRIPTSTR_ROCK</span><span class="plain-syntax">: </span><span class="identifier-syntax">gg_scriptstr</span><span class="plain-syntax"> = </span><span class="identifier-syntax">id</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">GG_COMMANDWSTR_ROCK</span><span class="plain-syntax">: </span><span class="identifier-syntax">gg_commandstr</span><span class="plain-syntax"> = </span><span class="identifier-syntax">id</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">gg_command_reading</span><span class="plain-syntax"> = </span><span class="reserved-syntax">false</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">GG_COMMANDRSTR_ROCK</span><span class="plain-syntax">: </span><span class="identifier-syntax">gg_commandstr</span><span class="plain-syntax"> = </span><span class="identifier-syntax">id</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">gg_command_reading</span><span class="plain-syntax"> = </span><span class="reserved-syntax">true</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">default</span><span class="plain-syntax">: </span><span class="identifier-syntax">IdentifyGlkObject</span><span class="plain-syntax">(1, </span><span class="constant-syntax">1</span><span class="plain-syntax">, </span><span class="identifier-syntax">id</span><span class="plain-syntax">, </span><span class="identifier-syntax">gg_arguments</span><span class="plain-syntax">--&gt;0);</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">id</span><span class="plain-syntax"> = </span><span class="identifier-syntax">glk_stream_iterate</span><span class="plain-syntax">(</span><span class="identifier-syntax">id</span><span class="plain-syntax">, </span><span class="identifier-syntax">gg_arguments</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">id</span><span class="plain-syntax"> = </span><span class="identifier-syntax">glk_window_iterate</span><span class="plain-syntax">(0, </span><span class="identifier-syntax">gg_arguments</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">while</span><span class="plain-syntax"> (</span><span class="identifier-syntax">id</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">switch</span><span class="plain-syntax"> (</span><span class="identifier-syntax">gg_arguments</span><span class="plain-syntax">--&gt;0) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">GG_MAINWIN_ROCK</span><span class="plain-syntax">: </span><span class="identifier-syntax">gg_mainwin</span><span class="plain-syntax"> = </span><span class="identifier-syntax">id</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">GG_STATUSWIN_ROCK</span><span class="plain-syntax">: </span><span class="identifier-syntax">gg_statuswin</span><span class="plain-syntax"> = </span><span class="identifier-syntax">id</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">GG_QUOTEWIN_ROCK</span><span class="plain-syntax">: </span><span class="identifier-syntax">gg_quotewin</span><span class="plain-syntax"> = </span><span class="identifier-syntax">id</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">default</span><span class="plain-syntax">: </span><span class="identifier-syntax">IdentifyGlkObject</span><span class="plain-syntax">(1, </span><span class="constant-syntax">0</span><span class="plain-syntax">, </span><span class="identifier-syntax">id</span><span class="plain-syntax">, </span><span class="identifier-syntax">gg_arguments</span><span class="plain-syntax">--&gt;0);</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">id</span><span class="plain-syntax"> = </span><span class="identifier-syntax">glk_window_iterate</span><span class="plain-syntax">(</span><span class="identifier-syntax">id</span><span class="plain-syntax">, </span><span class="identifier-syntax">gg_arguments</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">id</span><span class="plain-syntax"> = </span><span class="identifier-syntax">glk_fileref_iterate</span><span class="plain-syntax">(0, </span><span class="identifier-syntax">gg_arguments</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">while</span><span class="plain-syntax"> (</span><span class="identifier-syntax">id</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">switch</span><span class="plain-syntax"> (</span><span class="identifier-syntax">gg_arguments</span><span class="plain-syntax">--&gt;0) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">GG_SCRIPTFREF_ROCK</span><span class="plain-syntax">: </span><span class="identifier-syntax">gg_scriptfref</span><span class="plain-syntax"> = </span><span class="identifier-syntax">id</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">default</span><span class="plain-syntax">: </span><span class="identifier-syntax">IdentifyGlkObject</span><span class="plain-syntax">(1, </span><span class="constant-syntax">2</span><span class="plain-syntax">, </span><span class="identifier-syntax">id</span><span class="plain-syntax">, </span><span class="identifier-syntax">gg_arguments</span><span class="plain-syntax">--&gt;0);</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">id</span><span class="plain-syntax"> = </span><span class="identifier-syntax">glk_fileref_iterate</span><span class="plain-syntax">(</span><span class="identifier-syntax">id</span><span class="plain-syntax">, </span><span class="identifier-syntax">gg_arguments</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">glk_gestalt</span><span class="plain-syntax">(</span><span class="identifier-syntax">gestalt_Sound</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">id</span><span class="plain-syntax"> = </span><span class="identifier-syntax">glk_schannel_iterate</span><span class="plain-syntax">(0, </span><span class="identifier-syntax">gg_arguments</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">while</span><span class="plain-syntax"> (</span><span class="identifier-syntax">id</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">switch</span><span class="plain-syntax"> (</span><span class="identifier-syntax">gg_arguments</span><span class="plain-syntax">--&gt;0) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">GG_FOREGROUNDCHAN_ROCK</span><span class="plain-syntax">: </span><span class="identifier-syntax">gg_foregroundchan</span><span class="plain-syntax"> = </span><span class="identifier-syntax">id</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">GG_BACKGROUNDCHAN_ROCK</span><span class="plain-syntax">: </span><span class="identifier-syntax">gg_backgroundchan</span><span class="plain-syntax"> = </span><span class="identifier-syntax">id</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">default</span><span class="plain-syntax">: </span><span class="identifier-syntax">IdentifyGlkObject</span><span class="plain-syntax">(1, </span><span class="constant-syntax">3</span><span class="plain-syntax">, </span><span class="identifier-syntax">id</span><span class="plain-syntax">, </span><span class="identifier-syntax">gg_arguments</span><span class="plain-syntax">--&gt;0);</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">id</span><span class="plain-syntax"> = </span><span class="identifier-syntax">glk_schannel_iterate</span><span class="plain-syntax">(</span><span class="identifier-syntax">id</span><span class="plain-syntax">, </span><span class="identifier-syntax">gg_arguments</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">gg_foregroundchan</span><span class="plain-syntax"> ~= </span><span class="constant-syntax">0</span><span class="plain-syntax">) { </span><span class="identifier-syntax">glk_schannel_stop</span><span class="plain-syntax">(</span><span class="identifier-syntax">gg_foregroundchan</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">gg_backgroundchan</span><span class="plain-syntax"> ~= </span><span class="constant-syntax">0</span><span class="plain-syntax">) { </span><span class="identifier-syntax">glk_schannel_stop</span><span class="plain-syntax">(</span><span class="identifier-syntax">gg_backgroundchan</span><span class="plain-syntax">); }</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="comment-syntax">Tell the game to tie up any loose ends.</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">IdentifyGlkObject</span><span class="plain-syntax">(2);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">rfalse</span><span class="plain-syntax">;</span>
<span class="plain-syntax">];</span>
</pre>
<p class="commentary firstcommentary"><a id="SP4" class="paragraph-anchor"></a><b>&#167;4. Debugging verb. </b>This powers the GLKLIST command, when there's a command parser to read it.
</p>
<pre class="displayed-code all-displayed-code code-font">

View file

@ -51,182 +51,126 @@
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../extensions.html">Kits</a></li><li><a href="index.html">Architecture32Kit</a></li><li><b>Startup Template</b></li></ul></div>
<p class="purpose">How programs for this architecture start up the virtual machine.</p>
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>&#167;1. </b>This variable is set at startup, to avoid asking the interpreter over
and over again.
<ul class="toc"><li><a href="S-str.html#SP2">&#167;2. Capture startup text</a></li><li><a href="S-str.html#SP3">&#167;3. Set up the Glk objects</a></li></ul><hr class="tocbar">
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>&#167;1. </b><span class="extract"><span class="extract-syntax">VM_Check_Functionality</span></span> checks that we are running in a Glk interpreter,
as well as that it supports the minimum requirements, which are currently
that Glk supports unicode, and Glulx supports real numbers. If one of those
requirements is not met an error message will be shown before quitting.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="identifier-syntax">Global</span><span class="plain-syntax"> </span><span class="identifier-syntax">unicode_gestalt_ok</span><span class="plain-syntax">; </span><span class="comment-syntax">Set if interpreter supports Unicode</span>
</pre>
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>&#167;2. </b><span class="extract"><span class="extract-syntax">VM_Initialise()</span></span> is almost the first routine called, except that the
"starting the virtual machine" activity is allowed to go first; and,
come to think of it, memory allocation has to be set up before even that,
and that in turn calls <span class="extract"><span class="extract-syntax">VM_PreInitialise()</span></span> to do the absolute minimum.
</p>
<p class="commentary">Arrangements are a little different here compared with the 16-bit architecture,
because some data is retained in the case of a restart.
</p>
<p class="commentary">(Many thanks are due to Eliuk Blau, who found several tricky timing errors
here and elsewhere in the Glulx-specific code. Frankly, I feel like hanging
a sign on the following routines which reads "Congratulations on bringing
light to the Dark Room.")
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax">[ </span><span class="identifier-syntax">VM_PreInitialise</span><span class="plain-syntax"> </span><span class="identifier-syntax">res</span><span class="plain-syntax">;</span>
<span class="plain-syntax">[ </span><span class="identifier-syntax">VM_Check_Functionality</span><span class="plain-syntax"> </span><span class="identifier-syntax">res</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> @</span><span class="identifier-syntax">gestalt</span><span class="plain-syntax"> </span><span class="constant-syntax">4</span><span class="plain-syntax"> </span><span class="constant-syntax">2</span><span class="plain-syntax"> </span><span class="identifier-syntax">res</span><span class="plain-syntax">; </span><span class="comment-syntax">Test if this interpreter has Glk...</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">res</span><span class="plain-syntax"> == </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">quit</span><span class="plain-syntax">; </span><span class="comment-syntax">...without which there would be nothing we could do</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">unicode_gestalt_ok</span><span class="plain-syntax"> = </span><span class="reserved-syntax">false</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">glk_gestalt</span><span class="plain-syntax">(</span><span class="identifier-syntax">gestalt_Unicode</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">))</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">unicode_gestalt_ok</span><span class="plain-syntax"> = </span><span class="reserved-syntax">true</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="comment-syntax">Set the VM's I/O system to be Glk.</span>
<span class="plain-syntax"> @</span><span class="identifier-syntax">setiosys</span><span class="plain-syntax"> </span><span class="constant-syntax">2</span><span class="plain-syntax"> </span><span class="constant-syntax">0</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">glk_gestalt</span><span class="plain-syntax">(</span><span class="identifier-syntax">gestalt_Unicode</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Fatal_Error</span><span class="plain-syntax">(</span><span class="string-syntax">"This storyfile can only be run in an unicode interpreter."</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> @</span><span class="identifier-syntax">gestalt</span><span class="plain-syntax"> </span><span class="constant-syntax">11</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax"> </span><span class="identifier-syntax">res</span><span class="plain-syntax">; </span><span class="comment-syntax">Test if this interpreter supports real numbers...</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">res</span><span class="plain-syntax"> == </span><span class="constant-syntax">0</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Fatal_Error</span><span class="plain-syntax">(</span><span class="string-syntax">"This storyfile can only be run in a Glulx interpreter that supports floating-point arithmetic."</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax">];</span>
<span class="plain-syntax">[ </span><span class="identifier-syntax">VM_Initialise</span><span class="plain-syntax"> </span><span class="identifier-syntax">res</span><span class="plain-syntax"> </span><span class="identifier-syntax">sty</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">gestalt</span><span class="plain-syntax"> </span><span class="constant-syntax">4</span><span class="plain-syntax"> </span><span class="constant-syntax">2</span><span class="plain-syntax"> </span><span class="identifier-syntax">res</span><span class="plain-syntax">; </span><span class="comment-syntax">Test if this interpreter has Glk...</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">res</span><span class="plain-syntax"> == </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">quit</span><span class="plain-syntax">; </span><span class="comment-syntax">...without which there would be nothing we could do</span>
<span class="plain-syntax">[ </span><span class="identifier-syntax">Fatal_Error</span><span class="plain-syntax"> </span><span class="identifier-syntax">msg</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">gg_mainwin</span><span class="plain-syntax"> = </span><span class="identifier-syntax">glk_window_open</span><span class="plain-syntax">(0, </span><span class="constant-syntax">0</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">, </span><span class="identifier-syntax">wintype_TextBuffer</span><span class="plain-syntax">, </span><span class="identifier-syntax">GG_MAINWIN_ROCK</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">glk_set_window</span><span class="plain-syntax">(</span><span class="identifier-syntax">gg_mainwin</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">"Fatal Error: "</span><span class="plain-syntax">, (</span><span class="reserved-syntax">string</span><span class="plain-syntax">) </span><span class="identifier-syntax">msg</span><span class="plain-syntax">, </span><span class="string-syntax">"^"</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">quit</span><span class="plain-syntax">;</span>
<span class="plain-syntax">];</span>
</pre>
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>&#167;2. Capture startup text. </b>It is a semi-common problem for authors to do something which results in text
being printed before any Glk windows have been opened, which results in a fatal
interpreter error. (Or even worse, an extension is the cause, which the author
should not be expected to know the internal details of.) This is very frustrating,
as the author often will not know what is the cause of the error as any error
messages can't be shown until a Glk window is created; indeed it's often an error
message that is trying to be printed, which the author will never see. To help
authors, while we wait for the virtual machine to be set up (including a Glk
window) we can instead send any text to a memory stream. Then once the VM is ready
we can check if any text was sent to the memory stream, and then finally display
it in the window. We only capture 256 bytes, which may not be all that is attempted
to be printed, but hopefully it gives authors enough to identify the problem.
</p>
<span class="plain-syntax"> </span><span class="comment-syntax">First, we must go through all the Glk objects that exist, and see</span>
<span class="plain-syntax"> </span><span class="comment-syntax">if we created any of them. One might think this strange, since the</span>
<span class="plain-syntax"> </span><span class="comment-syntax">program has just started running, but remember that the player might</span>
<span class="plain-syntax"> </span><span class="comment-syntax">have just typed "restart".</span>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">PRE_STARTUP_TEXT_CAPTURE_MAX_LEN</span><span class="plain-syntax"> = </span><span class="constant-syntax">256</span><span class="plain-syntax">;</span>
<span class="reserved-syntax">Array</span><span class="plain-syntax"> </span><span class="identifier-syntax">Pre_Startup_Text_Capture_Buffer</span><span class="plain-syntax"> -&gt; </span><span class="identifier-syntax">PRE_STARTUP_TEXT_CAPTURE_MAX_LEN</span><span class="plain-syntax">;</span>
<span class="reserved-syntax">Array</span><span class="plain-syntax"> </span><span class="identifier-syntax">Pre_Startup_Text_Capture_Results</span><span class="plain-syntax"> --&gt; </span><span class="constant-syntax">2</span><span class="plain-syntax">;</span>
<span class="identifier-syntax">Global</span><span class="plain-syntax"> </span><span class="identifier-syntax">Pre_Startup_Text_Capture_Stream</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">GGRecoverObjects</span><span class="plain-syntax">();</span>
<span class="plain-syntax">[ </span><span class="identifier-syntax">CAPTURE_STARTUP_TEXT_R</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Pre_Startup_Text_Capture_Stream</span><span class="plain-syntax"> = </span><span class="identifier-syntax">glk_stream_open_memory</span><span class="plain-syntax">(</span><span class="identifier-syntax">Pre_Startup_Text_Capture_Buffer</span><span class="plain-syntax">, </span><span class="identifier-syntax">PRE_STARTUP_TEXT_CAPTURE_MAX_LEN</span><span class="plain-syntax">, </span><span class="identifier-syntax">filemode_Write</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">glk_stream_set_current</span><span class="plain-syntax">(</span><span class="identifier-syntax">Pre_Startup_Text_Capture_Stream</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">rfalse</span><span class="plain-syntax">;</span>
<span class="plain-syntax">];</span>
<span class="plain-syntax"> </span><span class="comment-syntax">Sound channel initialisation, and RNG fixing, must be done now rather</span>
<span class="plain-syntax"> </span><span class="comment-syntax">than later in case InitGlkWindow() returns a non-zero value.</span>
<span class="plain-syntax">[ </span><span class="identifier-syntax">END_CAPTURE_STARTUP_TEXT_R</span><span class="plain-syntax"> </span><span class="identifier-syntax">len</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">glk_stream_close</span><span class="plain-syntax">(</span><span class="identifier-syntax">Pre_Startup_Text_Capture_Stream</span><span class="plain-syntax">, </span><span class="identifier-syntax">Pre_Startup_Text_Capture_Results</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">len</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Pre_Startup_Text_Capture_Results</span><span class="plain-syntax">--&gt;1;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">len</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">len</span><span class="plain-syntax"> &gt; </span><span class="identifier-syntax">PRE_STARTUP_TEXT_CAPTURE_MAX_LEN</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">len</span><span class="plain-syntax"> = </span><span class="identifier-syntax">PRE_STARTUP_TEXT_CAPTURE_MAX_LEN</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">glk_put_buffer</span><span class="plain-syntax">(</span><span class="identifier-syntax">Pre_Startup_Text_Capture_Buffer</span><span class="plain-syntax">, </span><span class="identifier-syntax">len</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">rfalse</span><span class="plain-syntax">;</span>
<span class="plain-syntax">];</span>
</pre>
<p class="commentary firstcommentary"><a id="SP3" class="paragraph-anchor"></a><b>&#167;3. Set up the Glk objects. </b></p>
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax">[ </span><span class="identifier-syntax">SOUND_CHANNEL_INIT_R</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">glk_gestalt</span><span class="plain-syntax">(</span><span class="identifier-syntax">gestalt_Sound</span><span class="plain-syntax">, </span><span class="constant-syntax">0</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">gg_foregroundchan</span><span class="plain-syntax"> == </span><span class="constant-syntax">0</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">gg_foregroundchan</span><span class="plain-syntax"> == </span><span class="constant-syntax">0</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">gg_foregroundchan</span><span class="plain-syntax"> = </span><span class="identifier-syntax">glk_schannel_create</span><span class="plain-syntax">(</span><span class="identifier-syntax">GG_FOREGROUNDCHAN_ROCK</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">gg_backgroundchan</span><span class="plain-syntax"> == </span><span class="constant-syntax">0</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">gg_backgroundchan</span><span class="plain-syntax"> == </span><span class="constant-syntax">0</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">gg_backgroundchan</span><span class="plain-syntax"> = </span><span class="identifier-syntax">glk_schannel_create</span><span class="plain-syntax">(</span><span class="identifier-syntax">GG_BACKGROUNDCHAN_ROCK</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">rfalse</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">BasicInformKit</span><span class="plain-syntax">`</span><span class="identifier-syntax">FIX_RNG_CFGF</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> @</span><span class="reserved-syntax">random</span><span class="plain-syntax"> </span><span class="constant-syntax">10000</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">i</span><span class="plain-syntax"> = -</span><span class="identifier-syntax">i</span><span class="plain-syntax">-2000;</span>
<span class="plain-syntax"> @</span><span class="identifier-syntax">setrandom</span><span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">res</span><span class="plain-syntax"> = </span><span class="identifier-syntax">InitGlkWindow</span><span class="plain-syntax">(0);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">res</span><span class="plain-syntax"> ~= </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="comment-syntax">Now, gg_mainwin and gg_storywin might already be set. If not, set them.</span>
<span class="plain-syntax">[ </span><span class="identifier-syntax">OPEN_BUILT_IN_WINDOWS_R</span><span class="plain-syntax"> </span><span class="identifier-syntax">res</span><span class="plain-syntax"> </span><span class="identifier-syntax">sty</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="comment-syntax">gg_mainwin and gg_storywin might already be set. If not, create them.</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">gg_mainwin</span><span class="plain-syntax"> == </span><span class="constant-syntax">0</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="comment-syntax">Open the story window.</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">res</span><span class="plain-syntax"> = </span><span class="identifier-syntax">InitGlkWindow</span><span class="plain-syntax">(</span><span class="identifier-syntax">GG_MAINWIN_ROCK</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">res</span><span class="plain-syntax"> == </span><span class="constant-syntax">0</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="comment-syntax">Left-justify the header style</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">glk_stylehint_set</span><span class="plain-syntax">(</span><span class="identifier-syntax">wintype_TextBuffer</span><span class="plain-syntax">, </span><span class="identifier-syntax">style_Header</span><span class="plain-syntax">, </span><span class="identifier-syntax">stylehint_Justification</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="comment-syntax">Try to make emphasized type in italics and not boldface</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">glk_stylehint_set</span><span class="plain-syntax">(</span><span class="identifier-syntax">wintype_TextBuffer</span><span class="plain-syntax">, </span><span class="identifier-syntax">style_Emphasized</span><span class="plain-syntax">, </span><span class="identifier-syntax">stylehint_Weight</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">glk_stylehint_set</span><span class="plain-syntax">(</span><span class="identifier-syntax">wintype_TextBuffer</span><span class="plain-syntax">, </span><span class="identifier-syntax">style_Emphasized</span><span class="plain-syntax">, </span><span class="identifier-syntax">stylehint_Oblique</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">gg_mainwin</span><span class="plain-syntax"> = </span><span class="identifier-syntax">glk_window_open</span><span class="plain-syntax">(0, </span><span class="constant-syntax">0</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">, </span><span class="identifier-syntax">wintype_TextBuffer</span><span class="plain-syntax">, </span><span class="identifier-syntax">GG_MAINWIN_ROCK</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="comment-syntax">Left-justify the header style</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">glk_stylehint_set</span><span class="plain-syntax">(</span><span class="identifier-syntax">wintype_TextBuffer</span><span class="plain-syntax">, </span><span class="identifier-syntax">style_Header</span><span class="plain-syntax">, </span><span class="identifier-syntax">stylehint_Justification</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="comment-syntax">Try to make emphasized type in italics and not boldface</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">glk_stylehint_set</span><span class="plain-syntax">(</span><span class="identifier-syntax">wintype_TextBuffer</span><span class="plain-syntax">, </span><span class="identifier-syntax">style_Emphasized</span><span class="plain-syntax">, </span><span class="identifier-syntax">stylehint_Weight</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">glk_stylehint_set</span><span class="plain-syntax">(</span><span class="identifier-syntax">wintype_TextBuffer</span><span class="plain-syntax">, </span><span class="identifier-syntax">style_Emphasized</span><span class="plain-syntax">, </span><span class="identifier-syntax">stylehint_Oblique</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">gg_mainwin</span><span class="plain-syntax"> = </span><span class="identifier-syntax">glk_window_open</span><span class="plain-syntax">(0, </span><span class="constant-syntax">0</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">, </span><span class="identifier-syntax">wintype_TextBuffer</span><span class="plain-syntax">, </span><span class="identifier-syntax">GG_MAINWIN_ROCK</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">gg_mainwin</span><span class="plain-syntax"> == </span><span class="constant-syntax">0</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="comment-syntax">If we can't even open one window, give in</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">quit</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">gg_mainwin</span><span class="plain-syntax"> == </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">quit</span><span class="plain-syntax">; </span><span class="comment-syntax">If we can't even open one window, give in</span>
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
<span class="plain-syntax"> </span><span class="comment-syntax">There was already a story window. We should erase it.</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">glk_window_clear</span><span class="plain-syntax">(</span><span class="identifier-syntax">gg_mainwin</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">gg_statuswin</span><span class="plain-syntax"> == </span><span class="constant-syntax">0</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">res</span><span class="plain-syntax"> = </span><span class="identifier-syntax">InitGlkWindow</span><span class="plain-syntax">(</span><span class="identifier-syntax">GG_STATUSWIN_ROCK</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">res</span><span class="plain-syntax"> == </span><span class="constant-syntax">0</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">statuswin_cursize</span><span class="plain-syntax"> = </span><span class="identifier-syntax">statuswin_size</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="identifier-syntax">sty</span><span class="plain-syntax">=0: </span><span class="identifier-syntax">sty</span><span class="plain-syntax">&lt;</span><span class="identifier-syntax">style_NUMSTYLES</span><span class="plain-syntax">: </span><span class="identifier-syntax">sty</span><span class="plain-syntax">++)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">glk_stylehint_set</span><span class="plain-syntax">(</span><span class="identifier-syntax">wintype_TextGrid</span><span class="plain-syntax">, </span><span class="identifier-syntax">sty</span><span class="plain-syntax">, </span><span class="identifier-syntax">stylehint_ReverseColor</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">gg_statuswin</span><span class="plain-syntax"> =</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">glk_window_open</span><span class="plain-syntax">(</span><span class="identifier-syntax">gg_mainwin</span><span class="plain-syntax">, </span><span class="identifier-syntax">winmethod_Fixed</span><span class="plain-syntax"> + </span><span class="identifier-syntax">winmethod_Above</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">statuswin_cursize</span><span class="plain-syntax">, </span><span class="identifier-syntax">wintype_TextGrid</span><span class="plain-syntax">, </span><span class="identifier-syntax">GG_STATUSWIN_ROCK</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">statuswin_cursize</span><span class="plain-syntax"> = </span><span class="identifier-syntax">statuswin_size</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="identifier-syntax">sty</span><span class="plain-syntax">=0: </span><span class="identifier-syntax">sty</span><span class="plain-syntax"> &lt; </span><span class="identifier-syntax">style_NUMSTYLES</span><span class="plain-syntax">: </span><span class="identifier-syntax">sty</span><span class="plain-syntax">++) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">glk_stylehint_set</span><span class="plain-syntax">(</span><span class="identifier-syntax">wintype_TextGrid</span><span class="plain-syntax">, </span><span class="identifier-syntax">sty</span><span class="plain-syntax">, </span><span class="identifier-syntax">stylehint_ReverseColor</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">gg_statuswin</span><span class="plain-syntax"> =</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">glk_window_open</span><span class="plain-syntax">(</span><span class="identifier-syntax">gg_mainwin</span><span class="plain-syntax">, </span><span class="identifier-syntax">winmethod_Fixed</span><span class="plain-syntax"> + </span><span class="identifier-syntax">winmethod_Above</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">statuswin_cursize</span><span class="plain-syntax">, </span><span class="identifier-syntax">wintype_TextGrid</span><span class="plain-syntax">, </span><span class="identifier-syntax">GG_STATUSWIN_ROCK</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="comment-syntax">It's possible that the status window couldn't be opened, in which case</span>
<span class="plain-syntax"> </span><span class="comment-syntax">gg_statuswin is now zero. We must allow for that later on.</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">glk_set_window</span><span class="plain-syntax">(</span><span class="identifier-syntax">gg_mainwin</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">InitGlkWindow</span><span class="plain-syntax">(1);</span>
<span class="plain-syntax"> </span><span class="comment-syntax">Empty the parse buffer (see bug 0001451)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">buffer3</span><span class="plain-syntax">--&gt;0 = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
<span class="plain-syntax">];</span>
<span class="plain-syntax">[ </span><span class="identifier-syntax">GGRecoverObjects</span><span class="plain-syntax"> </span><span class="identifier-syntax">id</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="comment-syntax">If GGRecoverObjects() has been called, all these stored IDs are</span>
<span class="plain-syntax"> </span><span class="comment-syntax">invalid, so we start by clearing them all out.</span>
<span class="plain-syntax"> </span><span class="comment-syntax">(In fact, after a restoreundo, some of them may still be good.</span>
<span class="plain-syntax"> </span><span class="comment-syntax">For simplicity, though, we assume the general case.)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">gg_mainwin</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">gg_statuswin</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">gg_quotewin</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">gg_scriptfref</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">gg_scriptstr</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">gg_savestr</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">statuswin_cursize</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">gg_foregroundchan</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">gg_backgroundchan</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">gg_commandstr</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">gg_command_reading</span><span class="plain-syntax"> = </span><span class="reserved-syntax">false</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="comment-syntax">Also tell the game to clear its object references.</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">IdentifyGlkObject</span><span class="plain-syntax">(0);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">id</span><span class="plain-syntax"> = </span><span class="identifier-syntax">glk_stream_iterate</span><span class="plain-syntax">(0, </span><span class="identifier-syntax">gg_arguments</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">while</span><span class="plain-syntax"> (</span><span class="identifier-syntax">id</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">switch</span><span class="plain-syntax"> (</span><span class="identifier-syntax">gg_arguments</span><span class="plain-syntax">--&gt;0) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">GG_SAVESTR_ROCK</span><span class="plain-syntax">: </span><span class="identifier-syntax">gg_savestr</span><span class="plain-syntax"> = </span><span class="identifier-syntax">id</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">GG_SCRIPTSTR_ROCK</span><span class="plain-syntax">: </span><span class="identifier-syntax">gg_scriptstr</span><span class="plain-syntax"> = </span><span class="identifier-syntax">id</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">GG_COMMANDWSTR_ROCK</span><span class="plain-syntax">: </span><span class="identifier-syntax">gg_commandstr</span><span class="plain-syntax"> = </span><span class="identifier-syntax">id</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">gg_command_reading</span><span class="plain-syntax"> = </span><span class="reserved-syntax">false</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">GG_COMMANDRSTR_ROCK</span><span class="plain-syntax">: </span><span class="identifier-syntax">gg_commandstr</span><span class="plain-syntax"> = </span><span class="identifier-syntax">id</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">gg_command_reading</span><span class="plain-syntax"> = </span><span class="reserved-syntax">true</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">default</span><span class="plain-syntax">: </span><span class="identifier-syntax">IdentifyGlkObject</span><span class="plain-syntax">(1, </span><span class="constant-syntax">1</span><span class="plain-syntax">, </span><span class="identifier-syntax">id</span><span class="plain-syntax">, </span><span class="identifier-syntax">gg_arguments</span><span class="plain-syntax">--&gt;0);</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">id</span><span class="plain-syntax"> = </span><span class="identifier-syntax">glk_stream_iterate</span><span class="plain-syntax">(</span><span class="identifier-syntax">id</span><span class="plain-syntax">, </span><span class="identifier-syntax">gg_arguments</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">id</span><span class="plain-syntax"> = </span><span class="identifier-syntax">glk_window_iterate</span><span class="plain-syntax">(0, </span><span class="identifier-syntax">gg_arguments</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">while</span><span class="plain-syntax"> (</span><span class="identifier-syntax">id</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">switch</span><span class="plain-syntax"> (</span><span class="identifier-syntax">gg_arguments</span><span class="plain-syntax">--&gt;0) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">GG_MAINWIN_ROCK</span><span class="plain-syntax">: </span><span class="identifier-syntax">gg_mainwin</span><span class="plain-syntax"> = </span><span class="identifier-syntax">id</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">GG_STATUSWIN_ROCK</span><span class="plain-syntax">: </span><span class="identifier-syntax">gg_statuswin</span><span class="plain-syntax"> = </span><span class="identifier-syntax">id</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">GG_QUOTEWIN_ROCK</span><span class="plain-syntax">: </span><span class="identifier-syntax">gg_quotewin</span><span class="plain-syntax"> = </span><span class="identifier-syntax">id</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">default</span><span class="plain-syntax">: </span><span class="identifier-syntax">IdentifyGlkObject</span><span class="plain-syntax">(1, </span><span class="constant-syntax">0</span><span class="plain-syntax">, </span><span class="identifier-syntax">id</span><span class="plain-syntax">, </span><span class="identifier-syntax">gg_arguments</span><span class="plain-syntax">--&gt;0);</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">id</span><span class="plain-syntax"> = </span><span class="identifier-syntax">glk_window_iterate</span><span class="plain-syntax">(</span><span class="identifier-syntax">id</span><span class="plain-syntax">, </span><span class="identifier-syntax">gg_arguments</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">id</span><span class="plain-syntax"> = </span><span class="identifier-syntax">glk_fileref_iterate</span><span class="plain-syntax">(0, </span><span class="identifier-syntax">gg_arguments</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">while</span><span class="plain-syntax"> (</span><span class="identifier-syntax">id</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">switch</span><span class="plain-syntax"> (</span><span class="identifier-syntax">gg_arguments</span><span class="plain-syntax">--&gt;0) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">GG_SCRIPTFREF_ROCK</span><span class="plain-syntax">: </span><span class="identifier-syntax">gg_scriptfref</span><span class="plain-syntax"> = </span><span class="identifier-syntax">id</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">default</span><span class="plain-syntax">: </span><span class="identifier-syntax">IdentifyGlkObject</span><span class="plain-syntax">(1, </span><span class="constant-syntax">2</span><span class="plain-syntax">, </span><span class="identifier-syntax">id</span><span class="plain-syntax">, </span><span class="identifier-syntax">gg_arguments</span><span class="plain-syntax">--&gt;0);</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">id</span><span class="plain-syntax"> = </span><span class="identifier-syntax">glk_fileref_iterate</span><span class="plain-syntax">(</span><span class="identifier-syntax">id</span><span class="plain-syntax">, </span><span class="identifier-syntax">gg_arguments</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">glk_gestalt</span><span class="plain-syntax">(</span><span class="identifier-syntax">gestalt_Sound</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">id</span><span class="plain-syntax"> = </span><span class="identifier-syntax">glk_schannel_iterate</span><span class="plain-syntax">(0, </span><span class="identifier-syntax">gg_arguments</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">while</span><span class="plain-syntax"> (</span><span class="identifier-syntax">id</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">switch</span><span class="plain-syntax"> (</span><span class="identifier-syntax">gg_arguments</span><span class="plain-syntax">--&gt;0) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">GG_FOREGROUNDCHAN_ROCK</span><span class="plain-syntax">: </span><span class="identifier-syntax">gg_foregroundchan</span><span class="plain-syntax"> = </span><span class="identifier-syntax">id</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">GG_BACKGROUNDCHAN_ROCK</span><span class="plain-syntax">: </span><span class="identifier-syntax">gg_backgroundchan</span><span class="plain-syntax"> = </span><span class="identifier-syntax">id</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">default</span><span class="plain-syntax">: </span><span class="identifier-syntax">IdentifyGlkObject</span><span class="plain-syntax">(1, </span><span class="constant-syntax">3</span><span class="plain-syntax">, </span><span class="identifier-syntax">id</span><span class="plain-syntax">, </span><span class="identifier-syntax">gg_arguments</span><span class="plain-syntax">--&gt;0);</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">id</span><span class="plain-syntax"> = </span><span class="identifier-syntax">glk_schannel_iterate</span><span class="plain-syntax">(</span><span class="identifier-syntax">id</span><span class="plain-syntax">, </span><span class="identifier-syntax">gg_arguments</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">gg_foregroundchan</span><span class="plain-syntax"> ~= </span><span class="constant-syntax">0</span><span class="plain-syntax">) { </span><span class="identifier-syntax">glk_schannel_stop</span><span class="plain-syntax">(</span><span class="identifier-syntax">gg_foregroundchan</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">gg_backgroundchan</span><span class="plain-syntax"> ~= </span><span class="constant-syntax">0</span><span class="plain-syntax">) { </span><span class="identifier-syntax">glk_schannel_stop</span><span class="plain-syntax">(</span><span class="identifier-syntax">gg_backgroundchan</span><span class="plain-syntax">); }</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="comment-syntax">Tell the game to tie up any loose ends.</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">IdentifyGlkObject</span><span class="plain-syntax">(2);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">rfalse</span><span class="plain-syntax">;</span>
<span class="plain-syntax">];</span>
</pre>
<nav role="progress"><div class="progresscontainer">

View file

@ -52,7 +52,7 @@
<li>
<p class="chapterentry"><a href="S-cpb.html">
<spon class="sectiontitle">Capabilities Template</span></a> -
<span class="sectionpurpose">Miscellaneous capabilities of the 16-bit architecture.</span></p>
<span class="sectionpurpose">Miscellaneous capabilities of the 32-bit architecture.</span></p>
</li>
<li>
<p class="chapterentry"><a href="S-glk.html">

View file

@ -277,7 +277,6 @@ to I7.
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">RTP_HEAPERROR</span><span class="plain-syntax"> = </span><span class="constant-syntax">49</span><span class="plain-syntax">;</span>
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">RTP_LISTRANGEERROR</span><span class="plain-syntax"> = </span><span class="constant-syntax">50</span><span class="plain-syntax">;</span>
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">RTP_REGEXPSYNTAXERROR</span><span class="plain-syntax"> = </span><span class="constant-syntax">51</span><span class="plain-syntax">;</span>
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">RTP_NOGLULXUNICODE</span><span class="plain-syntax"> = </span><span class="constant-syntax">52</span><span class="plain-syntax">;</span>
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">RTP_BACKDROPONLY</span><span class="plain-syntax"> = </span><span class="constant-syntax">53</span><span class="plain-syntax">;</span>
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">RTP_NOTTHING</span><span class="plain-syntax"> = </span><span class="constant-syntax">54</span><span class="plain-syntax">;</span>
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">RTP_SCENEHASNTSTARTED</span><span class="plain-syntax"> = </span><span class="constant-syntax">55</span><span class="plain-syntax">;</span>

View file

@ -205,8 +205,6 @@ original source text (though in fact I7 does not use this at present).
<span class="plain-syntax"> </span><span class="string-syntax">"always be 0 or more.^"</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">RTP_REGEXPSYNTAXERROR</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">"Syntax error in regular expression.^"</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">RTP_NOGLULXUNICODE</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">"This interpreter does not support Unicode.^"</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">RTP_NEGATIVEROOT</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">"You can't take the square root of a negative number.^"</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">RTP_CANTITERATE</span><span class="plain-syntax">:</span>

View file

@ -51,29 +51,131 @@
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../extensions.html">Kits</a></li><li><a href="index.html">BasicInformKit</a></li><li><b>Startup Template</b></li></ul></div>
<p class="purpose">How the program starts up, in a Basic Inform project.</p>
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>&#167;1. </b>Because the functions below are replaced by <span class="extract"><span class="extract-syntax">WorldModelKit</span></span> alternatives
<ul class="toc"><li><a href="S-str.html#SP1">&#167;1. Summary</a></li><li><a href="S-str.html#SP2">&#167;2. The startup sequence</a></li><li><a href="S-str.html#SP3">&#167;3. Initialise Memory Rule</a></li><li><a href="S-str.html#SP4">&#167;4. Seed Random Number Generator Rule</a></li></ul><hr class="tocbar">
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>&#167;1. Summary. </b>These rules perform the essential tasks required for setting up the virtual
machine. This includes checking that we are running in a compatible interpreter,
and setting up various built in Glk objects (when running in a Glk interpreter).
</p>
<p class="commentary">These rules here are the ones which get the basic machinery working
to the point where it is safe to run arbitrary I7 source text. They necessarily
do very low-level things, and it is not guaranteed that I7 phrases will behave
to specification if executed before these early rules have finished. So it
is hazardous to obstruct or alter them.
</p>
<p class="commentary">Arrangements are a little different here on the Z-machine, because some
data is retained in the case of a restart.
</p>
<p class="commentary">(Many thanks are due to Eliuk Blau, who found several tricky timing errors
here and elsewhere in the Glulx-specific code. Frankly, I feel like hanging
a sign on the following routines which reads "Congratulations on bringing
light to the Dark Room.")
</p>
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>&#167;2. The startup sequence. </b>As of IE-0022 we have a simplified startup sequence. <span class="extract"><span class="extract-syntax">Main</span></span> calls the <span class="extract"><span class="extract-syntax">Startup</span></span>
function, which does two things: run an Architecture16Kit/Architecture32Kit function
<span class="extract"><span class="extract-syntax">VM_Check_Functionality</span></span> which checks the VM meets the minimum requirements for Inform
(in Glulx it would test a few Glulx/Glk gestalts; in Z-Code it would probably do
nothing.) Then it runs the Startup Rules. And that's it - everything else in the
startup sequence is now in Inform-accessible rules.
</p>
<p class="commentary">Because the functions below are replaced by <span class="extract"><span class="extract-syntax">WorldModelKit</span></span> alternatives
if that kit is present, the following applies only to Basic Inform programs
where <span class="extract"><span class="extract-syntax">WorldModelKit</span></span> is not involved.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax">[ </span><span class="identifier-syntax">Main</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">self</span><span class="plain-syntax"> = </span><span class="identifier-syntax">COL_HSIZE</span><span class="plain-syntax">; </span><span class="comment-syntax">To ensure this definition is not optimised out</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Startup</span><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Submain</span><span class="plain-syntax">();</span>
<span class="plain-syntax">];</span>
<span class="plain-syntax">[ </span><span class="identifier-syntax">Startup</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">VM_Check_Functionality</span><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">say__pc</span><span class="plain-syntax"> = </span><span class="identifier-syntax">say__pc</span><span class="plain-syntax"> | </span><span class="identifier-syntax">PARA_NORULEBOOKBREAKS</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">FollowRulebook</span><span class="plain-syntax">(</span><span class="identifier-syntax">STARTUP_RB</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">say__pc</span><span class="plain-syntax"> &amp; </span><span class="identifier-syntax">PARA_NORULEBOOKBREAKS</span><span class="plain-syntax">) </span><span class="identifier-syntax">say__pc</span><span class="plain-syntax"> = </span><span class="identifier-syntax">say__pc</span><span class="plain-syntax"> - </span><span class="identifier-syntax">PARA_NORULEBOOKBREAKS</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">rfalse</span><span class="plain-syntax">;</span>
<span class="plain-syntax">];</span>
</pre>
<p class="commentary firstcommentary"><a id="SP3" class="paragraph-anchor"></a><b>&#167;3. Initialise Memory Rule. </b>This rule amalgamates some minimal initialisations which all need to happen
before we can risk using some of the more exotic I7 kinds:
</p>
<ul class="items"><li>(a) The language definition might call for initialisation, although the
default language of play (English) does not.
</li><li>(b) We start the machinery needed to check that property accesses are
valid during play.
</li><li>(c) We initialise the memory allocation heap, and expand the literal
constants, as hinted above: these are called "block constants" since
they occupy blocks of memory.
</li><li>(d) Some architecture-specific dictionary and parse buffer related globals
are initialised.
</li></ul>
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax">[ </span><span class="identifier-syntax">INITIALISE_MEMORY_R</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">VM_PreInitialise</span><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">LanguageInitialise</span><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">HeapInitialise</span><span class="plain-syntax">(); </span><span class="comment-syntax">Create a completely unused memory allocation heap</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">StackFramingInitialise</span><span class="plain-syntax">(); </span><span class="comment-syntax">Create an empty stack</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">CreateDynamicRelations</span><span class="plain-syntax">(); </span><span class="comment-syntax">Create relation structures on the heap</span>
<span class="plain-syntax"> #</span><span class="identifier-syntax">Ifdef</span><span class="plain-syntax"> </span><span class="identifier-syntax">TARGET_GLULX</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="comment-syntax">Empty the parse buffer (see bug 0001451)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">buffer3</span><span class="plain-syntax">--&gt;0 = </span><span class="constant-syntax">0</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">standard_interpreter</span><span class="plain-syntax"> = </span><span class="identifier-syntax">HDR_TERPSTANDARD</span><span class="plain-syntax">--&gt;0;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">dict_start</span><span class="plain-syntax"> = </span><span class="identifier-syntax">HDR_DICTIONARY</span><span class="plain-syntax">--&gt;0;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">dict_entry_size</span><span class="plain-syntax"> = </span><span class="identifier-syntax">dict_start</span><span class="plain-syntax">-&gt;(</span><span class="identifier-syntax">dict_start</span><span class="plain-syntax">-&gt;0 + </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">dict_start</span><span class="plain-syntax"> = </span><span class="identifier-syntax">dict_start</span><span class="plain-syntax"> + </span><span class="identifier-syntax">dict_start</span><span class="plain-syntax">-&gt;0 + </span><span class="constant-syntax">4</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">dict_end</span><span class="plain-syntax"> = </span><span class="identifier-syntax">dict_start</span><span class="plain-syntax"> + ((</span><span class="identifier-syntax">dict_start</span><span class="plain-syntax"> - </span><span class="constant-syntax">2</span><span class="plain-syntax">)--&gt;0) * </span><span class="identifier-syntax">dict_entry_size</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">buffer</span><span class="plain-syntax">-&gt;0 = </span><span class="identifier-syntax">INPUT_BUFFER_LEN</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">buffer2</span><span class="plain-syntax">-&gt;0 = </span><span class="identifier-syntax">INPUT_BUFFER_LEN</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">buffer3</span><span class="plain-syntax">-&gt;0 = </span><span class="identifier-syntax">INPUT_BUFFER_LEN</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">parse</span><span class="plain-syntax">-&gt;0 = </span><span class="constant-syntax">15</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">parse2</span><span class="plain-syntax">-&gt;0 = </span><span class="constant-syntax">15</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">rfalse</span><span class="plain-syntax">;</span>
<span class="plain-syntax">];</span>
</pre>
<p class="commentary firstcommentary"><a id="SP4" class="paragraph-anchor"></a><b>&#167;4. Seed Random Number Generator Rule. </b>Unless a seed is provided by Inform, and it won't be for released story files,
the VM's interpreter is supposed to start up with a good seed in its random
number generator: something usually derived from, say, the milliseconds part
of the current time of day, which is unlikely to repeat or show any pattern
in real-world use. However, early Z-machine interpreters often did this quite
badly, starting with poor seed values which meant that the first few random
numbers always had something in common (being fairly small in their range,
for instance). To obviate this we extract and throw away 100 random numbers
to get the generator going, shaking out more obvious early patterns, but
that cannot really help much if the VM interpreter's RNG is badly written.
"Anyone who considers arithmetical methods of producing random digits is,
of course, in a state of sin" (von Neumann).
</p>
<span class="plain-syntax">[ </span><span class="identifier-syntax">Main</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">self</span><span class="plain-syntax"> = </span><span class="identifier-syntax">COL_HSIZE</span><span class="plain-syntax">; </span><span class="comment-syntax">To ensure this definition is not optimised out</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">VM_Initialise</span><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">INITIALISE_MEMORY_R</span><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">SEED_RANDOM_NUMBER_GENERATOR_R</span><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Submain</span><span class="plain-syntax">();</span>
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax">[ </span><span class="identifier-syntax">SEED_RANDOM_NUMBER_GENERATOR_R</span><span class="plain-syntax"> </span><span class="identifier-syntax">i</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">BasicInformKit</span><span class="plain-syntax">`</span><span class="identifier-syntax">FIX_RNG_CFGF</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">TARGET_GLULX</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> @</span><span class="reserved-syntax">random</span><span class="plain-syntax"> </span><span class="constant-syntax">10000</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">i</span><span class="plain-syntax"> = -</span><span class="identifier-syntax">i</span><span class="plain-syntax">-2000;</span>
<span class="plain-syntax"> @</span><span class="identifier-syntax">setrandom</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">Ifnot</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> @</span><span class="reserved-syntax">random</span><span class="plain-syntax"> </span><span class="constant-syntax">10000</span><span class="plain-syntax"> -&gt; </span><span class="identifier-syntax">i</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax"> = -</span><span class="identifier-syntax">i</span><span class="plain-syntax">-2000;</span>
<span class="plain-syntax"> @</span><span class="reserved-syntax">random</span><span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax"> -&gt; </span><span class="identifier-syntax">i</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="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">RNG_SEED_AT_START_OF_PLAY</span><span class="plain-syntax">) </span><span class="identifier-syntax">VM_Seed_RNG</span><span class="plain-syntax">(</span><span class="identifier-syntax">RNG_SEED_AT_START_OF_PLAY</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="identifier-syntax">i</span><span class="plain-syntax">=1: </span><span class="identifier-syntax">i</span><span class="plain-syntax">&lt;=100: </span><span class="identifier-syntax">i</span><span class="plain-syntax">++) </span><span class="reserved-syntax">random</span><span class="plain-syntax">(</span><span class="identifier-syntax">i</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">rfalse</span><span class="plain-syntax">;</span>
<span class="plain-syntax">];</span>
</pre>
<nav role="progress"><div class="progresscontainer">

View file

@ -341,49 +341,45 @@ it's clearer to give two definitions, so:
<span class="plain-syntax"> </span><span class="identifier-syntax">FlexError</span><span class="plain-syntax">(</span><span class="string-syntax">"ran out with too many simultaneous text conversions"</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">unicode_gestalt_ok</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">SuspendRTP</span><span class="plain-syntax">();</span>
<span class="plain-syntax"> .</span><span class="identifier-syntax">RetryWithLargerBuffer</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">saved_stream</span><span class="plain-syntax"> = </span><span class="identifier-syntax">glk_stream_get_current</span><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">stream</span><span class="plain-syntax"> = </span><span class="identifier-syntax">glk_stream_open_memory_uni</span><span class="plain-syntax">(</span><span class="identifier-syntax">buffer</span><span class="plain-syntax">, </span><span class="identifier-syntax">RawBufferSize</span><span class="plain-syntax">, </span><span class="identifier-syntax">filemode_Write</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">glk_stream_set_current</span><span class="plain-syntax">(</span><span class="identifier-syntax">stream</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">SuspendRTP</span><span class="plain-syntax">();</span>
<span class="plain-syntax"> .</span><span class="identifier-syntax">RetryWithLargerBuffer</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">saved_stream</span><span class="plain-syntax"> = </span><span class="identifier-syntax">glk_stream_get_current</span><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">stream</span><span class="plain-syntax"> = </span><span class="identifier-syntax">glk_stream_open_memory_uni</span><span class="plain-syntax">(</span><span class="identifier-syntax">buffer</span><span class="plain-syntax">, </span><span class="identifier-syntax">RawBufferSize</span><span class="plain-syntax">, </span><span class="identifier-syntax">filemode_Write</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">glk_stream_set_current</span><span class="plain-syntax">(</span><span class="identifier-syntax">stream</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> @</span><span class="identifier-syntax">push</span><span class="plain-syntax"> </span><span class="identifier-syntax">say__p</span><span class="plain-syntax">; @</span><span class="identifier-syntax">push</span><span class="plain-syntax"> </span><span class="identifier-syntax">say__pc</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">ClearParagraphing</span><span class="plain-syntax">(7);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">from_snippet</span><span class="plain-syntax">) </span><span class="reserved-syntax">print</span><span class="plain-syntax"> (</span><span class="identifier-syntax">PrintSnippet</span><span class="plain-syntax">) </span><span class="identifier-syntax">from_value</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">print</span><span class="plain-syntax"> (</span><span class="identifier-syntax">PrintI6Text</span><span class="plain-syntax">) </span><span class="identifier-syntax">from_value</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> @</span><span class="identifier-syntax">pull</span><span class="plain-syntax"> </span><span class="identifier-syntax">say__pc</span><span class="plain-syntax">; @</span><span class="identifier-syntax">pull</span><span class="plain-syntax"> </span><span class="identifier-syntax">say__p</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> @</span><span class="identifier-syntax">push</span><span class="plain-syntax"> </span><span class="identifier-syntax">say__p</span><span class="plain-syntax">; @</span><span class="identifier-syntax">push</span><span class="plain-syntax"> </span><span class="identifier-syntax">say__pc</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">ClearParagraphing</span><span class="plain-syntax">(7);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">from_snippet</span><span class="plain-syntax">) </span><span class="reserved-syntax">print</span><span class="plain-syntax"> (</span><span class="identifier-syntax">PrintSnippet</span><span class="plain-syntax">) </span><span class="identifier-syntax">from_value</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">print</span><span class="plain-syntax"> (</span><span class="identifier-syntax">PrintI6Text</span><span class="plain-syntax">) </span><span class="identifier-syntax">from_value</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> @</span><span class="identifier-syntax">pull</span><span class="plain-syntax"> </span><span class="identifier-syntax">say__pc</span><span class="plain-syntax">; @</span><span class="identifier-syntax">pull</span><span class="plain-syntax"> </span><span class="identifier-syntax">say__p</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">results</span><span class="plain-syntax"> = </span><span class="identifier-syntax">buffer</span><span class="plain-syntax"> + </span><span class="identifier-syntax">buffer_size</span><span class="plain-syntax"> - </span><span class="constant-syntax">2</span><span class="plain-syntax">*</span><span class="identifier-syntax">WORDSIZE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">glk_stream_close</span><span class="plain-syntax">(</span><span class="identifier-syntax">stream</span><span class="plain-syntax">, </span><span class="identifier-syntax">results</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">saved_stream</span><span class="plain-syntax">) </span><span class="identifier-syntax">glk_stream_set_current</span><span class="plain-syntax">(</span><span class="identifier-syntax">saved_stream</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">ResumeRTP</span><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">results</span><span class="plain-syntax"> = </span><span class="identifier-syntax">buffer</span><span class="plain-syntax"> + </span><span class="identifier-syntax">buffer_size</span><span class="plain-syntax"> - </span><span class="constant-syntax">2</span><span class="plain-syntax">*</span><span class="identifier-syntax">WORDSIZE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">glk_stream_close</span><span class="plain-syntax">(</span><span class="identifier-syntax">stream</span><span class="plain-syntax">, </span><span class="identifier-syntax">results</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">saved_stream</span><span class="plain-syntax">) </span><span class="identifier-syntax">glk_stream_set_current</span><span class="plain-syntax">(</span><span class="identifier-syntax">saved_stream</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">ResumeRTP</span><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">len</span><span class="plain-syntax"> = </span><span class="identifier-syntax">results</span><span class="plain-syntax">--&gt;1;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">len</span><span class="plain-syntax"> &gt; </span><span class="identifier-syntax">RawBufferSize</span><span class="plain-syntax">-1) {</span>
<span class="plain-syntax"> </span><span class="comment-syntax">Glulx had to truncate text output because the buffer ran out:</span>
<span class="plain-syntax"> </span><span class="comment-syntax">len is the number of characters which it tried to print</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">news</span><span class="plain-syntax"> = </span><span class="identifier-syntax">RawBufferSize</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">while</span><span class="plain-syntax"> (</span><span class="identifier-syntax">news</span><span class="plain-syntax"> &lt; </span><span class="identifier-syntax">len</span><span class="plain-syntax">) </span><span class="identifier-syntax">news</span><span class="plain-syntax">=</span><span class="identifier-syntax">news</span><span class="plain-syntax">*2;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax"> = </span><span class="identifier-syntax">VM_AllocateMemory</span><span class="plain-syntax">(</span><span class="identifier-syntax">news</span><span class="plain-syntax">*</span><span class="identifier-syntax">WORDSIZE</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">i</span><span class="plain-syntax"> ~= </span><span class="constant-syntax">0</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">memory_to_free</span><span class="plain-syntax">) </span><span class="identifier-syntax">VM_FreeMemory</span><span class="plain-syntax">(</span><span class="identifier-syntax">memory_to_free</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">memory_to_free</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">buffer</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">RawBufferSize</span><span class="plain-syntax"> = </span><span class="identifier-syntax">news</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">buffer_size</span><span class="plain-syntax"> = (</span><span class="identifier-syntax">RawBufferSize</span><span class="plain-syntax"> + </span><span class="constant-syntax">2</span><span class="plain-syntax">)*</span><span class="identifier-syntax">WORDSIZE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">jump</span><span class="plain-syntax"> </span><span class="identifier-syntax">RetryWithLargerBuffer</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="comment-syntax">Memory allocation refused: all we can do is to truncate the text</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">len</span><span class="plain-syntax"> = </span><span class="identifier-syntax">RawBufferSize</span><span class="plain-syntax">-1;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">len</span><span class="plain-syntax"> = </span><span class="identifier-syntax">results</span><span class="plain-syntax">--&gt;1;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">len</span><span class="plain-syntax"> &gt; </span><span class="identifier-syntax">RawBufferSize</span><span class="plain-syntax">-1) {</span>
<span class="plain-syntax"> </span><span class="comment-syntax">Glulx had to truncate text output because the buffer ran out:</span>
<span class="plain-syntax"> </span><span class="comment-syntax">len is the number of characters which it tried to print</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">news</span><span class="plain-syntax"> = </span><span class="identifier-syntax">RawBufferSize</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">while</span><span class="plain-syntax"> (</span><span class="identifier-syntax">news</span><span class="plain-syntax"> &lt; </span><span class="identifier-syntax">len</span><span class="plain-syntax">) </span><span class="identifier-syntax">news</span><span class="plain-syntax">=</span><span class="identifier-syntax">news</span><span class="plain-syntax">*2;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax"> = </span><span class="identifier-syntax">VM_AllocateMemory</span><span class="plain-syntax">(</span><span class="identifier-syntax">news</span><span class="plain-syntax">*</span><span class="identifier-syntax">WORDSIZE</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">i</span><span class="plain-syntax"> ~= </span><span class="constant-syntax">0</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">memory_to_free</span><span class="plain-syntax">) </span><span class="identifier-syntax">VM_FreeMemory</span><span class="plain-syntax">(</span><span class="identifier-syntax">memory_to_free</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">memory_to_free</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">buffer</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">RawBufferSize</span><span class="plain-syntax"> = </span><span class="identifier-syntax">news</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">buffer_size</span><span class="plain-syntax"> = (</span><span class="identifier-syntax">RawBufferSize</span><span class="plain-syntax"> + </span><span class="constant-syntax">2</span><span class="plain-syntax">)*</span><span class="identifier-syntax">WORDSIZE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">jump</span><span class="plain-syntax"> </span><span class="identifier-syntax">RetryWithLargerBuffer</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">buffer</span><span class="plain-syntax">--&gt;(</span><span class="identifier-syntax">len</span><span class="plain-syntax">) = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">TEXT_TY_CastPrimitiveNesting</span><span class="plain-syntax">--;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">BlkValueMassCopyFromArray</span><span class="plain-syntax">(</span><span class="identifier-syntax">to_txt</span><span class="plain-syntax">, </span><span class="identifier-syntax">buffer</span><span class="plain-syntax">, </span><span class="constant-syntax">4</span><span class="plain-syntax">, </span><span class="identifier-syntax">len</span><span class="plain-syntax">+1);</span>
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">RunTimeProblem</span><span class="plain-syntax">(</span><span class="identifier-syntax">RTP_NOGLULXUNICODE</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="comment-syntax">Memory allocation refused: all we can do is to truncate the text</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">len</span><span class="plain-syntax"> = </span><span class="identifier-syntax">RawBufferSize</span><span class="plain-syntax">-1;</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">buffer</span><span class="plain-syntax">--&gt;(</span><span class="identifier-syntax">len</span><span class="plain-syntax">) = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">TEXT_TY_CastPrimitiveNesting</span><span class="plain-syntax">--;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">BlkValueMassCopyFromArray</span><span class="plain-syntax">(</span><span class="identifier-syntax">to_txt</span><span class="plain-syntax">, </span><span class="identifier-syntax">buffer</span><span class="plain-syntax">, </span><span class="constant-syntax">4</span><span class="plain-syntax">, </span><span class="identifier-syntax">len</span><span class="plain-syntax">+1);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">memory_to_free</span><span class="plain-syntax">) </span><span class="identifier-syntax">VM_FreeMemory</span><span class="plain-syntax">(</span><span class="identifier-syntax">memory_to_free</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>

View file

@ -65,7 +65,7 @@ MathJax = {
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../extensions.html">Kits</a></li><li><a href="index.html">BasicInformKit</a></li><li><b>Utilities Template</b></li></ul></div>
<p class="purpose">Miscellaneous utility routines for some fundamental I6 needs.</p>
<ul class="toc"><li><a href="S-utl.html#SP1">&#167;1. Miscellany</a></li><li><a href="S-utl.html#SP2">&#167;2. Final Code Dependencies</a></li><li><a href="S-utl.html#SP3">&#167;3. Firebreak</a></li><li><a href="S-utl.html#SP4">&#167;4. Print Decimal Number</a></li><li><a href="S-utl.html#SP5">&#167;5. Print Text</a></li><li><a href="S-utl.html#SP6">&#167;6. Print Or Run</a></li><li><a href="S-utl.html#SP7">&#167;7. Saying Phrases</a></li><li><a href="S-utl.html#SP8">&#167;8. Kinds</a></li><li><a href="S-utl.html#SP9">&#167;9. Non-standard enumerations</a></li><li><a href="S-utl.html#SP10">&#167;10. GenerateRandomNumber</a></li><li><a href="S-utl.html#SP11">&#167;11. PrintSpaces</a></li><li><a href="S-utl.html#SP12">&#167;12. SwapWorkflags</a></li><li><a href="S-utl.html#SP13">&#167;13. TestUseOption</a></li><li><a href="S-utl.html#SP14">&#167;14. ZRegion</a></li><li><a href="S-utl.html#SP15">&#167;15. Arrcpy</a></li><li><a href="S-utl.html#SP16">&#167;16. Verbs as Values</a></li><li><a href="S-utl.html#SP17">&#167;17. Seed Random Number Generator Rule</a></li><li><a href="S-utl.html#SP18">&#167;18. Regarding</a></li><li><a href="S-utl.html#SP19">&#167;19. Say One Of</a></li><li><a href="S-utl.html#SP20">&#167;20. Rounding</a></li><li><a href="S-utl.html#SP21">&#167;21. Doing nothing</a></li></ul><hr class="tocbar">
<ul class="toc"><li><a href="S-utl.html#SP1">&#167;1. Miscellany</a></li><li><a href="S-utl.html#SP2">&#167;2. Final Code Dependencies</a></li><li><a href="S-utl.html#SP3">&#167;3. Firebreak</a></li><li><a href="S-utl.html#SP4">&#167;4. Print Decimal Number</a></li><li><a href="S-utl.html#SP5">&#167;5. Print Text</a></li><li><a href="S-utl.html#SP6">&#167;6. Print Or Run</a></li><li><a href="S-utl.html#SP7">&#167;7. Saying Phrases</a></li><li><a href="S-utl.html#SP8">&#167;8. Kinds</a></li><li><a href="S-utl.html#SP9">&#167;9. Non-standard enumerations</a></li><li><a href="S-utl.html#SP10">&#167;10. GenerateRandomNumber</a></li><li><a href="S-utl.html#SP11">&#167;11. PrintSpaces</a></li><li><a href="S-utl.html#SP12">&#167;12. SwapWorkflags</a></li><li><a href="S-utl.html#SP13">&#167;13. TestUseOption</a></li><li><a href="S-utl.html#SP14">&#167;14. ZRegion</a></li><li><a href="S-utl.html#SP15">&#167;15. Arrcpy</a></li><li><a href="S-utl.html#SP16">&#167;16. Verbs as Values</a></li><li><a href="S-utl.html#SP17">&#167;17. Regarding</a></li><li><a href="S-utl.html#SP18">&#167;18. Say One Of</a></li><li><a href="S-utl.html#SP19">&#167;19. Rounding</a></li><li><a href="S-utl.html#SP20">&#167;20. Doing nothing</a></li></ul><hr class="tocbar">
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>&#167;1. Miscellany. </b></p>
@ -119,7 +119,7 @@ MathJax = {
</pre>
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>&#167;2. Final Code Dependencies. </b>This function definition is a little misleading. The idea is that the
final code-generator can inject code of its own into the body here: for example,
the final code-generation for Glulx injects code into <span class="extract"><span class="extract-syntax">FINAL_CODE_STARTUP_R</span></span>
the final code-generation for Glulx injects code into <span class="extract"><span class="extract-syntax">PLATFORM_SPECIFIC_STARTUP_R</span></span>
to use accelerated VM support for certain veneer functions.
</p>
@ -128,7 +128,8 @@ helpful code here: the fallbacks here are basic.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax">[ </span><span class="identifier-syntax">FINAL_CODE_STARTUP_R</span><span class="plain-syntax"> </span><span class="identifier-syntax">addr</span><span class="plain-syntax"> </span><span class="identifier-syntax">res</span><span class="plain-syntax">;</span>
<span class="plain-syntax">[ </span><span class="identifier-syntax">PLATFORM_SPECIFIC_STARTUP_R</span><span class="plain-syntax"> </span><span class="identifier-syntax">addr</span><span class="plain-syntax"> </span><span class="identifier-syntax">res</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">rfalse</span><span class="plain-syntax">;</span>
<span class="plain-syntax">];</span>
<span class="plain-syntax">[ </span><span class="identifier-syntax">DebugAction</span><span class="plain-syntax"> </span><span class="identifier-syntax">a</span><span class="plain-syntax"> </span><span class="identifier-syntax">anames</span><span class="plain-syntax"> </span><span class="identifier-syntax">str</span><span class="plain-syntax">;</span>
@ -386,28 +387,7 @@ following shows. (The name is from "region of the Z-machine".)
<span class="plain-syntax"> </span><span class="reserved-syntax">rfalse</span><span class="plain-syntax">;</span>
<span class="plain-syntax">];</span>
</pre>
<p class="commentary firstcommentary"><a id="SP17" class="paragraph-anchor"></a><b>&#167;17. Seed Random Number Generator Rule. </b>Unless a seed is provided by Inform, and it won't be for released story files,
the VM's interpreter is supposed to start up with a good seed in its random
number generator: something usually derived from, say, the milliseconds part
of the current time of day, which is unlikely to repeat or show any pattern
in real-world use. However, early Z-machine interpreters often did this quite
badly, starting with poor seed values which meant that the first few random
numbers always had something in common (being fairly small in their range,
for instance). To obviate this we extract and throw away 100 random numbers
to get the generator going, shaking out more obvious early patterns, but
that cannot really help much if the VM interpreter's RNG is badly written.
"Anyone who considers arithmetical methods of producing random digits is,
of course, in a state of sin" (von Neumann).
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax">[ </span><span class="identifier-syntax">SEED_RANDOM_NUMBER_GENERATOR_R</span><span class="plain-syntax"> </span><span class="identifier-syntax">i</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">RNG_SEED_AT_START_OF_PLAY</span><span class="plain-syntax">) </span><span class="identifier-syntax">VM_Seed_RNG</span><span class="plain-syntax">(</span><span class="identifier-syntax">RNG_SEED_AT_START_OF_PLAY</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="identifier-syntax">i</span><span class="plain-syntax">=1: </span><span class="identifier-syntax">i</span><span class="plain-syntax">&lt;=100: </span><span class="identifier-syntax">i</span><span class="plain-syntax">++) </span><span class="reserved-syntax">random</span><span class="plain-syntax">(</span><span class="identifier-syntax">i</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">rfalse</span><span class="plain-syntax">;</span>
<span class="plain-syntax">];</span>
</pre>
<p class="commentary firstcommentary"><a id="SP18" class="paragraph-anchor"></a><b>&#167;18. Regarding. </b>These are used with adaptive text.
<p class="commentary firstcommentary"><a id="SP17" class="paragraph-anchor"></a><b>&#167;17. Regarding. </b>These are used with adaptive text.
</p>
<pre class="displayed-code all-displayed-code code-font">
@ -423,7 +403,7 @@ of course, in a state of sin" (von Neumann).
<span class="plain-syntax"> </span><span class="identifier-syntax">prior_named_noun</span><span class="plain-syntax"> = </span><span class="reserved-syntax">nothing</span><span class="plain-syntax">;</span>
<span class="plain-syntax">];</span>
</pre>
<p class="commentary firstcommentary"><a id="SP19" class="paragraph-anchor"></a><b>&#167;19. Say One Of. </b>These routines are described in the Extensions chapter of the Inform
<p class="commentary firstcommentary"><a id="SP18" class="paragraph-anchor"></a><b>&#167;18. Say One Of. </b>These routines are described in the Extensions chapter of the Inform
documentation.
</p>
@ -469,7 +449,7 @@ documentation.
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">v</span><span class="plain-syntax"> + </span><span class="identifier-syntax">ct</span><span class="plain-syntax">*</span><span class="identifier-syntax">base</span><span class="plain-syntax"> + </span><span class="identifier-syntax">ssd</span><span class="plain-syntax">*</span><span class="identifier-syntax">base</span><span class="plain-syntax">*</span><span class="identifier-syntax">base</span><span class="plain-syntax">;</span>
<span class="plain-syntax">];</span>
</pre>
<p class="commentary firstcommentary"><a id="SP20" class="paragraph-anchor"></a><b>&#167;20. Rounding. </b>The following rounds a numerical value <span class="extract"><span class="extract-syntax">t1</span></span> to the nearest unit of <span class="extract"><span class="extract-syntax">t2</span></span>;
<p class="commentary firstcommentary"><a id="SP19" class="paragraph-anchor"></a><b>&#167;19. Rounding. </b>The following rounds a numerical value <span class="extract"><span class="extract-syntax">t1</span></span> to the nearest unit of <span class="extract"><span class="extract-syntax">t2</span></span>;
for instance, if <span class="extract"><span class="extract-syntax">t2</span></span> is 5 then it rounds to the nearest 5. The name is an
anachronism, as it's used for all kinds of value.
</p>
@ -480,7 +460,7 @@ anachronism, as it's used for all kinds of value.
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> -((-</span><span class="identifier-syntax">t1</span><span class="plain-syntax">+</span><span class="identifier-syntax">t2</span><span class="plain-syntax">/2)/</span><span class="identifier-syntax">t2</span><span class="plain-syntax">)*</span><span class="identifier-syntax">t2</span><span class="plain-syntax">;</span>
<span class="plain-syntax">];</span>
</pre>
<p class="commentary firstcommentary"><a id="SP21" class="paragraph-anchor"></a><b>&#167;21. Doing nothing. </b>Surprisingly, this function has a use.
<p class="commentary firstcommentary"><a id="SP20" class="paragraph-anchor"></a><b>&#167;20. Doing nothing. </b>Surprisingly, this function has a use.
</p>
<pre class="displayed-code all-displayed-code code-font">

View file

@ -65,7 +65,7 @@ MathJax = {
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../extensions.html">Kits</a></li><li><a href="index.html">WorldModelKit</a></li><li><b>OrderOfPlay Template</b></li></ul></div>
<p class="purpose">The sequence of events in play: the Main routine which runs the startup rulebook, the turn sequence rulebook and the shutdown rulebook; and most of the I6 definitions of primitive rules in those rulebooks.</p>
<ul class="toc"><li><a href="S-ord.html#SP1">&#167;1. Main</a></li><li><a href="S-ord.html#SP2">&#167;2. Virtual Machine Startup Rule</a></li><li><a href="S-ord.html#SP3">&#167;3. Initial Situation</a></li><li><a href="S-ord.html#SP4">&#167;4. Initialise Memory Rule</a></li><li><a href="S-ord.html#SP5">&#167;5. Position Player In Model World Rule</a></li><li><a href="S-ord.html#SP6">&#167;6. Parse Command Rule</a></li><li><a href="S-ord.html#SP7">&#167;7. Treat Parser Results</a></li><li><a href="S-ord.html#SP8">&#167;8. Generate Action Rule</a></li><li><a href="S-ord.html#SP9">&#167;9. Generate Multiple Actions</a></li><li><a href="S-ord.html#SP10">&#167;10. Timed Events Rule</a></li><li><a href="S-ord.html#SP11">&#167;11. Setting Timed Events</a></li><li><a href="S-ord.html#SP12">&#167;12. Setting Time Of Day</a></li><li><a href="S-ord.html#SP13">&#167;13. Advance Time Rule</a></li><li><a href="S-ord.html#SP14">&#167;14. Note Object Acquisitions Rule</a></li><li><a href="S-ord.html#SP15">&#167;15. Resurrect Player If Asked Rule</a></li><li><a href="S-ord.html#SP16">&#167;16. Ask The Final Question Rule</a></li><li><a href="S-ord.html#SP17">&#167;17. Read The Final Answer Rule</a></li><li><a href="S-ord.html#SP18">&#167;18. Immediately Restart VM Rule</a></li><li><a href="S-ord.html#SP19">&#167;19. Immediately Restore Saved Game Rule</a></li><li><a href="S-ord.html#SP20">&#167;20. Immediately Quit Rule</a></li><li><a href="S-ord.html#SP21">&#167;21. Immediately Undo Rule</a></li><li><a href="S-ord.html#SP22">&#167;22. Print Obituary Headline Rule</a></li><li><a href="S-ord.html#SP23">&#167;23. Print Final Score Rule</a></li><li><a href="S-ord.html#SP24">&#167;24. Display Final Status Line Rule</a></li></ul><hr class="tocbar">
<ul class="toc"><li><a href="S-ord.html#SP1">&#167;1. Main</a></li><li><a href="S-ord.html#SP2">&#167;2. Initial Whitespace Rule</a></li><li><a href="S-ord.html#SP3">&#167;3. Initial Situation</a></li><li><a href="S-ord.html#SP4">&#167;4. Initialise Memory Rule</a></li><li><a href="S-ord.html#SP5">&#167;5. Position Player In Model World Rule</a></li><li><a href="S-ord.html#SP6">&#167;6. Parse Command Rule</a></li><li><a href="S-ord.html#SP7">&#167;7. Treat Parser Results</a></li><li><a href="S-ord.html#SP8">&#167;8. Generate Action Rule</a></li><li><a href="S-ord.html#SP9">&#167;9. Generate Multiple Actions</a></li><li><a href="S-ord.html#SP10">&#167;10. Timed Events Rule</a></li><li><a href="S-ord.html#SP11">&#167;11. Setting Timed Events</a></li><li><a href="S-ord.html#SP12">&#167;12. Setting Time Of Day</a></li><li><a href="S-ord.html#SP13">&#167;13. Advance Time Rule</a></li><li><a href="S-ord.html#SP14">&#167;14. Note Object Acquisitions Rule</a></li><li><a href="S-ord.html#SP15">&#167;15. Resurrect Player If Asked Rule</a></li><li><a href="S-ord.html#SP16">&#167;16. Ask The Final Question Rule</a></li><li><a href="S-ord.html#SP17">&#167;17. Read The Final Answer Rule</a></li><li><a href="S-ord.html#SP18">&#167;18. Immediately Restart VM Rule</a></li><li><a href="S-ord.html#SP19">&#167;19. Immediately Restore Saved Game Rule</a></li><li><a href="S-ord.html#SP20">&#167;20. Immediately Quit Rule</a></li><li><a href="S-ord.html#SP21">&#167;21. Immediately Undo Rule</a></li><li><a href="S-ord.html#SP22">&#167;22. Print Obituary Headline Rule</a></li><li><a href="S-ord.html#SP23">&#167;23. Print Final Score Rule</a></li><li><a href="S-ord.html#SP24">&#167;24. Display Final Status Line Rule</a></li></ul><hr class="tocbar">
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>&#167;1. Main. </b>This is where every I6 story file begins execution: it can end either by
returning, or by a <span class="extract"><span class="extract-syntax">quit</span></span> statement or equivalent opcode. (In I7 this does
@ -86,10 +86,8 @@ explained in the Standard Rules.
<span class="identifier-syntax">Global</span><span class="plain-syntax"> </span><span class="identifier-syntax">IterationsOfTurnSequence</span><span class="plain-syntax">;</span>
<span class="plain-syntax">+</span><span class="identifier-syntax">replacing</span><span class="plain-syntax">(</span><span class="identifier-syntax">from</span><span class="plain-syntax"> </span><span class="identifier-syntax">BasicInformKit</span><span class="plain-syntax">) [ </span><span class="identifier-syntax">Main</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">say__pc</span><span class="plain-syntax"> = </span><span class="identifier-syntax">say__pc</span><span class="plain-syntax"> | </span><span class="identifier-syntax">PARA_NORULEBOOKBREAKS</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">rulebook_without_variables</span><span class="plain-syntax"> = </span><span class="identifier-syntax">ACTION_PROCESSING_RB</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">FollowRulebook</span><span class="plain-syntax">(</span><span class="identifier-syntax">STARTUP_RB</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">say__pc</span><span class="plain-syntax"> &amp; </span><span class="identifier-syntax">PARA_NORULEBOOKBREAKS</span><span class="plain-syntax">) </span><span class="identifier-syntax">say__pc</span><span class="plain-syntax"> = </span><span class="identifier-syntax">say__pc</span><span class="plain-syntax"> - </span><span class="identifier-syntax">PARA_NORULEBOOKBREAKS</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Startup</span><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">while</span><span class="plain-syntax"> (</span><span class="reserved-syntax">true</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">while</span><span class="plain-syntax"> (</span><span class="identifier-syntax">deadflag</span><span class="plain-syntax"> == </span><span class="reserved-syntax">false</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">EarlyInTurnSequence</span><span class="plain-syntax"> = </span><span class="reserved-syntax">true</span><span class="plain-syntax">;</span>
@ -102,17 +100,14 @@ explained in the Standard Rules.
<span class="plain-syntax"> }</span>
<span class="plain-syntax">];</span>
</pre>
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>&#167;2. Virtual Machine Startup Rule. </b>We delegate to the appropriate VM-specific section of code for the real work.
The printing of three blank lines at the start of play is traditional: on early
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>&#167;2. Initial Whitespace Rule. </b>The printing of three blank lines at the start of play is traditional: on early
Z-machine interpreters such as InfoTaskForce and Zip it was a necessity because
of the way they buffered output. On modern windowed ones it still helps to
space the opening text better.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax">[ </span><span class="identifier-syntax">VIRTUAL_MACHINE_STARTUP_R</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">CarryOutActivity</span><span class="plain-syntax">(</span><span class="identifier-syntax">STARTING_VIRTUAL_MACHINE_ACT</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">VM_Initialise</span><span class="plain-syntax">();</span>
<span class="plain-syntax">[ </span><span class="identifier-syntax">INITIAL_WHITESPACE_R</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="comment-syntax">It is now safe for the paragraph breaking between rules mechanism to work</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">say__pc</span><span class="plain-syntax"> &amp; </span><span class="identifier-syntax">PARA_NORULEBOOKBREAKS</span><span class="plain-syntax">) </span><span class="identifier-syntax">say__pc</span><span class="plain-syntax"> = </span><span class="identifier-syntax">say__pc</span><span class="plain-syntax"> - </span><span class="identifier-syntax">PARA_NORULEBOOKBREAKS</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>
@ -136,13 +131,11 @@ reads, say, "Mrs Bridges is a woman. The player is Mrs Bridges."): in
other circumstances they are often correct, but this must not be relied on.
</p>
<p class="commentary firstcommentary"><a id="SP4" class="paragraph-anchor"></a><b>&#167;4. Initialise Memory Rule. </b>This rule amalgamates some minimal initialisations which all need to happen
before we can risk using some of the more exotic I7 kinds:
<p class="commentary firstcommentary"><a id="SP4" class="paragraph-anchor"></a><b>&#167;4. Initialise Memory Rule. </b>In addition to BasicInformKit's memory initialisation, this rule sets up
the initial situation:
</p>
<ul class="items"><li>(a) The language definition might call for initialisation, although the
default language of play (English) does not.
</li><li>(b) A handful of variables are filled in. <span class="extract"><span class="extract-syntax">I7_LOOKMODE</span></span> is a constant
<p class="commentary">A handful of variables are filled in. <span class="extract"><span class="extract-syntax">I7_LOOKMODE</span></span> is a constant
created by the use options "use full-length room descriptions" or
"use abbreviated room descriptions", but otherwise not existing. It is
particularly important that <span class="extract"><span class="extract-syntax">player</span></span> have the correct value, as the
@ -155,12 +148,8 @@ interesting point here is that we explicitly set <span class="extract"><span cla
we know better. We do this so that the "update chronological records rule"
cannot see where the player is: see the Standard Rules for an explanation
of why this is, albeit perhaps dubiously, a good thing.
</li><li>(c) We start the machinery needed to check that property accesses are
valid during play.
</li><li>(d) And we initialise the memory allocation heap, and expand the literal
constants, as hinted above: these are called "block constants" since
they occupy blocks of memory.
</li></ul>
</p>
<p class="commentary">The <span class="extract"><span class="extract-syntax">not_yet_in_play</span></span> flag, which is cleared when the first command is
about to be read from the keyboard, suppresses the standard status line
text: thus, if there is some long text to read before the player finds out
@ -168,10 +157,7 @@ where he is, the surprise will not be spoiled.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax">+</span><span class="identifier-syntax">replacing</span><span class="plain-syntax">(</span><span class="identifier-syntax">from</span><span class="plain-syntax"> </span><span class="identifier-syntax">BasicInformKit</span><span class="plain-syntax">) [ </span><span class="identifier-syntax">INITIALISE_MEMORY_R</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">VM_PreInitialise</span><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">LanguageInitialise</span><span class="plain-syntax">();</span>
<span class="plain-syntax">+</span><span class="identifier-syntax">replacing</span><span class="plain-syntax">(</span><span class="identifier-syntax">keeping</span><span class="plain-syntax">)(</span><span class="identifier-syntax">from</span><span class="plain-syntax"> </span><span class="identifier-syntax">BasicInformKit</span><span class="plain-syntax">) [ </span><span class="identifier-syntax">INITIALISE_MEMORY_R</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">not_yet_in_play</span><span class="plain-syntax"> = </span><span class="reserved-syntax">true</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">lookmode</span><span class="plain-syntax"> = </span><span class="identifier-syntax">WorldModelKit</span><span class="plain-syntax">`</span><span class="identifier-syntax">ROOM_DESC_DETAIL_CFGV</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">player</span><span class="plain-syntax"> = </span><span class="identifier-syntax">InitialSituation</span><span class="plain-syntax">--&gt;</span><span class="identifier-syntax">PLAYER_OBJECT_INIS</span><span class="plain-syntax">;</span>
@ -179,9 +165,7 @@ where he is, the surprise will not be spoiled.
<span class="plain-syntax"> </span><span class="identifier-syntax">real_location</span><span class="plain-syntax"> = </span><span class="reserved-syntax">nothing</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">location</span><span class="plain-syntax"> = </span><span class="reserved-syntax">nothing</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">HeapInitialise</span><span class="plain-syntax">(); </span><span class="comment-syntax">Create a completely unused memory allocation heap</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">StackFramingInitialise</span><span class="plain-syntax">(); </span><span class="comment-syntax">Create an empty stack</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">CreateDynamicRelations</span><span class="plain-syntax">(); </span><span class="comment-syntax">Create relation structures on the heap</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">replaced</span><span class="plain-syntax">`</span><span class="identifier-syntax">INITIALISE_MEMORY_R</span><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">rfalse</span><span class="plain-syntax">;</span>
<span class="plain-syntax">];</span>

View file

@ -54,6 +54,13 @@
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>&#167;1. </b>See test case <span class="extract"><span class="extract-syntax">BIP-Adjectives</span></span>.
</p>
<p class="commentary">Something to watch out for here is that the domain of an adjective with an
intentionally broad kind has to be written in a way which considers covariance
and contravariance. Thus, "list of values" matches every list, because "list of K"
is covariant: but "activity on values" does not match every activity, because
"activity on K" is contravariant, and instead "activity on nothing" is needed.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="identifier-syntax">Part</span><span class="plain-syntax"> </span><span class="identifier-syntax">Four</span><span class="plain-syntax"> - </span><span class="identifier-syntax">Adjectival</span><span class="plain-syntax"> </span><span class="identifier-syntax">Definitions</span>
@ -73,12 +80,13 @@
<span class="identifier-syntax">Definition</span><span class="plain-syntax">: </span><span class="identifier-syntax">a</span><span class="plain-syntax"> </span><span class="identifier-syntax">table</span><span class="plain-syntax"> </span><span class="identifier-syntax">name</span><span class="plain-syntax"> </span><span class="identifier-syntax">is</span><span class="plain-syntax"> </span><span class="identifier-syntax">empty</span><span class="plain-syntax"> </span><span class="identifier-syntax">rather</span><span class="plain-syntax"> </span><span class="identifier-syntax">than</span><span class="plain-syntax"> </span><span class="identifier-syntax">non</span><span class="plain-syntax">-</span><span class="identifier-syntax">empty</span><span class="plain-syntax"> </span><span class="identifier-syntax">if</span><span class="plain-syntax"> </span><span class="identifier-syntax">the</span><span class="plain-syntax"> </span><span class="identifier-syntax">number</span><span class="plain-syntax"> </span><span class="identifier-syntax">of</span><span class="plain-syntax"> </span><span class="identifier-syntax">filled</span><span class="plain-syntax"> </span><span class="identifier-syntax">rows</span><span class="plain-syntax"> </span><span class="identifier-syntax">in</span><span class="plain-syntax"> </span><span class="identifier-syntax">it</span><span class="plain-syntax"> </span><span class="identifier-syntax">is</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">.</span>
<span class="identifier-syntax">Definition</span><span class="plain-syntax">: </span><span class="identifier-syntax">a</span><span class="plain-syntax"> </span><span class="identifier-syntax">table</span><span class="plain-syntax"> </span><span class="identifier-syntax">name</span><span class="plain-syntax"> </span><span class="identifier-syntax">is</span><span class="plain-syntax"> </span><span class="identifier-syntax">full</span><span class="plain-syntax"> </span><span class="identifier-syntax">rather</span><span class="plain-syntax"> </span><span class="identifier-syntax">than</span><span class="plain-syntax"> </span><span class="identifier-syntax">non</span><span class="plain-syntax">-</span><span class="identifier-syntax">full</span><span class="plain-syntax"> </span><span class="identifier-syntax">if</span><span class="plain-syntax"> </span><span class="identifier-syntax">the</span><span class="plain-syntax"> </span><span class="identifier-syntax">number</span><span class="plain-syntax"> </span><span class="identifier-syntax">of</span><span class="plain-syntax"> </span><span class="identifier-syntax">blank</span><span class="plain-syntax"> </span><span class="identifier-syntax">rows</span><span class="plain-syntax"> </span><span class="identifier-syntax">in</span><span class="plain-syntax"> </span><span class="identifier-syntax">it</span><span class="plain-syntax"> </span><span class="identifier-syntax">is</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">.</span>
<span class="identifier-syntax">Definition</span><span class="plain-syntax">: </span><span class="identifier-syntax">a</span><span class="plain-syntax"> </span><span class="identifier-syntax">rulebook</span><span class="plain-syntax"> </span><span class="identifier-syntax">is</span><span class="plain-syntax"> </span><span class="identifier-syntax">empty</span><span class="plain-syntax"> </span><span class="identifier-syntax">rather</span><span class="plain-syntax"> </span><span class="identifier-syntax">than</span><span class="plain-syntax"> </span><span class="identifier-syntax">non</span><span class="plain-syntax">-</span><span class="identifier-syntax">empty</span><span class="plain-syntax"> </span><span class="identifier-syntax">if</span><span class="plain-syntax"> </span><span class="identifier-syntax">I6</span><span class="plain-syntax"> </span><span class="identifier-syntax">routine</span><span class="plain-syntax"> </span><span class="string-syntax">"RulebookEmpty"</span><span class="plain-syntax"> </span><span class="identifier-syntax">says</span><span class="plain-syntax"> </span><span class="identifier-syntax">so</span><span class="plain-syntax"> (</span><span class="identifier-syntax">it</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">contains</span><span class="plain-syntax"> </span><span class="identifier-syntax">no</span><span class="plain-syntax"> </span><span class="identifier-syntax">rules</span><span class="plain-syntax">, </span><span class="identifier-syntax">so</span><span class="plain-syntax"> </span><span class="identifier-syntax">that</span><span class="plain-syntax"> </span><span class="identifier-syntax">following</span><span class="plain-syntax"> </span><span class="identifier-syntax">it</span><span class="plain-syntax"> </span><span class="identifier-syntax">does</span><span class="plain-syntax"> </span><span class="identifier-syntax">nothing</span><span class="plain-syntax"> </span><span class="identifier-syntax">and</span><span class="plain-syntax"> </span><span class="identifier-syntax">makes</span><span class="plain-syntax"> </span><span class="identifier-syntax">no</span><span class="plain-syntax"> </span><span class="identifier-syntax">decision</span><span class="plain-syntax">).</span>
<span class="identifier-syntax">Definition</span><span class="plain-syntax">: </span><span class="identifier-syntax">a</span><span class="plain-syntax"> </span><span class="identifier-syntax">nothing</span><span class="plain-syntax"> </span><span class="identifier-syntax">based</span><span class="plain-syntax"> </span><span class="identifier-syntax">rulebook</span><span class="plain-syntax"> </span><span class="identifier-syntax">is</span><span class="plain-syntax"> </span><span class="identifier-syntax">empty</span><span class="plain-syntax"> </span><span class="identifier-syntax">rather</span><span class="plain-syntax"> </span><span class="identifier-syntax">than</span><span class="plain-syntax"> </span><span class="identifier-syntax">non</span><span class="plain-syntax">-</span><span class="identifier-syntax">empty</span><span class="plain-syntax"> </span><span class="identifier-syntax">if</span><span class="plain-syntax"> </span><span class="identifier-syntax">I6</span><span class="plain-syntax"> </span><span class="identifier-syntax">routine</span>
<span class="plain-syntax"> </span><span class="string-syntax">"RulebookEmpty"</span><span class="plain-syntax"> </span><span class="identifier-syntax">says</span><span class="plain-syntax"> </span><span class="identifier-syntax">so</span><span class="plain-syntax"> (</span><span class="identifier-syntax">it</span><span class="plain-syntax"> </span><span class="identifier-syntax">contains</span><span class="plain-syntax"> </span><span class="identifier-syntax">no</span><span class="plain-syntax"> </span><span class="identifier-syntax">rules</span><span class="plain-syntax">, </span><span class="identifier-syntax">so</span><span class="plain-syntax"> </span><span class="identifier-syntax">that</span><span class="plain-syntax"> </span><span class="identifier-syntax">following</span><span class="plain-syntax"> </span><span class="identifier-syntax">it</span><span class="plain-syntax"> </span><span class="identifier-syntax">does</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">nothing</span><span class="plain-syntax"> </span><span class="identifier-syntax">and</span><span class="plain-syntax"> </span><span class="identifier-syntax">makes</span><span class="plain-syntax"> </span><span class="identifier-syntax">no</span><span class="plain-syntax"> </span><span class="identifier-syntax">decision</span><span class="plain-syntax">).</span>
<span class="identifier-syntax">Definition</span><span class="plain-syntax">: </span><span class="identifier-syntax">an</span><span class="plain-syntax"> </span><span class="identifier-syntax">activity</span><span class="plain-syntax"> </span><span class="identifier-syntax">is</span><span class="plain-syntax"> </span><span class="identifier-syntax">empty</span><span class="plain-syntax"> </span><span class="identifier-syntax">rather</span><span class="plain-syntax"> </span><span class="identifier-syntax">than</span><span class="plain-syntax"> </span><span class="identifier-syntax">non</span><span class="plain-syntax">-</span><span class="identifier-syntax">empty</span><span class="plain-syntax"> </span><span class="identifier-syntax">if</span><span class="plain-syntax"> </span><span class="identifier-syntax">I6</span><span class="plain-syntax"> </span><span class="identifier-syntax">routine</span><span class="plain-syntax"> </span><span class="string-syntax">"ActivityEmpty"</span><span class="plain-syntax"> </span><span class="identifier-syntax">says</span><span class="plain-syntax"> </span><span class="identifier-syntax">so</span><span class="plain-syntax"> (</span><span class="identifier-syntax">its</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">before</span><span class="plain-syntax">, </span><span class="identifier-syntax">for</span><span class="plain-syntax"> </span><span class="identifier-syntax">and</span><span class="plain-syntax"> </span><span class="identifier-syntax">after</span><span class="plain-syntax"> </span><span class="identifier-syntax">rulebooks</span><span class="plain-syntax"> </span><span class="identifier-syntax">are</span><span class="plain-syntax"> </span><span class="identifier-syntax">all</span><span class="plain-syntax"> </span><span class="identifier-syntax">empty</span><span class="plain-syntax">).</span>
<span class="identifier-syntax">Definition</span><span class="plain-syntax">: </span><span class="identifier-syntax">an</span><span class="plain-syntax"> </span><span class="identifier-syntax">activity</span><span class="plain-syntax"> </span><span class="identifier-syntax">is</span><span class="plain-syntax"> </span><span class="identifier-syntax">going</span><span class="plain-syntax"> </span><span class="identifier-syntax">on</span><span class="plain-syntax"> </span><span class="identifier-syntax">if</span><span class="plain-syntax"> </span><span class="identifier-syntax">I6</span><span class="plain-syntax"> </span><span class="identifier-syntax">routine</span><span class="plain-syntax"> </span><span class="string-syntax">"TestActivity"</span><span class="plain-syntax"> </span><span class="identifier-syntax">says</span><span class="plain-syntax"> </span><span class="identifier-syntax">so</span><span class="plain-syntax"> (</span><span class="identifier-syntax">one</span>
<span class="identifier-syntax">Definition</span><span class="plain-syntax">: </span><span class="identifier-syntax">an</span><span class="plain-syntax"> </span><span class="identifier-syntax">activity</span><span class="plain-syntax"> </span><span class="identifier-syntax">on</span><span class="plain-syntax"> </span><span class="identifier-syntax">nothing</span><span class="plain-syntax"> </span><span class="identifier-syntax">is</span><span class="plain-syntax"> </span><span class="identifier-syntax">empty</span><span class="plain-syntax"> </span><span class="identifier-syntax">rather</span><span class="plain-syntax"> </span><span class="identifier-syntax">than</span><span class="plain-syntax"> </span><span class="identifier-syntax">non</span><span class="plain-syntax">-</span><span class="identifier-syntax">empty</span><span class="plain-syntax"> </span><span class="identifier-syntax">if</span><span class="plain-syntax"> </span><span class="identifier-syntax">I6</span><span class="plain-syntax"> </span><span class="identifier-syntax">routine</span>
<span class="plain-syntax"> </span><span class="string-syntax">"ActivityEmpty"</span><span class="plain-syntax"> </span><span class="identifier-syntax">says</span><span class="plain-syntax"> </span><span class="identifier-syntax">so</span><span class="plain-syntax"> (</span><span class="identifier-syntax">its</span><span class="plain-syntax"> </span><span class="identifier-syntax">before</span><span class="plain-syntax">, </span><span class="identifier-syntax">for</span><span class="plain-syntax"> </span><span class="identifier-syntax">and</span><span class="plain-syntax"> </span><span class="identifier-syntax">after</span><span class="plain-syntax"> </span><span class="identifier-syntax">rulebooks</span><span class="plain-syntax"> </span><span class="identifier-syntax">are</span><span class="plain-syntax"> </span><span class="identifier-syntax">all</span><span class="plain-syntax"> </span><span class="identifier-syntax">empty</span><span class="plain-syntax">).</span>
<span class="identifier-syntax">Definition</span><span class="plain-syntax">: </span><span class="identifier-syntax">an</span><span class="plain-syntax"> </span><span class="identifier-syntax">activity</span><span class="plain-syntax"> </span><span class="identifier-syntax">on</span><span class="plain-syntax"> </span><span class="identifier-syntax">nothing</span><span class="plain-syntax"> </span><span class="identifier-syntax">is</span><span class="plain-syntax"> </span><span class="identifier-syntax">going</span><span class="plain-syntax"> </span><span class="identifier-syntax">on</span><span class="plain-syntax"> </span><span class="identifier-syntax">if</span><span class="plain-syntax"> </span><span class="identifier-syntax">I6</span><span class="plain-syntax"> </span><span class="identifier-syntax">routine</span><span class="plain-syntax"> </span><span class="string-syntax">"TestActivity"</span><span class="plain-syntax"> </span><span class="identifier-syntax">says</span><span class="plain-syntax"> </span><span class="identifier-syntax">so</span><span class="plain-syntax"> (</span><span class="identifier-syntax">one</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">of</span><span class="plain-syntax"> </span><span class="identifier-syntax">its</span><span class="plain-syntax"> </span><span class="identifier-syntax">three</span><span class="plain-syntax"> </span><span class="identifier-syntax">rulebooks</span><span class="plain-syntax"> </span><span class="identifier-syntax">is</span><span class="plain-syntax"> </span><span class="identifier-syntax">currently</span><span class="plain-syntax"> </span><span class="identifier-syntax">being</span><span class="plain-syntax"> </span><span class="identifier-syntax">run</span><span class="plain-syntax">).</span>
<span class="identifier-syntax">Definition</span><span class="plain-syntax">: </span><span class="identifier-syntax">a</span><span class="plain-syntax"> </span><span class="identifier-syntax">list</span><span class="plain-syntax"> </span><span class="identifier-syntax">of</span><span class="plain-syntax"> </span><span class="identifier-syntax">values</span><span class="plain-syntax"> </span><span class="identifier-syntax">is</span><span class="plain-syntax"> </span><span class="identifier-syntax">empty</span><span class="plain-syntax"> </span><span class="identifier-syntax">rather</span><span class="plain-syntax"> </span><span class="identifier-syntax">than</span><span class="plain-syntax"> </span><span class="identifier-syntax">non</span><span class="plain-syntax">-</span><span class="identifier-syntax">empty</span><span class="plain-syntax"> </span><span class="identifier-syntax">if</span><span class="plain-syntax"> </span><span class="identifier-syntax">I6</span><span class="plain-syntax"> </span><span class="identifier-syntax">routine</span>

View file

@ -135,23 +135,91 @@ the right order, matching definitions both in the Inform 7 compiler and in the
template libraries. (Remember that creating an activity creates three rulebooks.)
</p>
<p class="commentary">These rules here are the ones which get the basic machinery working
to the point where it is safe to run arbitrary I7 source text. They necessarily
do very low-level things, and it is not guaranteed that I7 phrases will behave
to specification if executed before these early rules have finished. So it
is hazardous to obstruct or alter them.
</p>
<ul class="items"><li>(a) The "virtual machine startup rule" carries out necessary steps to
begin execution on the virtual machine in use: this entails relatively little
on the Z-machine versions 5 or 8, but can involve extensive work to get the
screen display working on Glulx or Z6.
</li><li>(b) The platform specific startup rule contains code which Inform injects for
the specific compilation platform. Note that this is not the same as an
architecture: both Glulx and C use the 32 bit architecture, but are different
platforms, and so might inject different code into this rule.
</li><li>(c) The "initialise memory rule" starts up the memory allocation heap,
if there is one, and sets some essential I6 variables. If there is any rule
not to meddle with, this is it.
</li><li>(d) The "seed random number generator rule" seeds the RNG to a fixed value
if Inform has requested this (which it does in response to the <span class="extract"><span class="extract-syntax">-rng</span></span> command
line switch, which is in turn used by the <span class="extract"><span class="extract-syntax">intest</span></span> testing utility: it's a
way to make deterministic tests of programs which use random values).
</li><li>(e) The "recover Glk objects rule" runs the object recovery process in order to
identify and pre-existing Glk objects after a restart.
</li><li>(f) The "open built-in windows rule" opens the Glk windows; only after this
point is it safe to print anything.
</li></ul>
<pre class="displayed-code all-displayed-code code-font">
<span class="identifier-syntax">Chapter</span><span class="plain-syntax"> - </span><span class="identifier-syntax">Startup</span>
<span class="identifier-syntax">Startup</span><span class="plain-syntax"> </span><span class="identifier-syntax">rules</span><span class="plain-syntax"> </span><span class="identifier-syntax">is</span><span class="plain-syntax"> </span><span class="identifier-syntax">a</span><span class="plain-syntax"> </span><span class="identifier-syntax">rulebook</span><span class="plain-syntax">.</span>
<span class="identifier-syntax">The</span><span class="plain-syntax"> </span><span class="identifier-syntax">startup</span><span class="plain-syntax"> </span><span class="identifier-syntax">rulebook</span><span class="plain-syntax"> </span><span class="identifier-syntax">is</span><span class="plain-syntax"> </span><span class="identifier-syntax">accessible</span><span class="plain-syntax"> </span><span class="identifier-syntax">to</span><span class="plain-syntax"> </span><span class="identifier-syntax">Inter</span><span class="plain-syntax"> </span><span class="identifier-syntax">as</span><span class="plain-syntax"> </span><span class="string-syntax">"STARTUP_RB"</span><span class="plain-syntax">.</span>
<span class="identifier-syntax">Startup</span><span class="plain-syntax"> </span><span class="identifier-syntax">rules</span><span class="plain-syntax"> </span><span class="identifier-syntax">have</span><span class="plain-syntax"> </span><span class="identifier-syntax">outcomes</span><span class="plain-syntax"> </span><span class="identifier-syntax">allow</span><span class="plain-syntax"> </span><span class="identifier-syntax">startup</span><span class="plain-syntax"> (</span><span class="identifier-syntax">success</span><span class="plain-syntax">) </span><span class="identifier-syntax">and</span><span class="plain-syntax"> </span><span class="identifier-syntax">deny</span><span class="plain-syntax"> </span><span class="identifier-syntax">startup</span><span class="plain-syntax"> (</span><span class="identifier-syntax">failure</span><span class="plain-syntax">).</span>
<span class="identifier-syntax">Shutdown</span><span class="plain-syntax"> </span><span class="identifier-syntax">rules</span><span class="plain-syntax"> </span><span class="identifier-syntax">is</span><span class="plain-syntax"> </span><span class="identifier-syntax">a</span><span class="plain-syntax"> </span><span class="identifier-syntax">rulebook</span><span class="plain-syntax">.</span>
<span class="identifier-syntax">The</span><span class="plain-syntax"> </span><span class="identifier-syntax">shutdown</span><span class="plain-syntax"> </span><span class="identifier-syntax">rulebook</span><span class="plain-syntax"> </span><span class="identifier-syntax">is</span><span class="plain-syntax"> </span><span class="identifier-syntax">accessible</span><span class="plain-syntax"> </span><span class="identifier-syntax">to</span><span class="plain-syntax"> </span><span class="identifier-syntax">Inter</span><span class="plain-syntax"> </span><span class="identifier-syntax">as</span><span class="plain-syntax"> </span><span class="string-syntax">"SHUTDOWN_RB"</span><span class="plain-syntax">.</span>
<span class="identifier-syntax">Starting</span><span class="plain-syntax"> </span><span class="identifier-syntax">the</span><span class="plain-syntax"> </span><span class="identifier-syntax">virtual</span><span class="plain-syntax"> </span><span class="identifier-syntax">machine</span><span class="plain-syntax"> (</span><span class="identifier-syntax">documented</span><span class="plain-syntax"> </span><span class="identifier-syntax">at</span><span class="plain-syntax"> </span><span class="identifier-syntax">act_startvm</span><span class="plain-syntax">) </span><span class="identifier-syntax">is</span><span class="plain-syntax"> </span><span class="identifier-syntax">an</span><span class="plain-syntax"> </span><span class="identifier-syntax">activity</span><span class="plain-syntax">.</span>
<span class="identifier-syntax">Starting</span><span class="plain-syntax"> </span><span class="identifier-syntax">the</span><span class="plain-syntax"> </span><span class="identifier-syntax">virtual</span><span class="plain-syntax"> </span><span class="identifier-syntax">machine</span><span class="plain-syntax"> (</span><span class="identifier-syntax">documented</span><span class="plain-syntax"> </span><span class="identifier-syntax">at</span><span class="plain-syntax"> </span><span class="identifier-syntax">act_startvm</span><span class="plain-syntax">) </span><span class="identifier-syntax">is</span><span class="plain-syntax"> </span><span class="identifier-syntax">an</span><span class="plain-syntax"> </span><span class="identifier-syntax">activity</span><span class="plain-syntax"> </span><span class="identifier-syntax">on</span><span class="plain-syntax"> </span><span class="identifier-syntax">nothing</span><span class="plain-syntax">.</span>
<span class="identifier-syntax">The</span><span class="plain-syntax"> </span><span class="identifier-syntax">starting</span><span class="plain-syntax"> </span><span class="identifier-syntax">the</span><span class="plain-syntax"> </span><span class="identifier-syntax">virtual</span><span class="plain-syntax"> </span><span class="identifier-syntax">machine</span><span class="plain-syntax"> </span><span class="identifier-syntax">activity</span><span class="plain-syntax"> </span><span class="identifier-syntax">is</span><span class="plain-syntax"> </span><span class="identifier-syntax">accessible</span><span class="plain-syntax"> </span><span class="identifier-syntax">to</span><span class="plain-syntax"> </span><span class="identifier-syntax">Inter</span><span class="plain-syntax"> </span><span class="identifier-syntax">as</span><span class="plain-syntax"> </span><span class="string-syntax">"STARTING_VIRTUAL_MACHINE_ACT"</span><span class="plain-syntax">.</span>
<span class="identifier-syntax">The</span><span class="plain-syntax"> </span><span class="identifier-syntax">final</span><span class="plain-syntax"> </span><span class="identifier-syntax">code</span><span class="plain-syntax"> </span><span class="identifier-syntax">startup</span><span class="plain-syntax"> </span><span class="identifier-syntax">rule</span><span class="plain-syntax"> </span><span class="identifier-syntax">is</span><span class="plain-syntax"> </span><span class="identifier-syntax">listed</span><span class="plain-syntax"> </span><span class="identifier-syntax">first</span><span class="plain-syntax"> </span><span class="identifier-syntax">in</span><span class="plain-syntax"> </span><span class="identifier-syntax">for</span><span class="plain-syntax"> </span><span class="identifier-syntax">starting</span><span class="plain-syntax"> </span><span class="identifier-syntax">the</span><span class="plain-syntax"> </span><span class="identifier-syntax">virtual</span><span class="plain-syntax"> </span><span class="identifier-syntax">machine</span><span class="plain-syntax">.</span>
<span class="identifier-syntax">The</span><span class="plain-syntax"> </span><span class="identifier-syntax">final</span><span class="plain-syntax"> </span><span class="identifier-syntax">code</span><span class="plain-syntax"> </span><span class="identifier-syntax">startup</span><span class="plain-syntax"> </span><span class="identifier-syntax">rule</span><span class="plain-syntax"> </span><span class="identifier-syntax">is</span><span class="plain-syntax"> </span><span class="identifier-syntax">defined</span><span class="plain-syntax"> </span><span class="identifier-syntax">by</span><span class="plain-syntax"> </span><span class="identifier-syntax">Inter</span><span class="plain-syntax"> </span><span class="identifier-syntax">as</span><span class="plain-syntax"> </span><span class="string-syntax">"FINAL_CODE_STARTUP_R"</span><span class="plain-syntax">.</span>
<span class="identifier-syntax">The</span><span class="plain-syntax"> </span><span class="identifier-syntax">for</span><span class="plain-syntax"> </span><span class="identifier-syntax">starting</span><span class="plain-syntax"> </span><span class="identifier-syntax">the</span><span class="plain-syntax"> </span><span class="identifier-syntax">virtual</span><span class="plain-syntax"> </span><span class="identifier-syntax">machine</span><span class="plain-syntax"> </span><span class="identifier-syntax">rules</span><span class="plain-syntax"> </span><span class="identifier-syntax">have</span><span class="plain-syntax"> </span><span class="identifier-syntax">default</span><span class="plain-syntax"> </span><span class="identifier-syntax">no</span><span class="plain-syntax"> </span><span class="identifier-syntax">outcome</span><span class="plain-syntax">.</span>
<span class="identifier-syntax">First</span><span class="plain-syntax"> </span><span class="identifier-syntax">startup</span><span class="plain-syntax"> </span><span class="identifier-syntax">rule</span><span class="plain-syntax"> (</span><span class="identifier-syntax">this</span><span class="plain-syntax"> </span><span class="identifier-syntax">is</span><span class="plain-syntax"> </span><span class="identifier-syntax">the</span><span class="plain-syntax"> </span><span class="identifier-syntax">virtual</span><span class="plain-syntax"> </span><span class="identifier-syntax">machine</span><span class="plain-syntax"> </span><span class="identifier-syntax">startup</span><span class="plain-syntax"> </span><span class="identifier-syntax">rule</span><span class="plain-syntax">):</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">carry</span><span class="plain-syntax"> </span><span class="identifier-syntax">out</span><span class="plain-syntax"> </span><span class="identifier-syntax">the</span><span class="plain-syntax"> </span><span class="identifier-syntax">starting</span><span class="plain-syntax"> </span><span class="identifier-syntax">the</span><span class="plain-syntax"> </span><span class="identifier-syntax">virtual</span><span class="plain-syntax"> </span><span class="identifier-syntax">machine</span><span class="plain-syntax"> </span><span class="identifier-syntax">activity</span><span class="plain-syntax">.</span>
<span class="identifier-syntax">Section</span><span class="plain-syntax"> - </span><span class="identifier-syntax">Startup</span><span class="plain-syntax"> </span><span class="identifier-syntax">A</span><span class="plain-syntax"> (</span><span class="identifier-syntax">for</span><span class="plain-syntax"> </span><span class="identifier-syntax">Glulx</span><span class="plain-syntax"> </span><span class="identifier-syntax">only</span><span class="plain-syntax">)</span>
<span class="identifier-syntax">The</span><span class="plain-syntax"> </span><span class="identifier-syntax">start</span><span class="plain-syntax"> </span><span class="identifier-syntax">capturing</span><span class="plain-syntax"> </span><span class="identifier-syntax">startup</span><span class="plain-syntax"> </span><span class="identifier-syntax">text</span><span class="plain-syntax"> </span><span class="identifier-syntax">rule</span><span class="plain-syntax"> </span><span class="identifier-syntax">is</span><span class="plain-syntax"> </span><span class="identifier-syntax">listed</span><span class="plain-syntax"> </span><span class="identifier-syntax">in</span><span class="plain-syntax"> </span><span class="identifier-syntax">the</span><span class="plain-syntax"> </span><span class="identifier-syntax">before</span><span class="plain-syntax"> </span><span class="identifier-syntax">starting</span><span class="plain-syntax"> </span><span class="identifier-syntax">the</span><span class="plain-syntax"> </span><span class="identifier-syntax">virtual</span><span class="plain-syntax"> </span><span class="identifier-syntax">machine</span><span class="plain-syntax"> </span><span class="identifier-syntax">rules</span><span class="plain-syntax">.</span>
<span class="identifier-syntax">The</span><span class="plain-syntax"> </span><span class="identifier-syntax">start</span><span class="plain-syntax"> </span><span class="identifier-syntax">capturing</span><span class="plain-syntax"> </span><span class="identifier-syntax">startup</span><span class="plain-syntax"> </span><span class="identifier-syntax">text</span><span class="plain-syntax"> </span><span class="identifier-syntax">rule</span><span class="plain-syntax"> </span><span class="identifier-syntax">translates</span><span class="plain-syntax"> </span><span class="identifier-syntax">into</span><span class="plain-syntax"> </span><span class="identifier-syntax">Inter</span><span class="plain-syntax"> </span><span class="identifier-syntax">as</span><span class="plain-syntax"> </span><span class="string-syntax">"CAPTURE_STARTUP_TEXT_R"</span><span class="plain-syntax">.</span>
<span class="identifier-syntax">Section</span><span class="plain-syntax"> - </span><span class="identifier-syntax">Startup</span><span class="plain-syntax"> </span><span class="identifier-syntax">B</span>
<span class="identifier-syntax">The</span><span class="plain-syntax"> </span><span class="identifier-syntax">platform</span><span class="plain-syntax"> </span><span class="identifier-syntax">specific</span><span class="plain-syntax"> </span><span class="identifier-syntax">startup</span><span class="plain-syntax"> </span><span class="identifier-syntax">rule</span><span class="plain-syntax"> </span><span class="identifier-syntax">is</span><span class="plain-syntax"> </span><span class="identifier-syntax">listed</span><span class="plain-syntax"> </span><span class="identifier-syntax">in</span><span class="plain-syntax"> </span><span class="identifier-syntax">the</span><span class="plain-syntax"> </span><span class="identifier-syntax">before</span><span class="plain-syntax"> </span><span class="identifier-syntax">starting</span><span class="plain-syntax"> </span><span class="identifier-syntax">the</span><span class="plain-syntax"> </span><span class="identifier-syntax">virtual</span><span class="plain-syntax"> </span><span class="identifier-syntax">machine</span><span class="plain-syntax"> </span><span class="identifier-syntax">rules</span><span class="plain-syntax">.</span>
<span class="identifier-syntax">The</span><span class="plain-syntax"> </span><span class="identifier-syntax">platform</span><span class="plain-syntax"> </span><span class="identifier-syntax">specific</span><span class="plain-syntax"> </span><span class="identifier-syntax">startup</span><span class="plain-syntax"> </span><span class="identifier-syntax">rule</span><span class="plain-syntax"> </span><span class="identifier-syntax">translates</span><span class="plain-syntax"> </span><span class="identifier-syntax">into</span><span class="plain-syntax"> </span><span class="identifier-syntax">Inter</span><span class="plain-syntax"> </span><span class="identifier-syntax">as</span><span class="plain-syntax"> </span><span class="string-syntax">"PLATFORM_SPECIFIC_STARTUP_R"</span><span class="plain-syntax">.</span>
<span class="identifier-syntax">The</span><span class="plain-syntax"> </span><span class="identifier-syntax">initialise</span><span class="plain-syntax"> </span><span class="identifier-syntax">memory</span><span class="plain-syntax"> </span><span class="identifier-syntax">rule</span><span class="plain-syntax"> </span><span class="identifier-syntax">is</span><span class="plain-syntax"> </span><span class="identifier-syntax">listed</span><span class="plain-syntax"> </span><span class="identifier-syntax">in</span><span class="plain-syntax"> </span><span class="identifier-syntax">the</span><span class="plain-syntax"> </span><span class="identifier-syntax">before</span><span class="plain-syntax"> </span><span class="identifier-syntax">starting</span><span class="plain-syntax"> </span><span class="identifier-syntax">the</span><span class="plain-syntax"> </span><span class="identifier-syntax">virtual</span><span class="plain-syntax"> </span><span class="identifier-syntax">machine</span><span class="plain-syntax"> </span><span class="identifier-syntax">rules</span><span class="plain-syntax">.</span>
<span class="identifier-syntax">The</span><span class="plain-syntax"> </span><span class="identifier-syntax">initialise</span><span class="plain-syntax"> </span><span class="identifier-syntax">memory</span><span class="plain-syntax"> </span><span class="identifier-syntax">rule</span><span class="plain-syntax"> </span><span class="identifier-syntax">translates</span><span class="plain-syntax"> </span><span class="identifier-syntax">into</span><span class="plain-syntax"> </span><span class="identifier-syntax">Inter</span><span class="plain-syntax"> </span><span class="identifier-syntax">as</span><span class="plain-syntax"> </span><span class="string-syntax">"INITIALISE_MEMORY_R"</span><span class="plain-syntax">.</span>
<span class="identifier-syntax">The</span><span class="plain-syntax"> </span><span class="identifier-syntax">seed</span><span class="plain-syntax"> </span><span class="identifier-syntax">random</span><span class="plain-syntax"> </span><span class="identifier-syntax">number</span><span class="plain-syntax"> </span><span class="identifier-syntax">generator</span><span class="plain-syntax"> </span><span class="identifier-syntax">rule</span><span class="plain-syntax"> </span><span class="identifier-syntax">is</span><span class="plain-syntax"> </span><span class="identifier-syntax">listed</span><span class="plain-syntax"> </span><span class="identifier-syntax">in</span><span class="plain-syntax"> </span><span class="identifier-syntax">the</span><span class="plain-syntax"> </span><span class="identifier-syntax">before</span><span class="plain-syntax"> </span><span class="identifier-syntax">starting</span><span class="plain-syntax"> </span><span class="identifier-syntax">the</span><span class="plain-syntax"> </span><span class="identifier-syntax">virtual</span><span class="plain-syntax"> </span><span class="identifier-syntax">machine</span><span class="plain-syntax"> </span><span class="identifier-syntax">rules</span><span class="plain-syntax">.</span>
<span class="identifier-syntax">The</span><span class="plain-syntax"> </span><span class="identifier-syntax">seed</span><span class="plain-syntax"> </span><span class="identifier-syntax">random</span><span class="plain-syntax"> </span><span class="identifier-syntax">number</span><span class="plain-syntax"> </span><span class="identifier-syntax">generator</span><span class="plain-syntax"> </span><span class="identifier-syntax">rule</span><span class="plain-syntax"> </span><span class="identifier-syntax">translates</span><span class="plain-syntax"> </span><span class="identifier-syntax">into</span><span class="plain-syntax"> </span><span class="identifier-syntax">Inter</span><span class="plain-syntax"> </span><span class="identifier-syntax">as</span><span class="plain-syntax"> </span><span class="string-syntax">"SEED_RANDOM_NUMBER_GENERATOR_R"</span><span class="plain-syntax">.</span>
<span class="identifier-syntax">Section</span><span class="plain-syntax"> - </span><span class="identifier-syntax">Startup</span><span class="plain-syntax"> </span><span class="identifier-syntax">C</span><span class="plain-syntax"> (</span><span class="identifier-syntax">for</span><span class="plain-syntax"> </span><span class="identifier-syntax">Glulx</span><span class="plain-syntax"> </span><span class="identifier-syntax">only</span><span class="plain-syntax">)</span>
<span class="identifier-syntax">The</span><span class="plain-syntax"> </span><span class="identifier-syntax">recover</span><span class="plain-syntax"> </span><span class="identifier-syntax">Glk</span><span class="plain-syntax"> </span><span class="identifier-syntax">objects</span><span class="plain-syntax"> </span><span class="identifier-syntax">rule</span><span class="plain-syntax"> </span><span class="identifier-syntax">is</span><span class="plain-syntax"> </span><span class="identifier-syntax">listed</span><span class="plain-syntax"> </span><span class="identifier-syntax">in</span><span class="plain-syntax"> </span><span class="identifier-syntax">the</span><span class="plain-syntax"> </span><span class="identifier-syntax">before</span><span class="plain-syntax"> </span><span class="identifier-syntax">starting</span><span class="plain-syntax"> </span><span class="identifier-syntax">the</span><span class="plain-syntax"> </span><span class="identifier-syntax">virtual</span><span class="plain-syntax"> </span><span class="identifier-syntax">machine</span><span class="plain-syntax"> </span><span class="identifier-syntax">rules</span><span class="plain-syntax">.</span>
<span class="identifier-syntax">The</span><span class="plain-syntax"> </span><span class="identifier-syntax">recover</span><span class="plain-syntax"> </span><span class="identifier-syntax">Glk</span><span class="plain-syntax"> </span><span class="identifier-syntax">objects</span><span class="plain-syntax"> </span><span class="identifier-syntax">rule</span><span class="plain-syntax"> </span><span class="identifier-syntax">translates</span><span class="plain-syntax"> </span><span class="identifier-syntax">into</span><span class="plain-syntax"> </span><span class="identifier-syntax">Inter</span><span class="plain-syntax"> </span><span class="identifier-syntax">as</span><span class="plain-syntax"> </span><span class="string-syntax">"GGRecoverObjects"</span><span class="plain-syntax">.</span>
</pre>
<p class="commentary firstcommentary"><a id="SP8" class="paragraph-anchor"></a><b>&#167;8. </b>However, the two activities for printing names of objects are indeed
<p class="commentary firstcommentary"><a id="SP8" class="paragraph-anchor"></a><b>&#167;8. </b>These rules now set up the built in sound channels and windows.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="identifier-syntax">The</span><span class="plain-syntax"> </span><span class="identifier-syntax">sound</span><span class="plain-syntax"> </span><span class="identifier-syntax">channel</span><span class="plain-syntax"> </span><span class="identifier-syntax">initialisation</span><span class="plain-syntax"> </span><span class="identifier-syntax">rule</span><span class="plain-syntax"> </span><span class="identifier-syntax">is</span><span class="plain-syntax"> </span><span class="identifier-syntax">listed</span><span class="plain-syntax"> </span><span class="identifier-syntax">in</span><span class="plain-syntax"> </span><span class="identifier-syntax">the</span><span class="plain-syntax"> </span><span class="identifier-syntax">for</span><span class="plain-syntax"> </span><span class="identifier-syntax">starting</span><span class="plain-syntax"> </span><span class="identifier-syntax">the</span><span class="plain-syntax"> </span><span class="identifier-syntax">virtual</span><span class="plain-syntax"> </span><span class="identifier-syntax">machine</span><span class="plain-syntax"> </span><span class="identifier-syntax">rules</span><span class="plain-syntax">.</span>
<span class="identifier-syntax">The</span><span class="plain-syntax"> </span><span class="identifier-syntax">sound</span><span class="plain-syntax"> </span><span class="identifier-syntax">channel</span><span class="plain-syntax"> </span><span class="identifier-syntax">initialisation</span><span class="plain-syntax"> </span><span class="identifier-syntax">rule</span><span class="plain-syntax"> </span><span class="identifier-syntax">translates</span><span class="plain-syntax"> </span><span class="identifier-syntax">into</span><span class="plain-syntax"> </span><span class="identifier-syntax">Inter</span><span class="plain-syntax"> </span><span class="identifier-syntax">as</span><span class="plain-syntax"> </span><span class="string-syntax">"SOUND_CHANNEL_INIT_R"</span><span class="plain-syntax">.</span>
<span class="identifier-syntax">The</span><span class="plain-syntax"> </span><span class="identifier-syntax">open</span><span class="plain-syntax"> </span><span class="identifier-syntax">built</span><span class="plain-syntax">-</span><span class="identifier-syntax">in</span><span class="plain-syntax"> </span><span class="identifier-syntax">windows</span><span class="plain-syntax"> </span><span class="identifier-syntax">rule</span><span class="plain-syntax"> </span><span class="identifier-syntax">is</span><span class="plain-syntax"> </span><span class="identifier-syntax">listed</span><span class="plain-syntax"> </span><span class="identifier-syntax">in</span><span class="plain-syntax"> </span><span class="identifier-syntax">the</span><span class="plain-syntax"> </span><span class="identifier-syntax">for</span><span class="plain-syntax"> </span><span class="identifier-syntax">starting</span><span class="plain-syntax"> </span><span class="identifier-syntax">the</span><span class="plain-syntax"> </span><span class="identifier-syntax">virtual</span><span class="plain-syntax"> </span><span class="identifier-syntax">machine</span><span class="plain-syntax"> </span><span class="identifier-syntax">rules</span><span class="plain-syntax">.</span>
<span class="identifier-syntax">The</span><span class="plain-syntax"> </span><span class="identifier-syntax">open</span><span class="plain-syntax"> </span><span class="identifier-syntax">built</span><span class="plain-syntax">-</span><span class="identifier-syntax">in</span><span class="plain-syntax"> </span><span class="identifier-syntax">windows</span><span class="plain-syntax"> </span><span class="identifier-syntax">rule</span><span class="plain-syntax"> </span><span class="identifier-syntax">translates</span><span class="plain-syntax"> </span><span class="identifier-syntax">into</span><span class="plain-syntax"> </span><span class="identifier-syntax">Inter</span><span class="plain-syntax"> </span><span class="identifier-syntax">as</span><span class="plain-syntax"> </span><span class="string-syntax">"OPEN_BUILT_IN_WINDOWS_R"</span><span class="plain-syntax">.</span>
<span class="identifier-syntax">The</span><span class="plain-syntax"> </span><span class="identifier-syntax">display</span><span class="plain-syntax"> </span><span class="identifier-syntax">captured</span><span class="plain-syntax"> </span><span class="identifier-syntax">startup</span><span class="plain-syntax"> </span><span class="identifier-syntax">text</span><span class="plain-syntax"> </span><span class="identifier-syntax">rule</span><span class="plain-syntax"> </span><span class="identifier-syntax">is</span><span class="plain-syntax"> </span><span class="identifier-syntax">listed</span><span class="plain-syntax"> </span><span class="identifier-syntax">in</span><span class="plain-syntax"> </span><span class="identifier-syntax">the</span><span class="plain-syntax"> </span><span class="identifier-syntax">for</span><span class="plain-syntax"> </span><span class="identifier-syntax">starting</span><span class="plain-syntax"> </span><span class="identifier-syntax">the</span><span class="plain-syntax"> </span><span class="identifier-syntax">virtual</span><span class="plain-syntax"> </span><span class="identifier-syntax">machine</span><span class="plain-syntax"> </span><span class="identifier-syntax">rules</span><span class="plain-syntax">.</span>
<span class="identifier-syntax">The</span><span class="plain-syntax"> </span><span class="identifier-syntax">display</span><span class="plain-syntax"> </span><span class="identifier-syntax">captured</span><span class="plain-syntax"> </span><span class="identifier-syntax">startup</span><span class="plain-syntax"> </span><span class="identifier-syntax">text</span><span class="plain-syntax"> </span><span class="identifier-syntax">rule</span><span class="plain-syntax"> </span><span class="identifier-syntax">translates</span><span class="plain-syntax"> </span><span class="identifier-syntax">into</span><span class="plain-syntax"> </span><span class="identifier-syntax">Inter</span><span class="plain-syntax"> </span><span class="identifier-syntax">as</span><span class="plain-syntax"> </span><span class="string-syntax">"END_CAPTURE_STARTUP_TEXT_R"</span><span class="plain-syntax">.</span>
</pre>
<p class="commentary firstcommentary"><a id="SP9" class="paragraph-anchor"></a><b>&#167;9. </b>However, the two activities for printing names of objects are indeed
functional in Basic Inform.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="identifier-syntax">Chapter</span><span class="plain-syntax"> - </span><span class="identifier-syntax">Printing</span><span class="plain-syntax"> </span><span class="identifier-syntax">activities</span>
<span class="identifier-syntax">Printing</span><span class="plain-syntax"> </span><span class="identifier-syntax">the</span><span class="plain-syntax"> </span><span class="identifier-syntax">name</span><span class="plain-syntax"> </span><span class="identifier-syntax">of</span><span class="plain-syntax"> </span><span class="identifier-syntax">something</span><span class="plain-syntax"> (</span><span class="identifier-syntax">hidden</span><span class="plain-syntax"> </span><span class="identifier-syntax">in</span><span class="plain-syntax"> </span><span class="identifier-syntax">RULES</span><span class="plain-syntax"> </span><span class="identifier-syntax">command</span><span class="plain-syntax">) (</span><span class="identifier-syntax">documented</span><span class="plain-syntax"> </span><span class="identifier-syntax">at</span><span class="plain-syntax"> </span><span class="identifier-syntax">act_pn</span><span class="plain-syntax">) </span><span class="identifier-syntax">is</span><span class="plain-syntax"> </span><span class="identifier-syntax">an</span><span class="plain-syntax"> </span><span class="identifier-syntax">activity</span><span class="plain-syntax">.</span>
<span class="identifier-syntax">The</span><span class="plain-syntax"> </span><span class="identifier-syntax">printing</span><span class="plain-syntax"> </span><span class="identifier-syntax">the</span><span class="plain-syntax"> </span><span class="identifier-syntax">name</span><span class="plain-syntax"> </span><span class="identifier-syntax">activity</span><span class="plain-syntax"> </span><span class="identifier-syntax">is</span><span class="plain-syntax"> </span><span class="identifier-syntax">accessible</span><span class="plain-syntax"> </span><span class="identifier-syntax">to</span><span class="plain-syntax"> </span><span class="identifier-syntax">Inter</span><span class="plain-syntax"> </span><span class="identifier-syntax">as</span><span class="plain-syntax"> </span><span class="string-syntax">"PRINTING_THE_NAME_ACT"</span><span class="plain-syntax">.</span>

View file

@ -102,7 +102,7 @@ ones being initially zero.
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">fn_name</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"DebugAction"</span><span class="plain-syntax">)) </span><span class="named-paragraph-container code-font"><a href="4-i6c2.html#SP2_4" class="named-paragraph-link"><span class="named-paragraph">Inject code at the top of DebugAction</span><span class="named-paragraph-number">2.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">Str::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">fn_name</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"DebugAttribute"</span><span class="plain-syntax">)) </span><span class="named-paragraph-container code-font"><a href="4-i6c2.html#SP2_5" class="named-paragraph-link"><span class="named-paragraph">Inject code at the top of DebugAttribute</span><span class="named-paragraph-number">2.5</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">Str::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">fn_name</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"DebugProperty"</span><span class="plain-syntax">)) </span><span class="named-paragraph-container code-font"><a href="4-i6c2.html#SP2_6" class="named-paragraph-link"><span class="named-paragraph">Inject code at the top of DebugProperty</span><span class="named-paragraph-number">2.6</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">Str::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">fn_name</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"FINAL_CODE_STARTUP_R"</span><span class="plain-syntax">)) </span><span class="named-paragraph-container code-font"><a href="4-i6c2.html#SP2_7" class="named-paragraph-link"><span class="named-paragraph">Inject code at the top of FINAL_CODE_STARTUP_R</span><span class="named-paragraph-number">2.7</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">Str::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">fn_name</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"PLATFORM_SPECIFIC_STARTUP_R"</span><span class="plain-syntax">)) </span><span class="named-paragraph-container code-font"><a href="4-i6c2.html#SP2_7" class="named-paragraph-link"><span class="named-paragraph">Inject code at the top of PLATFORM_SPECIFIC_STARTUP_R</span><span class="named-paragraph-number">2.7</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><a href="2-vnl.html#SP3" class="function-link"><span class="function-syntax">Vanilla::node</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">, </span><span class="identifier-syntax">vf</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">function_body</span><span class="plain-syntax">); </span><span class="comment-syntax"> This compiles the body of the function</span>
@ -216,7 +216,7 @@ functions do not exist in earlier Glulx implementations. However, takeup of
3.1.3 has been swift. (See Jira bug I7-2328 and I7-1162.)
</p>
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Inject code at the top of FINAL_CODE_STARTUP_R</span><span class="named-paragraph-number">2.7</span></span><span class="comment-syntax"> =</span>
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Inject code at the top of PLATFORM_SPECIFIC_STARTUP_R</span><span class="named-paragraph-number">2.7</span></span><span class="comment-syntax"> =</span>
</p>
<pre class="displayed-code all-displayed-code code-font">

View file

@ -221,7 +221,7 @@ or as paragraph of text in pass 2:
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Metadata::read_optional_numeric</span><span class="plain-syntax">(</span><span class="identifier-syntax">pack</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"^understandable"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">under</span><span class="plain-syntax"> = </span><span class="string-syntax">"tick"</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">priority</span><span class="plain-syntax"> == </span><span class="constant-syntax">8</span><span class="plain-syntax">) { </span><span class="identifier-syntax">repeat</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">; </span><span class="identifier-syntax">props</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">; </span><span class="identifier-syntax">under</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">; }</span>
<span class="plain-syntax"> </span><a href="3-ce2.html#SP3" class="function-link"><span class="function-syntax">ChartElement::begin_chart_row</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">session</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="3-ce2.html#SP4" class="function-link"><span class="function-syntax">ChartElement::index_kind_name_cell</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">shaded</span><span class="plain-syntax">, </span><span class="identifier-syntax">pack</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="3-ce2.html#SP4" class="function-link"><span class="function-syntax">ChartElement::index_kind_name_cell</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">shaded</span><span class="plain-syntax">, </span><span class="identifier-syntax">i</span><span class="plain-syntax">, </span><span class="identifier-syntax">pack</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="3-ce2.html#SP5" class="function-link"><span class="function-syntax">ChartElement::end_chart_row</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">shaded</span><span class="plain-syntax">, </span><span class="identifier-syntax">pack</span><span class="plain-syntax">, </span><span class="identifier-syntax">repeat</span><span class="plain-syntax">, </span><span class="identifier-syntax">props</span><span class="plain-syntax">, </span><span class="identifier-syntax">under</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
@ -356,7 +356,8 @@ sound effects row is shaded if there are none.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">ChartElement::index_kind_name_cell</span><button class="popup" onclick="togglePopup('usagePopup4')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup4">Usage of <span class="code-font"><span class="function-syntax">ChartElement::index_kind_name_cell</span></span>:<br/><a href="3-ce2.html#SP1_1_2">&#167;1.1.2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">shaded</span><span class="plain-syntax">, </span><span class="identifier-syntax">inter_package</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pack</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">ChartElement::index_kind_name_cell</span><button class="popup" onclick="togglePopup('usagePopup4')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup4">Usage of <span class="code-font"><span class="function-syntax">ChartElement::index_kind_name_cell</span></span>:<br/><a href="3-ce2.html#SP1_1_2">&#167;1.1.2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">shaded</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">posn</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_package</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pack</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">shaded</span><span class="plain-syntax">) </span><span class="identifier-syntax">HTML::begin_span</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"indexgrey"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-iu.html#SP11" class="function-link"><span class="function-syntax">IndexUtilities::kind_name</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">pack</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">, </span><span class="identifier-syntax">TRUE</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">Metadata::read_optional_numeric</span><span class="plain-syntax">(</span><span class="identifier-syntax">pack</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"^is_quasinumerical"</span><span class="plain-syntax">)) {</span>
@ -368,7 +369,7 @@ sound effects row is shaded if there are none.
<span class="plain-syntax"> </span><a href="2-iu.html#SP3" class="function-link"><span class="function-syntax">IndexUtilities::link_to_documentation</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">pack</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax"> = (</span><span class="reserved-syntax">int</span><span class="plain-syntax">) </span><span class="identifier-syntax">Metadata::read_optional_numeric</span><span class="plain-syntax">(</span><span class="identifier-syntax">pack</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"^instance_count"</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">i</span><span class="plain-syntax"> &gt;= </span><span class="constant-syntax">1</span><span class="plain-syntax">) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">" [%d]"</span><span class="plain-syntax">, </span><span class="identifier-syntax">i</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-iu.html#SP5" class="function-link"><span class="function-syntax">IndexUtilities::below_link_numbered</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">pack</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">allocation_id</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-iu.html#SP5" class="function-link"><span class="function-syntax">IndexUtilities::below_link_numbered</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">posn</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">shaded</span><span class="plain-syntax">) </span><span class="identifier-syntax">HTML::end_span</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</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">shaded</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
@ -429,7 +430,6 @@ whole row.
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">class_s</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Metadata::optional_symbol</span><span class="plain-syntax">(</span><span class="identifier-syntax">pack</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"^object_class"</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">class_s</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"no class for object kind"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">anchor</span><span class="plain-syntax"> = </span><span class="identifier-syntax">InterSymbol::identifier</span><span class="plain-syntax">(</span><span class="identifier-syntax">class_s</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">shaded</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-ce2.html#SP6_1" class="named-paragraph-link"><span class="named-paragraph">Begin the object citation line</span><span class="named-paragraph-number">6.1</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-ce2.html#SP6_3" class="named-paragraph-link"><span class="named-paragraph">Index the name part of the object citation</span><span class="named-paragraph-number">6.3</span></a></span><span class="plain-syntax">;</span>

View file

@ -181,21 +181,21 @@ than the number with correct ones
number of successes.
</li></ul>
<pre class="undisplayed-code all-displayed-code code-font">
<span class="plain-syntax">Size of lexicon: 3135 excerpt meanings</span>
<span class="plain-syntax"> Stored among 847 words out of total vocabulary of 10747</span>
<span class="plain-syntax"> 717 words have a start list: longest belongs to report (with 293 meanings)</span>
<span class="plain-syntax">Size of lexicon: 3141 excerpt meanings</span>
<span class="plain-syntax"> Stored among 849 words out of total vocabulary of 10759</span>
<span class="plain-syntax"> 719 words have a start list: longest belongs to report (with 293 meanings)</span>
<span class="plain-syntax"> 15 words have an end list: longest belongs to case (with 6 meanings)</span>
<span class="plain-syntax"> 29 words have a middle list: longest belongs to to (with 4 meanings)</span>
<span class="plain-syntax"> 108 words have a subset list: longest belongs to street (with 4 meanings)</span>
<span class="plain-syntax">Number of attempts to retrieve: 110344</span>
<span class="plain-syntax"> of which unsuccessful: 92205</span>
<span class="plain-syntax"> of which successful: 18139</span>
<span class="plain-syntax">Number of attempts to retrieve: 110380</span>
<span class="plain-syntax"> of which unsuccessful: 92237</span>
<span class="plain-syntax"> of which successful: 18143</span>
<span class="plain-syntax">Total attempts to match against excerpt meanings: 277428</span>
<span class="plain-syntax"> of which, total with incorrect hash codes: 254691</span>
<span class="plain-syntax"> of which, total with correct hash codes: 22737</span>
<span class="plain-syntax"> of which, total which matched: 19906</span>
<span class="plain-syntax">Total attempts to match against excerpt meanings: 279269</span>
<span class="plain-syntax"> of which, total with incorrect hash codes: 256529</span>
<span class="plain-syntax"> of which, total with correct hash codes: 22740</span>
<span class="plain-syntax"> of which, total which matched: 19910</span>
</pre>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprevoff">&#10094;</li><li class="progresscurrentchapter">P</li><li class="progresscurrent">wtmd</li><li class="progresssection"><a href="P-htitm.html">htitm</a></li><li class="progresschapter"><a href="1-lm.html">1</a></li><li class="progresschapter"><a href="2-em.html">2</a></li><li class="progressnext"><a href="P-htitm.html">&#10095;</a></li></ul></div>

View file

@ -293,13 +293,13 @@ Within each category, items are listed in order of creation.
<pre class="undisplayed-code all-displayed-code code-font">
<span class="plain-syntax">adjective: 140 items</span>
<span class="plain-syntax">article: 2 items</span>
<span class="plain-syntax">noun: 2389 items</span>
<span class="plain-syntax">noun: 2395 items</span>
<span class="plain-syntax">pronoun: 8 items</span>
<span class="plain-syntax">preposition: 274 items</span>
<span class="plain-syntax">determiner: 22 items</span>
<span class="plain-syntax">verb: 109 items</span>
<span class="plain-syntax">verb_form: 388 items</span>
<span class="plain-syntax">total in all categories: 3332</span>
<span class="plain-syntax">total in all categories: 3338</span>
<span class="plain-syntax">adjective: 'even'</span>
<span class="plain-syntax">adjective: 'odd'</span>
@ -522,6 +522,7 @@ Within each category, items are listed in order of creation.
<span class="plain-syntax">noun: proper: 'property printed plural name'</span>
<span class="plain-syntax">noun: proper: 'indefinite article'</span>
<span class="plain-syntax">noun: proper: 'property indefinite article'</span>
<span class="plain-syntax">noun: proper: 'virtual machine startup rule'</span>
<span class="plain-syntax">noun: proper: 'abs function'</span>
<span class="plain-syntax">noun: proper: 'root function'</span>
<span class="plain-syntax">noun: proper: 'rsqr function'</span>
@ -574,7 +575,6 @@ Within each category, items are listed in order of creation.
<span class="plain-syntax">noun: proper: 'lock-fitting relation'</span>
<span class="plain-syntax">noun: proper: 'list grouping key'</span>
<span class="plain-syntax">noun: proper: 'property list grouping key'</span>
<span class="plain-syntax">noun: proper: 'declare everything initially unmentioned rule'</span>
<span class="plain-syntax">noun: proper: 'start in the correct scenes rule'</span>
<span class="plain-syntax">noun: proper: 'when play begins stage rule'</span>
<span class="plain-syntax">noun: proper: 'fix baseline scoring rule'</span>
@ -582,6 +582,7 @@ Within each category, items are listed in order of creation.
<span class="plain-syntax">noun: proper: 'initial room description rule'</span>
<span class="plain-syntax">noun: proper: 'every turn stage rule'</span>
<span class="plain-syntax">noun: proper: 'early scene changing stage rule'</span>
<span class="plain-syntax">noun: proper: 'declare everything initially unmentioned rule'</span>
<span class="plain-syntax">noun: proper: 'late scene changing stage rule'</span>
<span class="plain-syntax">noun: proper: 'notify score changes rule'</span>
<span class="plain-syntax">noun: proper: 'when play ends stage rule'</span>
@ -989,7 +990,14 @@ Within each category, items are listed in order of creation.
<span class="plain-syntax">noun: proper: 'after starting the virtual machine'</span>
<span class="plain-syntax">noun: proper: 'after starting the virtual machine rules'</span>
<span class="plain-syntax">noun: proper: 'after starting the virtual machine rulebook'</span>
<span class="plain-syntax">noun: proper: 'final code startup rule'</span>
<span class="plain-syntax">noun: proper: 'start capturing startup text rule'</span>
<span class="plain-syntax">noun: proper: 'platform specific startup rule'</span>
<span class="plain-syntax">noun: proper: 'initialise memory rule'</span>
<span class="plain-syntax">noun: proper: 'seed random number generator rule'</span>
<span class="plain-syntax">noun: proper: 'recover glk objects rule'</span>
<span class="plain-syntax">noun: proper: 'sound channel initialisation rule'</span>
<span class="plain-syntax">noun: proper: 'open built-in windows rule'</span>
<span class="plain-syntax">noun: proper: 'display captured startup text rule'</span>
<span class="plain-syntax">noun: proper: 'printing the name'</span>
<span class="plain-syntax">noun: proper: 'printing the name activity'</span>
<span class="plain-syntax">noun: proper: 'before printing the name'</span>
@ -1267,9 +1275,7 @@ Within each category, items are listed in order of creation.
<span class="plain-syntax">noun: proper: 'multiple action processing rules'</span>
<span class="plain-syntax">noun: proper: 'multiple action processing rulebook'</span>
<span class="plain-syntax">noun: proper: 'little-used do nothing rule'</span>
<span class="plain-syntax">noun: proper: 'virtual machine startup rule'</span>
<span class="plain-syntax">noun: proper: 'initialise memory rule'</span>
<span class="plain-syntax">noun: proper: 'seed random number generator rule'</span>
<span class="plain-syntax">noun: proper: 'initial whitespace rule'</span>
<span class="plain-syntax">noun: proper: 'update chronological records rule'</span>
<span class="plain-syntax">noun: proper: 'position player in model world rule'</span>
<span class="plain-syntax">noun: proper: 'adjust light rule'</span>

View file

@ -438,14 +438,14 @@ recognised as an answer.)
<span class="plain-syntax"> </span><span class="identifier-syntax">repeat</span><span class="plain-syntax"> </span><span class="identifier-syntax">through</span><span class="plain-syntax"> </span><span class="identifier-syntax">the</span><span class="plain-syntax"> </span><span class="identifier-syntax">Table</span><span class="plain-syntax"> </span><span class="identifier-syntax">of</span><span class="plain-syntax"> </span><span class="identifier-syntax">Final</span><span class="plain-syntax"> </span><span class="identifier-syntax">Question</span><span class="plain-syntax"> </span><span class="identifier-syntax">Options</span><span class="plain-syntax">:</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">if</span><span class="plain-syntax"> </span><span class="identifier-syntax">the</span><span class="plain-syntax"> </span><span class="identifier-syntax">only</span><span class="plain-syntax"> </span><span class="identifier-syntax">if</span><span class="plain-syntax"> </span><span class="identifier-syntax">victorious</span><span class="plain-syntax"> </span><span class="identifier-syntax">entry</span><span class="plain-syntax"> </span><span class="identifier-syntax">is</span><span class="plain-syntax"> </span><span class="identifier-syntax">false</span><span class="plain-syntax"> </span><span class="identifier-syntax">or</span><span class="plain-syntax"> </span><span class="identifier-syntax">the</span><span class="plain-syntax"> </span><span class="identifier-syntax">story</span><span class="plain-syntax"> </span><span class="identifier-syntax">has</span><span class="plain-syntax"> </span><span class="identifier-syntax">ended</span><span class="plain-syntax"> </span><span class="identifier-syntax">finally</span><span class="plain-syntax">:</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">if</span><span class="plain-syntax"> </span><span class="identifier-syntax">there</span><span class="plain-syntax"> </span><span class="identifier-syntax">is</span><span class="plain-syntax"> </span><span class="identifier-syntax">a</span><span class="plain-syntax"> </span><span class="identifier-syntax">final</span><span class="plain-syntax"> </span><span class="identifier-syntax">response</span><span class="plain-syntax"> </span><span class="identifier-syntax">rule</span><span class="plain-syntax"> </span><span class="identifier-syntax">entry</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">or</span><span class="plain-syntax"> </span><span class="identifier-syntax">the</span><span class="plain-syntax"> </span><span class="identifier-syntax">final</span><span class="plain-syntax"> </span><span class="identifier-syntax">response</span><span class="plain-syntax"> </span><span class="identifier-syntax">activity</span><span class="plain-syntax"> </span><span class="identifier-syntax">entry</span><span class="plain-syntax"> [</span><span class="identifier-syntax">activity</span><span class="plain-syntax">] </span><span class="identifier-syntax">is</span><span class="plain-syntax"> </span><span class="identifier-syntax">not</span><span class="plain-syntax"> </span><span class="identifier-syntax">empty</span><span class="plain-syntax">:</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">or</span><span class="plain-syntax"> </span><span class="identifier-syntax">the</span><span class="plain-syntax"> </span><span class="identifier-syntax">final</span><span class="plain-syntax"> </span><span class="identifier-syntax">response</span><span class="plain-syntax"> </span><span class="identifier-syntax">activity</span><span class="plain-syntax"> </span><span class="identifier-syntax">entry</span><span class="plain-syntax"> </span><span class="identifier-syntax">is</span><span class="plain-syntax"> </span><span class="identifier-syntax">not</span><span class="plain-syntax"> </span><span class="identifier-syntax">empty</span><span class="plain-syntax">:</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">if</span><span class="plain-syntax"> </span><span class="identifier-syntax">there</span><span class="plain-syntax"> </span><span class="identifier-syntax">is</span><span class="plain-syntax"> </span><span class="identifier-syntax">a</span><span class="plain-syntax"> </span><span class="identifier-syntax">final</span><span class="plain-syntax"> </span><span class="identifier-syntax">question</span><span class="plain-syntax"> </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">entry</span><span class="plain-syntax">, </span><span class="identifier-syntax">increase</span><span class="plain-syntax"> </span><span class="identifier-syntax">named</span><span class="plain-syntax"> </span><span class="identifier-syntax">options</span><span class="plain-syntax"> </span><span class="identifier-syntax">count</span><span class="plain-syntax"> </span><span class="identifier-syntax">by</span><span class="plain-syntax"> </span><span class="constant-syntax">1</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">if</span><span class="plain-syntax"> </span><span class="identifier-syntax">the</span><span class="plain-syntax"> </span><span class="identifier-syntax">named</span><span class="plain-syntax"> </span><span class="identifier-syntax">options</span><span class="plain-syntax"> </span><span class="identifier-syntax">count</span><span class="plain-syntax"> </span><span class="identifier-syntax">is</span><span class="plain-syntax"> </span><span class="identifier-syntax">less</span><span class="plain-syntax"> </span><span class="identifier-syntax">than</span><span class="plain-syntax"> </span><span class="constant-syntax">1</span><span class="plain-syntax">, </span><span class="identifier-syntax">abide</span><span class="plain-syntax"> </span><span class="identifier-syntax">by</span><span class="plain-syntax"> </span><span class="identifier-syntax">the</span><span class="plain-syntax"> </span><span class="identifier-syntax">immediately</span><span class="plain-syntax"> </span><span class="identifier-syntax">quit</span><span class="plain-syntax"> </span><span class="identifier-syntax">rule</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">say</span><span class="plain-syntax"> </span><span class="string-syntax">"Would you like to "</span><span class="plain-syntax"> (</span><span class="identifier-syntax">A</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">repeat</span><span class="plain-syntax"> </span><span class="identifier-syntax">through</span><span class="plain-syntax"> </span><span class="identifier-syntax">the</span><span class="plain-syntax"> </span><span class="identifier-syntax">Table</span><span class="plain-syntax"> </span><span class="identifier-syntax">of</span><span class="plain-syntax"> </span><span class="identifier-syntax">Final</span><span class="plain-syntax"> </span><span class="identifier-syntax">Question</span><span class="plain-syntax"> </span><span class="identifier-syntax">Options</span><span class="plain-syntax">:</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">if</span><span class="plain-syntax"> </span><span class="identifier-syntax">the</span><span class="plain-syntax"> </span><span class="identifier-syntax">only</span><span class="plain-syntax"> </span><span class="identifier-syntax">if</span><span class="plain-syntax"> </span><span class="identifier-syntax">victorious</span><span class="plain-syntax"> </span><span class="identifier-syntax">entry</span><span class="plain-syntax"> </span><span class="identifier-syntax">is</span><span class="plain-syntax"> </span><span class="identifier-syntax">false</span><span class="plain-syntax"> </span><span class="identifier-syntax">or</span><span class="plain-syntax"> </span><span class="identifier-syntax">the</span><span class="plain-syntax"> </span><span class="identifier-syntax">story</span><span class="plain-syntax"> </span><span class="identifier-syntax">has</span><span class="plain-syntax"> </span><span class="identifier-syntax">ended</span><span class="plain-syntax"> </span><span class="identifier-syntax">finally</span><span class="plain-syntax">:</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">if</span><span class="plain-syntax"> </span><span class="identifier-syntax">there</span><span class="plain-syntax"> </span><span class="identifier-syntax">is</span><span class="plain-syntax"> </span><span class="identifier-syntax">a</span><span class="plain-syntax"> </span><span class="identifier-syntax">final</span><span class="plain-syntax"> </span><span class="identifier-syntax">response</span><span class="plain-syntax"> </span><span class="identifier-syntax">rule</span><span class="plain-syntax"> </span><span class="identifier-syntax">entry</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">or</span><span class="plain-syntax"> </span><span class="identifier-syntax">the</span><span class="plain-syntax"> </span><span class="identifier-syntax">final</span><span class="plain-syntax"> </span><span class="identifier-syntax">response</span><span class="plain-syntax"> </span><span class="identifier-syntax">activity</span><span class="plain-syntax"> </span><span class="identifier-syntax">entry</span><span class="plain-syntax"> [</span><span class="identifier-syntax">activity</span><span class="plain-syntax">] </span><span class="identifier-syntax">is</span><span class="plain-syntax"> </span><span class="identifier-syntax">not</span><span class="plain-syntax"> </span><span class="identifier-syntax">empty</span><span class="plain-syntax">:</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">or</span><span class="plain-syntax"> </span><span class="identifier-syntax">the</span><span class="plain-syntax"> </span><span class="identifier-syntax">final</span><span class="plain-syntax"> </span><span class="identifier-syntax">response</span><span class="plain-syntax"> </span><span class="identifier-syntax">activity</span><span class="plain-syntax"> </span><span class="identifier-syntax">entry</span><span class="plain-syntax"> </span><span class="identifier-syntax">is</span><span class="plain-syntax"> </span><span class="identifier-syntax">not</span><span class="plain-syntax"> </span><span class="identifier-syntax">empty</span><span class="plain-syntax">:</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">if</span><span class="plain-syntax"> </span><span class="identifier-syntax">there</span><span class="plain-syntax"> </span><span class="identifier-syntax">is</span><span class="plain-syntax"> </span><span class="identifier-syntax">a</span><span class="plain-syntax"> </span><span class="identifier-syntax">final</span><span class="plain-syntax"> </span><span class="identifier-syntax">question</span><span class="plain-syntax"> </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">entry</span><span class="plain-syntax">:</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">say</span><span class="plain-syntax"> </span><span class="identifier-syntax">final</span><span class="plain-syntax"> </span><span class="identifier-syntax">question</span><span class="plain-syntax"> </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">entry</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">decrease</span><span class="plain-syntax"> </span><span class="identifier-syntax">named</span><span class="plain-syntax"> </span><span class="identifier-syntax">options</span><span class="plain-syntax"> </span><span class="identifier-syntax">count</span><span class="plain-syntax"> </span><span class="identifier-syntax">by</span><span class="plain-syntax"> </span><span class="constant-syntax">1</span><span class="plain-syntax">;</span>
@ -465,7 +465,7 @@ recognised as an answer.)
<span class="plain-syntax"> </span><span class="identifier-syntax">repeat</span><span class="plain-syntax"> </span><span class="identifier-syntax">through</span><span class="plain-syntax"> </span><span class="identifier-syntax">the</span><span class="plain-syntax"> </span><span class="identifier-syntax">Table</span><span class="plain-syntax"> </span><span class="identifier-syntax">of</span><span class="plain-syntax"> </span><span class="identifier-syntax">Final</span><span class="plain-syntax"> </span><span class="identifier-syntax">Question</span><span class="plain-syntax"> </span><span class="identifier-syntax">Options</span><span class="plain-syntax">:</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">if</span><span class="plain-syntax"> </span><span class="identifier-syntax">the</span><span class="plain-syntax"> </span><span class="identifier-syntax">only</span><span class="plain-syntax"> </span><span class="identifier-syntax">if</span><span class="plain-syntax"> </span><span class="identifier-syntax">victorious</span><span class="plain-syntax"> </span><span class="identifier-syntax">entry</span><span class="plain-syntax"> </span><span class="identifier-syntax">is</span><span class="plain-syntax"> </span><span class="identifier-syntax">false</span><span class="plain-syntax"> </span><span class="identifier-syntax">or</span><span class="plain-syntax"> </span><span class="identifier-syntax">the</span><span class="plain-syntax"> </span><span class="identifier-syntax">story</span><span class="plain-syntax"> </span><span class="identifier-syntax">has</span><span class="plain-syntax"> </span><span class="identifier-syntax">ended</span><span class="plain-syntax"> </span><span class="identifier-syntax">finally</span><span class="plain-syntax">:</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">if</span><span class="plain-syntax"> </span><span class="identifier-syntax">there</span><span class="plain-syntax"> </span><span class="identifier-syntax">is</span><span class="plain-syntax"> </span><span class="identifier-syntax">a</span><span class="plain-syntax"> </span><span class="identifier-syntax">final</span><span class="plain-syntax"> </span><span class="identifier-syntax">response</span><span class="plain-syntax"> </span><span class="identifier-syntax">rule</span><span class="plain-syntax"> </span><span class="identifier-syntax">entry</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">or</span><span class="plain-syntax"> </span><span class="identifier-syntax">the</span><span class="plain-syntax"> </span><span class="identifier-syntax">final</span><span class="plain-syntax"> </span><span class="identifier-syntax">response</span><span class="plain-syntax"> </span><span class="identifier-syntax">activity</span><span class="plain-syntax"> </span><span class="identifier-syntax">entry</span><span class="plain-syntax"> [</span><span class="identifier-syntax">activity</span><span class="plain-syntax">] </span><span class="identifier-syntax">is</span><span class="plain-syntax"> </span><span class="identifier-syntax">not</span><span class="plain-syntax"> </span><span class="identifier-syntax">empty</span><span class="plain-syntax">:</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">or</span><span class="plain-syntax"> </span><span class="identifier-syntax">the</span><span class="plain-syntax"> </span><span class="identifier-syntax">final</span><span class="plain-syntax"> </span><span class="identifier-syntax">response</span><span class="plain-syntax"> </span><span class="identifier-syntax">activity</span><span class="plain-syntax"> </span><span class="identifier-syntax">entry</span><span class="plain-syntax"> </span><span class="identifier-syntax">is</span><span class="plain-syntax"> </span><span class="identifier-syntax">not</span><span class="plain-syntax"> </span><span class="identifier-syntax">empty</span><span class="plain-syntax">:</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">if</span><span class="plain-syntax"> </span><span class="identifier-syntax">the</span><span class="plain-syntax"> </span><span class="identifier-syntax">player</span><span class="plain-syntax">'</span><span class="identifier-syntax">s</span><span class="plain-syntax"> </span><span class="identifier-syntax">command</span><span class="plain-syntax"> </span><span class="identifier-syntax">matches</span><span class="plain-syntax"> </span><span class="identifier-syntax">the</span><span class="plain-syntax"> </span><span class="identifier-syntax">topic</span><span class="plain-syntax"> </span><span class="identifier-syntax">entry</span><span class="plain-syntax">:</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">if</span><span class="plain-syntax"> </span><span class="identifier-syntax">there</span><span class="plain-syntax"> </span><span class="identifier-syntax">is</span><span class="plain-syntax"> </span><span class="identifier-syntax">a</span><span class="plain-syntax"> </span><span class="identifier-syntax">final</span><span class="plain-syntax"> </span><span class="identifier-syntax">response</span><span class="plain-syntax"> </span><span class="identifier-syntax">rule</span><span class="plain-syntax"> </span><span class="identifier-syntax">entry</span><span class="plain-syntax">, </span><span class="identifier-syntax">abide</span><span class="plain-syntax"> </span><span class="identifier-syntax">by</span><span class="plain-syntax"> </span><span class="identifier-syntax">final</span><span class="plain-syntax"> </span><span class="identifier-syntax">response</span><span class="plain-syntax"> </span><span class="identifier-syntax">rule</span><span class="plain-syntax"> </span><span class="identifier-syntax">entry</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">otherwise</span><span class="plain-syntax"> </span><span class="identifier-syntax">carry</span><span class="plain-syntax"> </span><span class="identifier-syntax">out</span><span class="plain-syntax"> </span><span class="identifier-syntax">the</span><span class="plain-syntax"> </span><span class="identifier-syntax">final</span><span class="plain-syntax"> </span><span class="identifier-syntax">response</span><span class="plain-syntax"> </span><span class="identifier-syntax">activity</span><span class="plain-syntax"> </span><span class="identifier-syntax">entry</span><span class="plain-syntax"> </span><span class="identifier-syntax">activity</span><span class="plain-syntax">;</span>

View file

@ -417,7 +417,7 @@ also by some of the I7 template routines.)
<span class="identifier-syntax">A</span><span class="plain-syntax"> </span><span class="identifier-syntax">thing</span><span class="plain-syntax"> </span><span class="identifier-syntax">can</span><span class="plain-syntax"> </span><span class="identifier-syntax">be</span><span class="plain-syntax"> </span><span class="identifier-syntax">undescribed</span><span class="plain-syntax"> </span><span class="identifier-syntax">or</span><span class="plain-syntax"> </span><span class="identifier-syntax">described</span><span class="plain-syntax">. </span><span class="identifier-syntax">A</span><span class="plain-syntax"> </span><span class="identifier-syntax">thing</span><span class="plain-syntax"> </span><span class="identifier-syntax">is</span><span class="plain-syntax"> </span><span class="identifier-syntax">usually</span><span class="plain-syntax"> </span><span class="identifier-syntax">described</span><span class="plain-syntax">.</span>
<span class="identifier-syntax">A</span><span class="plain-syntax"> </span><span class="identifier-syntax">thing</span><span class="plain-syntax"> </span><span class="identifier-syntax">can</span><span class="plain-syntax"> </span><span class="identifier-syntax">be</span><span class="plain-syntax"> </span><span class="identifier-syntax">marked</span><span class="plain-syntax"> </span><span class="identifier-syntax">for</span><span class="plain-syntax"> </span><span class="identifier-syntax">listing</span><span class="plain-syntax"> </span><span class="identifier-syntax">or</span><span class="plain-syntax"> </span><span class="identifier-syntax">unmarked</span><span class="plain-syntax"> </span><span class="identifier-syntax">for</span><span class="plain-syntax"> </span><span class="identifier-syntax">listing</span><span class="plain-syntax">. </span><span class="identifier-syntax">A</span><span class="plain-syntax"> </span><span class="identifier-syntax">thing</span><span class="plain-syntax"> </span><span class="identifier-syntax">is</span><span class="plain-syntax"> </span><span class="identifier-syntax">usually</span>
<span class="identifier-syntax">unmarked</span><span class="plain-syntax"> </span><span class="identifier-syntax">for</span><span class="plain-syntax"> </span><span class="identifier-syntax">listing</span><span class="plain-syntax">.</span>
<span class="identifier-syntax">A</span><span class="plain-syntax"> </span><span class="identifier-syntax">thing</span><span class="plain-syntax"> </span><span class="identifier-syntax">can</span><span class="plain-syntax"> </span><span class="identifier-syntax">be</span><span class="plain-syntax"> </span><span class="identifier-syntax">mentioned</span><span class="plain-syntax"> </span><span class="identifier-syntax">or</span><span class="plain-syntax"> </span><span class="identifier-syntax">unmentioned</span><span class="plain-syntax">. </span><span class="identifier-syntax">A</span><span class="plain-syntax"> </span><span class="identifier-syntax">thing</span><span class="plain-syntax"> </span><span class="identifier-syntax">is</span><span class="plain-syntax"> </span><span class="identifier-syntax">usually</span><span class="plain-syntax"> </span><span class="identifier-syntax">mentioned</span><span class="plain-syntax">.</span>
<span class="identifier-syntax">A</span><span class="plain-syntax"> </span><span class="identifier-syntax">thing</span><span class="plain-syntax"> </span><span class="identifier-syntax">can</span><span class="plain-syntax"> </span><span class="identifier-syntax">be</span><span class="plain-syntax"> </span><span class="identifier-syntax">mentioned</span><span class="plain-syntax"> </span><span class="identifier-syntax">or</span><span class="plain-syntax"> </span><span class="identifier-syntax">unmentioned</span><span class="plain-syntax">. </span><span class="identifier-syntax">A</span><span class="plain-syntax"> </span><span class="identifier-syntax">thing</span><span class="plain-syntax"> </span><span class="identifier-syntax">is</span><span class="plain-syntax"> </span><span class="identifier-syntax">usually</span><span class="plain-syntax"> </span><span class="identifier-syntax">unmentioned</span><span class="plain-syntax">.</span>
</pre>
<p class="commentary firstcommentary"><a id="SP22" class="paragraph-anchor"></a><b>&#167;22. </b>We now have a mixed bag of value properties, all descriptive &mdash; it's an
interesting reflection on how qualitative English text usually is that the

View file

@ -360,7 +360,7 @@ about quitting or restarting.
<span class="identifier-syntax">Section</span><span class="plain-syntax"> </span><span class="constant-syntax">1</span><span class="plain-syntax"> - </span><span class="identifier-syntax">The</span><span class="plain-syntax"> </span><span class="identifier-syntax">Standard</span><span class="plain-syntax"> </span><span class="identifier-syntax">Rulebooks</span>
<span class="identifier-syntax">Turn</span><span class="plain-syntax"> </span><span class="identifier-syntax">sequence</span><span class="plain-syntax"> </span><span class="identifier-syntax">rules</span><span class="plain-syntax"> </span><span class="identifier-syntax">is</span><span class="plain-syntax"> </span><span class="identifier-syntax">a</span><span class="plain-syntax"> </span><span class="identifier-syntax">rulebook</span><span class="plain-syntax">.</span>
<span class="identifier-syntax">Turn</span><span class="plain-syntax"> </span><span class="identifier-syntax">sequence</span><span class="plain-syntax"> </span><span class="identifier-syntax">rules</span><span class="plain-syntax"> </span><span class="identifier-syntax">is</span><span class="plain-syntax"> </span><span class="identifier-syntax">a</span><span class="plain-syntax"> </span><span class="identifier-syntax">nothing</span><span class="plain-syntax"> </span><span class="identifier-syntax">based</span><span class="plain-syntax"> </span><span class="identifier-syntax">rulebook</span><span class="plain-syntax">.</span>
<span class="identifier-syntax">The</span><span class="plain-syntax"> </span><span class="identifier-syntax">turn</span><span class="plain-syntax"> </span><span class="identifier-syntax">sequence</span><span class="plain-syntax"> </span><span class="identifier-syntax">rulebook</span><span class="plain-syntax"> </span><span class="identifier-syntax">is</span><span class="plain-syntax"> </span><span class="identifier-syntax">accessible</span><span class="plain-syntax"> </span><span class="identifier-syntax">to</span><span class="plain-syntax"> </span><span class="identifier-syntax">Inter</span><span class="plain-syntax"> </span><span class="identifier-syntax">as</span><span class="plain-syntax"> </span><span class="string-syntax">"TURN_SEQUENCE_RB"</span><span class="plain-syntax">.</span>
</pre>
<p class="commentary firstcommentary"><a id="SP12" class="paragraph-anchor"></a><b>&#167;12. </b>Now a set of rulebooks to do with the passage of time.
@ -571,33 +571,14 @@ automatically to a safely neutral default value. It makes no decision.
<span class="identifier-syntax">The</span><span class="plain-syntax"> </span><span class="identifier-syntax">little</span><span class="plain-syntax">-</span><span class="identifier-syntax">used</span><span class="plain-syntax"> </span><span class="identifier-syntax">do</span><span class="plain-syntax"> </span><span class="identifier-syntax">nothing</span><span class="plain-syntax"> </span><span class="identifier-syntax">rule</span><span class="plain-syntax"> </span><span class="identifier-syntax">is</span><span class="plain-syntax"> </span><span class="identifier-syntax">defined</span><span class="plain-syntax"> </span><span class="identifier-syntax">by</span><span class="plain-syntax"> </span><span class="identifier-syntax">Inter</span><span class="plain-syntax"> </span><span class="identifier-syntax">as</span><span class="plain-syntax"> </span><span class="string-syntax">"LITTLE_USED_DO_NOTHING_R"</span><span class="plain-syntax">.</span>
</pre>
<p class="commentary firstcommentary"><a id="SP21" class="paragraph-anchor"></a><b>&#167;21. Startup. </b>Every rulebook contains a (possibly empty) run of "first" rules, then
a (possibly empty) run of miscellaneous rules, then a (possibly empty)
run of "last" rules. It's unusual to have more than one rule anchored
to either end as "first" or "last", but entirely legal, and we make
use of that ability here.
<p class="commentary firstcommentary"><a id="SP21" class="paragraph-anchor"></a><b>&#167;21. Startup. </b>These startup rules prepare the various world model specific systems.
</p>
<p class="commentary">The "first" rules here are the ones which get the basic machinery working
to the point where it is safe to run arbitrary I7 source text. They necessarily
do very low-level things, and it is not guaranteed that I7 phrases will behave
to specification if executed before these early rules have finished. So it
is hazardous to obstruct or alter them.
</p>
<ul class="items"><li>(a) The "initialise memory rule" starts up the memory allocation heap,
if there is one, and sets some essential I6 variables. If there is any rule
not to meddle with, this is it.
</li><li>(b) The "virtual machine startup rule" carries out necessary steps to
begin execution on the virtual machine in use: this entails relatively little
on the Z-machine versions 5 or 8, but can involve extensive work to get the
screen display working on Glulx or Z6. Before anything else happens, however,
the "starting the virtual machine" activity (see below) is carried out.
</li><li>(c) The "seed random number generator rule" seeds the RNG to a fixed value
if Inform has requested this (which it does in response to the <span class="extract"><span class="extract-syntax">-rng</span></span> command
line switch, which is in turn used by the <span class="extract"><span class="extract-syntax">intest</span></span> testing utility: it's a
way to make deterministic tests of programs which use random values).
</li><li>(d) The "update chronological records rule" is described in further detail
<ul class="items"><li>(a) The printing of three blank lines at the start of play is traditional: on early
Z-machine interpreters such as InfoTaskForce and Zip it was a necessity because
of the way they buffered output. On modern windowed ones it still helps to
space the opening text better.
</li><li>(b) The "update chronological records rule" is described in further detail
below, since it appears both here and also in the turn sequence rulebook.
Here it's providing us with a baseline of initial truths from which we can
later assess conditions such as "the marble door has been open". A subtle
@ -608,10 +589,9 @@ for purposes of a rule preamble like "... when the player has been in the
Dining Room for three turns". It's as if the player teleports into an
already-existing world, like some Star Trek crewman, just in time for the
first command.
</li><li>(e) All items begin unmentioned, as might be expected.
</li><li>(f) And the "position player in model world rule" completes the initial
</li><li>(c) The "position player in model world rule" completes the initial
construction of the spatial model world.
</li><li>(g) The "start in the correct scenes rule" ensures that we start out
</li><li>(d) The "start in the correct scenes rule" ensures that we start out
in the correct scenes. (This can't wait, because it's just conceivable
that somebody has written a rule with a preamble like "When play
begins during the Hunting Season...": it's also where the scene
@ -619,24 +599,18 @@ Entire Game begins.) That completes the necessary preliminaries before
ordinary I7 rules can be run.
</li></ul>
<pre class="displayed-code all-displayed-code code-font">
<span class="identifier-syntax">The</span><span class="plain-syntax"> </span><span class="identifier-syntax">start</span><span class="plain-syntax"> </span><span class="identifier-syntax">in</span><span class="plain-syntax"> </span><span class="identifier-syntax">the</span><span class="plain-syntax"> </span><span class="identifier-syntax">correct</span><span class="plain-syntax"> </span><span class="identifier-syntax">scenes</span><span class="plain-syntax"> </span><span class="identifier-syntax">rule</span><span class="plain-syntax"> </span><span class="identifier-syntax">is</span><span class="plain-syntax"> </span><span class="identifier-syntax">listed</span><span class="plain-syntax"> </span><span class="identifier-syntax">first</span><span class="plain-syntax"> </span><span class="identifier-syntax">in</span><span class="plain-syntax"> </span><span class="identifier-syntax">the</span><span class="plain-syntax"> </span><span class="identifier-syntax">startup</span><span class="plain-syntax"> </span><span class="identifier-syntax">rulebook</span><span class="plain-syntax">. </span><span class="comment-syntax">th.</span>
<span class="identifier-syntax">The</span><span class="plain-syntax"> </span><span class="identifier-syntax">position</span><span class="plain-syntax"> </span><span class="identifier-syntax">player</span><span class="plain-syntax"> </span><span class="identifier-syntax">in</span><span class="plain-syntax"> </span><span class="identifier-syntax">model</span><span class="plain-syntax"> </span><span class="identifier-syntax">world</span><span class="plain-syntax"> </span><span class="identifier-syntax">rule</span><span class="plain-syntax"> </span><span class="identifier-syntax">is</span><span class="plain-syntax"> </span><span class="identifier-syntax">listed</span><span class="plain-syntax"> </span><span class="identifier-syntax">first</span><span class="plain-syntax"> </span><span class="identifier-syntax">in</span><span class="plain-syntax"> </span><span class="identifier-syntax">the</span><span class="plain-syntax"> </span><span class="identifier-syntax">startup</span><span class="plain-syntax"> </span><span class="identifier-syntax">rulebook</span><span class="plain-syntax">. </span><span class="comment-syntax">th.</span>
<span class="identifier-syntax">This</span><span class="plain-syntax"> </span><span class="identifier-syntax">is</span><span class="plain-syntax"> </span><span class="identifier-syntax">the</span><span class="plain-syntax"> </span><span class="identifier-syntax">declare</span><span class="plain-syntax"> </span><span class="identifier-syntax">everything</span><span class="plain-syntax"> </span><span class="identifier-syntax">initially</span><span class="plain-syntax"> </span><span class="identifier-syntax">unmentioned</span><span class="plain-syntax"> </span><span class="identifier-syntax">rule</span><span class="plain-syntax">:</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">repeat</span><span class="plain-syntax"> </span><span class="identifier-syntax">with</span><span class="plain-syntax"> </span><span class="identifier-syntax">item</span><span class="plain-syntax"> </span><span class="identifier-syntax">running</span><span class="plain-syntax"> </span><span class="identifier-syntax">through</span><span class="plain-syntax"> </span><span class="identifier-syntax">things</span><span class="plain-syntax">:</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">now</span><span class="plain-syntax"> </span><span class="identifier-syntax">the</span><span class="plain-syntax"> </span><span class="identifier-syntax">item</span><span class="plain-syntax"> </span><span class="identifier-syntax">is</span><span class="plain-syntax"> </span><span class="identifier-syntax">not</span><span class="plain-syntax"> </span><span class="identifier-syntax">mentioned</span><span class="plain-syntax">.</span>
<span class="identifier-syntax">The</span><span class="plain-syntax"> </span><span class="identifier-syntax">declare</span><span class="plain-syntax"> </span><span class="identifier-syntax">everything</span><span class="plain-syntax"> </span><span class="identifier-syntax">initially</span><span class="plain-syntax"> </span><span class="identifier-syntax">unmentioned</span><span class="plain-syntax"> </span><span class="identifier-syntax">rule</span><span class="plain-syntax"> </span><span class="identifier-syntax">is</span><span class="plain-syntax"> </span><span class="identifier-syntax">listed</span><span class="plain-syntax"> </span><span class="identifier-syntax">first</span><span class="plain-syntax"> </span><span class="identifier-syntax">in</span><span class="plain-syntax"> </span><span class="identifier-syntax">the</span><span class="plain-syntax"> </span><span class="identifier-syntax">startup</span><span class="plain-syntax"> </span><span class="identifier-syntax">rulebook</span><span class="plain-syntax">. </span><span class="comment-syntax">th</span>
<span class="identifier-syntax">The</span><span class="plain-syntax"> </span><span class="identifier-syntax">update</span><span class="plain-syntax"> </span><span class="identifier-syntax">chronological</span><span class="plain-syntax"> </span><span class="identifier-syntax">records</span><span class="plain-syntax"> </span><span class="identifier-syntax">rule</span><span class="plain-syntax"> </span><span class="identifier-syntax">is</span><span class="plain-syntax"> </span><span class="identifier-syntax">listed</span><span class="plain-syntax"> </span><span class="identifier-syntax">first</span><span class="plain-syntax"> </span><span class="identifier-syntax">in</span><span class="plain-syntax"> </span><span class="identifier-syntax">the</span><span class="plain-syntax"> </span><span class="identifier-syntax">startup</span><span class="plain-syntax"> </span><span class="identifier-syntax">rulebook</span><span class="plain-syntax">. </span><span class="comment-syntax">th.</span>
<span class="identifier-syntax">The</span><span class="plain-syntax"> </span><span class="identifier-syntax">seed</span><span class="plain-syntax"> </span><span class="identifier-syntax">random</span><span class="plain-syntax"> </span><span class="identifier-syntax">number</span><span class="plain-syntax"> </span><span class="identifier-syntax">generator</span><span class="plain-syntax"> </span><span class="identifier-syntax">rule</span><span class="plain-syntax"> </span><span class="identifier-syntax">is</span><span class="plain-syntax"> </span><span class="identifier-syntax">listed</span><span class="plain-syntax"> </span><span class="identifier-syntax">first</span><span class="plain-syntax"> </span><span class="identifier-syntax">in</span><span class="plain-syntax"> </span><span class="identifier-syntax">the</span><span class="plain-syntax"> </span><span class="identifier-syntax">startup</span><span class="plain-syntax"> </span><span class="identifier-syntax">rulebook</span><span class="plain-syntax">. </span><span class="comment-syntax">rd.</span>
<span class="identifier-syntax">The</span><span class="plain-syntax"> </span><span class="identifier-syntax">virtual</span><span class="plain-syntax"> </span><span class="identifier-syntax">machine</span><span class="plain-syntax"> </span><span class="identifier-syntax">startup</span><span class="plain-syntax"> </span><span class="identifier-syntax">rule</span><span class="plain-syntax"> </span><span class="identifier-syntax">is</span><span class="plain-syntax"> </span><span class="identifier-syntax">listed</span><span class="plain-syntax"> </span><span class="identifier-syntax">first</span><span class="plain-syntax"> </span><span class="identifier-syntax">in</span><span class="plain-syntax"> </span><span class="identifier-syntax">the</span><span class="plain-syntax"> </span><span class="identifier-syntax">startup</span><span class="plain-syntax"> </span><span class="identifier-syntax">rulebook</span><span class="plain-syntax">. </span><span class="comment-syntax">nd.</span>
<span class="identifier-syntax">The</span><span class="plain-syntax"> </span><span class="identifier-syntax">initialise</span><span class="plain-syntax"> </span><span class="identifier-syntax">memory</span><span class="plain-syntax"> </span><span class="identifier-syntax">rule</span><span class="plain-syntax"> </span><span class="identifier-syntax">is</span><span class="plain-syntax"> </span><span class="identifier-syntax">listed</span><span class="plain-syntax"> </span><span class="identifier-syntax">first</span><span class="plain-syntax"> </span><span class="identifier-syntax">in</span><span class="plain-syntax"> </span><span class="identifier-syntax">the</span><span class="plain-syntax"> </span><span class="identifier-syntax">startup</span><span class="plain-syntax"> </span><span class="identifier-syntax">rulebook</span><span class="plain-syntax">. </span><span class="comment-syntax">st.</span>
<span class="identifier-syntax">The</span><span class="plain-syntax"> </span><span class="identifier-syntax">initial</span><span class="plain-syntax"> </span><span class="identifier-syntax">whitespace</span><span class="plain-syntax"> </span><span class="identifier-syntax">rule</span><span class="plain-syntax"> </span><span class="identifier-syntax">is</span><span class="plain-syntax"> </span><span class="identifier-syntax">listed</span><span class="plain-syntax"> </span><span class="identifier-syntax">in</span><span class="plain-syntax"> </span><span class="identifier-syntax">the</span><span class="plain-syntax"> </span><span class="identifier-syntax">after</span><span class="plain-syntax"> </span><span class="identifier-syntax">starting</span><span class="plain-syntax"> </span><span class="identifier-syntax">the</span><span class="plain-syntax"> </span><span class="identifier-syntax">virtual</span><span class="plain-syntax"> </span><span class="identifier-syntax">machine</span><span class="plain-syntax"> </span><span class="identifier-syntax">rules</span><span class="plain-syntax">.</span>
<span class="identifier-syntax">The</span><span class="plain-syntax"> </span><span class="identifier-syntax">initial</span><span class="plain-syntax"> </span><span class="identifier-syntax">whitespace</span><span class="plain-syntax"> </span><span class="identifier-syntax">rule</span><span class="plain-syntax"> </span><span class="identifier-syntax">translates</span><span class="plain-syntax"> </span><span class="identifier-syntax">into</span><span class="plain-syntax"> </span><span class="identifier-syntax">Inter</span><span class="plain-syntax"> </span><span class="identifier-syntax">as</span><span class="plain-syntax"> </span><span class="string-syntax">"INITIAL_WHITESPACE_R"</span><span class="plain-syntax">.</span>
<span class="identifier-syntax">The</span><span class="plain-syntax"> </span><span class="identifier-syntax">virtual</span><span class="plain-syntax"> </span><span class="identifier-syntax">machine</span><span class="plain-syntax"> </span><span class="identifier-syntax">startup</span><span class="plain-syntax"> </span><span class="identifier-syntax">rule</span><span class="plain-syntax"> </span><span class="identifier-syntax">is</span><span class="plain-syntax"> </span><span class="identifier-syntax">defined</span><span class="plain-syntax"> </span><span class="identifier-syntax">by</span><span class="plain-syntax"> </span><span class="identifier-syntax">Inter</span><span class="plain-syntax"> </span><span class="identifier-syntax">as</span><span class="plain-syntax"> </span><span class="string-syntax">"VIRTUAL_MACHINE_STARTUP_R"</span><span class="plain-syntax">.</span>
<span class="identifier-syntax">The</span><span class="plain-syntax"> </span><span class="identifier-syntax">initialise</span><span class="plain-syntax"> </span><span class="identifier-syntax">memory</span><span class="plain-syntax"> </span><span class="identifier-syntax">rule</span><span class="plain-syntax"> </span><span class="identifier-syntax">is</span><span class="plain-syntax"> </span><span class="identifier-syntax">defined</span><span class="plain-syntax"> </span><span class="identifier-syntax">by</span><span class="plain-syntax"> </span><span class="identifier-syntax">Inter</span><span class="plain-syntax"> </span><span class="identifier-syntax">as</span><span class="plain-syntax"> </span><span class="string-syntax">"INITIALISE_MEMORY_R"</span><span class="plain-syntax">.</span>
<span class="identifier-syntax">The</span><span class="plain-syntax"> </span><span class="identifier-syntax">seed</span><span class="plain-syntax"> </span><span class="identifier-syntax">random</span><span class="plain-syntax"> </span><span class="identifier-syntax">number</span><span class="plain-syntax"> </span><span class="identifier-syntax">generator</span><span class="plain-syntax"> </span><span class="identifier-syntax">rule</span><span class="plain-syntax"> </span><span class="identifier-syntax">is</span><span class="plain-syntax"> </span><span class="identifier-syntax">defined</span><span class="plain-syntax"> </span><span class="identifier-syntax">by</span><span class="plain-syntax"> </span><span class="identifier-syntax">Inter</span><span class="plain-syntax"> </span><span class="identifier-syntax">as</span><span class="plain-syntax"> </span><span class="string-syntax">"SEED_RANDOM_NUMBER_GENERATOR_R"</span><span class="plain-syntax">.</span>
<span class="identifier-syntax">The</span><span class="plain-syntax"> </span><span class="identifier-syntax">update</span><span class="plain-syntax"> </span><span class="identifier-syntax">chronological</span><span class="plain-syntax"> </span><span class="identifier-syntax">records</span><span class="plain-syntax"> </span><span class="identifier-syntax">rule</span><span class="plain-syntax"> </span><span class="identifier-syntax">is</span><span class="plain-syntax"> </span><span class="identifier-syntax">defined</span><span class="plain-syntax"> </span><span class="identifier-syntax">by</span><span class="plain-syntax"> </span><span class="identifier-syntax">Inter</span><span class="plain-syntax"> </span><span class="identifier-syntax">as</span><span class="plain-syntax"> </span><span class="string-syntax">"UPDATE_CHRONOLOGICAL_RECORDS_R"</span><span class="plain-syntax">.</span>
<span class="identifier-syntax">The</span><span class="plain-syntax"> </span><span class="identifier-syntax">position</span><span class="plain-syntax"> </span><span class="identifier-syntax">player</span><span class="plain-syntax"> </span><span class="identifier-syntax">in</span><span class="plain-syntax"> </span><span class="identifier-syntax">model</span><span class="plain-syntax"> </span><span class="identifier-syntax">world</span><span class="plain-syntax"> </span><span class="identifier-syntax">rule</span><span class="plain-syntax"> </span><span class="identifier-syntax">is</span><span class="plain-syntax"> </span><span class="identifier-syntax">defined</span><span class="plain-syntax"> </span><span class="identifier-syntax">by</span><span class="plain-syntax"> </span><span class="identifier-syntax">Inter</span><span class="plain-syntax"> </span><span class="identifier-syntax">as</span><span class="plain-syntax"> </span><span class="string-syntax">"POSITION_PLAYER_IN_MODEL_R"</span><span class="plain-syntax">.</span>
<span class="identifier-syntax">The</span><span class="plain-syntax"> </span><span class="identifier-syntax">update</span><span class="plain-syntax"> </span><span class="identifier-syntax">chronological</span><span class="plain-syntax"> </span><span class="identifier-syntax">records</span><span class="plain-syntax"> </span><span class="identifier-syntax">rule</span><span class="plain-syntax"> </span><span class="identifier-syntax">is</span><span class="plain-syntax"> </span><span class="identifier-syntax">listed</span><span class="plain-syntax"> </span><span class="identifier-syntax">in</span><span class="plain-syntax"> </span><span class="identifier-syntax">the</span><span class="plain-syntax"> </span><span class="identifier-syntax">after</span><span class="plain-syntax"> </span><span class="identifier-syntax">starting</span><span class="plain-syntax"> </span><span class="identifier-syntax">the</span><span class="plain-syntax"> </span><span class="identifier-syntax">virtual</span><span class="plain-syntax"> </span><span class="identifier-syntax">machine</span><span class="plain-syntax"> </span><span class="identifier-syntax">rules</span><span class="plain-syntax">.</span>
<span class="identifier-syntax">The</span><span class="plain-syntax"> </span><span class="identifier-syntax">update</span><span class="plain-syntax"> </span><span class="identifier-syntax">chronological</span><span class="plain-syntax"> </span><span class="identifier-syntax">records</span><span class="plain-syntax"> </span><span class="identifier-syntax">rule</span><span class="plain-syntax"> </span><span class="identifier-syntax">translates</span><span class="plain-syntax"> </span><span class="identifier-syntax">into</span><span class="plain-syntax"> </span><span class="identifier-syntax">Inter</span><span class="plain-syntax"> </span><span class="identifier-syntax">as</span><span class="plain-syntax"> </span><span class="string-syntax">"UPDATE_CHRONOLOGICAL_RECORDS_R"</span><span class="plain-syntax">.</span>
<span class="identifier-syntax">This</span><span class="plain-syntax"> </span><span class="identifier-syntax">is</span><span class="plain-syntax"> </span><span class="identifier-syntax">the</span><span class="plain-syntax"> </span><span class="identifier-syntax">start</span><span class="plain-syntax"> </span><span class="identifier-syntax">in</span><span class="plain-syntax"> </span><span class="identifier-syntax">the</span><span class="plain-syntax"> </span><span class="identifier-syntax">correct</span><span class="plain-syntax"> </span><span class="identifier-syntax">scenes</span><span class="plain-syntax"> </span><span class="identifier-syntax">rule</span><span class="plain-syntax">: </span><span class="identifier-syntax">follow</span><span class="plain-syntax"> </span><span class="identifier-syntax">the</span><span class="plain-syntax"> </span><span class="identifier-syntax">scene</span><span class="plain-syntax"> </span><span class="identifier-syntax">changing</span><span class="plain-syntax"> </span><span class="identifier-syntax">rules</span><span class="plain-syntax">.</span>
<span class="identifier-syntax">The</span><span class="plain-syntax"> </span><span class="identifier-syntax">position</span><span class="plain-syntax"> </span><span class="identifier-syntax">player</span><span class="plain-syntax"> </span><span class="identifier-syntax">in</span><span class="plain-syntax"> </span><span class="identifier-syntax">model</span><span class="plain-syntax"> </span><span class="identifier-syntax">world</span><span class="plain-syntax"> </span><span class="identifier-syntax">rule</span><span class="plain-syntax"> </span><span class="identifier-syntax">is</span><span class="plain-syntax"> </span><span class="identifier-syntax">listed</span><span class="plain-syntax"> </span><span class="identifier-syntax">in</span><span class="plain-syntax"> </span><span class="identifier-syntax">the</span><span class="plain-syntax"> </span><span class="identifier-syntax">after</span><span class="plain-syntax"> </span><span class="identifier-syntax">starting</span><span class="plain-syntax"> </span><span class="identifier-syntax">the</span><span class="plain-syntax"> </span><span class="identifier-syntax">virtual</span><span class="plain-syntax"> </span><span class="identifier-syntax">machine</span><span class="plain-syntax"> </span><span class="identifier-syntax">rules</span><span class="plain-syntax">.</span>
<span class="identifier-syntax">The</span><span class="plain-syntax"> </span><span class="identifier-syntax">position</span><span class="plain-syntax"> </span><span class="identifier-syntax">player</span><span class="plain-syntax"> </span><span class="identifier-syntax">in</span><span class="plain-syntax"> </span><span class="identifier-syntax">model</span><span class="plain-syntax"> </span><span class="identifier-syntax">world</span><span class="plain-syntax"> </span><span class="identifier-syntax">rule</span><span class="plain-syntax"> </span><span class="identifier-syntax">translates</span><span class="plain-syntax"> </span><span class="identifier-syntax">into</span><span class="plain-syntax"> </span><span class="identifier-syntax">Inter</span><span class="plain-syntax"> </span><span class="identifier-syntax">as</span><span class="plain-syntax"> </span><span class="string-syntax">"POSITION_PLAYER_IN_MODEL_R"</span><span class="plain-syntax">.</span>
<span class="identifier-syntax">The</span><span class="plain-syntax"> </span><span class="identifier-syntax">start</span><span class="plain-syntax"> </span><span class="identifier-syntax">in</span><span class="plain-syntax"> </span><span class="identifier-syntax">the</span><span class="plain-syntax"> </span><span class="identifier-syntax">correct</span><span class="plain-syntax"> </span><span class="identifier-syntax">scenes</span><span class="plain-syntax"> </span><span class="identifier-syntax">rule</span><span class="plain-syntax"> </span><span class="identifier-syntax">is</span><span class="plain-syntax"> </span><span class="identifier-syntax">listed</span><span class="plain-syntax"> </span><span class="identifier-syntax">in</span><span class="plain-syntax"> </span><span class="identifier-syntax">the</span><span class="plain-syntax"> </span><span class="identifier-syntax">after</span><span class="plain-syntax"> </span><span class="identifier-syntax">starting</span><span class="plain-syntax"> </span><span class="identifier-syntax">the</span><span class="plain-syntax"> </span><span class="identifier-syntax">virtual</span><span class="plain-syntax"> </span><span class="identifier-syntax">machine</span><span class="plain-syntax"> </span><span class="identifier-syntax">rules</span><span class="plain-syntax">.</span>
<span class="identifier-syntax">This</span><span class="plain-syntax"> </span><span class="identifier-syntax">is</span><span class="plain-syntax"> </span><span class="identifier-syntax">the</span><span class="plain-syntax"> </span><span class="identifier-syntax">start</span><span class="plain-syntax"> </span><span class="identifier-syntax">in</span><span class="plain-syntax"> </span><span class="identifier-syntax">the</span><span class="plain-syntax"> </span><span class="identifier-syntax">correct</span><span class="plain-syntax"> </span><span class="identifier-syntax">scenes</span><span class="plain-syntax"> </span><span class="identifier-syntax">rule</span><span class="plain-syntax">:</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">follow</span><span class="plain-syntax"> </span><span class="identifier-syntax">the</span><span class="plain-syntax"> </span><span class="identifier-syntax">scene</span><span class="plain-syntax"> </span><span class="identifier-syntax">changing</span><span class="plain-syntax"> </span><span class="identifier-syntax">rules</span><span class="plain-syntax">.</span>
</pre>
<p class="commentary firstcommentary"><a id="SP22" class="paragraph-anchor"></a><b>&#167;22. </b>The remaining rules, though, are fair game for alteration, and as if to
prove the point they are all written in standard I7 source text. Note that
@ -648,18 +622,17 @@ action.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="identifier-syntax">The</span><span class="plain-syntax"> </span><span class="identifier-syntax">when</span><span class="plain-syntax"> </span><span class="identifier-syntax">play</span><span class="plain-syntax"> </span><span class="identifier-syntax">begins</span><span class="plain-syntax"> </span><span class="identifier-syntax">stage</span><span class="plain-syntax"> </span><span class="identifier-syntax">rule</span><span class="plain-syntax"> </span><span class="identifier-syntax">is</span><span class="plain-syntax"> </span><span class="identifier-syntax">listed</span><span class="plain-syntax"> </span><span class="identifier-syntax">in</span><span class="plain-syntax"> </span><span class="identifier-syntax">the</span><span class="plain-syntax"> </span><span class="identifier-syntax">startup</span><span class="plain-syntax"> </span><span class="identifier-syntax">rulebook</span><span class="plain-syntax">.</span>
<span class="identifier-syntax">The</span><span class="plain-syntax"> </span><span class="identifier-syntax">fix</span><span class="plain-syntax"> </span><span class="identifier-syntax">baseline</span><span class="plain-syntax"> </span><span class="identifier-syntax">scoring</span><span class="plain-syntax"> </span><span class="identifier-syntax">rule</span><span class="plain-syntax"> </span><span class="identifier-syntax">is</span><span class="plain-syntax"> </span><span class="identifier-syntax">listed</span><span class="plain-syntax"> </span><span class="identifier-syntax">in</span><span class="plain-syntax"> </span><span class="identifier-syntax">the</span><span class="plain-syntax"> </span><span class="identifier-syntax">startup</span><span class="plain-syntax"> </span><span class="identifier-syntax">rulebook</span><span class="plain-syntax">.</span>
<span class="identifier-syntax">The</span><span class="plain-syntax"> </span><span class="identifier-syntax">display</span><span class="plain-syntax"> </span><span class="identifier-syntax">banner</span><span class="plain-syntax"> </span><span class="identifier-syntax">rule</span><span class="plain-syntax"> </span><span class="identifier-syntax">is</span><span class="plain-syntax"> </span><span class="identifier-syntax">listed</span><span class="plain-syntax"> </span><span class="identifier-syntax">in</span><span class="plain-syntax"> </span><span class="identifier-syntax">the</span><span class="plain-syntax"> </span><span class="identifier-syntax">startup</span><span class="plain-syntax"> </span><span class="identifier-syntax">rulebook</span><span class="plain-syntax">.</span>
<span class="identifier-syntax">The</span><span class="plain-syntax"> </span><span class="identifier-syntax">initial</span><span class="plain-syntax"> </span><span class="identifier-syntax">room</span><span class="plain-syntax"> </span><span class="identifier-syntax">description</span><span class="plain-syntax"> </span><span class="identifier-syntax">rule</span><span class="plain-syntax"> </span><span class="identifier-syntax">is</span><span class="plain-syntax"> </span><span class="identifier-syntax">listed</span><span class="plain-syntax"> </span><span class="identifier-syntax">in</span><span class="plain-syntax"> </span><span class="identifier-syntax">the</span><span class="plain-syntax"> </span><span class="identifier-syntax">startup</span><span class="plain-syntax"> </span><span class="identifier-syntax">rulebook</span><span class="plain-syntax">.</span>
<span class="identifier-syntax">Startup</span><span class="plain-syntax"> </span><span class="identifier-syntax">rule</span><span class="plain-syntax"> (</span><span class="identifier-syntax">this</span><span class="plain-syntax"> </span><span class="identifier-syntax">is</span><span class="plain-syntax"> </span><span class="identifier-syntax">the</span><span class="plain-syntax"> </span><span class="identifier-syntax">when</span><span class="plain-syntax"> </span><span class="identifier-syntax">play</span><span class="plain-syntax"> </span><span class="identifier-syntax">begins</span><span class="plain-syntax"> </span><span class="identifier-syntax">stage</span><span class="plain-syntax"> </span><span class="identifier-syntax">rule</span><span class="plain-syntax">):</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">follow</span><span class="plain-syntax"> </span><span class="identifier-syntax">the</span><span class="plain-syntax"> </span><span class="identifier-syntax">when</span><span class="plain-syntax"> </span><span class="identifier-syntax">play</span><span class="plain-syntax"> </span><span class="identifier-syntax">begins</span><span class="plain-syntax"> </span><span class="identifier-syntax">rulebook</span><span class="plain-syntax">.</span>
<span class="identifier-syntax">This</span><span class="plain-syntax"> </span><span class="identifier-syntax">is</span><span class="plain-syntax"> </span><span class="identifier-syntax">the</span><span class="plain-syntax"> </span><span class="identifier-syntax">when</span><span class="plain-syntax"> </span><span class="identifier-syntax">play</span><span class="plain-syntax"> </span><span class="identifier-syntax">begins</span><span class="plain-syntax"> </span><span class="identifier-syntax">stage</span><span class="plain-syntax"> </span><span class="identifier-syntax">rule</span><span class="plain-syntax">: </span><span class="identifier-syntax">follow</span><span class="plain-syntax"> </span><span class="identifier-syntax">the</span><span class="plain-syntax"> </span><span class="identifier-syntax">when</span><span class="plain-syntax"> </span><span class="identifier-syntax">play</span><span class="plain-syntax"> </span><span class="identifier-syntax">begins</span><span class="plain-syntax"> </span><span class="identifier-syntax">rulebook</span><span class="plain-syntax">.</span>
<span class="identifier-syntax">Startup</span><span class="plain-syntax"> </span><span class="identifier-syntax">rule</span><span class="plain-syntax"> (</span><span class="identifier-syntax">this</span><span class="plain-syntax"> </span><span class="identifier-syntax">is</span><span class="plain-syntax"> </span><span class="identifier-syntax">the</span><span class="plain-syntax"> </span><span class="identifier-syntax">fix</span><span class="plain-syntax"> </span><span class="identifier-syntax">baseline</span><span class="plain-syntax"> </span><span class="identifier-syntax">scoring</span><span class="plain-syntax"> </span><span class="identifier-syntax">rule</span><span class="plain-syntax">):</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">now</span><span class="plain-syntax"> </span><span class="identifier-syntax">the</span><span class="plain-syntax"> </span><span class="identifier-syntax">last</span><span class="plain-syntax"> </span><span class="identifier-syntax">notified</span><span class="plain-syntax"> </span><span class="identifier-syntax">score</span><span class="plain-syntax"> </span><span class="identifier-syntax">is</span><span class="plain-syntax"> </span><span class="identifier-syntax">the</span><span class="plain-syntax"> </span><span class="identifier-syntax">score</span><span class="plain-syntax">.</span>
<span class="identifier-syntax">This</span><span class="plain-syntax"> </span><span class="identifier-syntax">is</span><span class="plain-syntax"> </span><span class="identifier-syntax">the</span><span class="plain-syntax"> </span><span class="identifier-syntax">fix</span><span class="plain-syntax"> </span><span class="identifier-syntax">baseline</span><span class="plain-syntax"> </span><span class="identifier-syntax">scoring</span><span class="plain-syntax"> </span><span class="identifier-syntax">rule</span><span class="plain-syntax">: </span><span class="identifier-syntax">now</span><span class="plain-syntax"> </span><span class="identifier-syntax">the</span><span class="plain-syntax"> </span><span class="identifier-syntax">last</span><span class="plain-syntax"> </span><span class="identifier-syntax">notified</span><span class="plain-syntax"> </span><span class="identifier-syntax">score</span><span class="plain-syntax"> </span><span class="identifier-syntax">is</span><span class="plain-syntax"> </span><span class="identifier-syntax">the</span><span class="plain-syntax"> </span><span class="identifier-syntax">score</span><span class="plain-syntax">.</span>
<span class="identifier-syntax">Startup</span><span class="plain-syntax"> </span><span class="identifier-syntax">rule</span><span class="plain-syntax"> (</span><span class="identifier-syntax">this</span><span class="plain-syntax"> </span><span class="identifier-syntax">is</span><span class="plain-syntax"> </span><span class="identifier-syntax">the</span><span class="plain-syntax"> </span><span class="identifier-syntax">display</span><span class="plain-syntax"> </span><span class="identifier-syntax">banner</span><span class="plain-syntax"> </span><span class="identifier-syntax">rule</span><span class="plain-syntax">):</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">say</span><span class="plain-syntax"> </span><span class="string-syntax">"[banner text]"</span><span class="plain-syntax">.</span>
<span class="identifier-syntax">This</span><span class="plain-syntax"> </span><span class="identifier-syntax">is</span><span class="plain-syntax"> </span><span class="identifier-syntax">the</span><span class="plain-syntax"> </span><span class="identifier-syntax">display</span><span class="plain-syntax"> </span><span class="identifier-syntax">banner</span><span class="plain-syntax"> </span><span class="identifier-syntax">rule</span><span class="plain-syntax">: </span><span class="identifier-syntax">say</span><span class="plain-syntax"> </span><span class="string-syntax">"[banner text]"</span><span class="plain-syntax">.</span>
<span class="identifier-syntax">This</span><span class="plain-syntax"> </span><span class="identifier-syntax">is</span><span class="plain-syntax"> </span><span class="identifier-syntax">the</span><span class="plain-syntax"> </span><span class="identifier-syntax">initial</span><span class="plain-syntax"> </span><span class="identifier-syntax">room</span><span class="plain-syntax"> </span><span class="identifier-syntax">description</span><span class="plain-syntax"> </span><span class="identifier-syntax">rule</span><span class="plain-syntax">: </span><span class="identifier-syntax">try</span><span class="plain-syntax"> </span><span class="identifier-syntax">looking</span><span class="plain-syntax">.</span>
<span class="identifier-syntax">Startup</span><span class="plain-syntax"> </span><span class="identifier-syntax">rule</span><span class="plain-syntax"> (</span><span class="identifier-syntax">this</span><span class="plain-syntax"> </span><span class="identifier-syntax">is</span><span class="plain-syntax"> </span><span class="identifier-syntax">the</span><span class="plain-syntax"> </span><span class="identifier-syntax">initial</span><span class="plain-syntax"> </span><span class="identifier-syntax">room</span><span class="plain-syntax"> </span><span class="identifier-syntax">description</span><span class="plain-syntax"> </span><span class="identifier-syntax">rule</span><span class="plain-syntax">):</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">try</span><span class="plain-syntax"> </span><span class="identifier-syntax">looking</span><span class="plain-syntax">.</span>
</pre>
<p class="commentary firstcommentary"><a id="SP23" class="paragraph-anchor"></a><b>&#167;23. The turn sequence. </b>In each turn, a command is read and parsed from the keyboard, and any
action(s) that requested is or are processed. (And may in turn cause
@ -719,6 +692,9 @@ read and no consequent actions generated.
<span class="identifier-syntax">A</span><span class="plain-syntax"> </span><span class="identifier-syntax">first</span><span class="plain-syntax"> </span><span class="identifier-syntax">turn</span><span class="plain-syntax"> </span><span class="identifier-syntax">sequence</span><span class="plain-syntax"> </span><span class="identifier-syntax">rule</span><span class="plain-syntax"> (</span><span class="identifier-syntax">this</span><span class="plain-syntax"> </span><span class="identifier-syntax">is</span><span class="plain-syntax"> </span><span class="identifier-syntax">the</span><span class="plain-syntax"> </span><span class="identifier-syntax">early</span><span class="plain-syntax"> </span><span class="identifier-syntax">scene</span><span class="plain-syntax"> </span><span class="identifier-syntax">changing</span><span class="plain-syntax"> </span><span class="identifier-syntax">stage</span><span class="plain-syntax"> </span><span class="identifier-syntax">rule</span><span class="plain-syntax">):</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">follow</span><span class="plain-syntax"> </span><span class="identifier-syntax">the</span><span class="plain-syntax"> </span><span class="identifier-syntax">scene</span><span class="plain-syntax"> </span><span class="identifier-syntax">changing</span><span class="plain-syntax"> </span><span class="identifier-syntax">rules</span><span class="plain-syntax">. </span><span class="comment-syntax">th.</span>
<span class="identifier-syntax">The</span><span class="plain-syntax"> </span><span class="identifier-syntax">generate</span><span class="plain-syntax"> </span><span class="identifier-syntax">action</span><span class="plain-syntax"> </span><span class="identifier-syntax">rule</span><span class="plain-syntax"> </span><span class="identifier-syntax">is</span><span class="plain-syntax"> </span><span class="identifier-syntax">listed</span><span class="plain-syntax"> </span><span class="identifier-syntax">first</span><span class="plain-syntax"> </span><span class="identifier-syntax">in</span><span class="plain-syntax"> </span><span class="identifier-syntax">the</span><span class="plain-syntax"> </span><span class="identifier-syntax">turn</span><span class="plain-syntax"> </span><span class="identifier-syntax">sequence</span><span class="plain-syntax"> </span><span class="identifier-syntax">rulebook</span><span class="plain-syntax">. </span><span class="comment-syntax">rd.</span>
<span class="identifier-syntax">This</span><span class="plain-syntax"> </span><span class="identifier-syntax">is</span><span class="plain-syntax"> </span><span class="identifier-syntax">the</span><span class="plain-syntax"> </span><span class="identifier-syntax">declare</span><span class="plain-syntax"> </span><span class="identifier-syntax">everything</span><span class="plain-syntax"> </span><span class="identifier-syntax">initially</span><span class="plain-syntax"> </span><span class="identifier-syntax">unmentioned</span><span class="plain-syntax"> </span><span class="identifier-syntax">rule</span><span class="plain-syntax">:</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">repeat</span><span class="plain-syntax"> </span><span class="identifier-syntax">with</span><span class="plain-syntax"> </span><span class="identifier-syntax">item</span><span class="plain-syntax"> </span><span class="identifier-syntax">running</span><span class="plain-syntax"> </span><span class="identifier-syntax">through</span><span class="plain-syntax"> </span><span class="identifier-syntax">things</span><span class="plain-syntax">:</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">now</span><span class="plain-syntax"> </span><span class="identifier-syntax">the</span><span class="plain-syntax"> </span><span class="identifier-syntax">item</span><span class="plain-syntax"> </span><span class="identifier-syntax">is</span><span class="plain-syntax"> </span><span class="identifier-syntax">not</span><span class="plain-syntax"> </span><span class="identifier-syntax">mentioned</span><span class="plain-syntax">.</span>
<span class="identifier-syntax">The</span><span class="plain-syntax"> </span><span class="identifier-syntax">declare</span><span class="plain-syntax"> </span><span class="identifier-syntax">everything</span><span class="plain-syntax"> </span><span class="identifier-syntax">initially</span><span class="plain-syntax"> </span><span class="identifier-syntax">unmentioned</span><span class="plain-syntax"> </span><span class="identifier-syntax">rule</span><span class="plain-syntax"> </span><span class="identifier-syntax">is</span><span class="plain-syntax"> </span><span class="identifier-syntax">listed</span><span class="plain-syntax"> </span><span class="identifier-syntax">first</span><span class="plain-syntax"> </span><span class="identifier-syntax">in</span><span class="plain-syntax"> </span><span class="identifier-syntax">the</span><span class="plain-syntax"> </span><span class="identifier-syntax">turn</span><span class="plain-syntax"> </span><span class="identifier-syntax">sequence</span><span class="plain-syntax"> </span><span class="identifier-syntax">rulebook</span><span class="plain-syntax">. </span><span class="comment-syntax">nd.</span>
<span class="identifier-syntax">The</span><span class="plain-syntax"> </span><span class="identifier-syntax">parse</span><span class="plain-syntax"> </span><span class="identifier-syntax">command</span><span class="plain-syntax"> </span><span class="identifier-syntax">rule</span><span class="plain-syntax"> </span><span class="identifier-syntax">is</span><span class="plain-syntax"> </span><span class="identifier-syntax">listed</span><span class="plain-syntax"> </span><span class="identifier-syntax">first</span><span class="plain-syntax"> </span><span class="identifier-syntax">in</span><span class="plain-syntax"> </span><span class="identifier-syntax">the</span><span class="plain-syntax"> </span><span class="identifier-syntax">turn</span><span class="plain-syntax"> </span><span class="identifier-syntax">sequence</span><span class="plain-syntax"> </span><span class="identifier-syntax">rulebook</span><span class="plain-syntax">. </span><span class="comment-syntax">st.</span>
</pre>

View file

@ -638,12 +638,12 @@ nests, respectively.
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">shared_nest_list</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
<span class="reserved-syntax">inbuild_nest</span><span class="plain-syntax"> *</span><span class="function-syntax">Supervisor::internal</span><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">inbuild_nest</span><span class="plain-syntax"> *</span><span class="function-syntax">Supervisor::internal</span><button class="popup" onclick="togglePopup('usagePopup11')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup11">Usage of <span class="code-font"><span class="function-syntax">Supervisor::internal</span></span>:<br/>Index Pages - <a href="7-ip.html#SP1_1">&#167;1.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">RUN_ONLY_FROM_PHASE</span><span class="plain-syntax">(</span><span class="constant-syntax">NESTED_INBUILD_PHASE</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">shared_internal_nest</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
<span class="reserved-syntax">inbuild_nest</span><span class="plain-syntax"> *</span><span class="function-syntax">Supervisor::external</span><button class="popup" onclick="togglePopup('usagePopup11')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup11">Usage of <span class="code-font"><span class="function-syntax">Supervisor::external</span></span>:<br/>Project Services - <a href="5-ps2.html#SP36_1">&#167;36.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">inbuild_nest</span><span class="plain-syntax"> *</span><span class="function-syntax">Supervisor::external</span><button class="popup" onclick="togglePopup('usagePopup12')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup12">Usage of <span class="code-font"><span class="function-syntax">Supervisor::external</span></span>:<br/>Project Services - <a href="5-ps2.html#SP36_1">&#167;36.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">RUN_ONLY_FROM_PHASE</span><span class="plain-syntax">(</span><span class="constant-syntax">NESTED_INBUILD_PHASE</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">shared_external_nest</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
@ -659,7 +659,7 @@ no better indication of where they are.
<span class="plain-syntax"> </span><span class="identifier-syntax">supervisor_tools_location</span><span class="plain-syntax"> = </span><span class="identifier-syntax">P</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
<span class="identifier-syntax">pathname</span><span class="plain-syntax"> *</span><span class="function-syntax">Supervisor::default_internal_path</span><button class="popup" onclick="togglePopup('usagePopup12')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup12">Usage of <span class="code-font"><span class="function-syntax">Supervisor::default_internal_path</span></span>:<br/><a href="1-ic.html#SP18">&#167;18</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
<span class="identifier-syntax">pathname</span><span class="plain-syntax"> *</span><span class="function-syntax">Supervisor::default_internal_path</span><button class="popup" onclick="togglePopup('usagePopup13')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup13">Usage of <span class="code-font"><span class="function-syntax">Supervisor::default_internal_path</span></span>:<br/><a href="1-ic.html#SP18">&#167;18</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">pathname</span><span class="plain-syntax"> *</span><span class="identifier-syntax">P</span><span class="plain-syntax"> = </span><span class="identifier-syntax">supervisor_tools_location</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">P</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Pathnames::down</span><span class="plain-syntax">(</span><span class="identifier-syntax">P</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"inform7"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">P</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Pathnames::down</span><span class="plain-syntax">(</span><span class="identifier-syntax">P</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Internal"</span><span class="plain-syntax">);</span>
@ -685,7 +685,7 @@ the external nest is used.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="identifier-syntax">pathname</span><span class="plain-syntax"> *</span><span class="function-syntax">Supervisor::transient</span><button class="popup" onclick="togglePopup('usagePopup13')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup13">Usage of <span class="code-font"><span class="function-syntax">Supervisor::transient</span></span>:<br/>Project Services - <a href="5-ps2.html#SP6">&#167;6</a><br/>The Mini-Website - <a href="7-tm.html#SP3">&#167;3</a><br/>Dictionary - <a href="7-dct.html#SP1">&#167;1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
<span class="identifier-syntax">pathname</span><span class="plain-syntax"> *</span><span class="function-syntax">Supervisor::transient</span><button class="popup" onclick="togglePopup('usagePopup14')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup14">Usage of <span class="code-font"><span class="function-syntax">Supervisor::transient</span></span>:<br/>Project Services - <a href="5-ps2.html#SP6">&#167;6</a><br/>The Mini-Website - <a href="7-tm.html#SP3">&#167;3</a><br/>Dictionary - <a href="7-dct.html#SP1">&#167;1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">RUN_ONLY_FROM_PHASE</span><span class="plain-syntax">(</span><span class="constant-syntax">TINKERING_INBUILD_PHASE</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">shared_transient_resources</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</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">shared_external_nest</span><span class="plain-syntax">)</span>
@ -709,7 +709,7 @@ specify the bundle twice, or specify the file twice.
<span class="identifier-syntax">pathname</span><span class="plain-syntax"> *</span><span class="identifier-syntax">project_bundle_request</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
<span class="identifier-syntax">filename</span><span class="plain-syntax"> *</span><span class="identifier-syntax">project_file_request</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Supervisor::set_I7_source</span><button class="popup" onclick="togglePopup('usagePopup14')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup14">Usage of <span class="code-font"><span class="function-syntax">Supervisor::set_I7_source</span></span>:<br/><a href="1-ic.html#SP9">&#167;9</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">filename</span><span class="plain-syntax"> *</span><span class="identifier-syntax">F</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Supervisor::set_I7_source</span><button class="popup" onclick="togglePopup('usagePopup15')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup15">Usage of <span class="code-font"><span class="function-syntax">Supervisor::set_I7_source</span></span>:<br/><a href="1-ic.html#SP9">&#167;9</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">filename</span><span class="plain-syntax"> *</span><span class="identifier-syntax">F</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">RUN_ONLY_FROM_PHASE</span><span class="plain-syntax">(</span><span class="constant-syntax">CONFIGURATION_INBUILD_PHASE</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">project_file_request</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">project_file_request</span><span class="plain-syntax"> = </span><span class="identifier-syntax">F</span><span class="plain-syntax">;</span>
@ -725,7 +725,7 @@ depending on who's asking.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Supervisor::set_I7_bundle</span><button class="popup" onclick="togglePopup('usagePopup15')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup15">Usage of <span class="code-font"><span class="function-syntax">Supervisor::set_I7_bundle</span></span>:<br/><a href="1-ic.html#SP9">&#167;9</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">pathname</span><span class="plain-syntax"> *</span><span class="identifier-syntax">P</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Supervisor::set_I7_bundle</span><button class="popup" onclick="togglePopup('usagePopup16')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup16">Usage of <span class="code-font"><span class="function-syntax">Supervisor::set_I7_bundle</span></span>:<br/><a href="1-ic.html#SP9">&#167;9</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">pathname</span><span class="plain-syntax"> *</span><span class="identifier-syntax">P</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">RUN_ONLY_FROM_PHASE</span><span class="plain-syntax">(</span><span class="constant-syntax">CONFIGURATION_INBUILD_PHASE</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">project_bundle_request</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">project_bundle_request</span><span class="plain-syntax"> = </span><span class="identifier-syntax">P</span><span class="plain-syntax">;</span>
@ -756,7 +756,7 @@ location. If it hasn't, we create a project using <span class="extract"><span cl
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">inform_project</span><span class="plain-syntax"> *</span><span class="identifier-syntax">chosen_project</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Supervisor::make_project_from_command_line</span><button class="popup" onclick="togglePopup('usagePopup16')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup16">Usage of <span class="code-font"><span class="function-syntax">Supervisor::make_project_from_command_line</span></span>:<br/><a href="1-ic.html#SP10">&#167;10</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inbuild_copy</span><span class="plain-syntax"> *</span><span class="identifier-syntax">C</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Supervisor::make_project_from_command_line</span><button class="popup" onclick="togglePopup('usagePopup17')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup17">Usage of <span class="code-font"><span class="function-syntax">Supervisor::make_project_from_command_line</span></span>:<br/><a href="1-ic.html#SP10">&#167;10</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inbuild_copy</span><span class="plain-syntax"> *</span><span class="identifier-syntax">C</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">RUN_ONLY_IN_PHASE</span><span class="plain-syntax">(</span><span class="constant-syntax">PRETINKERING_INBUILD_PHASE</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">filename</span><span class="plain-syntax"> *</span><span class="identifier-syntax">F</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">; </span><span class="comment-syntax"> result of </span><span class="extract"><span class="extract-syntax">-source</span></span><span class="comment-syntax"> at the command line</span>
@ -793,7 +793,7 @@ location. If it hasn't, we create a project using <span class="extract"><span cl
<span class="plain-syntax"> }</span>
<span class="plain-syntax">}</span>
<span class="reserved-syntax">inform_project</span><span class="plain-syntax"> *</span><span class="function-syntax">Supervisor::project_set_at_command_line</span><button class="popup" onclick="togglePopup('usagePopup17')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup17">Usage of <span class="code-font"><span class="function-syntax">Supervisor::project_set_at_command_line</span></span>:<br/>The Report - <a href="7-tr.html#SP2">&#167;2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">inform_project</span><span class="plain-syntax"> *</span><span class="function-syntax">Supervisor::project_set_at_command_line</span><button class="popup" onclick="togglePopup('usagePopup18')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup18">Usage of <span class="code-font"><span class="function-syntax">Supervisor::project_set_at_command_line</span></span>:<br/>The Report - <a href="7-tr.html#SP2">&#167;2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</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">chosen_project</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
</pre>

View file

@ -80,6 +80,7 @@ which use this module:
<span class="definition-keyword">enum</span> <span class="constant-syntax">extension_census_CLASS</span>
<span class="definition-keyword">enum</span> <span class="constant-syntax">extension_census_datum_CLASS</span>
<span class="definition-keyword">enum</span> <span class="constant-syntax">extension_dictionary_entry_CLASS</span>
<span class="definition-keyword">enum</span> <span class="constant-syntax">extensions_key_item_CLASS</span>
<span class="definition-keyword">enum</span> <span class="constant-syntax">heading_CLASS</span>
<span class="definition-keyword">enum</span> <span class="constant-syntax">heading_tree_CLASS</span>
<span class="definition-keyword">enum</span> <span class="constant-syntax">inbuild_copy_CLASS</span>
@ -113,6 +114,7 @@ which use this module:
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="reserved-syntax">extension_census_datum</span><span class="plain-syntax">)</span>
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="reserved-syntax">extension_census</span><span class="plain-syntax">)</span>
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="reserved-syntax">extension_dictionary_entry</span><span class="plain-syntax">)</span>
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="reserved-syntax">extensions_key_item</span><span class="plain-syntax">)</span>
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="reserved-syntax">heading_tree</span><span class="plain-syntax">)</span>
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="reserved-syntax">heading</span><span class="plain-syntax">)</span>
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="reserved-syntax">inbuild_copy</span><span class="plain-syntax">)</span>

View file

@ -193,7 +193,7 @@ output.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">CopyErrors::write</span><button class="popup" onclick="togglePopup('usagePopup12')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup12">Usage of <span class="code-font"><span class="function-syntax">CopyErrors::write</span></span>:<br/>Copies - <a href="2-cps.html#SP5">&#167;5</a><br/>Index Pages - <a href="7-ip.html#SP1_1_2_1_4">&#167;1.1.2.1.4</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">copy_error</span><span class="plain-syntax"> *</span><span class="identifier-syntax">CE</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">CopyErrors::write</span><button class="popup" onclick="togglePopup('usagePopup12')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup12">Usage of <span class="code-font"><span class="function-syntax">CopyErrors::write</span></span>:<br/>Copies - <a href="2-cps.html#SP5">&#167;5</a><br/>Index Pages - <a href="7-ip.html#SP1_2_2_4">&#167;1.2.2.4</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">copy_error</span><span class="plain-syntax"> *</span><span class="identifier-syntax">CE</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">switch</span><span class="plain-syntax"> (</span><span class="identifier-syntax">CE</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">error_category</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">OPEN_FAILED_CE:</span><span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"unable to open file %f"</span><span class="plain-syntax">, </span><span class="identifier-syntax">CE</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">details_file</span><span class="plain-syntax">); </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">EXT_MISWORDED_CE:</span><span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"extension misworded: %S"</span><span class="plain-syntax">, </span><span class="identifier-syntax">CE</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">details</span><span class="plain-syntax">); </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>

View file

@ -230,7 +230,7 @@ such newcomers are graphed too.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">build_vertex</span><span class="plain-syntax"> *</span><span class="function-syntax">Copies::construct_project_graph</span><button class="popup" onclick="togglePopup('usagePopup12')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup12">Usage of <span class="code-font"><span class="function-syntax">Copies::construct_project_graph</span></span>:<br/><a href="2-cps.html#SP12">&#167;12</a>, <a href="2-cps.html#SP13">&#167;13</a>, <a href="2-cps.html#SP14">&#167;14</a><br/>The Report - <a href="7-tr.html#SP2">&#167;2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inbuild_copy</span><span class="plain-syntax"> *</span><span class="identifier-syntax">C</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">build_vertex</span><span class="plain-syntax"> *</span><span class="function-syntax">Copies::construct_project_graph</span><button class="popup" onclick="togglePopup('usagePopup12')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup12">Usage of <span class="code-font"><span class="function-syntax">Copies::construct_project_graph</span></span>:<br/><a href="2-cps.html#SP12">&#167;12</a>, <a href="2-cps.html#SP13">&#167;13</a>, <a href="2-cps.html#SP14">&#167;14</a><br/>Index Pages - <a href="7-ip.html#SP5">&#167;5</a><br/>The Report - <a href="7-tr.html#SP2">&#167;2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inbuild_copy</span><span class="plain-syntax"> *</span><span class="identifier-syntax">C</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">build_vertex</span><span class="plain-syntax"> *</span><span class="identifier-syntax">V</span><span class="plain-syntax"> = </span><a href="2-cps.html#SP9" class="function-link"><span class="function-syntax">Copies::building_soon</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">C</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-cps.html#SP9" class="function-link"><span class="function-syntax">Copies::graph_everything</span></a><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">V</span><span class="plain-syntax">;</span>

View file

@ -100,7 +100,7 @@ see below for why. Lower-tag-numbered origins are better than later ones.
<span class="definition-keyword">enum</span> <span class="constant-syntax">EXTENSION_NEST_TAG</span>
</pre>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Nests::get_tag</span><button class="popup" onclick="togglePopup('usagePopup2')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup2">Usage of <span class="code-font"><span class="function-syntax">Nests::get_tag</span></span>:<br/><a href="2-nst.html#SP11">&#167;11</a><br/>Inbuild Control - <a href="1-ic.html#SP15">&#167;15</a><br/>Inform7 Skill - <a href="3-is2.html#SP1">&#167;1</a><br/>Extension Bundle Manager - <a href="4-ebm.html#SP5">&#167;5</a><br/>Inclusions - <a href="6-inc.html#SP6_1">&#167;6.1</a><br/>Census - <a href="7-cns.html#SP2">&#167;2</a>, <a href="7-cns.html#SP3">&#167;3</a>, <a href="7-cns.html#SP5">&#167;5</a>, <a href="7-cns.html#SP7_1">&#167;7.1</a><br/>Index Pages - <a href="7-ip.html#SP1_1_1_1">&#167;1.1.1.1</a>, <a href="7-ip.html#SP1_1_2_1_6_4_3">&#167;1.1.2.1.6.4.3</a><br/>The Report - <a href="7-tr.html#SP3">&#167;3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inbuild_nest</span><span class="plain-syntax"> *</span><span class="identifier-syntax">N</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Nests::get_tag</span><button class="popup" onclick="togglePopup('usagePopup2')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup2">Usage of <span class="code-font"><span class="function-syntax">Nests::get_tag</span></span>:<br/><a href="2-nst.html#SP11">&#167;11</a><br/>Inbuild Control - <a href="1-ic.html#SP15">&#167;15</a><br/>Inform7 Skill - <a href="3-is2.html#SP1">&#167;1</a><br/>Extension Bundle Manager - <a href="4-ebm.html#SP5">&#167;5</a><br/>Inclusions - <a href="6-inc.html#SP6_1">&#167;6.1</a><br/>Census - <a href="7-cns.html#SP2">&#167;2</a>, <a href="7-cns.html#SP3">&#167;3</a>, <a href="7-cns.html#SP5">&#167;5</a>, <a href="7-cns.html#SP6_1">&#167;6.1</a><br/>Index Pages - <a href="7-ip.html#SP1_2_1">&#167;1.2.1</a>, <a href="7-ip.html#SP1_2_2_6_4_3">&#167;1.2.2.6.4.3</a><br/>The Report - <a href="7-tr.html#SP3">&#167;3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inbuild_nest</span><span class="plain-syntax"> *</span><span class="identifier-syntax">N</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">N</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> -1;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">N</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">tag_value</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
@ -151,7 +151,7 @@ can't install to a read-only nest.
<p class="commentary firstcommentary"><a id="SP5" class="paragraph-anchor"></a><b>&#167;5. </b></p>
<pre class="displayed-code all-displayed-code code-font">
<span class="identifier-syntax">pathname</span><span class="plain-syntax"> *</span><span class="function-syntax">Nests::get_location</span><button class="popup" onclick="togglePopup('usagePopup9')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup9">Usage of <span class="code-font"><span class="function-syntax">Nests::get_location</span></span>:<br/>Inbuild Control - <a href="1-ic.html#SP15">&#167;15</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inbuild_nest</span><span class="plain-syntax"> *</span><span class="identifier-syntax">N</span><span class="plain-syntax">) {</span>
<span class="identifier-syntax">pathname</span><span class="plain-syntax"> *</span><span class="function-syntax">Nests::get_location</span><button class="popup" onclick="togglePopup('usagePopup9')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup9">Usage of <span class="code-font"><span class="function-syntax">Nests::get_location</span></span>:<br/>Inbuild Control - <a href="1-ic.html#SP15">&#167;15</a><br/>Index Pages - <a href="7-ip.html#SP1_2_1">&#167;1.2.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inbuild_nest</span><span class="plain-syntax"> *</span><span class="identifier-syntax">N</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">N</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</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">N</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">location</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
@ -213,7 +213,7 @@ genre's manager to look for copies of that genre:
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Nests::search_for</span><button class="popup" onclick="togglePopup('usagePopup11')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup11">Usage of <span class="code-font"><span class="function-syntax">Nests::search_for</span></span>:<br/><a href="2-nst.html#SP10">&#167;10</a><br/>Language Services - <a href="5-ls.html#SP11">&#167;11</a><br/>Inclusions - <a href="6-inc.html#SP6_1_2">&#167;6.1.2</a><br/>Census - <a href="7-cns.html#SP7">&#167;7</a><br/>The Report - <a href="7-tr.html#SP2_4_4">&#167;2.4.4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inbuild_requirement</span><span class="plain-syntax"> *</span><span class="identifier-syntax">req</span><span class="plain-syntax">,</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Nests::search_for</span><button class="popup" onclick="togglePopup('usagePopup11')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup11">Usage of <span class="code-font"><span class="function-syntax">Nests::search_for</span></span>:<br/><a href="2-nst.html#SP10">&#167;10</a><br/>Language Services - <a href="5-ls.html#SP11">&#167;11</a><br/>Inclusions - <a href="6-inc.html#SP6_1_2">&#167;6.1.2</a><br/>Census - <a href="7-cns.html#SP6">&#167;6</a><br/>Index Pages - <a href="7-ip.html#SP1_1">&#167;1.1</a><br/>The Report - <a href="7-tr.html#SP2_4_4">&#167;2.4.4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inbuild_requirement</span><span class="plain-syntax"> *</span><span class="identifier-syntax">req</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">linked_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">search_list</span><span class="plain-syntax">, </span><span class="identifier-syntax">linked_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">results</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">OUT</span><span class="plain-syntax"> = </span><span class="identifier-syntax">STDOUT</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">supervisor_verbosity</span><span class="plain-syntax"> &gt;= </span><span class="constant-syntax">3</span><span class="plain-syntax">) {</span>

View file

@ -90,7 +90,7 @@ we can give a semantic version number range:
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="2-rqr.html#SP2" class="function-link"><span class="function-syntax">Requirements::new</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">work</span><span class="plain-syntax">, </span><span class="identifier-syntax">VersionNumberRanges::any_range</span><span class="plain-syntax">());</span>
<span class="plain-syntax">}</span>
<span class="reserved-syntax">inbuild_requirement</span><span class="plain-syntax"> *</span><span class="function-syntax">Requirements::anything_of_genre</span><button class="popup" onclick="togglePopup('usagePopup3')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup3">Usage of <span class="code-font"><span class="function-syntax">Requirements::anything_of_genre</span></span>:<br/>Language Services - <a href="5-ls.html#SP11">&#167;11</a><br/>Census - <a href="7-cns.html#SP7">&#167;7</a><br/>The Report - <a href="7-tr.html#SP2_4_4">&#167;2.4.4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inbuild_genre</span><span class="plain-syntax"> *</span><span class="identifier-syntax">G</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">inbuild_requirement</span><span class="plain-syntax"> *</span><span class="function-syntax">Requirements::anything_of_genre</span><button class="popup" onclick="togglePopup('usagePopup3')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup3">Usage of <span class="code-font"><span class="function-syntax">Requirements::anything_of_genre</span></span>:<br/>Language Services - <a href="5-ls.html#SP11">&#167;11</a><br/>Census - <a href="7-cns.html#SP6">&#167;6</a><br/>Index Pages - <a href="7-ip.html#SP1_1">&#167;1.1</a><br/>The Report - <a href="7-tr.html#SP2_4_4">&#167;2.4.4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inbuild_genre</span><span class="plain-syntax"> *</span><span class="identifier-syntax">G</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="2-rqr.html#SP2" class="function-link"><span class="function-syntax">Requirements::any_version_of</span></a><span class="plain-syntax">(</span><a href="2-wrk.html#SP2" class="function-link"><span class="function-syntax">Works::new</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">G</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">""</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">""</span><span class="plain-syntax">));</span>
<span class="plain-syntax">}</span>

View file

@ -257,7 +257,7 @@ order-preserving. To emphasise this we return true or false rather than a
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Works::match</span><button class="popup" onclick="togglePopup('usagePopup10')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup10">Usage of <span class="code-font"><span class="function-syntax">Works::match</span></span>:<br/><a href="2-wrk.html#SP11">&#167;11</a><br/>Headings - <a href="6-hdn.html#SP22">&#167;22</a>, <a href="6-hdn.html#SP22_2">&#167;22.2</a><br/>Dictionary - <a href="7-dct.html#SP11">&#167;11</a>, <a href="7-dct.html#SP17">&#167;17</a>, <a href="7-dct.html#SP17_2">&#167;17.2</a><br/>Census - <a href="7-cns.html#SP7_1">&#167;7.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inbuild_work</span><span class="plain-syntax"> *</span><span class="identifier-syntax">w1</span><span class="plain-syntax">, </span><span class="reserved-syntax">inbuild_work</span><span class="plain-syntax"> *</span><span class="identifier-syntax">w2</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Works::match</span><button class="popup" onclick="togglePopup('usagePopup10')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup10">Usage of <span class="code-font"><span class="function-syntax">Works::match</span></span>:<br/><a href="2-wrk.html#SP11">&#167;11</a><br/>Headings - <a href="6-hdn.html#SP22">&#167;22</a>, <a href="6-hdn.html#SP22_2">&#167;22.2</a><br/>Dictionary - <a href="7-dct.html#SP11">&#167;11</a>, <a href="7-dct.html#SP17">&#167;17</a>, <a href="7-dct.html#SP17_2">&#167;17.2</a><br/>Census - <a href="7-cns.html#SP6_1">&#167;6.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inbuild_work</span><span class="plain-syntax"> *</span><span class="identifier-syntax">w1</span><span class="plain-syntax">, </span><span class="reserved-syntax">inbuild_work</span><span class="plain-syntax"> *</span><span class="identifier-syntax">w2</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">w1</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">w2</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">)) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"bad work match"</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">w1</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">inbuild_work_hash_code</span><span class="plain-syntax"> != </span><span class="identifier-syntax">w2</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">inbuild_work_hash_code</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</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">Str::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">w1</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">author_name</span><span class="plain-syntax">, </span><span class="identifier-syntax">w2</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">author_name</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
@ -306,7 +306,7 @@ each extension's page is generated from its <span class="extract"><span class="e
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Works::begin_extension_link</span><button class="popup" onclick="togglePopup('usagePopup14')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup14">Usage of <span class="code-font"><span class="function-syntax">Works::begin_extension_link</span></span>:<br/>Index Pages - <a href="7-ip.html#SP1_1_2_1_6_4_1">&#167;1.1.2.1.6.4.1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">inbuild_work</span><span class="plain-syntax"> *</span><span class="identifier-syntax">work</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">rubric</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Works::begin_extension_link</span><button class="popup" onclick="togglePopup('usagePopup14')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup14">Usage of <span class="code-font"><span class="function-syntax">Works::begin_extension_link</span></span>:<br/>Index Pages - <a href="7-ip.html#SP1_2_2_6_4_1">&#167;1.2.2.6.4.1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">inbuild_work</span><span class="plain-syntax"> *</span><span class="identifier-syntax">work</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">rubric</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">link</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">link</span><span class="plain-syntax">, </span><span class="string-syntax">"href='inform:</span><span class="comment-syntax">Extensions/Extensions/");</span>
<span class="string-syntax"> Works::escape_apostrophes(link, work-&gt;author_name);</span>
@ -331,7 +331,7 @@ each extension's page is generated from its <span class="extract"><span class="e
<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">Works::end_extension_link</span><button class="popup" onclick="togglePopup('usagePopup15')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup15">Usage of <span class="code-font"><span class="function-syntax">Works::end_extension_link</span></span>:<br/>Index Pages - <a href="7-ip.html#SP1_1_2_1_6_4_1">&#167;1.1.2.1.6.4.1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">inbuild_work</span><span class="plain-syntax"> *</span><span class="identifier-syntax">work</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Works::end_extension_link</span><button class="popup" onclick="togglePopup('usagePopup15')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup15">Usage of <span class="code-font"><span class="function-syntax">Works::end_extension_link</span></span>:<br/>Index Pages - <a href="7-ip.html#SP1_2_2_6_4_1">&#167;1.2.2.6.4.1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">inbuild_work</span><span class="plain-syntax"> *</span><span class="identifier-syntax">work</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_CLOSE</span><span class="plain-syntax">(</span><span class="string-syntax">"a"</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
</pre>

View file

@ -111,7 +111,7 @@ compiled, is a file vertex.
<span class="plain-syntax"> </span><span class="identifier-syntax">CLASS_DEFINITION</span>
<span class="plain-syntax">} </span><span class="reserved-syntax">build_vertex</span><span class="plain-syntax">;</span>
</pre>
<ul class="endnotetexts"><li>The structure build_vertex is accessed in 1/sm, 3/ib, 3/bs2, 3/is, 3/is3, 3/is4, 4/em, 5/es, 5/ks, 5/ls, 5/ps, 5/ps2, 5/ts, 6/st, 6/hdn, 6/inc, 7/dct, 7/ip2, 7/tr and here.</li></ul>
<ul class="endnotetexts"><li>The structure build_vertex is accessed in 1/sm, 3/ib, 3/bs2, 3/is, 3/is3, 3/is4, 4/em, 5/es, 5/ks, 5/ls, 5/ps, 5/ps2, 5/ts, 6/st, 6/hdn, 6/inc, 7/dct, 7/ip, 7/ip2, 7/tr and here.</li></ul>
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>&#167;2. Creation. </b>First, the three colours of vertex.
</p>
@ -275,7 +275,7 @@ vertex: it's used by the Inbuild command <span class="extract"><span class="extr
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">unique_graph_scan_count</span><span class="plain-syntax"> = </span><span class="constant-syntax">1</span><span class="plain-syntax">;</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Graphs::get_unique_graph_scan_count</span><button class="popup" onclick="togglePopup('usagePopup9')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup9">Usage of <span class="code-font"><span class="function-syntax">Graphs::get_unique_graph_scan_count</span></span>:<br/>The Report - <a href="7-tr.html#SP2_5_1">&#167;2.5.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Graphs::get_unique_graph_scan_count</span><button class="popup" onclick="togglePopup('usagePopup9')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup9">Usage of <span class="code-font"><span class="function-syntax">Graphs::get_unique_graph_scan_count</span></span>:<br/>Index Pages - <a href="7-ip.html#SP5">&#167;5</a><br/>The Report - <a href="7-tr.html#SP2_5_1">&#167;2.5.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</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">unique_graph_scan_count</span><span class="plain-syntax">++;</span>
<span class="plain-syntax">}</span>

View file

@ -97,7 +97,7 @@ later on, as needed, just for extensions of interest: see below.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="identifier-syntax">pathname</span><span class="plain-syntax"> *</span><span class="function-syntax">ExtensionManager::path_within_nest</span><button class="popup" onclick="togglePopup('usagePopup2')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup2">Usage of <span class="code-font"><span class="function-syntax">ExtensionManager::path_within_nest</span></span>:<br/><a href="4-em.html#SP6">&#167;6</a>, <a href="4-em.html#SP7">&#167;7</a><br/>Extension Bundle Manager - <a href="4-ebm.html#SP6">&#167;6</a><br/>Census - <a href="7-cns.html#SP3">&#167;3</a><br/>Index Pages - <a href="7-ip.html#SP1_1_2_1_6_4_3">&#167;1.1.2.1.6.4.3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inbuild_nest</span><span class="plain-syntax"> *</span><span class="identifier-syntax">N</span><span class="plain-syntax">) {</span>
<span class="identifier-syntax">pathname</span><span class="plain-syntax"> *</span><span class="function-syntax">ExtensionManager::path_within_nest</span><button class="popup" onclick="togglePopup('usagePopup2')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup2">Usage of <span class="code-font"><span class="function-syntax">ExtensionManager::path_within_nest</span></span>:<br/><a href="4-em.html#SP6">&#167;6</a>, <a href="4-em.html#SP7">&#167;7</a><br/>Extension Bundle Manager - <a href="4-ebm.html#SP6">&#167;6</a><br/>Census - <a href="7-cns.html#SP3">&#167;3</a><br/>Index Pages - <a href="7-ip.html#SP1_2_2_6_4_3">&#167;1.2.2.6.4.3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inbuild_nest</span><span class="plain-syntax"> *</span><span class="identifier-syntax">N</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">N</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"no nest"</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">Pathnames::down</span><span class="plain-syntax">(</span><span class="identifier-syntax">N</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">location</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Extensions"</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>

View file

@ -99,7 +99,7 @@ length to one character less than the following constants:
<span class="plain-syntax"> </span><span class="identifier-syntax">CLASS_DEFINITION</span>
<span class="plain-syntax">} </span><span class="reserved-syntax">inform_extension</span><span class="plain-syntax">;</span>
</pre>
<ul class="endnotetexts"><li>The structure inform_extension is accessed in 1/sm, 3/bg, 3/ib, 3/is3, 4/em, 5/ks, 5/ls, 5/ps, 5/ps2, 5/ts, 6/st, 6/hdn, 6/inc, 7/tm, 7/dct, 7/cns, 7/ip2, 7/tr and here.</li></ul>
<ul class="endnotetexts"><li>The structure inform_extension is accessed in 1/sm, 3/bg, 3/ib, 3/is3, 4/em, 5/ks, 5/ls, 5/ps, 5/ps2, 5/ts, 6/st, 6/hdn, 6/inc, 7/tm, 7/dct, 7/cns, 7/ip, 7/ip2, 7/tr and here.</li></ul>
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>&#167;2. </b>This is called as soon as a new copy <span class="extract"><span class="extract-syntax">C</span></span> of the extension genre is created.
We scan the extension file for the title, author, version number and any
compatibility notes given (such as "for Glulx only").
@ -736,7 +736,7 @@ in a minimal sort of way, with just an <span class="extract"><span class="extrac
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">inform_extension</span><span class="plain-syntax"> *</span><span class="function-syntax">Extensions::from_copy</span><button class="popup" onclick="togglePopup('usagePopup3')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup3">Usage of <span class="code-font"><span class="function-syntax">Extensions::from_copy</span></span>:<br/><a href="5-es.html#SP12">&#167;12</a><br/>Language Services - <a href="5-ls.html#SP10">&#167;10</a><br/>Project Services - <a href="5-ps2.html#SP35">&#167;35</a><br/>Source Text - <a href="6-st.html#SP13">&#167;13</a><br/>Inclusions - <a href="6-inc.html#SP6_1">&#167;6.1</a><br/>Dictionary - <a href="7-dct.html#SP9">&#167;9</a><br/>Census - <a href="7-cns.html#SP5">&#167;5</a>, <a href="7-cns.html#SP6">&#167;6</a><br/>Index Pages - <a href="7-ip.html#SP1_1_2_1_6_4_4">&#167;1.1.2.1.6.4.4</a><br/>Individual Pages - <a href="7-ip2.html#SP2_1">&#167;2.1</a><br/>The Report - <a href="7-tr.html#SP2_4_1">&#167;2.4.1</a>, <a href="7-tr.html#SP2_4_2">&#167;2.4.2</a>, <a href="7-tr.html#SP2_4_2_1">&#167;2.4.2.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inbuild_copy</span><span class="plain-syntax"> *</span><span class="identifier-syntax">C</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">inform_extension</span><span class="plain-syntax"> *</span><span class="function-syntax">Extensions::from_copy</span><button class="popup" onclick="togglePopup('usagePopup3')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup3">Usage of <span class="code-font"><span class="function-syntax">Extensions::from_copy</span></span>:<br/><a href="5-es.html#SP12">&#167;12</a><br/>Language Services - <a href="5-ls.html#SP10">&#167;10</a><br/>Project Services - <a href="5-ps2.html#SP35">&#167;35</a><br/>Source Text - <a href="6-st.html#SP13">&#167;13</a><br/>Inclusions - <a href="6-inc.html#SP6_1">&#167;6.1</a><br/>Dictionary - <a href="7-dct.html#SP9">&#167;9</a><br/>Census - <a href="7-cns.html#SP5">&#167;5</a><br/>Index Pages - <a href="7-ip.html#SP1_2_2_6_4_4">&#167;1.2.2.6.4.4</a>, <a href="7-ip.html#SP6">&#167;6</a><br/>Individual Pages - <a href="7-ip2.html#SP2_1">&#167;2.1</a><br/>The Report - <a href="7-tr.html#SP2_4_1">&#167;2.4.1</a>, <a href="7-tr.html#SP2_4_2">&#167;2.4.2</a>, <a href="7-tr.html#SP2_4_2_1">&#167;2.4.2.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inbuild_copy</span><span class="plain-syntax"> *</span><span class="identifier-syntax">C</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">inform_extension</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ext</span><span class="plain-syntax"> = </span><a href="4-ebm.html#SP3" class="function-link"><span class="function-syntax">ExtensionBundleManager::from_copy</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">C</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">ext</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">ext</span><span class="plain-syntax"> = </span><a href="4-em.html#SP4" class="function-link"><span class="function-syntax">ExtensionManager::from_copy</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">C</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">ext</span><span class="plain-syntax">;</span>
@ -806,7 +806,7 @@ in a minimal sort of way, with just an <span class="extract"><span class="extrac
<span class="plain-syntax"> </span><span class="identifier-syntax">Str::copy</span><span class="plain-syntax">(</span><span class="identifier-syntax">E</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">sort_usage_date</span><span class="plain-syntax">, </span><span class="identifier-syntax">date</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
<span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="function-syntax">Extensions::get_usage_date</span><button class="popup" onclick="togglePopup('usagePopup9')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup9">Usage of <span class="code-font"><span class="function-syntax">Extensions::get_usage_date</span></span>:<br/>Index Pages - <a href="7-ip.html#SP1_1_2_1_6_4_4">&#167;1.1.2.1.6.4.4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inform_extension</span><span class="plain-syntax"> *</span><span class="identifier-syntax">E</span><span class="plain-syntax">) {</span>
<span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="function-syntax">Extensions::get_usage_date</span><span class="plain-syntax">(</span><span class="reserved-syntax">inform_extension</span><span class="plain-syntax"> *</span><span class="identifier-syntax">E</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">E</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">last_usage_date</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
@ -814,11 +814,11 @@ in a minimal sort of way, with just an <span class="extract"><span class="extrac
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">E</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">sort_usage_date</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">Extensions::set_word_count</span><button class="popup" onclick="togglePopup('usagePopup10')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup10">Usage of <span class="code-font"><span class="function-syntax">Extensions::set_word_count</span></span>:<br/>Dictionary - <a href="7-dct.html#SP4_1">&#167;4.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inform_extension</span><span class="plain-syntax"> *</span><span class="identifier-syntax">E</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">wc</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Extensions::set_word_count</span><button class="popup" onclick="togglePopup('usagePopup9')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup9">Usage of <span class="code-font"><span class="function-syntax">Extensions::set_word_count</span></span>:<br/>Dictionary - <a href="7-dct.html#SP4_1">&#167;4.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inform_extension</span><span class="plain-syntax"> *</span><span class="identifier-syntax">E</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">wc</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">E</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">word_count</span><span class="plain-syntax"> = </span><span class="identifier-syntax">wc</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Extensions::get_word_count</span><button class="popup" onclick="togglePopup('usagePopup11')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup11">Usage of <span class="code-font"><span class="function-syntax">Extensions::get_word_count</span></span>:<br/>Index Pages - <a href="7-ip.html#SP1_1_2_1_6_4_4">&#167;1.1.2.1.6.4.4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inform_extension</span><span class="plain-syntax"> *</span><span class="identifier-syntax">E</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Extensions::get_word_count</span><button class="popup" onclick="togglePopup('usagePopup10')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup10">Usage of <span class="code-font"><span class="function-syntax">Extensions::get_word_count</span></span>:<br/>Index Pages - <a href="7-ip.html#SP1_2_2_6_4_4">&#167;1.2.2.6.4.4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inform_extension</span><span class="plain-syntax"> *</span><span class="identifier-syntax">E</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">E</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">word_count</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
@ -828,7 +828,7 @@ in a minimal sort of way, with just an <span class="extract"><span class="extrac
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">T</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Extensions::compare_by_edition</span><button class="popup" onclick="togglePopup('usagePopup12')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup12">Usage of <span class="code-font"><span class="function-syntax">Extensions::compare_by_edition</span></span>:<br/>Census - <a href="7-cns.html#SP6">&#167;6</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inform_extension</span><span class="plain-syntax"> *</span><span class="identifier-syntax">E1</span><span class="plain-syntax">, </span><span class="reserved-syntax">inform_extension</span><span class="plain-syntax"> *</span><span class="identifier-syntax">E2</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Extensions::compare_by_edition</span><span class="plain-syntax">(</span><span class="reserved-syntax">inform_extension</span><span class="plain-syntax"> *</span><span class="identifier-syntax">E1</span><span class="plain-syntax">, </span><span class="reserved-syntax">inform_extension</span><span class="plain-syntax"> *</span><span class="identifier-syntax">E2</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">E1</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">E2</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">)) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"bad work match"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">d</span><span class="plain-syntax"> = </span><a href="2-wrk.html#SP10" class="function-link"><span class="function-syntax">Works::cmp</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">E1</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">as_copy</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">edition</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">work</span><span class="plain-syntax">, </span><span class="identifier-syntax">E2</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">as_copy</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">edition</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">work</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">d</span><span class="plain-syntax"> != </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">d</span><span class="plain-syntax">;</span>
@ -836,14 +836,14 @@ in a minimal sort of way, with just an <span class="extract"><span class="extrac
<span class="plain-syntax"> </span><span class="identifier-syntax">E1</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">as_copy</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">edition</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">version</span><span class="plain-syntax">, </span><span class="identifier-syntax">E2</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">as_copy</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">edition</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">version</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Extensions::compare_by_date</span><button class="popup" onclick="togglePopup('usagePopup13')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup13">Usage of <span class="code-font"><span class="function-syntax">Extensions::compare_by_date</span></span>:<br/>Census - <a href="7-cns.html#SP6">&#167;6</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inform_extension</span><span class="plain-syntax"> *</span><span class="identifier-syntax">E1</span><span class="plain-syntax">, </span><span class="reserved-syntax">inform_extension</span><span class="plain-syntax"> *</span><span class="identifier-syntax">E2</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Extensions::compare_by_date</span><span class="plain-syntax">(</span><span class="reserved-syntax">inform_extension</span><span class="plain-syntax"> *</span><span class="identifier-syntax">E1</span><span class="plain-syntax">, </span><span class="reserved-syntax">inform_extension</span><span class="plain-syntax"> *</span><span class="identifier-syntax">E2</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">E1</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">E2</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">)) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"bad work match"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">d</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Str::cmp</span><span class="plain-syntax">(</span><a href="5-es.html#SP5" class="function-link"><span class="function-syntax">Extensions::get_sort_date</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">E2</span><span class="plain-syntax">), </span><a href="5-es.html#SP5" class="function-link"><span class="function-syntax">Extensions::get_sort_date</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">E1</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">d</span><span class="plain-syntax"> != </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">d</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="5-es.html#SP5" class="function-link"><span class="function-syntax">Extensions::compare_by_edition</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">E1</span><span class="plain-syntax">, </span><span class="identifier-syntax">E2</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Extensions::compare_by_author</span><button class="popup" onclick="togglePopup('usagePopup14')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup14">Usage of <span class="code-font"><span class="function-syntax">Extensions::compare_by_author</span></span>:<br/>Census - <a href="7-cns.html#SP6">&#167;6</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inform_extension</span><span class="plain-syntax"> *</span><span class="identifier-syntax">E1</span><span class="plain-syntax">, </span><span class="reserved-syntax">inform_extension</span><span class="plain-syntax"> *</span><span class="identifier-syntax">E2</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Extensions::compare_by_author</span><button class="popup" onclick="togglePopup('usagePopup11')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup11">Usage of <span class="code-font"><span class="function-syntax">Extensions::compare_by_author</span></span>:<br/>Index Pages - <a href="7-ip.html#SP6">&#167;6</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inform_extension</span><span class="plain-syntax"> *</span><span class="identifier-syntax">E1</span><span class="plain-syntax">, </span><span class="reserved-syntax">inform_extension</span><span class="plain-syntax"> *</span><span class="identifier-syntax">E2</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">E1</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">E2</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">)) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"bad work match"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">d</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Str::cmp</span><span class="plain-syntax">(</span><span class="identifier-syntax">E2</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">as_copy</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">edition</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">work</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">author_name</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">E1</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">as_copy</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">edition</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">work</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">author_name</span><span class="plain-syntax">);</span>
@ -851,7 +851,7 @@ in a minimal sort of way, with just an <span class="extract"><span class="extrac
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="5-es.html#SP5" class="function-link"><span class="function-syntax">Extensions::compare_by_edition</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">E1</span><span class="plain-syntax">, </span><span class="identifier-syntax">E2</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Extensions::compare_by_title</span><button class="popup" onclick="togglePopup('usagePopup15')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup15">Usage of <span class="code-font"><span class="function-syntax">Extensions::compare_by_title</span></span>:<br/>Census - <a href="7-cns.html#SP6">&#167;6</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inform_extension</span><span class="plain-syntax"> *</span><span class="identifier-syntax">E1</span><span class="plain-syntax">, </span><span class="reserved-syntax">inform_extension</span><span class="plain-syntax"> *</span><span class="identifier-syntax">E2</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Extensions::compare_by_title</span><button class="popup" onclick="togglePopup('usagePopup12')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup12">Usage of <span class="code-font"><span class="function-syntax">Extensions::compare_by_title</span></span>:<br/>Index Pages - <a href="7-ip.html#SP6">&#167;6</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inform_extension</span><span class="plain-syntax"> *</span><span class="identifier-syntax">E1</span><span class="plain-syntax">, </span><span class="reserved-syntax">inform_extension</span><span class="plain-syntax"> *</span><span class="identifier-syntax">E2</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">E1</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">E2</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">)) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"bad work match"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">d</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Str::cmp</span><span class="plain-syntax">(</span><span class="identifier-syntax">E2</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">as_copy</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">edition</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">work</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">title</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">E1</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">as_copy</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">edition</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">work</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">title</span><span class="plain-syntax">);</span>
@ -859,7 +859,7 @@ in a minimal sort of way, with just an <span class="extract"><span class="extrac
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="5-es.html#SP5" class="function-link"><span class="function-syntax">Extensions::compare_by_edition</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">E1</span><span class="plain-syntax">, </span><span class="identifier-syntax">E2</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Extensions::compare_by_length</span><button class="popup" onclick="togglePopup('usagePopup16')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup16">Usage of <span class="code-font"><span class="function-syntax">Extensions::compare_by_length</span></span>:<br/>Census - <a href="7-cns.html#SP6">&#167;6</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inform_extension</span><span class="plain-syntax"> *</span><span class="identifier-syntax">E1</span><span class="plain-syntax">, </span><span class="reserved-syntax">inform_extension</span><span class="plain-syntax"> *</span><span class="identifier-syntax">E2</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Extensions::compare_by_length</span><button class="popup" onclick="togglePopup('usagePopup13')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup13">Usage of <span class="code-font"><span class="function-syntax">Extensions::compare_by_length</span></span>:<br/>Index Pages - <a href="7-ip.html#SP6">&#167;6</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inform_extension</span><span class="plain-syntax"> *</span><span class="identifier-syntax">E1</span><span class="plain-syntax">, </span><span class="reserved-syntax">inform_extension</span><span class="plain-syntax"> *</span><span class="identifier-syntax">E2</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">E1</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">E2</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">)) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"bad work match"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">d</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Str::cmp</span><span class="plain-syntax">(</span>
<span class="plain-syntax"> </span><a href="5-es.html#SP5" class="function-link"><span class="function-syntax">Extensions::get_sort_word_count</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">E2</span><span class="plain-syntax">), </span><a href="5-es.html#SP5" class="function-link"><span class="function-syntax">Extensions::get_sort_word_count</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">E1</span><span class="plain-syntax">));</span>
@ -873,7 +873,7 @@ project, then...
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Extensions::set_associated_project</span><button class="popup" onclick="togglePopup('usagePopup17')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup17">Usage of <span class="code-font"><span class="function-syntax">Extensions::set_associated_project</span></span>:<br/>Inclusions - <a href="6-inc.html#SP6_1">&#167;6.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inform_extension</span><span class="plain-syntax"> *</span><span class="identifier-syntax">E</span><span class="plain-syntax">, </span><span class="reserved-syntax">inform_project</span><span class="plain-syntax"> *</span><span class="identifier-syntax">P</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Extensions::set_associated_project</span><button class="popup" onclick="togglePopup('usagePopup14')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup14">Usage of <span class="code-font"><span class="function-syntax">Extensions::set_associated_project</span></span>:<br/>Inclusions - <a href="6-inc.html#SP6_1">&#167;6.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inform_extension</span><span class="plain-syntax"> *</span><span class="identifier-syntax">E</span><span class="plain-syntax">, </span><span class="reserved-syntax">inform_project</span><span class="plain-syntax"> *</span><span class="identifier-syntax">P</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">E</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">read_into_project</span><span class="plain-syntax"> = </span><span class="identifier-syntax">P</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
</pre>
@ -882,7 +882,7 @@ the Materials folder of the project in question:
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="identifier-syntax">linked_list</span><span class="plain-syntax"> *</span><span class="function-syntax">Extensions::nest_list</span><button class="popup" onclick="togglePopup('usagePopup18')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup18">Usage of <span class="code-font"><span class="function-syntax">Extensions::nest_list</span></span>:<br/><a href="5-es.html#SP10">&#167;10</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inform_extension</span><span class="plain-syntax"> *</span><span class="identifier-syntax">E</span><span class="plain-syntax">) {</span>
<span class="identifier-syntax">linked_list</span><span class="plain-syntax"> *</span><span class="function-syntax">Extensions::nest_list</span><button class="popup" onclick="togglePopup('usagePopup15')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup15">Usage of <span class="code-font"><span class="function-syntax">Extensions::nest_list</span></span>:<br/><a href="5-es.html#SP10">&#167;10</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inform_extension</span><span class="plain-syntax"> *</span><span class="identifier-syntax">E</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">E</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="1-ic.html#SP16" class="function-link"><span class="function-syntax">Supervisor::shared_nest_list</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">RUN_ONLY_FROM_PHASE</span><span class="plain-syntax">(</span><span class="constant-syntax">NESTED_INBUILD_PHASE</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">LinkedLists::len</span><span class="plain-syntax">(</span><span class="identifier-syntax">E</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">search_list</span><span class="plain-syntax">) == </span><span class="constant-syntax">0</span><span class="plain-syntax">) {</span>
@ -902,7 +902,7 @@ features as <span class="extract"><span class="extract-syntax">E</span></span> w
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Extensions::activate_elements</span><button class="popup" onclick="togglePopup('usagePopup19')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup19">Usage of <span class="code-font"><span class="function-syntax">Extensions::activate_elements</span></span>:<br/>Project Services - <a href="5-ps2.html#SP24">&#167;24</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inform_extension</span><span class="plain-syntax"> *</span><span class="identifier-syntax">E</span><span class="plain-syntax">, </span><span class="reserved-syntax">inform_project</span><span class="plain-syntax"> *</span><span class="identifier-syntax">proj</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Extensions::activate_elements</span><button class="popup" onclick="togglePopup('usagePopup16')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup16">Usage of <span class="code-font"><span class="function-syntax">Extensions::activate_elements</span></span>:<br/>Project Services - <a href="5-ps2.html#SP24">&#167;24</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inform_extension</span><span class="plain-syntax"> *</span><span class="identifier-syntax">E</span><span class="plain-syntax">, </span><span class="reserved-syntax">inform_project</span><span class="plain-syntax"> *</span><span class="identifier-syntax">proj</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">element_activation</span><span class="plain-syntax"> *</span><span class="identifier-syntax">EA</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER_LINKED_LIST</span><span class="plain-syntax">(</span><span class="identifier-syntax">EA</span><span class="plain-syntax">, </span><span class="reserved-syntax">element_activation</span><span class="plain-syntax">, </span><span class="identifier-syntax">E</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">activations</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">compiler_feature</span><span class="plain-syntax"> *</span><span class="identifier-syntax">P</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Features::from_name</span><span class="plain-syntax">(</span><span class="identifier-syntax">EA</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">element_name</span><span class="plain-syntax">);</span>
@ -952,7 +952,7 @@ no project involved, we must take action ourselves.)
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Extensions::construct_graph</span><button class="popup" onclick="togglePopup('usagePopup20')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup20">Usage of <span class="code-font"><span class="function-syntax">Extensions::construct_graph</span></span>:<br/>Extension Manager - <a href="4-em.html#SP8">&#167;8</a><br/>Extension Bundle Manager - <a href="4-ebm.html#SP8">&#167;8</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inform_extension</span><span class="plain-syntax"> *</span><span class="identifier-syntax">E</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Extensions::construct_graph</span><button class="popup" onclick="togglePopup('usagePopup17')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup17">Usage of <span class="code-font"><span class="function-syntax">Extensions::construct_graph</span></span>:<br/>Extension Manager - <a href="4-em.html#SP8">&#167;8</a><br/>Extension Bundle Manager - <a href="4-ebm.html#SP8">&#167;8</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inform_extension</span><span class="plain-syntax"> *</span><span class="identifier-syntax">E</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><a href="2-cps.html#SP7" class="function-link"><span class="function-syntax">Copies::get_source_text</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">E</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">as_copy</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Sentences::set_start_of_source</span><span class="plain-syntax">(</span><span class="identifier-syntax">sfsm</span><span class="plain-syntax">, -1);</span>
<span class="plain-syntax"> </span><a href="6-inc.html#SP1" class="function-link"><span class="function-syntax">Inclusions::traverse</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">E</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">as_copy</span><span class="plain-syntax">, </span><span class="identifier-syntax">E</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">syntax_tree</span><span class="plain-syntax">);</span>
@ -976,7 +976,7 @@ This is that time.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Extensions::read_source_text_for</span><button class="popup" onclick="togglePopup('usagePopup21')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup21">Usage of <span class="code-font"><span class="function-syntax">Extensions::read_source_text_for</span></span>:<br/>Extension Manager - <a href="4-em.html#SP9">&#167;9</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inform_extension</span><span class="plain-syntax"> *</span><span class="identifier-syntax">E</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Extensions::read_source_text_for</span><button class="popup" onclick="togglePopup('usagePopup18')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup18">Usage of <span class="code-font"><span class="function-syntax">Extensions::read_source_text_for</span></span>:<br/>Extension Manager - <a href="4-em.html#SP9">&#167;9</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inform_extension</span><span class="plain-syntax"> *</span><span class="identifier-syntax">E</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">inform_language</span><span class="plain-syntax"> *</span><span class="identifier-syntax">L</span><span class="plain-syntax"> = </span><a href="5-ls.html#SP10" class="function-link"><span class="function-syntax">Languages::find_for</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"English"</span><span class="plain-syntax">, </span><a href="5-es.html#SP7" class="function-link"><span class="function-syntax">Extensions::nest_list</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">E</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><a href="5-ls.html#SP8" class="function-link"><span class="function-syntax">Languages::read_Preform_definition</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">L</span><span class="plain-syntax">, </span><a href="5-es.html#SP7" class="function-link"><span class="function-syntax">Extensions::nest_list</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">E</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">filename</span><span class="plain-syntax"> *</span><span class="identifier-syntax">F</span><span class="plain-syntax"> = </span><a href="5-es.html#SP4" class="function-link"><span class="function-syntax">Extensions::main_source_file</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">E</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">as_copy</span><span class="plain-syntax">);</span>
@ -1070,7 +1070,7 @@ and no documentation.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="function-syntax">Extensions::get_documentation_text</span><button class="popup" onclick="togglePopup('usagePopup22')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup22">Usage of <span class="code-font"><span class="function-syntax">Extensions::get_documentation_text</span></span>:<br/>Individual Pages - <a href="7-ip2.html#SP2_2_1_5">&#167;2.2.1.5</a>, <a href="7-ip2.html#SP2_2_1_6">&#167;2.2.1.6</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inform_extension</span><span class="plain-syntax"> *</span><span class="identifier-syntax">E</span><span class="plain-syntax">) {</span>
<span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="function-syntax">Extensions::get_documentation_text</span><button class="popup" onclick="togglePopup('usagePopup19')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup19">Usage of <span class="code-font"><span class="function-syntax">Extensions::get_documentation_text</span></span>:<br/>Individual Pages - <a href="7-ip2.html#SP2_2_1_5">&#167;2.2.1.5</a>, <a href="7-ip2.html#SP2_2_1_6">&#167;2.2.1.6</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inform_extension</span><span class="plain-syntax"> *</span><span class="identifier-syntax">E</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">E</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">EMPTY_WORDING</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><a href="2-cps.html#SP7" class="function-link"><span class="function-syntax">Copies::get_source_text</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">E</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">as_copy</span><span class="plain-syntax">); </span><span class="comment-syntax"> in the unlikely event this has not happened yet</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">E</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">documentation_sought</span><span class="plain-syntax"> == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) {</span>
@ -1106,7 +1106,7 @@ make use of that:
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">inform_extension</span><span class="plain-syntax"> *</span><span class="function-syntax">Extensions::corresponding_to</span><button class="popup" onclick="togglePopup('usagePopup23')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup23">Usage of <span class="code-font"><span class="function-syntax">Extensions::corresponding_to</span></span>:<br/>Source Text - <a href="6-st.html#SP4">&#167;4</a>, <a href="6-st.html#SP5">&#167;5</a><br/>Headings - <a href="6-hdn.html#SP18">&#167;18</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">source_file</span><span class="plain-syntax"> *</span><span class="identifier-syntax">sf</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">inform_extension</span><span class="plain-syntax"> *</span><span class="function-syntax">Extensions::corresponding_to</span><button class="popup" onclick="togglePopup('usagePopup20')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup20">Usage of <span class="code-font"><span class="function-syntax">Extensions::corresponding_to</span></span>:<br/>Source Text - <a href="6-st.html#SP4">&#167;4</a>, <a href="6-st.html#SP5">&#167;5</a><br/>Headings - <a href="6-hdn.html#SP18">&#167;18</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">source_file</span><span class="plain-syntax"> *</span><span class="identifier-syntax">sf</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">sf</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">inbuild_copy</span><span class="plain-syntax"> *</span><span class="identifier-syntax">C</span><span class="plain-syntax"> = </span><span class="identifier-syntax">RETRIEVE_POINTER_inbuild_copy</span><span class="plain-syntax">(</span><span class="identifier-syntax">sf</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">your_ref</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">C</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
@ -1148,7 +1148,7 @@ that happens, the following function will be called to set the rubric.
<span class="plain-syntax"> </span><span class="identifier-syntax">LOGIF</span><span class="plain-syntax">(</span><span class="identifier-syntax">EXTENSIONS_CENSUS</span><span class="plain-syntax">, </span><span class="string-syntax">"Extension rubric: %S\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">E</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">rubric_as_lexed</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
<span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="function-syntax">Extensions::get_rubric</span><button class="popup" onclick="togglePopup('usagePopup24')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup24">Usage of <span class="code-font"><span class="function-syntax">Extensions::get_rubric</span></span>:<br/>Census - <a href="7-cns.html#SP5">&#167;5</a><br/>The Report - <a href="7-tr.html#SP2_4_1">&#167;2.4.1</a>, <a href="7-tr.html#SP2_4_2">&#167;2.4.2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inform_extension</span><span class="plain-syntax"> *</span><span class="identifier-syntax">E</span><span class="plain-syntax">) {</span>
<span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="function-syntax">Extensions::get_rubric</span><button class="popup" onclick="togglePopup('usagePopup21')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup21">Usage of <span class="code-font"><span class="function-syntax">Extensions::get_rubric</span></span>:<br/>Census - <a href="7-cns.html#SP5">&#167;5</a><br/>Index Pages - <a href="7-ip.html#SP6">&#167;6</a><br/>The Report - <a href="7-tr.html#SP2_4_1">&#167;2.4.1</a>, <a href="7-tr.html#SP2_4_2">&#167;2.4.2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inform_extension</span><span class="plain-syntax"> *</span><span class="identifier-syntax">E</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">E</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</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">E</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">rubric_as_lexed</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
@ -1186,10 +1186,10 @@ problem messages and the index.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Extensions::set_inclusion_sentence</span><button class="popup" onclick="togglePopup('usagePopup25')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup25">Usage of <span class="code-font"><span class="function-syntax">Extensions::set_inclusion_sentence</span></span>:<br/>Inclusions - <a href="6-inc.html#SP6_1">&#167;6.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inform_extension</span><span class="plain-syntax"> *</span><span class="identifier-syntax">E</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">N</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Extensions::set_inclusion_sentence</span><button class="popup" onclick="togglePopup('usagePopup22')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup22">Usage of <span class="code-font"><span class="function-syntax">Extensions::set_inclusion_sentence</span></span>:<br/>Inclusions - <a href="6-inc.html#SP6_1">&#167;6.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inform_extension</span><span class="plain-syntax"> *</span><span class="identifier-syntax">E</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">N</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">E</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">inclusion_sentence</span><span class="plain-syntax"> = </span><span class="identifier-syntax">N</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
<span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">Extensions::get_inclusion_sentence</span><button class="popup" onclick="togglePopup('usagePopup26')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup26">Usage of <span class="code-font"><span class="function-syntax">Extensions::get_inclusion_sentence</span></span>:<br/>Project Services - <a href="5-ps2.html#SP35">&#167;35</a><br/>Inclusions - <a href="6-inc.html#SP6_1_1">&#167;6.1.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inform_extension</span><span class="plain-syntax"> *</span><span class="identifier-syntax">E</span><span class="plain-syntax">) {</span>
<span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">Extensions::get_inclusion_sentence</span><button class="popup" onclick="togglePopup('usagePopup23')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup23">Usage of <span class="code-font"><span class="function-syntax">Extensions::get_inclusion_sentence</span></span>:<br/>Project Services - <a href="5-ps2.html#SP35">&#167;35</a><br/>Inclusions - <a href="6-inc.html#SP6_1_1">&#167;6.1.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inform_extension</span><span class="plain-syntax"> *</span><span class="identifier-syntax">E</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">E</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</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">E</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">inclusion_sentence</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
@ -1210,7 +1210,7 @@ becomes empty and stays that way.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Extensions::must_satisfy</span><button class="popup" onclick="togglePopup('usagePopup27')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup27">Usage of <span class="code-font"><span class="function-syntax">Extensions::must_satisfy</span></span>:<br/>Inclusions - <a href="6-inc.html#SP6">&#167;6</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inform_extension</span><span class="plain-syntax"> *</span><span class="identifier-syntax">E</span><span class="plain-syntax">, </span><span class="reserved-syntax">inbuild_requirement</span><span class="plain-syntax"> *</span><span class="identifier-syntax">req</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Extensions::must_satisfy</span><button class="popup" onclick="togglePopup('usagePopup24')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup24">Usage of <span class="code-font"><span class="function-syntax">Extensions::must_satisfy</span></span>:<br/>Inclusions - <a href="6-inc.html#SP6">&#167;6</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inform_extension</span><span class="plain-syntax"> *</span><span class="identifier-syntax">E</span><span class="plain-syntax">, </span><span class="reserved-syntax">inbuild_requirement</span><span class="plain-syntax"> *</span><span class="identifier-syntax">req</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">E</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">must_satisfy</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">E</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">must_satisfy</span><span class="plain-syntax"> = </span><span class="identifier-syntax">req</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="identifier-syntax">VersionNumberRanges::intersect_range</span><span class="plain-syntax">(</span><span class="identifier-syntax">E</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">must_satisfy</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">version_range</span><span class="plain-syntax">, </span><span class="identifier-syntax">req</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">version_range</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
@ -1221,7 +1221,7 @@ its requirements (even though it did when first loaded). This tests for that:
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Extensions::satisfies</span><button class="popup" onclick="togglePopup('usagePopup28')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup28">Usage of <span class="code-font"><span class="function-syntax">Extensions::satisfies</span></span>:<br/>Project Services - <a href="5-ps2.html#SP35">&#167;35</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inform_extension</span><span class="plain-syntax"> *</span><span class="identifier-syntax">E</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Extensions::satisfies</span><button class="popup" onclick="togglePopup('usagePopup25')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup25">Usage of <span class="code-font"><span class="function-syntax">Extensions::satisfies</span></span>:<br/>Project Services - <a href="5-ps2.html#SP35">&#167;35</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inform_extension</span><span class="plain-syntax"> *</span><span class="identifier-syntax">E</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">E</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="2-rqr.html#SP7" class="function-link"><span class="function-syntax">Requirements::meets</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">E</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">as_copy</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">edition</span><span class="plain-syntax">, </span><span class="identifier-syntax">E</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">must_satisfy</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
@ -1229,7 +1229,7 @@ its requirements (even though it did when first loaded). This tests for that:
<p class="commentary firstcommentary"><a id="SP21" class="paragraph-anchor"></a><b>&#167;21. File hierarchy tidying. </b></p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Extensions::rename_directory</span><button class="popup" onclick="togglePopup('usagePopup29')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup29">Usage of <span class="code-font"><span class="function-syntax">Extensions::rename_directory</span></span>:<br/>Extension Bundle Manager - <a href="4-ebm.html#SP3">&#167;3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">pathname</span><span class="plain-syntax"> *</span><span class="identifier-syntax">P</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">new_name</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Extensions::rename_directory</span><button class="popup" onclick="togglePopup('usagePopup26')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup26">Usage of <span class="code-font"><span class="function-syntax">Extensions::rename_directory</span></span>:<br/>Extension Bundle Manager - <a href="4-ebm.html#SP3">&#167;3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">pathname</span><span class="plain-syntax"> *</span><span class="identifier-syntax">P</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">new_name</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">task</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">task</span><span class="plain-syntax">, </span><span class="string-syntax">"(Changing directory name '%p' to '%S')\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">P</span><span class="plain-syntax">, </span><span class="identifier-syntax">new_name</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">rv</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Directories::rename</span><span class="plain-syntax">(</span><span class="identifier-syntax">P</span><span class="plain-syntax">, </span><span class="identifier-syntax">new_name</span><span class="plain-syntax">);</span>
@ -1237,7 +1237,7 @@ its requirements (even though it did when first loaded). This tests for that:
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">rv</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Extensions::rename_file</span><button class="popup" onclick="togglePopup('usagePopup30')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup30">Usage of <span class="code-font"><span class="function-syntax">Extensions::rename_file</span></span>:<br/><a href="5-es.html#SP2_2">&#167;2.2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">filename</span><span class="plain-syntax"> *</span><span class="identifier-syntax">F</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">new_name</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Extensions::rename_file</span><button class="popup" onclick="togglePopup('usagePopup27')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup27">Usage of <span class="code-font"><span class="function-syntax">Extensions::rename_file</span></span>:<br/><a href="5-es.html#SP2_2">&#167;2.2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">filename</span><span class="plain-syntax"> *</span><span class="identifier-syntax">F</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">new_name</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">task</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">task</span><span class="plain-syntax">, </span><span class="string-syntax">"(Changing file name '%f' to '%S')\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">F</span><span class="plain-syntax">, </span><span class="identifier-syntax">new_name</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">rv</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Filenames::rename</span><span class="plain-syntax">(</span><span class="identifier-syntax">F</span><span class="plain-syntax">, </span><span class="identifier-syntax">new_name</span><span class="plain-syntax">);</span>

View file

@ -100,7 +100,7 @@ module of <span class="extract"><span class="extract-syntax">inform7</span></spa
<span class="plain-syntax"> </span><span class="identifier-syntax">CLASS_DEFINITION</span>
<span class="plain-syntax">} </span><span class="reserved-syntax">inform_kit</span><span class="plain-syntax">;</span>
</pre>
<ul class="endnotetexts"><li>The structure inform_kit is accessed in 1/sm, 3/bg, 3/ib, 3/is3, 4/em, 5/es, 5/ls, 5/ps, 5/ps2, 5/ts, 6/st, 6/hdn, 6/inc, 7/dct, 7/ip2, 7/tr and here.</li></ul>
<ul class="endnotetexts"><li>The structure inform_kit is accessed in 1/sm, 3/bg, 3/ib, 3/is3, 4/em, 5/es, 5/ls, 5/ps, 5/ps2, 5/ts, 6/st, 6/hdn, 6/inc, 7/dct, 7/ip, 7/ip2, 7/tr and here.</li></ul>
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>&#167;2. </b>Kits come with an "if this then that" service for including other kits,
and we represent rules with the following:
</p>

View file

@ -90,7 +90,7 @@ small resource folder called its "bundle". (This includes English.)
<span class="plain-syntax"> </span><span class="identifier-syntax">CLASS_DEFINITION</span>
<span class="plain-syntax">} </span><span class="reserved-syntax">inform_language</span><span class="plain-syntax">;</span>
</pre>
<ul class="endnotetexts"><li>The structure inform_language is accessed in 1/sm, 3/bg, 3/ib, 3/is3, 4/em, 5/es, 5/ks, 5/ps, 5/ps2, 5/ts, 6/st, 6/hdn, 6/inc, 7/dct, 7/ip2, 7/tr and here.</li></ul>
<ul class="endnotetexts"><li>The structure inform_language is accessed in 1/sm, 3/bg, 3/ib, 3/is3, 4/em, 5/es, 5/ks, 5/ps, 5/ps2, 5/ts, 6/st, 6/hdn, 6/inc, 7/dct, 7/ip, 7/ip2, 7/tr and here.</li></ul>
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>&#167;2. </b>This is called as soon as a new copy <span class="extract"><span class="extract-syntax">C</span></span> of the language genre is created.
</p>

View file

@ -291,7 +291,7 @@ is small, but one likes to minimise the effect of the CWD.)
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="1-ic.html#SP19" class="function-link"><span class="function-syntax">Supervisor::transient</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax">}</span>
<span class="reserved-syntax">inbuild_nest</span><span class="plain-syntax"> *</span><span class="function-syntax">Projects::materials_nest</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">Projects::materials_nest</span></span>:<br/>The Report - <a href="7-tr.html#SP2_4_4">&#167;2.4.4</a>, <a href="7-tr.html#SP2_5">&#167;2.5</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inform_project</span><span class="plain-syntax"> *</span><span class="identifier-syntax">proj</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">inbuild_nest</span><span class="plain-syntax"> *</span><span class="function-syntax">Projects::materials_nest</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">Projects::materials_nest</span></span>:<br/>Index Pages - <a href="7-ip.html#SP1_1">&#167;1.1</a>, <a href="7-ip.html#SP1_2_1">&#167;1.2.1</a><br/>The Report - <a href="7-tr.html#SP2_4_4">&#167;2.4.4</a>, <a href="7-tr.html#SP2_5">&#167;2.5</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inform_project</span><span class="plain-syntax"> *</span><span class="identifier-syntax">proj</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">proj</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</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">proj</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">materials_nest</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>

View file

@ -59,7 +59,7 @@ function togglePopup(material_id) {
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../inbuildn.html">Inbuild Modules</a></li><li><a href="index.html">supervisor</a></li><li><a href="index.html#7">Chapter 7: Extension Indexing</a></li><li><b>Census</b></li></ul></div>
<p class="purpose">To conduct a census of all installed extensions installed.</p>
<ul class="toc"><li><a href="7-cns.html#SP1">&#167;1. Beginning</a></li><li><a href="7-cns.html#SP4">&#167;4. Census data</a></li><li><a href="7-cns.html#SP7">&#167;7. Performing the census</a></li></ul><hr class="tocbar">
<ul class="toc"><li><a href="7-cns.html#SP1">&#167;1. Beginning</a></li><li><a href="7-cns.html#SP4">&#167;4. Census data</a></li><li><a href="7-cns.html#SP6">&#167;6. Performing the census</a></li></ul><hr class="tocbar">
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>&#167;1. Beginning. </b>Each census begins by creating an object:
</p>
@ -73,13 +73,13 @@ function togglePopup(material_id) {
<span class="plain-syntax"> </span><span class="identifier-syntax">CLASS_DEFINITION</span>
<span class="plain-syntax">} </span><span class="reserved-syntax">extension_census</span><span class="plain-syntax">;</span>
</pre>
<ul class="endnotetexts"><li>The structure extension_census is accessed in 5/es, 5/ps2, 7/ip and here.</li></ul>
<ul class="endnotetexts"><li>The structure extension_census is accessed in 5/es, 5/ps2 and here.</li></ul>
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>&#167;2. </b>Here <span class="extract"><span class="extract-syntax">proj</span></span> will be null in case (a), and will be the project just
compiled in case (b).
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">extension_census</span><span class="plain-syntax"> *</span><span class="function-syntax">ExtensionCensus::new</span><button class="popup" onclick="togglePopup('usagePopup1')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup1">Usage of <span class="code-font"><span class="function-syntax">ExtensionCensus::new</span></span>:<br/><a href="7-cns.html#SP7">&#167;7</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inform_project</span><span class="plain-syntax"> *</span><span class="identifier-syntax">proj</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">extension_census</span><span class="plain-syntax"> *</span><span class="function-syntax">ExtensionCensus::new</span><button class="popup" onclick="togglePopup('usagePopup1')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup1">Usage of <span class="code-font"><span class="function-syntax">ExtensionCensus::new</span></span>:<br/><a href="7-cns.html#SP6">&#167;6</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inform_project</span><span class="plain-syntax"> *</span><span class="identifier-syntax">proj</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">extension_census</span><span class="plain-syntax"> *</span><span class="identifier-syntax">C</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CREATE</span><span class="plain-syntax">(</span><span class="reserved-syntax">extension_census</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">proj</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) {</span>
@ -104,7 +104,7 @@ shared search path, for (b) the project's search path.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="identifier-syntax">pathname</span><span class="plain-syntax"> *</span><span class="function-syntax">ExtensionCensus::internal_path</span><button class="popup" onclick="togglePopup('usagePopup2')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup2">Usage of <span class="code-font"><span class="function-syntax">ExtensionCensus::internal_path</span></span>:<br/>Index Pages - <a href="7-ip.html#SP1_1_1_1">&#167;1.1.1.1</a>, <a href="7-ip.html#SP1_1_2_1_6_2_2">&#167;1.1.2.1.6.2.2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">extension_census</span><span class="plain-syntax"> *</span><span class="identifier-syntax">C</span><span class="plain-syntax">) {</span>
<span class="identifier-syntax">pathname</span><span class="plain-syntax"> *</span><span class="function-syntax">ExtensionCensus::internal_path</span><span class="plain-syntax">(</span><span class="reserved-syntax">extension_census</span><span class="plain-syntax"> *</span><span class="identifier-syntax">C</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">inbuild_nest</span><span class="plain-syntax"> *</span><span class="identifier-syntax">N</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">LOOP_OVER_LINKED_LIST</span><span class="plain-syntax">(</span><span class="identifier-syntax">N</span><span class="plain-syntax">, </span><span class="reserved-syntax">inbuild_nest</span><span class="plain-syntax">, </span><span class="identifier-syntax">C</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">search_list</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="2-nst.html#SP2" class="function-link"><span class="function-syntax">Nests::get_tag</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">N</span><span class="plain-syntax">) == </span><span class="constant-syntax">INTERNAL_NEST_TAG</span><span class="plain-syntax">)</span>
@ -112,7 +112,7 @@ shared search path, for (b) the project's search path.
<span class="plain-syntax"> </span><span class="reserved-syntax">return</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">pathname</span><span class="plain-syntax"> *</span><span class="function-syntax">ExtensionCensus::external_path</span><button class="popup" onclick="togglePopup('usagePopup3')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup3">Usage of <span class="code-font"><span class="function-syntax">ExtensionCensus::external_path</span></span>:<br/>Index Pages - <a href="7-ip.html#SP1_1_1_1">&#167;1.1.1.1</a>, <a href="7-ip.html#SP1_1_2_1_6_2_2">&#167;1.1.2.1.6.2.2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">extension_census</span><span class="plain-syntax"> *</span><span class="identifier-syntax">C</span><span class="plain-syntax">) {</span>
<span class="identifier-syntax">pathname</span><span class="plain-syntax"> *</span><span class="function-syntax">ExtensionCensus::external_path</span><span class="plain-syntax">(</span><span class="reserved-syntax">extension_census</span><span class="plain-syntax"> *</span><span class="identifier-syntax">C</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">inbuild_nest</span><span class="plain-syntax"> *</span><span class="identifier-syntax">N</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">LOOP_OVER_LINKED_LIST</span><span class="plain-syntax">(</span><span class="identifier-syntax">N</span><span class="plain-syntax">, </span><span class="reserved-syntax">inbuild_nest</span><span class="plain-syntax">, </span><span class="identifier-syntax">C</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">search_list</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="2-nst.html#SP2" class="function-link"><span class="function-syntax">Nests::get_tag</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">N</span><span class="plain-syntax">) == </span><span class="constant-syntax">EXTERNAL_NEST_TAG</span><span class="plain-syntax">)</span>
@ -132,83 +132,35 @@ is created. (These are called ECDs below.)
<span class="plain-syntax"> </span><span class="identifier-syntax">CLASS_DEFINITION</span>
<span class="plain-syntax">} </span><span class="reserved-syntax">extension_census_datum</span><span class="plain-syntax">;</span>
</pre>
<ul class="endnotetexts"><li>The structure extension_census_datum is accessed in 6/hdn, 6/inc, 7/dct, 7/ip, 7/ip2 and here.</li></ul>
<ul class="endnotetexts"><li>The structure extension_census_datum is accessed in 6/hdn, 6/inc, 7/dct, 7/ip2 and here.</li></ul>
<p class="commentary firstcommentary"><a id="SP5" class="paragraph-anchor"></a><b>&#167;5. </b>An ECD is actually a wrapper for an <a href="5-es.html#SP1" class="internal">inform_extension</a> object in disguise,
since the <a href="2-nst.html#SP7" class="internal">inbuild_search_result</a> found that.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="function-syntax">ExtensionCensus::ecd_rubric</span><button class="popup" onclick="togglePopup('usagePopup4')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup4">Usage of <span class="code-font"><span class="function-syntax">ExtensionCensus::ecd_rubric</span></span>:<br/>Index Pages - <a href="7-ip.html#SP1_1_2_1_6_4_1">&#167;1.1.2.1.6.4.1</a>, <a href="7-ip.html#SP1_1_2_1_6_4_4">&#167;1.1.2.1.6.4.4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">extension_census_datum</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ecd</span><span class="plain-syntax">) {</span>
<span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="function-syntax">ExtensionCensus::ecd_rubric</span><span class="plain-syntax">(</span><span class="reserved-syntax">extension_census_datum</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ecd</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="5-es.html#SP14" class="function-link"><span class="function-syntax">Extensions::get_rubric</span></a><span class="plain-syntax">(</span><a href="5-es.html#SP4" class="function-link"><span class="function-syntax">Extensions::from_copy</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ecd</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">found_as</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">copy</span><span class="plain-syntax">));</span>
<span class="plain-syntax">}</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">ExtensionCensus::installation_region</span><button class="popup" onclick="togglePopup('usagePopup5')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup5">Usage of <span class="code-font"><span class="function-syntax">ExtensionCensus::installation_region</span></span>:<br/><a href="7-cns.html#SP6">&#167;6</a><br/>Index Pages - <a href="7-ip.html#SP1_1_2_1_6_2">&#167;1.1.2.1.6.2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">extension_census_datum</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ecd</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">ExtensionCensus::installation_region</span><span class="plain-syntax">(</span><span class="reserved-syntax">extension_census_datum</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ecd</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="2-nst.html#SP2" class="function-link"><span class="function-syntax">Nests::get_tag</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ecd</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">found_as</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">nest</span><span class="plain-syntax">) == </span><span class="constant-syntax">MATERIALS_NEST_TAG</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="2-nst.html#SP2" class="function-link"><span class="function-syntax">Nests::get_tag</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ecd</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">found_as</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">nest</span><span class="plain-syntax">) == </span><span class="constant-syntax">INTERNAL_NEST_TAG</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">1</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">ecd</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">overriding_a_built_in_extension</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">2</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">3</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">ExtensionCensus::ecd_used</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">ExtensionCensus::ecd_used</span></span>:<br/>Index Pages - <a href="7-ip.html#SP1_1_2_1_6_2_1">&#167;1.1.2.1.6.2.1</a>, <a href="7-ip.html#SP1_1_2_1_6_4_1">&#167;1.1.2.1.6.4.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">extension_census_datum</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ecd</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">ExtensionCensus::ecd_used</span><span class="plain-syntax">(</span><span class="reserved-syntax">extension_census_datum</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ecd</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">inform_extension</span><span class="plain-syntax"> *</span><span class="identifier-syntax">E</span><span class="plain-syntax"> = </span><a href="5-es.html#SP4" class="function-link"><span class="function-syntax">Extensions::from_copy</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ecd</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">found_as</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">copy</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">E</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">has_historically_been_used</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP6" class="paragraph-anchor"></a><b>&#167;6. </b>The following give some sorting criteria, and are functions fit to be
handed to <span class="extract"><span class="extract-syntax">qsort</span></span>.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">ExtensionCensus::compare_ecd_by_title</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">ExtensionCensus::compare_ecd_by_title</span></span>:<br/>Index Pages - <a href="7-ip.html#SP1_1_2_1_5">&#167;1.1.2.1.5</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">const</span><span class="plain-syntax"> </span><span class="reserved-syntax">void</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ecd1</span><span class="plain-syntax">, </span><span class="reserved-syntax">const</span><span class="plain-syntax"> </span><span class="reserved-syntax">void</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ecd2</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">extension_census_datum</span><span class="plain-syntax"> *</span><span class="identifier-syntax">e1</span><span class="plain-syntax"> = *((</span><span class="reserved-syntax">extension_census_datum</span><span class="plain-syntax"> **) </span><span class="identifier-syntax">ecd1</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">extension_census_datum</span><span class="plain-syntax"> *</span><span class="identifier-syntax">e2</span><span class="plain-syntax"> = *((</span><span class="reserved-syntax">extension_census_datum</span><span class="plain-syntax"> **) </span><span class="identifier-syntax">ecd2</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">inform_extension</span><span class="plain-syntax"> *</span><span class="identifier-syntax">E1</span><span class="plain-syntax"> = </span><a href="5-es.html#SP4" class="function-link"><span class="function-syntax">Extensions::from_copy</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">e1</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">found_as</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">copy</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">inform_extension</span><span class="plain-syntax"> *</span><span class="identifier-syntax">E2</span><span class="plain-syntax"> = </span><a href="5-es.html#SP4" class="function-link"><span class="function-syntax">Extensions::from_copy</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">e2</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">found_as</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">copy</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="5-es.html#SP5" class="function-link"><span class="function-syntax">Extensions::compare_by_title</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">E2</span><span class="plain-syntax">, </span><span class="identifier-syntax">E1</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">ExtensionCensus::compare_ecd_by_author</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">ExtensionCensus::compare_ecd_by_author</span></span>:<br/>Index Pages - <a href="7-ip.html#SP1_1_2_1_5">&#167;1.1.2.1.5</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">const</span><span class="plain-syntax"> </span><span class="reserved-syntax">void</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ecd1</span><span class="plain-syntax">, </span><span class="reserved-syntax">const</span><span class="plain-syntax"> </span><span class="reserved-syntax">void</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ecd2</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">extension_census_datum</span><span class="plain-syntax"> *</span><span class="identifier-syntax">e1</span><span class="plain-syntax"> = *((</span><span class="reserved-syntax">extension_census_datum</span><span class="plain-syntax"> **) </span><span class="identifier-syntax">ecd1</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">extension_census_datum</span><span class="plain-syntax"> *</span><span class="identifier-syntax">e2</span><span class="plain-syntax"> = *((</span><span class="reserved-syntax">extension_census_datum</span><span class="plain-syntax"> **) </span><span class="identifier-syntax">ecd2</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">inform_extension</span><span class="plain-syntax"> *</span><span class="identifier-syntax">E1</span><span class="plain-syntax"> = </span><a href="5-es.html#SP4" class="function-link"><span class="function-syntax">Extensions::from_copy</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">e1</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">found_as</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">copy</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">inform_extension</span><span class="plain-syntax"> *</span><span class="identifier-syntax">E2</span><span class="plain-syntax"> = </span><a href="5-es.html#SP4" class="function-link"><span class="function-syntax">Extensions::from_copy</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">e2</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">found_as</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">copy</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="5-es.html#SP5" class="function-link"><span class="function-syntax">Extensions::compare_by_author</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">E2</span><span class="plain-syntax">, </span><span class="identifier-syntax">E1</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">ExtensionCensus::compare_ecd_by_installation</span><button class="popup" onclick="togglePopup('usagePopup9')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup9">Usage of <span class="code-font"><span class="function-syntax">ExtensionCensus::compare_ecd_by_installation</span></span>:<br/>Index Pages - <a href="7-ip.html#SP1_1_2_1_5">&#167;1.1.2.1.5</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">const</span><span class="plain-syntax"> </span><span class="reserved-syntax">void</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ecd1</span><span class="plain-syntax">, </span><span class="reserved-syntax">const</span><span class="plain-syntax"> </span><span class="reserved-syntax">void</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ecd2</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">extension_census_datum</span><span class="plain-syntax"> *</span><span class="identifier-syntax">e1</span><span class="plain-syntax"> = *((</span><span class="reserved-syntax">extension_census_datum</span><span class="plain-syntax"> **) </span><span class="identifier-syntax">ecd1</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">extension_census_datum</span><span class="plain-syntax"> *</span><span class="identifier-syntax">e2</span><span class="plain-syntax"> = *((</span><span class="reserved-syntax">extension_census_datum</span><span class="plain-syntax"> **) </span><span class="identifier-syntax">ecd2</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">d</span><span class="plain-syntax"> = </span><a href="7-cns.html#SP5" class="function-link"><span class="function-syntax">ExtensionCensus::installation_region</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">e1</span><span class="plain-syntax">) -</span>
<span class="plain-syntax"> </span><a href="7-cns.html#SP5" class="function-link"><span class="function-syntax">ExtensionCensus::installation_region</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">e2</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">d</span><span class="plain-syntax"> != </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">d</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">inform_extension</span><span class="plain-syntax"> *</span><span class="identifier-syntax">E1</span><span class="plain-syntax"> = </span><a href="5-es.html#SP4" class="function-link"><span class="function-syntax">Extensions::from_copy</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">e1</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">found_as</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">copy</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">inform_extension</span><span class="plain-syntax"> *</span><span class="identifier-syntax">E2</span><span class="plain-syntax"> = </span><a href="5-es.html#SP4" class="function-link"><span class="function-syntax">Extensions::from_copy</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">e2</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">found_as</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">copy</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="5-es.html#SP5" class="function-link"><span class="function-syntax">Extensions::compare_by_edition</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">E1</span><span class="plain-syntax">, </span><span class="identifier-syntax">E2</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">ExtensionCensus::compare_ecd_by_date</span><button class="popup" onclick="togglePopup('usagePopup10')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup10">Usage of <span class="code-font"><span class="function-syntax">ExtensionCensus::compare_ecd_by_date</span></span>:<br/>Index Pages - <a href="7-ip.html#SP1_1_2_1_5">&#167;1.1.2.1.5</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">const</span><span class="plain-syntax"> </span><span class="reserved-syntax">void</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ecd1</span><span class="plain-syntax">, </span><span class="reserved-syntax">const</span><span class="plain-syntax"> </span><span class="reserved-syntax">void</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ecd2</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">extension_census_datum</span><span class="plain-syntax"> *</span><span class="identifier-syntax">e1</span><span class="plain-syntax"> = *((</span><span class="reserved-syntax">extension_census_datum</span><span class="plain-syntax"> **) </span><span class="identifier-syntax">ecd1</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">extension_census_datum</span><span class="plain-syntax"> *</span><span class="identifier-syntax">e2</span><span class="plain-syntax"> = *((</span><span class="reserved-syntax">extension_census_datum</span><span class="plain-syntax"> **) </span><span class="identifier-syntax">ecd2</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">inform_extension</span><span class="plain-syntax"> *</span><span class="identifier-syntax">E1</span><span class="plain-syntax"> = </span><a href="5-es.html#SP4" class="function-link"><span class="function-syntax">Extensions::from_copy</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">e1</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">found_as</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">copy</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">inform_extension</span><span class="plain-syntax"> *</span><span class="identifier-syntax">E2</span><span class="plain-syntax"> = </span><a href="5-es.html#SP4" class="function-link"><span class="function-syntax">Extensions::from_copy</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">e2</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">found_as</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">copy</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="5-es.html#SP5" class="function-link"><span class="function-syntax">Extensions::compare_by_date</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">E1</span><span class="plain-syntax">, </span><span class="identifier-syntax">E2</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">ExtensionCensus::compare_ecd_by_length</span><button class="popup" onclick="togglePopup('usagePopup11')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup11">Usage of <span class="code-font"><span class="function-syntax">ExtensionCensus::compare_ecd_by_length</span></span>:<br/>Index Pages - <a href="7-ip.html#SP1_1_2_1_5">&#167;1.1.2.1.5</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">const</span><span class="plain-syntax"> </span><span class="reserved-syntax">void</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ecd1</span><span class="plain-syntax">, </span><span class="reserved-syntax">const</span><span class="plain-syntax"> </span><span class="reserved-syntax">void</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ecd2</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">extension_census_datum</span><span class="plain-syntax"> *</span><span class="identifier-syntax">e1</span><span class="plain-syntax"> = *((</span><span class="reserved-syntax">extension_census_datum</span><span class="plain-syntax"> **) </span><span class="identifier-syntax">ecd1</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">extension_census_datum</span><span class="plain-syntax"> *</span><span class="identifier-syntax">e2</span><span class="plain-syntax"> = *((</span><span class="reserved-syntax">extension_census_datum</span><span class="plain-syntax"> **) </span><span class="identifier-syntax">ecd2</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">inform_extension</span><span class="plain-syntax"> *</span><span class="identifier-syntax">E1</span><span class="plain-syntax"> = </span><a href="5-es.html#SP4" class="function-link"><span class="function-syntax">Extensions::from_copy</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">e1</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">found_as</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">copy</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">inform_extension</span><span class="plain-syntax"> *</span><span class="identifier-syntax">E2</span><span class="plain-syntax"> = </span><a href="5-es.html#SP4" class="function-link"><span class="function-syntax">Extensions::from_copy</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">e2</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">found_as</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">copy</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="5-es.html#SP5" class="function-link"><span class="function-syntax">Extensions::compare_by_length</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">E1</span><span class="plain-syntax">, </span><span class="identifier-syntax">E2</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP7" class="paragraph-anchor"></a><b>&#167;7. Performing the census. </b>For some reason a census often makes a good story (cf. Luke 2:1-5), but here
<p class="commentary firstcommentary"><a id="SP6" class="paragraph-anchor"></a><b>&#167;6. Performing the census. </b>For some reason a census often makes a good story (cf. Luke 2:1-5), but here
there's disappointingly little to tell, because the work is all done by a
single call to <a href="2-nst.html#SP9" class="internal">Nests::search_for</a>.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">extension_census</span><span class="plain-syntax"> *</span><span class="function-syntax">ExtensionCensus::perform</span><button class="popup" onclick="togglePopup('usagePopup12')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup12">Usage of <span class="code-font"><span class="function-syntax">ExtensionCensus::perform</span></span>:<br/>The Mini-Website - <a href="7-tm.html#SP2">&#167;2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inform_project</span><span class="plain-syntax"> *</span><span class="identifier-syntax">proj</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">extension_census</span><span class="plain-syntax"> *</span><span class="function-syntax">ExtensionCensus::perform</span><button class="popup" onclick="togglePopup('usagePopup2')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup2">Usage of <span class="code-font"><span class="function-syntax">ExtensionCensus::perform</span></span>:<br/>The Mini-Website - <a href="7-tm.html#SP2">&#167;2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inform_project</span><span class="plain-syntax"> *</span><span class="identifier-syntax">proj</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">extension_census</span><span class="plain-syntax"> *</span><span class="identifier-syntax">C</span><span class="plain-syntax"> = </span><a href="7-cns.html#SP2" class="function-link"><span class="function-syntax">ExtensionCensus::new</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">proj</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">inbuild_requirement</span><span class="plain-syntax"> *</span><span class="identifier-syntax">req</span><span class="plain-syntax"> = </span><a href="2-rqr.html#SP2" class="function-link"><span class="function-syntax">Requirements::anything_of_genre</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">extension_genre</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-nst.html#SP9" class="function-link"><span class="function-syntax">Nests::search_for</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">req</span><span class="plain-syntax">, </span><span class="identifier-syntax">C</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">search_list</span><span class="plain-syntax">, </span><span class="identifier-syntax">C</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">raw_data</span><span class="plain-syntax">);</span>
@ -217,19 +169,19 @@ single call to <a href="2-nst.html#SP9" class="internal">Nests::search_for</a>.
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER_LINKED_LIST</span><span class="plain-syntax">(</span><span class="identifier-syntax">R</span><span class="plain-syntax">, </span><span class="reserved-syntax">inbuild_search_result</span><span class="plain-syntax">, </span><span class="identifier-syntax">C</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">raw_data</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">C</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">no_census_errors</span><span class="plain-syntax"> += </span><span class="identifier-syntax">LinkedLists::len</span><span class="plain-syntax">(</span><span class="identifier-syntax">R</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">copy</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">errors_reading_source_text</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">overridden_by_an_extension_already_found</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="7-cns.html#SP7_1" class="named-paragraph-link"><span class="named-paragraph">See if already known from existing data</span><span class="named-paragraph-number">7.1</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="7-cns.html#SP6_1" class="named-paragraph-link"><span class="named-paragraph">See if already known from existing data</span><span class="named-paragraph-number">6.1</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">overridden_by_an_extension_already_found</span><span class="plain-syntax"> == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="7-cns.html#SP7_2" class="named-paragraph-link"><span class="named-paragraph">Add to the census data</span><span class="named-paragraph-number">7.2</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="7-cns.html#SP6_2" class="named-paragraph-link"><span class="named-paragraph">Add to the census data</span><span class="named-paragraph-number">6.2</span></a></span><span class="plain-syntax">;</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">C</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP7_1" class="paragraph-anchor"></a><b>&#167;7.1. </b>Recall that the higher-priority materials and external nests are scanned
<p class="commentary firstcommentary"><a id="SP6_1" class="paragraph-anchor"></a><b>&#167;6.1. </b>Recall that the higher-priority materials and external nests are scanned
first, so if we find that our new extension has the same title and author as
one already known, it must be one that is overridden.
</p>
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">See if already known from existing data</span><span class="named-paragraph-number">7.1</span></span><span class="comment-syntax"> =</span>
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">See if already known from existing data</span><span class="named-paragraph-number">6.1</span></span><span class="comment-syntax"> =</span>
</p>
<pre class="displayed-code all-displayed-code code-font">
@ -243,14 +195,14 @@ one already known, it must be one that is overridden.
<span class="plain-syntax"> </span><span class="identifier-syntax">overridden_by_an_extension_already_found</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="7-cns.html#SP7">&#167;7</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP7_2" class="paragraph-anchor"></a><b>&#167;7.2. </b>Assuming the new extension was not overridden in this way, we come here.
<ul class="endnotetexts"><li>This code is used in <a href="7-cns.html#SP6">&#167;6</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP6_2" class="paragraph-anchor"></a><b>&#167;6.2. </b>Assuming the new extension was not overridden in this way, we come here.
Because we didn't check the version number text for validity, it might
through being invalid be longer than we expect: in case this is so, we
truncate it.
</p>
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Add to the census data</span><span class="named-paragraph-number">7.2</span></span><span class="comment-syntax"> =</span>
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Add to the census data</span><span class="named-paragraph-number">6.2</span></span><span class="comment-syntax"> =</span>
</p>
<pre class="displayed-code all-displayed-code code-font">
@ -259,7 +211,7 @@ truncate it.
<span class="plain-syntax"> </span><span class="identifier-syntax">ecd</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">overriding_a_built_in_extension</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">ecd</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">next</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="7-cns.html#SP7">&#167;7</a>.</li></ul>
<ul class="endnotetexts"><li>This code is used in <a href="7-cns.html#SP6">&#167;6</a>.</li></ul>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="7-dct.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-sm.html">1</a></li><li class="progresschapter"><a href="2-gnr.html">2</a></li><li class="progresschapter"><a href="3-bg.html">3</a></li><li class="progresschapter"><a href="4-em.html">4</a></li><li class="progresschapter"><a href="5-es.html">5</a></li><li class="progresschapter"><a href="6-st.html">6</a></li><li class="progresscurrentchapter">7</li><li class="progresssection"><a href="7-tm.html">tm</a></li><li class="progresssection"><a href="7-dct.html">dct</a></li><li class="progresscurrent">cns</li><li class="progresssection"><a href="7-ip.html">ip</a></li><li class="progresssection"><a href="7-ip2.html">ip2</a></li><li class="progresssection"><a href="7-tr.html">tr</a></li><li class="progressnext"><a href="7-ip.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->

View file

@ -143,7 +143,7 @@ record marked "to be erased" will not be saved back to the file in due course.
<span class="plain-syntax"> </span><span class="identifier-syntax">CLASS_DEFINITION</span>
<span class="plain-syntax">} </span><span class="reserved-syntax">extension_dictionary_entry</span><span class="plain-syntax">;</span>
</pre>
<ul class="endnotetexts"><li>The structure extension_dictionary_entry is accessed in 3/bg, 3/ib, 5/ks, 7/tr and here.</li></ul>
<ul class="endnotetexts"><li>The structure extension_dictionary_entry is accessed in 3/bg, 3/ib, 5/ks, 7/ip, 7/tr and here.</li></ul>
<p class="commentary firstcommentary"><a id="SP4" class="paragraph-anchor"></a><b>&#167;4. </b></p>
<pre class="displayed-code all-displayed-code code-font">
@ -517,7 +517,7 @@ fact, the HTML rendering of the dictionary constructed above.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">ExtensionDictionary::write_to_HTML</span><button class="popup" onclick="togglePopup('usagePopup10')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup10">Usage of <span class="code-font"><span class="function-syntax">ExtensionDictionary::write_to_HTML</span></span>:<br/>Index Pages - <a href="7-ip.html#SP1_1_2">&#167;1.1.2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">ExtensionDictionary::write_to_HTML</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">n</span><span class="plain-syntax"> = </span><a href="7-dct.html#SP12" class="function-link"><span class="function-syntax">ExtensionDictionary::sort_extension_dictionary</span></a><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">n</span><span class="plain-syntax"> &gt; </span><span class="constant-syntax">0</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">first_letter</span><span class="plain-syntax"> = </span><span class="character-syntax">'a'</span><span class="plain-syntax">;</span>
@ -592,7 +592,7 @@ extension lexicographically earlier than the second (the right one).
<p class="commentary firstcommentary"><a id="SP16" class="paragraph-anchor"></a><b>&#167;16. </b></p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">known_extension_clash</span><span class="plain-syntax"> *</span><span class="function-syntax">ExtensionDictionary::new_clash</span><button class="popup" onclick="togglePopup('usagePopup11')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup11">Usage of <span class="code-font"><span class="function-syntax">ExtensionDictionary::new_clash</span></span>:<br/><a href="7-dct.html#SP17">&#167;17</a>, <a href="7-dct.html#SP17_2">&#167;17.2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">extension_dictionary_entry</span><span class="plain-syntax"> *</span><span class="identifier-syntax">L</span><span class="plain-syntax">,</span>
<span class="reserved-syntax">known_extension_clash</span><span class="plain-syntax"> *</span><span class="function-syntax">ExtensionDictionary::new_clash</span><button class="popup" onclick="togglePopup('usagePopup10')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup10">Usage of <span class="code-font"><span class="function-syntax">ExtensionDictionary::new_clash</span></span>:<br/><a href="7-dct.html#SP17">&#167;17</a>, <a href="7-dct.html#SP17_2">&#167;17.2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">extension_dictionary_entry</span><span class="plain-syntax"> *</span><span class="identifier-syntax">L</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">extension_dictionary_entry</span><span class="plain-syntax"> *</span><span class="identifier-syntax">R</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">first_known_flag</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">known_extension_clash</span><span class="plain-syntax"> *</span><span class="identifier-syntax">kec</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CREATE</span><span class="plain-syntax">(</span><span class="reserved-syntax">known_extension_clash</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">kec</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">leftx</span><span class="plain-syntax"> = </span><span class="identifier-syntax">L</span><span class="plain-syntax">;</span>
@ -655,7 +655,7 @@ not seem to have arisen from homonyms like "lead" (the substance) versus
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">ExtensionDictionary::extension_clash</span><button class="popup" onclick="togglePopup('usagePopup12')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup12">Usage of <span class="code-font"><span class="function-syntax">ExtensionDictionary::extension_clash</span></span>:<br/><a href="7-dct.html#SP14_1">&#167;14.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">extension_dictionary_entry</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ede1</span><span class="plain-syntax">,</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">ExtensionDictionary::extension_clash</span><button class="popup" onclick="togglePopup('usagePopup11')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup11">Usage of <span class="code-font"><span class="function-syntax">ExtensionDictionary::extension_clash</span></span>:<br/><a href="7-dct.html#SP14_1">&#167;14.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">extension_dictionary_entry</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ede1</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">extension_dictionary_entry</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ede2</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">extension_dictionary_entry</span><span class="plain-syntax"> *</span><span class="identifier-syntax">left</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, *</span><span class="identifier-syntax">right</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">inbuild_work</span><span class="plain-syntax"> *</span><span class="identifier-syntax">leftx</span><span class="plain-syntax">, *</span><span class="identifier-syntax">rightx</span><span class="plain-syntax">;</span>
@ -727,7 +727,7 @@ clashes in a concise, human-readable way, which is what we now do.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">ExtensionDictionary::list_known_extension_clashes</span><button class="popup" onclick="togglePopup('usagePopup13')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup13">Usage of <span class="code-font"><span class="function-syntax">ExtensionDictionary::list_known_extension_clashes</span></span>:<br/><a href="7-dct.html#SP14">&#167;14</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">ExtensionDictionary::list_known_extension_clashes</span><button class="popup" onclick="togglePopup('usagePopup12')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup12">Usage of <span class="code-font"><span class="function-syntax">ExtensionDictionary::list_known_extension_clashes</span></span>:<br/><a href="7-dct.html#SP14">&#167;14</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">known_extension_clash</span><span class="plain-syntax"> *</span><span class="identifier-syntax">kec</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">NUMBER_CREATED</span><span class="plain-syntax">(</span><span class="reserved-syntax">known_extension_clash</span><span class="plain-syntax">) == </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="7-dct.html#SP18_1" class="named-paragraph-link"><span class="named-paragraph">Write the headnote about what extension clashes mean</span><span class="named-paragraph-number">18.1</span></a></span><span class="plain-syntax">;</span>

File diff suppressed because it is too large Load diff

View file

@ -214,8 +214,7 @@ our E, and return 0 in response to the ECD call to prevent further ECD calls.
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> </span><span class="identifier-syntax">compatibility_specification</span><span class="plain-syntax"> *</span><span class="identifier-syntax">C</span><span class="plain-syntax"> = </span><span class="identifier-syntax">E</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">as_copy</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">edition</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">compatibility</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">Str::len</span><span class="plain-syntax">(</span><span class="identifier-syntax">C</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">parsed_from</span><span class="plain-syntax">) &gt; </span><span class="constant-syntax">0</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"%S&amp;nbsp;"</span><span class="plain-syntax">, </span><span class="identifier-syntax">C</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">parsed_from</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="7-ip.html#SP3" class="function-link"><span class="function-syntax">ExtensionIndex::write_icons</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">C</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"%S"</span><span class="plain-syntax">, </span><span class="identifier-syntax">C</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">parsed_from</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="7-ip2.html#SP2_2_1">&#167;2.2.1</a>.</li></ul>

View file

@ -110,7 +110,7 @@ same either way. Here are the functions for (a) and (b) respectively:
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">ExtensionWebsite::go</span><span class="plain-syntax">(</span><span class="reserved-syntax">inform_project</span><span class="plain-syntax"> *</span><span class="identifier-syntax">proj</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">force_update</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><a href="7-dct.html#SP8" class="function-link"><span class="function-syntax">ExtensionDictionary::read_from_file</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">extension_census</span><span class="plain-syntax"> *</span><span class="identifier-syntax">C</span><span class="plain-syntax"> = </span><a href="7-cns.html#SP7" class="function-link"><span class="function-syntax">ExtensionCensus::perform</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">proj</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="7-cns.html#SP6" class="function-link"><span class="function-syntax">ExtensionCensus::perform</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">proj</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="7-tm.html#SP2_1" class="named-paragraph-link"><span class="named-paragraph">Time-stamp extensions used in the project as being last used today</span><span class="named-paragraph-number">2.1</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="7-tm.html#SP2_2" class="named-paragraph-link"><span class="named-paragraph">Write index pages</span><span class="named-paragraph-number">2.2</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="7-tm.html#SP2_3" class="named-paragraph-link"><span class="named-paragraph">Write individual pages on individual extensions</span><span class="named-paragraph-number">2.3</span></a></span><span class="plain-syntax">;</span>
@ -140,9 +140,7 @@ documentation as used today until the next run, for obscure timing reasons.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> </span><a href="7-ip.html#SP1" class="function-link"><span class="function-syntax">ExtensionIndex::write</span></a><span class="plain-syntax">(</span><a href="7-tm.html#SP4" class="function-link"><span class="function-syntax">ExtensionWebsite::index_URL</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">proj</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Extensions.html"</span><span class="plain-syntax">), </span><span class="constant-syntax">HOME_EXTPAGE</span><span class="plain-syntax">, </span><span class="identifier-syntax">C</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">proj</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><a href="7-ip.html#SP1" class="function-link"><span class="function-syntax">ExtensionIndex::write</span></a><span class="plain-syntax">(</span><a href="7-tm.html#SP4" class="function-link"><span class="function-syntax">ExtensionWebsite::index_URL</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">proj</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"ExtIndex.html"</span><span class="plain-syntax">), </span><span class="constant-syntax">INDEX_EXTPAGE</span><span class="plain-syntax">, </span><span class="identifier-syntax">C</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="7-ip.html#SP1" class="function-link"><span class="function-syntax">ExtensionIndex::write</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">proj</span><span class="plain-syntax">);</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="7-tm.html#SP2">&#167;2</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP2_3" class="paragraph-anchor"></a><b>&#167;2.3. </b>Each extension gets its own page in the external documentation area, but
@ -220,7 +218,7 @@ in the same area but not as part of the site.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="identifier-syntax">filename</span><span class="plain-syntax"> *</span><span class="function-syntax">ExtensionWebsite::index_URL</span><button class="popup" onclick="togglePopup('usagePopup4')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup4">Usage of <span class="code-font"><span class="function-syntax">ExtensionWebsite::index_URL</span></span>:<br/><a href="7-tm.html#SP2_2">&#167;2.2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inform_project</span><span class="plain-syntax"> *</span><span class="identifier-syntax">proj</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">leaf</span><span class="plain-syntax">) {</span>
<span class="identifier-syntax">filename</span><span class="plain-syntax"> *</span><span class="function-syntax">ExtensionWebsite::index_URL</span><button class="popup" onclick="togglePopup('usagePopup4')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup4">Usage of <span class="code-font"><span class="function-syntax">ExtensionWebsite::index_URL</span></span>:<br/>Index Pages - <a href="7-ip.html#SP1">&#167;1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inform_project</span><span class="plain-syntax"> *</span><span class="identifier-syntax">proj</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">leaf</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">pathname</span><span class="plain-syntax"> *</span><span class="identifier-syntax">P</span><span class="plain-syntax"> = </span><a href="7-tm.html#SP3" class="function-link"><span class="function-syntax">ExtensionWebsite::home_URL</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">proj</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">P</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</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">Filenames::in</span><span class="plain-syntax">(</span><span class="identifier-syntax">P</span><span class="plain-syntax">, </span><span class="identifier-syntax">leaf</span><span class="plain-syntax">);</span>

View file

@ -1,15 +1,15 @@
Size of lexicon: 3135 excerpt meanings
Stored among 847 words out of total vocabulary of 10747
717 words have a start list: longest belongs to report (with 293 meanings)
Size of lexicon: 3141 excerpt meanings
Stored among 849 words out of total vocabulary of 10759
719 words have a start list: longest belongs to report (with 293 meanings)
15 words have an end list: longest belongs to case (with 6 meanings)
29 words have a middle list: longest belongs to to (with 4 meanings)
108 words have a subset list: longest belongs to street (with 4 meanings)
Number of attempts to retrieve: 110344
of which unsuccessful: 92205
of which successful: 18139
Number of attempts to retrieve: 110380
of which unsuccessful: 92237
of which successful: 18143
Total attempts to match against excerpt meanings: 277428
of which, total with incorrect hash codes: 254691
of which, total with correct hash codes: 22737
of which, total which matched: 19906
Total attempts to match against excerpt meanings: 279269
of which, total with incorrect hash codes: 256529
of which, total with correct hash codes: 22740
of which, total which matched: 19910

File diff suppressed because it is too large Load diff

View file

@ -1,13 +1,13 @@
Total memory consumption was 135651K = 132 MB
Total memory consumption was 135759K = 133 MB
---- was used for 2111189 objects, in 373701 frames in 0 x 800K = 0K = 0 MB:
---- was used for 2113337 objects, in 374034 frames in 0 x 800K = 0K = 0 MB:
31.1% inter_tree_node_array 60 x 8192 = 491520 objects, 43255680 bytes
19.4% text_stream_array 4802 x 100 = 480200 objects, 27044864 bytes
18.2% linked_list 45265 objects, 25348400 bytes
10.2% inter_symbol_array 134 x 1024 = 137216 objects, 14274752 bytes
10.0% inter_error_stash_array 106 x 1024 = 108544 objects, 13897024 bytes
7.6% parse_node 133470 objects, 10677600 bytes
19.4% text_stream_array 4809 x 100 = 480900 objects, 27084288 bytes
18.2% linked_list 45329 objects, 25384240 bytes
10.3% inter_symbol_array 135 x 1024 = 138240 objects, 14381280 bytes
9.9% inter_error_stash_array 106 x 1024 = 108544 objects, 13897024 bytes
7.6% parse_node 133539 objects, 10683120 bytes
5.4% verb_conjugation 164 objects, 7610912 bytes
4.1% parse_node_annotation_array 357 x 500 = 178500 objects, 5723424 bytes
3.4% scan_directory 1148 objects, 4738944 bytes
@ -16,59 +16,59 @@ Total memory consumption was 135651K = 132 MB
1.9% kind_array 68 x 1000 = 68000 objects, 2722176 bytes
1.5% inter_schema_token 14157 objects, 2151864 bytes
1.4% inter_name_generator_array 51 x 1000 = 51000 objects, 2041632 bytes
1.3% package_request 21282 objects, 1872816 bytes
1.3% vocabulary_entry_array 164 x 100 = 16400 objects, 1842048 bytes
1.3% package_request 21299 objects, 1874312 bytes
1.3% vocabulary_entry_array 165 x 100 = 16500 objects, 1853280 bytes
1.1% dict_entry_array 483 x 100 = 48300 objects, 1561056 bytes
1.0% inter_symbols_table 26846 objects, 1503376 bytes
1.0% inter_symbols_table 26878 objects, 1505168 bytes
1.0% match_trie_array 11 x 1000 = 11000 objects, 1496352 bytes
1.0% i6_schema_array 24 x 100 = 2400 objects, 1440768 bytes
0.9% inter_package 26846 objects, 1288608 bytes
0.9% inter_package 26878 objects, 1290144 bytes
0.8% map_data 672 objects, 1128960 bytes
0.7% id_body 963 objects, 1101672 bytes
0.7% id_body 964 objects, 1102816 bytes
0.7% adjective_meaning 208 objects, 1030016 bytes
0.7% inter_schema_node 9050 objects, 1013600 bytes
0.7% excerpt_meaning 3135 objects, 978120 bytes
0.7% excerpt_meaning 3141 objects, 979992 bytes
0.6% production 3973 objects, 921736 bytes
0.6% ptoken 8643 objects, 898872 bytes
0.6% grammatical_usage 3641 objects, 873840 bytes
0.6% individual_form 2574 objects, 864864 bytes
0.6% grammatical_usage 3647 objects, 875280 bytes
0.6% individual_form 2580 objects, 866880 bytes
0.4% unary_predicate_array 17 x 1000 = 17000 objects, 680544 bytes
0.3% local_variable_array 49 x 100 = 4900 objects, 471968 bytes
0.2% verb_usage 1148 objects, 394912 bytes
0.2% dictionary 7726 objects, 370848 bytes
0.2% rule 472 objects, 370048 bytes
0.2% rule 478 objects, 374752 bytes
0.2% dictionary 7747 objects, 371856 bytes
0.2% verb_form 388 objects, 350752 bytes
0.2% noun 2389 objects, 286680 bytes
0.1% compilation_subtask 3380 objects, 270400 bytes
0.2% noun 2395 objects, 287400 bytes
0.1% compilation_subtask 3386 objects, 270880 bytes
0.1% inter_annotation_array 2 x 8192 = 16384 objects, 262208 bytes
0.1% inference_subject 667 objects, 261464 bytes
0.1% vanilla_function 3794 objects, 242816 bytes
0.1% vanilla_function 3803 objects, 243392 bytes
0.1% binary_predicate 326 objects, 172128 bytes
0.1% hierarchy_location 1181 objects, 170064 bytes
0.1% linguistic_stock_item 3332 objects, 159936 bytes
0.1% rule_family_data 403 objects, 148304 bytes
0.1% hierarchy_location 1186 objects, 170784 bytes
0.1% linguistic_stock_item 3338 objects, 160224 bytes
0.1% rule_family_data 404 objects, 148672 bytes
0.1% nonterminal 774 objects, 142416 bytes
---- nascent_array 2126 objects, 136064 bytes
---- inference 1703 objects, 122616 bytes
---- pcalc_term_array 3 x 1000 = 3000 objects, 120096 bytes
---- documentation_ref 1276 objects, 112288 bytes
---- inter_schema 1539 objects, 110808 bytes
---- imperative_defn 1401 objects, 100872 bytes
---- noun_usage 2412 objects, 96480 bytes
---- imperative_defn 1402 objects, 100944 bytes
---- noun_usage 2418 objects, 96720 bytes
---- anl_entry_array 2 x 1000 = 2000 objects, 96064 bytes
---- inter_tree 7 objects, 95704 bytes
---- preposition 274 objects, 87680 bytes
---- lexical_cluster 2529 objects, 80928 bytes
---- lexical_cluster 2535 objects, 81120 bytes
---- kind_variable_declaration 1656 objects, 79488 bytes
---- rulebook 407 objects, 78144 bytes
---- label_namespace 1480 objects, 71040 bytes
---- spatial_data 672 objects, 64512 bytes
---- linked_list_item_array 4 x 1000 = 4000 objects, 64128 bytes
---- kind_constructor 78 objects, 63648 bytes
---- booking 868 objects, 62496 bytes
---- kind_macro_definition 9 objects, 62280 bytes
---- booking 863 objects, 62136 bytes
---- actions_rcd_data 1926 objects, 61632 bytes
---- scenes_rcd_data 1926 objects, 61632 bytes
---- actions_rcd_data 1928 objects, 61696 bytes
---- scenes_rcd_data 1928 objects, 61696 bytes
---- command_grammar 130 objects, 58240 bytes
---- table 7 objects, 56672 bytes
---- pcalc_func_array 1 x 1000 objects, 56032 bytes
@ -78,16 +78,16 @@ Total memory consumption was 135651K = 132 MB
---- response_message 408 objects, 52224 bytes
---- ap_clause_array 2 x 400 = 800 objects, 51264 bytes
---- HTML_tag_array 1 x 1000 objects, 48032 bytes
---- heading 207 objects, 46368 bytes
---- heading 212 objects, 47488 bytes
---- text_substitution 438 objects, 42048 bytes
---- to_family_data 512 objects, 40960 bytes
---- anl_clause_array 1 x 1000 objects, 40032 bytes
---- activity_list_array 1 x 1000 objects, 40032 bytes
---- anl_clause_array 1 x 1000 objects, 40032 bytes
---- shared_variable_access_list_array 12 x 100 = 1200 objects, 38784 bytes
---- parsing_data 672 objects, 37632 bytes
---- production_list 631 objects, 35336 bytes
---- regions_data 672 objects, 32256 bytes
---- counting_data 672 objects, 32256 bytes
---- regions_data 672 objects, 32256 bytes
---- property_permission 96 objects, 31488 bytes
---- filename 767 objects, 30680 bytes
---- parse_node_tree 34 objects, 29648 bytes
@ -103,7 +103,7 @@ Total memory consumption was 135651K = 132 MB
---- pipeline_step 15 objects, 20280 bytes
---- action_name 90 objects, 20160 bytes
---- build_vertex 164 objects, 19680 bytes
---- timed_rules_rfd_data 403 objects, 19344 bytes
---- timed_rules_rfd_data 404 objects, 19392 bytes
---- method 398 objects, 19104 bytes
---- instance 162 objects, 18144 bytes
---- pcalc_prop_deferral 86 objects, 17888 bytes
@ -116,7 +116,7 @@ Total memory consumption was 135651K = 132 MB
---- booking_list 407 objects, 13024 bytes
---- web_bibliographic_datum 203 objects, 12992 bytes
---- adjective_iname_holder 323 objects, 12920 bytes
---- uniqueness_count 481 objects, 11544 bytes
---- uniqueness_count 482 objects, 11568 bytes
---- inter_construct 32 objects, 11008 bytes
---- heading_tree 34 objects, 10608 bytes
---- stopwatch_timer 123 objects, 9840 bytes
@ -133,7 +133,7 @@ Total memory consumption was 135651K = 132 MB
---- text_literal_holder 163 objects, 6520 bytes
---- section_md 62 objects, 5952 bytes
---- parsed_use_option_setting 80 objects, 5760 bytes
---- compatibility_specification 115 objects, 5520 bytes
---- compatibility_specification 117 objects, 5616 bytes
---- build_script 164 objects, 5248 bytes
---- activity 35 objects, 5040 bytes
---- explicit_action_array 1 x 100 objects, 4832 bytes
@ -144,8 +144,8 @@ Total memory consumption was 135651K = 132 MB
---- use_option 32 objects, 4352 bytes
---- either_or_property_data 62 objects, 3968 bytes
---- parse_node_annotation_type 119 objects, 3808 bytes
---- method_set 108 objects, 3456 bytes
---- definition 48 objects, 3456 bytes
---- method_set 108 objects, 3456 bytes
---- submodule_request 86 objects, 3440 bytes
---- property_setting_bp_data 84 objects, 3360 bytes
---- kind_constructor_comparison_schema_array 1 x 100 objects, 3232 bytes
@ -154,8 +154,8 @@ Total memory consumption was 135651K = 132 MB
---- JSON_single_requirement 55 objects, 2640 bytes
---- parentage_inference_data 79 objects, 2528 bytes
---- part_of_inference_data 79 objects, 2528 bytes
---- kind_constructor_instance_rule_array 1 x 100 objects, 2432 bytes
---- kind_constructor_casting_rule_array 1 x 100 objects, 2432 bytes
---- kind_constructor_instance_rule_array 1 x 100 objects, 2432 bytes
---- equation_symbol 30 objects, 2400 bytes
---- scene 1 object, 2352 bytes
---- build_step 28 objects, 2016 bytes
@ -165,11 +165,11 @@ Total memory consumption was 135651K = 132 MB
---- inform_pipeline 24 objects, 1536 bytes
---- inbuild_requirement 37 objects, 1480 bytes
---- noun_filter_token 22 objects, 1408 bytes
---- inter_node_array 35 objects, 1400 bytes
---- special_meaning_holder 35 objects, 1400 bytes
---- inter_node_array 35 objects, 1400 bytes
---- JSON_requirement 42 objects, 1344 bytes
---- table_column 16 objects, 1280 bytes
---- constant_phrase 20 objects, 1280 bytes
---- table_column 16 objects, 1280 bytes
---- invocation_options_array 1 x 100 objects, 1224 bytes
---- direction_inference_data 30 objects, 1200 bytes
---- inbuild_search_result 29 objects, 1160 bytes
@ -178,8 +178,8 @@ Total memory consumption was 135651K = 132 MB
---- runtime_kind_structure 13 objects, 1040 bytes
---- quantifier 16 objects, 1024 bytes
---- web_md 7 objects, 1008 bytes
---- named_rulebook_outcome 15 objects, 960 bytes
---- pipeline_stage 20 objects, 960 bytes
---- named_rulebook_outcome 15 objects, 960 bytes
---- JSON_pair_requirement 29 objects, 928 bytes
---- control_structure_phrase 12 objects, 864 bytes
---- kit_configuration 21 objects, 840 bytes
@ -192,18 +192,18 @@ Total memory consumption was 135651K = 132 MB
---- implication 13 objects, 624 bytes
---- chapter_md 7 objects, 616 bytes
---- code_generation 1 object, 576 bytes
---- inter_annotation_form 14 objects, 560 bytes
---- module 7 objects, 560 bytes
---- inter_warehouse_room 10 objects, 560 bytes
---- generated_segment 14 objects, 560 bytes
---- module 7 objects, 560 bytes
---- inter_annotation_form 14 objects, 560 bytes
---- inter_warehouse_room 10 objects, 560 bytes
---- rulebook_outcome 17 objects, 544 bytes
---- small_word_set 11 objects, 528 bytes
---- i6_memory_setting 15 objects, 480 bytes
---- equation 4 objects, 480 bytes
---- bp_family 14 objects, 448 bytes
---- inference_family 11 objects, 440 bytes
---- article_usage 8 objects, 384 bytes
---- inbuild_genre 8 objects, 384 bytes
---- article_usage 8 objects, 384 bytes
---- source_file 5 objects, 360 bytes
---- tree_inventory 1 object, 320 bytes
---- grammatical_category 8 objects, 320 bytes
@ -213,10 +213,10 @@ Total memory consumption was 135651K = 132 MB
---- module_request 8 objects, 320 bytes
---- inter_pipeline 1 object, 312 bytes
---- up_family 9 objects, 288 bytes
---- explicit_bp_data 5 objects, 280 bytes
---- contents_entry 7 objects, 280 bytes
---- compilation_unit 5 objects, 280 bytes
---- door_to_notice 5 objects, 280 bytes
---- compilation_unit 5 objects, 280 bytes
---- contents_entry 7 objects, 280 bytes
---- explicit_bp_data 5 objects, 280 bytes
---- verb_usage_tier 5 objects, 240 bytes
---- kit_dependency 5 objects, 240 bytes
---- inform_project 1 object, 232 bytes
@ -224,43 +224,43 @@ Total memory consumption was 135651K = 132 MB
---- adjective_meaning_family 7 objects, 224 bytes
---- test_scenario 1 object, 216 bytes
---- release_instructions 1 object, 208 bytes
---- build_skill 5 objects, 200 bytes
---- attachment_instruction 5 objects, 200 bytes
---- code_generator 5 objects, 200 bytes
---- element_activation 6 objects, 192 bytes
---- attachment_instruction 5 objects, 200 bytes
---- build_skill 5 objects, 200 bytes
---- plural_dictionary_entry 4 objects, 192 bytes
---- inference_subject_family 5 objects, 160 bytes
---- element_activation 6 objects, 192 bytes
---- imperative_defn_family 4 objects, 160 bytes
---- inter_architecture 4 objects, 160 bytes
---- inference_subject_family 5 objects, 160 bytes
---- inbuild_nest 3 objects, 120 bytes
---- inform_language 1 object, 104 bytes
---- group_together_function 2 objects, 80 bytes
---- compile_task_data 1 object, 80 bytes
---- article 2 objects, 80 bytes
---- build_methodology 1 object, 56 bytes
---- inter_warehouse 1 object, 56 bytes
---- compile_task_data 1 object, 80 bytes
---- group_together_function 2 objects, 80 bytes
---- figures_data 1 object, 56 bytes
---- inform_kit_ittt 1 object, 48 bytes
---- HTML_file_state 1 object, 48 bytes
---- inter_warehouse 1 object, 56 bytes
---- build_methodology 1 object, 56 bytes
---- star_invention 1 object, 48 bytes
---- loop_over_scope 1 object, 40 bytes
---- HTML_file_state 1 object, 48 bytes
---- inform_kit_ittt 1 object, 48 bytes
---- I6_generation_data 1 object, 40 bytes
---- target_pragma_setting 1 object, 40 bytes
---- kind_template_definition 1 object, 40 bytes
---- by_function_bp_data 1 object, 40 bytes
---- target_pragma_setting 1 object, 40 bytes
---- loop_over_scope 1 object, 40 bytes
---- kind_template_definition 1 object, 40 bytes
100.0% was used for memory not allocated for objects:
61.4% text stream storage 85322296 bytes in 500062 claims
3.8% dictionary storage 5364736 bytes in 7726 claims
61.4% text stream storage 85418584 bytes in 500747 claims
3.8% dictionary storage 5374976 bytes in 7747 claims
---- sorting 3320 bytes in 547 claims
5.1% source text 7200000 bytes in 3 claims
7.7% source text details 10800000 bytes in 2 claims
0.1% 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.2% inter symbols storage 4567664 bytes in 28221 claims
12.0% inter bytecode storage 16757872 bytes in 15 claims
3.2% inter symbols storage 4571760 bytes in 28253 claims
12.0% inter bytecode storage 16757532 bytes in 15 claims
4.4% inter links storage 6222976 bytes in 11 claims
0.1% inter tree location list storage 191232 bytes in 32 claims
1.2% instance-of-kind counting 1705636 bytes in 1 claim
@ -269,5 +269,5 @@ Total memory consumption was 135651K = 132 MB
---- code generation workspace for objects 3480 bytes in 19 claims
0.2% emitter array storage 280672 bytes in 2002 claims
-139.-9% was overhead - -194371496 bytes = -189815K = -185 MB
-139.-9% was overhead - -194592480 bytes = -190031K = -185 MB

View file

@ -1,25 +1,25 @@
<s-literal> hits 2126/24584 nti 23 constraint (none) extremes [1, infinity)
<s-literal> hits 2126/24594 nti 23 constraint (none) extremes [1, infinity)
English:
(@1)<cardinal-number>=1
(hits 171/171) (matched: '100') constraint CS = {r0} extremes [1, 1]
(@1)minus (@2)<cardinal-number>=1
(hits 0/1482) constraint DS = {23} extremes [2, 2]
(@1)<quoted-text>=1 (@2)( (@3)<response-letter>=2 (@4))
(hits 274/751) (matched: '"[current item from the multiple object list]: [run paragraph on]" ( a )') constraint DS = {23} extremes [4, 4]
(hits 274/752) (matched: '"[current item from the multiple object list]: [run paragraph on]" ( a )') constraint DS = {23} extremes [4, 4]
(@1)<quoted-text>=1
(hits 1570/5726) (matched: 'Represents geographical locations, both indoor
and outdoor, which are not necessarily areas in a building. A player in one
room is mostly unable to sense, or interact with, anything in a different room.
Rooms are arranged in a map.') constraint (none) extremes [1, 1]
<s-literal-real-number>=1
(hits 11/10277) (matched: 'plus infinity') constraint (none) extremes [1, infinity)
(hits 11/10282) (matched: 'plus infinity') constraint (none) extremes [1, infinity)
(@1)<s-literal-truth-state>=1
(hits 100/721) (matched: 'false') constraint CS = {17} extremes [1, 1]
<s-literal-list>=1
(hits 0/1703) constraint DS = {19} extremes [2, infinity)
(hits 0/1705) constraint DS = {19} extremes [2, infinity)
(@1)unicode <s-unicode-character>=1
(hits 0/3441) constraint DS = {23} extremes [2, infinity)
(hits 0/3446) constraint DS = {23} extremes [2, infinity)
<s-literal-time>=1
(hits 0/3993) constraint DW = {20, 21, 22} extremes [2, 5]
(hits 0/3994) constraint DW = {20, 21, 22} extremes [2, 5]
<s-literal-unit-notation>=1
(hits 0/10166) constraint (none) extremes [1, infinity)
(hits 0/10171) constraint (none) extremes [1, infinity)

View file

@ -28,8 +28,8 @@ ROOT_NT
VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve} {special meaning: new-action}
UNPARSED_NOUN_NT'asking for information'
UNPARSED_NOUN_NT'out of world'
IMPERATIVE_NT'carry out asking for information' {unit: 3} {imperative definition: 821}
IMPERATIVE_NT'when play begins' {unit: 3} {imperative definition: 822}
IMPERATIVE_NT'carry out asking for information' {unit: 3} {imperative definition: 822}
IMPERATIVE_NT'when play begins' {unit: 3} {imperative definition: 823}
HEADING_NT'section 1 - errands' {heading 5} {under: H5'section 1 - errands'} {unit: 3}
SENTENCE_NT'the current actor is a person which varies' {unit: 3} {classified}
VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}
@ -39,8 +39,8 @@ ROOT_NT
VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}
PROPER_NOUN_NT'current owner' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: NONLOCAL_VARIABLE_NT'current owner' {nonlocal: 'current owner'(var)person}} {created here}
COMMON_NOUN_NT'person which varies' {indefinite 'a' n/m/f nom/acc s} {refined} {refers: infs'values variable-pointer'-k} {creation: << kind=people variable-pointer(x) >>} {eval: TEST_VALUE_NT}
IMPERATIVE_NT'every turn' {unit: 3} {imperative definition: 823}
IMPERATIVE_NT'every turn' {unit: 3} {imperative definition: 824}
IMPERATIVE_NT'every turn' {unit: 3} {imperative definition: 825}
SENTENCE_NT'a person can be active or passive' {unit: 3} {classified}
VERB_NT'can be' {verb 'be able to be' s/p 3p act IS_TENSE +ve} {special meaning: can-be}
COMMON_NOUN_NT'a person' {refined} {refers: infs'person'} {creation: << kind=person(x) >>} {eval: TEST_VALUE_NT}
@ -56,34 +56,34 @@ ROOT_NT
VERB_NT'are' {verb 'be' 3p p act IS_TENSE +ve}
PROPER_NOUN_NT'character movement rules' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT {kind: rulebook} {rulebook: character movement}} {created here}
COMMON_NOUN_NT'rulebook' {indefinite 'a' n/m/f nom/acc s} {refined} {refers: infs'values based rulebook producing values'-k} {creation: << kind=rulebook(x) >>} {eval: TEST_VALUE_NT}
IMPERATIVE_NT'the first character movement rule' {unit: 3} {imperative definition: 825}
IMPERATIVE_NT'a character movement rule' {unit: 3} {imperative definition: 826}
IMPERATIVE_NT'the first character movement rule' {unit: 3} {imperative definition: 826}
IMPERATIVE_NT'a character movement rule' {unit: 3} {imperative definition: 827}
IMPERATIVE_NT'to decide whether movement has not yet occurred' {unit: 3} {imperative definition: 828}
IMPERATIVE_NT'definition' {unit: 3} {imperative definition: 829}
IMPERATIVE_NT'a character movement rule' {unit: 3} {imperative definition: 828}
IMPERATIVE_NT'to decide whether movement has not yet occurred' {unit: 3} {imperative definition: 829}
IMPERATIVE_NT'definition' {unit: 3} {imperative definition: 830}
IMPERATIVE_NT'definition' {unit: 3} {imperative definition: 831}
SENTENCE_NT'the shopowner rules is a rulebook' {unit: 3} {classified} {clears pronouns}
VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}
PROPER_NOUN_NT'shopowner rules' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT {kind: rulebook} {rulebook: shopowner}} {created here}
COMMON_NOUN_NT'rulebook' {indefinite 'a' n/m/f nom/acc s} {refined} {refers: infs'values based rulebook producing values'-k} {creation: << kind=rulebook(x) >>} {eval: TEST_VALUE_NT}
IMPERATIVE_NT'a shopowner rule' {unit: 3} {imperative definition: 831}
IMPERATIVE_NT'report someone closing a door when the person asked owns the' {unit: 3} {imperative definition: 832}
IMPERATIVE_NT'report vanessa closing the metal door when the metal door is' {unit: 3} {imperative definition: 833}
IMPERATIVE_NT'a shopowner rule' {unit: 3} {imperative definition: 834}
IMPERATIVE_NT'a shopowner rule' {unit: 3} {imperative definition: 832}
IMPERATIVE_NT'report someone closing a door when the person asked owns the' {unit: 3} {imperative definition: 833}
IMPERATIVE_NT'report vanessa closing the metal door when the metal door is' {unit: 3} {imperative definition: 834}
IMPERATIVE_NT'a shopowner rule' {unit: 3} {imperative definition: 835}
SENTENCE_NT'filing is an action applying to one thing' {unit: 3} {classified}
VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve} {special meaning: new-action}
UNPARSED_NOUN_NT'filing'
UNPARSED_NOUN_NT'applying to one thing'
IMPERATIVE_NT'before someone filing something which is not carried by the ' {unit: 3} {imperative definition: 835}
IMPERATIVE_NT'carry out someone filing' {unit: 3} {imperative definition: 836}
IMPERATIVE_NT'report someone filing' {unit: 3} {imperative definition: 837}
IMPERATIVE_NT'before someone filing something which is not carried by the ' {unit: 3} {imperative definition: 836}
IMPERATIVE_NT'carry out someone filing' {unit: 3} {imperative definition: 837}
IMPERATIVE_NT'report someone filing' {unit: 3} {imperative definition: 838}
SENTENCE_NT'the shopper rules is a rulebook' {unit: 3} {classified} {clears pronouns}
VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}
PROPER_NOUN_NT'shopper rules' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT {kind: rulebook} {rulebook: shopper}} {created here}
COMMON_NOUN_NT'rulebook' {indefinite 'a' n/m/f nom/acc s} {refined} {refers: infs'values based rulebook producing values'-k} {creation: << kind=rulebook(x) >>} {eval: TEST_VALUE_NT}
IMPERATIVE_NT'a shopper rule' {unit: 3} {imperative definition: 838}
IMPERATIVE_NT'a shopper rule' {unit: 3} {imperative definition: 839}
IMPERATIVE_NT'definition' {unit: 3} {imperative definition: 840}
IMPERATIVE_NT'a shopper rule' {unit: 3} {imperative definition: 840}
IMPERATIVE_NT'definition' {unit: 3} {imperative definition: 841}
DEFN_CONT_NT'a room is air-conditioned' {unit: 3}
CODE_BLOCK_NT
CODE_BLOCK_NT {control structure: IF}
@ -141,8 +141,8 @@ ROOT_NT
COMMON_NOUN_NT'artwork' {indefinite 'an' n/m/f nom/acc s} {refined} {creation: << kind=artwork(x) >>} {refers: infs'artwork'} {eval: TEST_VALUE_NT} {created here}
KIND_NT'kind of thing' {refined} {refers: infs'thing'}
COMMON_NOUN_NT'thing' {refined} {refers: infs'thing'} {creation: << kind=thing(x) >>} {eval: TEST_VALUE_NT}
IMPERATIVE_NT'before printing the name of an artwork' {unit: 3} {imperative definition: 841}
IMPERATIVE_NT'after printing the name of an artwork' {unit: 3} {imperative definition: 842}
IMPERATIVE_NT'before printing the name of an artwork' {unit: 3} {imperative definition: 842}
IMPERATIVE_NT'after printing the name of an artwork' {unit: 3} {imperative definition: 843}
SENTENCE_NT'an artwork can be submitted or reserved' {unit: 3} {classified}
VERB_NT'can be' {verb 'be able to be' s/p 3p act IS_TENSE +ve} {special meaning: can-be}
COMMON_NOUN_NT'an artwork' {refined} {refers: infs'artwork'} {creation: << kind=artwork(x) >>} {eval: TEST_VALUE_NT}
@ -155,49 +155,49 @@ ROOT_NT
COMMON_NOUN_NT'book' {indefinite 'a' n/m/f nom/acc s} {refined} {creation: << kind=book(x) >>} {refers: infs'book'} {eval: TEST_VALUE_NT} {created here}
KIND_NT'kind of artwork' {refined} {refers: infs'artwork'}
COMMON_NOUN_NT'artwork' {refined} {refers: infs'artwork'} {creation: << kind=artwork(x) >>} {eval: TEST_VALUE_NT}
IMPERATIVE_NT'before someone resolving a book when the person asked is not' {unit: 3} {imperative definition: 843}
IMPERATIVE_NT'carry out someone resolving a book' {unit: 3} {imperative definition: 844}
IMPERATIVE_NT'report someone resolving a book' {unit: 3} {imperative definition: 845}
IMPERATIVE_NT'before listing contents' {unit: 3} {imperative definition: 846}
IMPERATIVE_NT'before grouping together books' {unit: 3} {imperative definition: 847}
IMPERATIVE_NT'before someone resolving a book when the person asked is not' {unit: 3} {imperative definition: 844}
IMPERATIVE_NT'carry out someone resolving a book' {unit: 3} {imperative definition: 845}
IMPERATIVE_NT'report someone resolving a book' {unit: 3} {imperative definition: 846}
IMPERATIVE_NT'before listing contents' {unit: 3} {imperative definition: 847}
IMPERATIVE_NT'before grouping together books' {unit: 3} {imperative definition: 848}
SENTENCE_NT'a stamped envelope is a kind of thing' {unit: 3} {classified} {interpretation of subject: infs'book'}
VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}
COMMON_NOUN_NT'stamped envelope' {indefinite 'a' n/m/f nom/acc s} {refined} {creation: << kind=stamped envelope(x) >>} {refers: infs'stamped envelope'} {eval: TEST_VALUE_NT} {created here}
KIND_NT'kind of thing' {refined} {refers: infs'thing'}
COMMON_NOUN_NT'thing' {refined} {refers: infs'thing'} {creation: << kind=thing(x) >>} {eval: TEST_VALUE_NT}
IMPERATIVE_NT'before someone resolving a stamped envelope when the person ' {unit: 3} {imperative definition: 848}
IMPERATIVE_NT'carry out someone resolving a stamped envelope' {unit: 3} {imperative definition: 849}
IMPERATIVE_NT'report someone resolving a stamped envelope' {unit: 3} {imperative definition: 850}
IMPERATIVE_NT'instead of someone resolving a stamped envelope when the per' {unit: 3} {imperative definition: 851}
IMPERATIVE_NT'before someone resolving a stamped envelope when the person ' {unit: 3} {imperative definition: 849}
IMPERATIVE_NT'carry out someone resolving a stamped envelope' {unit: 3} {imperative definition: 850}
IMPERATIVE_NT'report someone resolving a stamped envelope' {unit: 3} {imperative definition: 851}
IMPERATIVE_NT'instead of someone resolving a stamped envelope when the per' {unit: 3} {imperative definition: 852}
SENTENCE_NT'a dvd is a kind of artwork' {unit: 3} {classified} {interpretation of subject: infs'stamped envelope'}
VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}
COMMON_NOUN_NT'dvd' {indefinite 'a' n/m/f nom/acc s} {refined} {creation: << kind=dvd(x) >>} {refers: infs'dvd'} {eval: TEST_VALUE_NT} {created here}
KIND_NT'kind of artwork' {refined} {refers: infs'artwork'}
COMMON_NOUN_NT'artwork' {refined} {refers: infs'artwork'} {creation: << kind=artwork(x) >>} {eval: TEST_VALUE_NT}
IMPERATIVE_NT'before someone resolving a dvd when the person asked is not ' {unit: 3} {imperative definition: 852}
IMPERATIVE_NT'carry out someone resolving a dvd' {unit: 3} {imperative definition: 853}
IMPERATIVE_NT'report someone resolving a dvd' {unit: 3} {imperative definition: 854}
IMPERATIVE_NT'instead of someone resolving a dvd when the person asked car' {unit: 3} {imperative definition: 855}
IMPERATIVE_NT'before listing contents' {unit: 3} {imperative definition: 856}
IMPERATIVE_NT'before grouping together dvds' {unit: 3} {imperative definition: 857}
IMPERATIVE_NT'before someone resolving a dvd when the person asked is not ' {unit: 3} {imperative definition: 853}
IMPERATIVE_NT'carry out someone resolving a dvd' {unit: 3} {imperative definition: 854}
IMPERATIVE_NT'report someone resolving a dvd' {unit: 3} {imperative definition: 855}
IMPERATIVE_NT'instead of someone resolving a dvd when the person asked car' {unit: 3} {imperative definition: 856}
IMPERATIVE_NT'before listing contents' {unit: 3} {imperative definition: 857}
IMPERATIVE_NT'before grouping together dvds' {unit: 3} {imperative definition: 858}
SENTENCE_NT'approaching is an action applying to one thing' {unit: 3} {classified}
VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve} {special meaning: new-action}
UNPARSED_NOUN_NT'approaching'
UNPARSED_NOUN_NT'applying to one thing'
IMPERATIVE_NT'carry out someone approaching' {unit: 3} {imperative definition: 858}
IMPERATIVE_NT'carry out someone approaching' {unit: 3} {imperative definition: 859}
SENTENCE_NT'a coupon is a kind of thing' {unit: 3} {classified} {interpretation of subject: infs'dvd'}
VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}
COMMON_NOUN_NT'coupon' {indefinite 'a' n/m/f nom/acc s} {refined} {creation: << kind=coupon(x) >>} {refers: infs'coupon'} {eval: TEST_VALUE_NT} {created here}
KIND_NT'kind of thing' {refined} {refers: infs'thing'}
COMMON_NOUN_NT'thing' {refined} {refers: infs'thing'} {creation: << kind=thing(x) >>} {eval: TEST_VALUE_NT}
IMPERATIVE_NT'carry out someone resolving a coupon' {unit: 3} {imperative definition: 859}
IMPERATIVE_NT'carry out someone resolving a coupon' {unit: 3} {imperative definition: 860}
SENTENCE_NT'the block giving rule is not listed in any rulebook' {unit: 3} {classified}
VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve} {rule placement sense: negative} {special meaning: rule-listed-in}
UNPARSED_NOUN_NT'the block giving rule'
UNPARSED_NOUN_NT'in any rulebook'
IMPERATIVE_NT'check giving something to someone ( this is the block player' {unit: 3} {imperative definition: 860}
IMPERATIVE_NT'before someone resolving a coupon when the person asked is n' {unit: 3} {imperative definition: 861}
IMPERATIVE_NT'after someone giving a coupon to vanessa' {unit: 3} {imperative definition: 862}
IMPERATIVE_NT'check giving something to someone ( this is the block player' {unit: 3} {imperative definition: 861}
IMPERATIVE_NT'before someone resolving a coupon when the person asked is n' {unit: 3} {imperative definition: 862}
IMPERATIVE_NT'after someone giving a coupon to vanessa' {unit: 3} {imperative definition: 863}
SENTENCE_NT'infection color is a kind of value' {unit: 3} {classified} {interpretation of subject: infs'coupon'}
VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}
COMMON_NOUN_NT'infection color' {refined} {creation: << kind=infection color(x) >>} {refers: infs'object'-k} {eval: TEST_VALUE_NT} {created here}
@ -257,7 +257,7 @@ ROOT_NT
AND_NT',' {refined}
PROPER_NOUN_NT'saffron silk' {refined} {refers: infs'saffron silk'} {eval: CONSTANT_NT'saffron silk' {kind: infection color} {instance: I81'saffron silk'[infection color]} {enumeration: 25}} {created here}
PROPER_NOUN_NT'cookie dough cream' {refined} {refers: infs'cookie dough cream'} {eval: CONSTANT_NT'cookie dough cream' {kind: infection color} {instance: I82'cookie dough cream'[infection color]} {enumeration: 26}} {created here}
IMPERATIVE_NT'to say list of flavors' {unit: 3} {imperative definition: 863}
IMPERATIVE_NT'to say list of flavors' {unit: 3} {imperative definition: 864}
SENTENCE_NT'understand "ask vanessa for [flavored ice cream]" as buying ' {unit: 3} {classified}
VERB_NT'understand' {verb 'understand' 3p p act IS_TENSE +ve} {prep2: as} {special meaning: understand-as}
UNPARSED_NOUN_NT'"ask vanessa for [flavored ice cream]"'
@ -270,8 +270,8 @@ ROOT_NT
VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve} {special meaning: new-action}
UNPARSED_NOUN_NT'buying the flavor'
UNPARSED_NOUN_NT'applying to one infection color'
IMPERATIVE_NT'check buying the flavor' {unit: 3} {imperative definition: 864}
IMPERATIVE_NT'carry out buying the flavor' {unit: 3} {imperative definition: 865}
IMPERATIVE_NT'check buying the flavor' {unit: 3} {imperative definition: 865}
IMPERATIVE_NT'carry out buying the flavor' {unit: 3} {imperative definition: 866}
SENTENCE_NT'understand "ice cream" or "cream" or "ice" or "sherbet" or "' {unit: 3} {classified}
VERB_NT'understand' {verb 'understand' 3p p act IS_TENSE +ve} {prep2: as} {special meaning: understand-as}
UNPARSED_NOUN_NT'"ice cream" or "cream" or "ice" or "sherbet" or "sorbet"'
@ -305,12 +305,12 @@ ROOT_NT
VERB_NT'understand' {verb 'understand' 3p p act IS_TENSE +ve} {prep2: as} {special meaning: understand-as}
UNPARSED_NOUN_NT'the infection color property'
UNPARSED_NOUN_NT'referring to an ice cream cone'
IMPERATIVE_NT'carry out someone resolving an ice cream cone' {unit: 3} {imperative definition: 866}
IMPERATIVE_NT'instead of someone eating a fresh ice cream cone' {unit: 3} {imperative definition: 867}
IMPERATIVE_NT'report someone eating an ice cream cone' {unit: 3} {imperative definition: 868}
IMPERATIVE_NT'before printing the name of an ice cream cone' {unit: 3} {imperative definition: 869}
IMPERATIVE_NT'carry out someone resolving an ice cream cone' {unit: 3} {imperative definition: 867}
IMPERATIVE_NT'instead of someone eating a fresh ice cream cone' {unit: 3} {imperative definition: 868}
IMPERATIVE_NT'report someone eating an ice cream cone' {unit: 3} {imperative definition: 869}
IMPERATIVE_NT'before printing the name of an ice cream cone' {unit: 3} {imperative definition: 870}
HEADING_NT'section 2 - infection rules' {heading 5} {under: H5'section 2 - infection rules'} {unit: 3}
IMPERATIVE_NT'this is the infection rule' {unit: 3} {imperative definition: 870}
IMPERATIVE_NT'this is the infection rule' {unit: 3} {imperative definition: 871}
SENTENCE_NT'a person can be infected or clean' {unit: 3} {classified}
VERB_NT'can be' {verb 'be able to be' s/p 3p act IS_TENSE +ve} {special meaning: can-be}
COMMON_NOUN_NT'a person' {refined} {refers: infs'person'} {creation: << kind=person(x) >>} {eval: TEST_VALUE_NT}
@ -323,11 +323,11 @@ ROOT_NT
COMMON_NOUN_NT'person' {indefinite 'a' n/m/f nom/acc s} {refined} {refers: infs'person'} {creation: << kind=person(x) >>} {eval: TEST_VALUE_NT}
ALLOWED_NT'has' {refined}
UNPARSED_NOUN_NT'infection color' {indefinite 'an' n/m/f nom/acc s} {refined}
IMPERATIVE_NT'every turn' {unit: 3} {imperative definition: 871}
IMPERATIVE_NT'definition' {unit: 3} {imperative definition: 872}
IMPERATIVE_NT'every turn' {unit: 3} {imperative definition: 872}
IMPERATIVE_NT'definition' {unit: 3} {imperative definition: 873}
IMPERATIVE_NT'when play begins' {unit: 3} {imperative definition: 874}
IMPERATIVE_NT'every turn' {unit: 3} {imperative definition: 875}
IMPERATIVE_NT'definition' {unit: 3} {imperative definition: 874}
IMPERATIVE_NT'when play begins' {unit: 3} {imperative definition: 875}
IMPERATIVE_NT'every turn' {unit: 3} {imperative definition: 876}
SENTENCE_NT'understand "sneeze on [something]" as sneezing on' {unit: 3} {classified}
VERB_NT'understand' {verb 'understand' 3p p act IS_TENSE +ve} {prep2: as} {special meaning: understand-as}
UNPARSED_NOUN_NT'"sneeze on [something]"'
@ -336,11 +336,11 @@ ROOT_NT
VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve} {special meaning: new-action}
UNPARSED_NOUN_NT'sneezing on'
UNPARSED_NOUN_NT'applying to one thing'
IMPERATIVE_NT'check sneezing on' {unit: 3} {imperative definition: 876}
IMPERATIVE_NT'carry out sneezing on' {unit: 3} {imperative definition: 877}
IMPERATIVE_NT'carry out someone sneezing on' {unit: 3} {imperative definition: 878}
IMPERATIVE_NT'report sneezing on' {unit: 3} {imperative definition: 879}
IMPERATIVE_NT'report someone sneezing on' {unit: 3} {imperative definition: 880}
IMPERATIVE_NT'check sneezing on' {unit: 3} {imperative definition: 877}
IMPERATIVE_NT'carry out sneezing on' {unit: 3} {imperative definition: 878}
IMPERATIVE_NT'carry out someone sneezing on' {unit: 3} {imperative definition: 879}
IMPERATIVE_NT'report sneezing on' {unit: 3} {imperative definition: 880}
IMPERATIVE_NT'report someone sneezing on' {unit: 3} {imperative definition: 881}
SENTENCE_NT'understand "inject [someone] with [something]" as injecting ' {unit: 3} {classified}
VERB_NT'understand' {verb 'understand' 3p p act IS_TENSE +ve} {prep2: as} {special meaning: understand-as}
UNPARSED_NOUN_NT'"inject [someone] with [something]"'
@ -361,10 +361,10 @@ ROOT_NT
VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve} {special meaning: new-action}
UNPARSED_NOUN_NT'injecting it with'
UNPARSED_NOUN_NT'applying to two things'
IMPERATIVE_NT'check injecting it with' {unit: 3} {imperative definition: 881}
IMPERATIVE_NT'carry out injecting it with' {unit: 3} {imperative definition: 882}
IMPERATIVE_NT'after injecting the player with something' {unit: 3} {imperative definition: 883}
IMPERATIVE_NT'report injecting it with' {unit: 3} {imperative definition: 884}
IMPERATIVE_NT'check injecting it with' {unit: 3} {imperative definition: 882}
IMPERATIVE_NT'carry out injecting it with' {unit: 3} {imperative definition: 883}
IMPERATIVE_NT'after injecting the player with something' {unit: 3} {imperative definition: 884}
IMPERATIVE_NT'report injecting it with' {unit: 3} {imperative definition: 885}
HEADING_NT'section 3 - geography' {heading 5} {under: H5'section 3 - geography'} {unit: 3}
INCLUSION_NT'include locksmith by emily short' {unit: 3}
HEADING_NT'version 14 of locksmith by emily short begins here' {heading 0} {under: H0'version 14 of locksmith by emily short begins here'} {includes: Locksmith by Emily Short v14 } {unit: 3}
@ -389,9 +389,9 @@ ROOT_NT
VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve} {special meaning: new-action}
UNPARSED_NOUN_NT'going toward'
UNPARSED_NOUN_NT'applying to one thing'
IMPERATIVE_NT'check going toward' {unit: 3} {imperative definition: 922}
IMPERATIVE_NT'carry out going toward' {unit: 3} {imperative definition: 923}
IMPERATIVE_NT'instead of waiting when the destination of the player is not' {unit: 3} {imperative definition: 924}
IMPERATIVE_NT'check going toward' {unit: 3} {imperative definition: 923}
IMPERATIVE_NT'carry out going toward' {unit: 3} {imperative definition: 924}
IMPERATIVE_NT'instead of waiting when the destination of the player is not' {unit: 3} {imperative definition: 925}
SENTENCE_NT'understand "stop" or "cease" as stopping' {unit: 3} {classified}
VERB_NT'understand' {verb 'understand' 3p p act IS_TENSE +ve} {prep2: as} {special meaning: understand-as}
UNPARSED_NOUN_NT'"stop" or "cease"'
@ -400,11 +400,11 @@ ROOT_NT
VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve} {special meaning: new-action}
UNPARSED_NOUN_NT'stopping'
UNPARSED_NOUN_NT'applying to nothing'
IMPERATIVE_NT'carry out stopping' {unit: 3} {imperative definition: 925}
IMPERATIVE_NT'report stopping' {unit: 3} {imperative definition: 926}
IMPERATIVE_NT'after going to an air-conditioned room' {unit: 3} {imperative definition: 927}
IMPERATIVE_NT'after going from an air-conditioned room' {unit: 3} {imperative definition: 928}
IMPERATIVE_NT'instead of listening to an air-conditioned room' {unit: 3} {imperative definition: 929}
IMPERATIVE_NT'carry out stopping' {unit: 3} {imperative definition: 926}
IMPERATIVE_NT'report stopping' {unit: 3} {imperative definition: 927}
IMPERATIVE_NT'after going to an air-conditioned room' {unit: 3} {imperative definition: 928}
IMPERATIVE_NT'after going from an air-conditioned room' {unit: 3} {imperative definition: 929}
IMPERATIVE_NT'instead of listening to an air-conditioned room' {unit: 3} {imperative definition: 930}
SENTENCE_NT'the alfred cralle pool hall is a room' {unit: 3} {classified} {interpretation of subject: infs'person'}
VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}
PROPER_NOUN_NT'alfred cralle pool hall' {definite 'the' n/m/f s/p nom/acc} {refined} {refers: infs'alfred cralle pool hall'} {eval: CONSTANT_NT'alfred cralle pool hall' {kind: object} {instance: I83'alfred cralle pool hall'} {enumeration: 0}} {created here}
@ -446,7 +446,7 @@ ROOT_NT
PROPER_NOUN_NT'felt door' {definite 'the' n/m/f s/p nom/acc} {refined} {refers: infs'felt door'} {eval: CONSTANT_NT'felt door' {kind: door} {instance: I85'felt door'} {enumeration: 0}}
PROPER_NOUN_NT'description' {refined} {eval: CONSTANT_NT {kind: texts valued property} {property: 'description'=text}}
PROPER_NOUN_NT'"It has a prominent lock, designed for an old-fashioned key.' {refined} {eval: CONSTANT_NT'"It has a prominent lock, designed for an old-fashioned key.' {kind: text}}
IMPERATIVE_NT'after locking a door with something in the presence of an ot' {unit: 3} {imperative definition: 930}
IMPERATIVE_NT'after locking a door with something in the presence of an ot' {unit: 3} {imperative definition: 931}
SENTENCE_NT'nancy johnson memorial square is west of the felt door' {unit: 3} {classified} {interpretation of subject: infs'key to the city'}
VERB_NT'is west of' {verb 'be' 3p s act IS_TENSE +ve} {prep1: west of}
PROPER_NOUN_NT'nancy johnson memorial square' {refined} {refers: infs'nancy johnson memorial square'} {eval: CONSTANT_NT'nancy johnson memorial square' {kind: object} {instance: I87'nancy johnson memorial square'} {enumeration: 0}} {created here}
@ -508,8 +508,8 @@ ROOT_NT
VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}
PROPER_NOUN_NT'slot' {definite 'the' n/m/f s/p nom/acc} {refined} {refers: infs'slot'} {eval: CONSTANT_NT'slot' {kind: object} {instance: I92'slot'} {enumeration: 0}}
COMMON_NOUN_NT'container' {indefinite 'a' n/m/f nom/acc s} {refined} {refers: infs'container'} {creation: << kind=container(x) >>} {eval: TEST_VALUE_NT}
IMPERATIVE_NT'carry out inserting something into the slot' {unit: 3} {imperative definition: 931}
IMPERATIVE_NT'report inserting something into the slot' {unit: 3} {imperative definition: 932}
IMPERATIVE_NT'carry out inserting something into the slot' {unit: 3} {imperative definition: 932}
IMPERATIVE_NT'report inserting something into the slot' {unit: 3} {imperative definition: 933}
SENTENCE_NT'hamwi street is northeast of an iron gate' {unit: 3} {classified} {interpretation of subject: infs'slot'}
VERB_NT'is northeast of' {verb 'be' 3p s act IS_TENSE +ve} {prep1: northeast of}
PROPER_NOUN_NT'hamwi street' {refined} {refers: infs'hamwi street'} {eval: CONSTANT_NT'hamwi street' {kind: object} {instance: I93'hamwi street'} {enumeration: 0}} {created here}
@ -533,7 +533,7 @@ ROOT_NT
AND_NT'and' {refined}
ADJECTIVE_NT'lockable' {refined} {predicate: lockable} {creation: << lockable(x) ^ lockable(x) >>}
ADJECTIVE_NT'unlocked' {refined} {predicate: unlocked} {creation: << unlocked(x) ^ unlocked(x) >>}
IMPERATIVE_NT'before printing the name of the iron gate while not opening ' {unit: 3} {imperative definition: 933}
IMPERATIVE_NT'before printing the name of the iron gate while not opening ' {unit: 3} {imperative definition: 934}
SENTENCE_NT'cold comfort ice cream is north of a metal door' {unit: 3} {classified} {interpretation of subject: infs'iron gate'}
VERB_NT'is north of' {verb 'be' 3p s act IS_TENSE +ve} {prep1: north of}
PROPER_NOUN_NT'cold comfort ice cream' {refined} {refers: infs'cold comfort ice cream'} {eval: CONSTANT_NT'cold comfort ice cream' {kind: object} {instance: I95'cold comfort ice cream'} {enumeration: 0}} {created here}
@ -639,8 +639,8 @@ ROOT_NT
VERB_NT'understand' {verb 'understand' 3p p act IS_TENSE +ve} {prep2: as} {special meaning: understand-as}
UNPARSED_NOUN_NT'"glass"'
UNPARSED_NOUN_NT'the box'
IMPERATIVE_NT'instead of attacking the closed emergency box' {unit: 3} {imperative definition: 934}
IMPERATIVE_NT'instead of attacking the open emergency box' {unit: 3} {imperative definition: 935}
IMPERATIVE_NT'instead of attacking the closed emergency box' {unit: 3} {imperative definition: 935}
IMPERATIVE_NT'instead of attacking the open emergency box' {unit: 3} {imperative definition: 936}
SENTENCE_NT'the syringe is in the emergency box' {unit: 3} {classified} {interpretation of subject: infs'emergency box'}
VERB_NT'is in' {verb 'be' 3p s act IS_TENSE +ve} {prep1: in}
PROPER_NOUN_NT'syringe' {definite 'the' n/m/f s/p nom/acc} {refined} {refers: infs'syringe'} {eval: CONSTANT_NT'syringe' {kind: object} {instance: I104'syringe'} {enumeration: 0}} {created here}
@ -743,8 +743,8 @@ ROOT_NT
SENTENCE_NT'use full-length room descriptions' {unit: 3} {classified}
VERB_NT'use' {verb 'use' 3p p act IS_TENSE +ve} {special meaning: use}
UNPARSED_NOUN_NT'full-length room descriptions'
IMPERATIVE_NT'after looking in an outdoors room' {unit: 3} {imperative definition: 936}
IMPERATIVE_NT'definition' {unit: 3} {imperative definition: 937}
IMPERATIVE_NT'after looking in an outdoors room' {unit: 3} {imperative definition: 937}
IMPERATIVE_NT'definition' {unit: 3} {imperative definition: 938}
DEFN_CONT_NT'a door is proximate' {unit: 3}
CODE_BLOCK_NT
CODE_BLOCK_NT {control structure: IF}
@ -765,7 +765,7 @@ ROOT_NT
INVOCATION_NT'yes' {phrase invoked: <no-inter-name>}
INVOCATION_LIST_NT'no' {unit: 3}
INVOCATION_NT'no' {phrase invoked: <no-inter-name>}
IMPERATIVE_NT'before exiting when the player is in an indoors room' {unit: 3} {imperative definition: 938}
IMPERATIVE_NT'before exiting when the player is in an indoors room' {unit: 3} {imperative definition: 939}
SENTENCE_NT'blank is a room' {unit: 3} {classified} {interpretation of subject: infs'key to the city'}
VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}
PROPER_NOUN_NT'blank' {refined} {refers: infs'blank'} {eval: CONSTANT_NT'blank' {kind: object} {instance: I108'blank'} {enumeration: 0}} {created here}
@ -991,15 +991,15 @@ ROOT_NT
PROPER_NOUN_NT'ned' {refined} {refers: infs'ned'} {eval: CONSTANT_NT'ned' {kind: man} {instance: I161'ned'} {enumeration: 0}}
RELATIONSHIP_NT'owns' {meaning: ownership-r} {refined}
PROPER_NOUN_NT'movie rental' {definite 'the' n/m/f s/p nom/acc} {refined} {refers: infs'movie rental store'} {eval: CONSTANT_NT'movie rental store' {kind: object} {instance: I99'movie rental store'} {enumeration: 0}}
IMPERATIVE_NT'after printing the name of someone ( called target ) while l' {unit: 3} {imperative definition: 939}
IMPERATIVE_NT'after printing the name of someone ( called target ) while l' {unit: 3} {imperative definition: 940}
SENTENCE_NT'the description of a person is usually "[The noun] [if the n' {unit: 3} {classified} {interpretation of subject: infs'ned'}
VERB_NT'is usually' {certainty:likely} {verb 'be' 3p s act IS_TENSE +ve}
X_OF_Y_NT'description of a person' {definite 'the' n/m/f s/p nom/acc} {refined}
COMMON_NOUN_NT'person' {indefinite 'a' n/m/f nom/acc s} {refined} {refers: infs'person'} {creation: << kind=person(x) >>} {eval: TEST_VALUE_NT}
PROPER_NOUN_NT'description' {refined} {eval: CONSTANT_NT {kind: texts valued property} {property: 'description'=text}}
PROPER_NOUN_NT'"[The noun] [if the noun is clean]looks healthy[otherwise]is' {refined} {eval: CONSTANT_NT'"[The noun] [if the noun is clean]looks healthy[otherwise]is' {kind: text}}
IMPERATIVE_NT'after examining another person who is carrying something' {unit: 3} {imperative definition: 940}
IMPERATIVE_NT'when play begins' {unit: 3} {imperative definition: 941}
IMPERATIVE_NT'after examining another person who is carrying something' {unit: 3} {imperative definition: 941}
IMPERATIVE_NT'when play begins' {unit: 3} {imperative definition: 942}
HEADING_NT'section 5 - conversation' {heading 5} {under: H5'section 5 - conversation'} {unit: 3}
SENTENCE_NT'a person has a table name called conversation' {unit: 3} {classified}
VERB_NT'has' {verb 'have' 3p s act IS_TENSE +ve}
@ -1008,8 +1008,8 @@ ROOT_NT
PROPERTYCALLED_NT'called'
UNPARSED_NOUN_NT'table name' {indefinite 'a' n/m/f nom/acc s}
UNPARSED_NOUN_NT'conversation'
IMPERATIVE_NT'instead of asking someone about something' {unit: 3} {imperative definition: 942}
IMPERATIVE_NT'instead of telling someone about something' {unit: 3} {imperative definition: 943}
IMPERATIVE_NT'instead of asking someone about something' {unit: 3} {imperative definition: 943}
IMPERATIVE_NT'instead of telling someone about something' {unit: 3} {imperative definition: 944}
SENTENCE_NT'understand "recap" or "recall" or "review" as recalling conv' {unit: 3} {classified}
VERB_NT'understand' {verb 'understand' 3p p act IS_TENSE +ve} {prep2: as} {special meaning: understand-as}
UNPARSED_NOUN_NT'"recap" or "recall" or "review"'
@ -1018,7 +1018,7 @@ ROOT_NT
VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve} {special meaning: new-action}
UNPARSED_NOUN_NT'recalling conversations'
UNPARSED_NOUN_NT'applying to nothing'
IMPERATIVE_NT'carry out recalling conversations' {unit: 3} {imperative definition: 944}
IMPERATIVE_NT'carry out recalling conversations' {unit: 3} {imperative definition: 945}
SENTENCE_NT'the conversation of a person is usually table of general chi' {unit: 3} {classified} {interpretation of subject: infs'person'}
VERB_NT'is usually' {certainty:likely} {verb 'be' 3p s act IS_TENSE +ve}
X_OF_Y_NT'conversation of a person' {definite 'the' n/m/f s/p nom/acc} {refined}
@ -1033,7 +1033,7 @@ ROOT_NT
PROPER_NOUN_NT'conversation' {refined} {eval: CONSTANT_NT {kind: table names valued property} {property: 'conversation'=table name}}
PROPER_NOUN_NT'table of vanessa chatter' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'table of vanessa chatter' {kind: table name} {table: table_data} {meaning: {table of vanessa chatter = TABLE_MC}}}
TABLE_NT'table of vanessa chatter topic reply summary turn stamp char' {unit: 3}
IMPERATIVE_NT'after reading a command' {unit: 3} {imperative definition: 945}
IMPERATIVE_NT'after reading a command' {unit: 3} {imperative definition: 946}
HEADING_NT'section 6 - movement description' {heading 5} {under: H5'section 6 - movement description'} {unit: 3}
SENTENCE_NT'a person has some text called walk style' {unit: 3} {classified}
VERB_NT'has' {verb 'have' 3p s act IS_TENSE +ve}
@ -1080,8 +1080,8 @@ ROOT_NT
PROPER_NOUN_NT'"sashay"' {refined} {eval: CONSTANT_NT'"sashay"' {kind: text}}
TABLE_NT'table of visible exits character second third heading chosen' {unit: 3}
TABLE_NT'table of visible entrances character second third heading ch' {unit: 3}
IMPERATIVE_NT'to clear ( current table - a table name )' {unit: 3} {imperative definition: 946}
IMPERATIVE_NT'to tidy departures of ( current table - a table name )' {unit: 3} {imperative definition: 947}
IMPERATIVE_NT'to clear ( current table - a table name )' {unit: 3} {imperative definition: 947}
IMPERATIVE_NT'to tidy departures of ( current table - a table name )' {unit: 3} {imperative definition: 948}
SENTENCE_NT'a door has a person called last opener' {unit: 3} {classified} {interpretation of subject: infs'person'}
VERB_NT'has' {verb 'have' 3p s act IS_TENSE +ve}
COMMON_NOUN_NT'door' {indefinite 'a' n/m/f nom/acc s} {refined} {refers: infs'door'} {creation: << kind=door(x) >>} {eval: TEST_VALUE_NT}
@ -1089,21 +1089,21 @@ ROOT_NT
PROPERTYCALLED_NT'called'
UNPARSED_NOUN_NT'person' {indefinite 'a' n/m/f nom/acc s}
UNPARSED_NOUN_NT'last opener'
IMPERATIVE_NT'report someone opening a door' {unit: 3} {imperative definition: 948}
IMPERATIVE_NT'report someone going through a door ( called route )' {unit: 3} {imperative definition: 949}
IMPERATIVE_NT'report someone opening a door' {unit: 3} {imperative definition: 949}
IMPERATIVE_NT'report someone going through a door ( called route )' {unit: 3} {imperative definition: 950}
SENTENCE_NT'the last thing named is a thing that varies' {unit: 3} {classified} {interpretation of subject: infs'door'}
VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}
PROPER_NOUN_NT'last thing named' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: NONLOCAL_VARIABLE_NT'last thing named' {nonlocal: 'last thing named'(var)thing}} {created here}
COMMON_NOUN_NT'thing that varies' {indefinite 'a' n/m/f nom/acc s} {refined} {refers: infs'values variable-pointer'-k} {creation: << kind=things variable-pointer(x) >>} {eval: TEST_VALUE_NT}
IMPERATIVE_NT'before printing the name of something ( called target ) whic' {unit: 3} {imperative definition: 950}
IMPERATIVE_NT'report someone going a direction' {unit: 3} {imperative definition: 951}
IMPERATIVE_NT'this is the movement reporting rule' {unit: 3} {imperative definition: 952}
IMPERATIVE_NT'to generate descriptions from ( current table - a table name' {unit: 3} {imperative definition: 953}
IMPERATIVE_NT'before printing the name of something ( called target ) whic' {unit: 3} {imperative definition: 951}
IMPERATIVE_NT'report someone going a direction' {unit: 3} {imperative definition: 952}
IMPERATIVE_NT'this is the movement reporting rule' {unit: 3} {imperative definition: 953}
IMPERATIVE_NT'to generate descriptions from ( current table - a table name' {unit: 3} {imperative definition: 954}
SENTENCE_NT'the last person named is a person that varies' {unit: 3} {classified} {interpretation of subject: infs'door'}
VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}
PROPER_NOUN_NT'last person named' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: NONLOCAL_VARIABLE_NT'last person named' {nonlocal: 'last person named'(var)person}} {created here}
COMMON_NOUN_NT'person that varies' {indefinite 'a' n/m/f nom/acc s} {refined} {refers: infs'values variable-pointer'-k} {creation: << kind=people variable-pointer(x) >>} {eval: TEST_VALUE_NT}
IMPERATIVE_NT'before printing the name of a person ( called target )' {unit: 3} {imperative definition: 954}
IMPERATIVE_NT'before printing the name of a person ( called target )' {unit: 3} {imperative definition: 955}
SENTENCE_NT'group size is a number that varies' {unit: 3} {classified} {interpretation of subject: infs'door'}
VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}
PROPER_NOUN_NT'group size' {refined} {eval: NONLOCAL_VARIABLE_NT'group size' {nonlocal: 'group size'(var)number}} {created here}
@ -1112,19 +1112,19 @@ ROOT_NT
VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}
PROPER_NOUN_NT'group size' {refined} {eval: NONLOCAL_VARIABLE_NT'group size' {nonlocal: 'group size'(var)number} {meaning: {group size = VARIABLE_MC}}}
PROPER_NOUN_NT'1' {refined} {eval: CONSTANT_NT'1' {kind: number} {explicit literal} {number: 1}}
IMPERATIVE_NT'to clear marked people' {unit: 3} {imperative definition: 955}
IMPERATIVE_NT'before listing nondescript items' {unit: 3} {imperative definition: 956}
IMPERATIVE_NT'to describe patients' {unit: 3} {imperative definition: 957}
IMPERATIVE_NT'to say ( named character - a man ) as pronoun' {unit: 3} {imperative definition: 958}
IMPERATIVE_NT'to say ( named character - a woman ) as pronoun' {unit: 3} {imperative definition: 959}
IMPERATIVE_NT'to say looks as though dipped in for ( index - a number )' {unit: 3} {imperative definition: 960}
IMPERATIVE_NT'to clear marked people' {unit: 3} {imperative definition: 956}
IMPERATIVE_NT'before listing nondescript items' {unit: 3} {imperative definition: 957}
IMPERATIVE_NT'to describe patients' {unit: 3} {imperative definition: 958}
IMPERATIVE_NT'to say ( named character - a man ) as pronoun' {unit: 3} {imperative definition: 959}
IMPERATIVE_NT'to say ( named character - a woman ) as pronoun' {unit: 3} {imperative definition: 960}
IMPERATIVE_NT'to say looks as though dipped in for ( index - a number )' {unit: 3} {imperative definition: 961}
TABLE_NT'table of dipping phrases dipping "looks as though dipped in"' {unit: 3}
SENTENCE_NT'a door is usually scenery' {unit: 3} {classified} {interpretation of subject: infs'door'}
VERB_NT'is usually' {certainty:likely} {verb 'be' 3p s act IS_TENSE +ve}
COMMON_NOUN_NT'door' {indefinite 'a' n/m/f nom/acc s} {refined} {refers: infs'door'} {creation: << kind=door(x) >>} {eval: TEST_VALUE_NT}
ADJECTIVE_NT'scenery' {refined} {predicate: scenery} {creation: << scenery(x) ^ scenery(x) >>}
IMPERATIVE_NT'to make delimiter ( index - a number ) of ( count - a number' {unit: 3} {imperative definition: 961}
IMPERATIVE_NT'to say optional comma' {unit: 3} {imperative definition: 962}
IMPERATIVE_NT'to make delimiter ( index - a number ) of ( count - a number' {unit: 3} {imperative definition: 962}
IMPERATIVE_NT'to say optional comma' {unit: 3} {imperative definition: 963}
SENTENCE_NT'test me with go to cold comfort / z / z / z / z / ask vaness' {unit: 3} {classified}
VERB_NT'test' {verb 'test' 3p p act IS_TENSE +ve} {prep2: with} {special meaning: test-with}
UNPARSED_NOUN_NT'me'

View file

@ -1,29 +1,30 @@
100.0% in inform7 run
67.5% in compilation to Inter
45.9% in //Sequence::undertake_queued_tasks//
5.0% in //MajorNodes::pre_pass//
3.4% in //MajorNodes::pass_1//
1.5% in //ImperativeDefinitions::assess_all//
1.5% in //RTKindConstructors::compile//
1.5% in //RTPhrasebook::compile_entries//
68.3% in compilation to Inter
46.3% in //Sequence::undertake_queued_tasks//
4.7% in //MajorNodes::pre_pass//
3.6% in //MajorNodes::pass_1//
1.8% in //ImperativeDefinitions::assess_all//
1.4% in //RTKindConstructors::compile//
1.4% in //RTPhrasebook::compile_entries//
1.1% in //Sequence::lint_inter//
0.7% in //ImperativeDefinitions::compile_first_block//
0.7% in //Sequence::undertake_queued_tasks//
0.3% in //CompletionModule::compile//
0.3% in //ImperativeDefinitions::compile_first_block//
0.3% in //MajorNodes::pass_2//
0.3% in //RTKindConstructors::compile_permissions//
0.3% in //Sequence::undertake_queued_tasks//
0.3% in //Sequence::undertake_queued_tasks//
0.3% in //World::stage_V//
4.6% not specifically accounted for
27.7% in running Inter pipeline
9.6% in step 14/15: generate inform6 -> auto.inf
7.3% in step 5/15: load-binary-kits
5.7% in step 6/15: make-synoptic-module
1.9% in step 9/15: make-identifiers-unique
4.4% not specifically accounted for
27.5% in running Inter pipeline
9.1% in step 14/15: generate inform6 -> auto.inf
6.9% in step 5/15: load-binary-kits
5.8% in step 6/15: make-synoptic-module
1.8% in step 9/15: make-identifiers-unique
0.3% in step 11/15: eliminate-redundant-labels
0.3% in step 12/15: eliminate-redundant-operations
0.3% in step 4/15: compile-splats
0.3% in step 7/15: shorten-wiring
0.3% in step 8/15: detect-indirect-calls
1.5% not specifically accounted for
3.8% in supervisor
0.8% not specifically accounted for
1.8% not specifically accounted for
3.6% in supervisor
0.4% not specifically accounted for

View file

@ -1486,12 +1486,13 @@ Definition: a text is substituted rather than unsubstituted if I6 routine
Definition: a table name is empty rather than non-empty if the number of filled rows in it is 0.
Definition: a table name is full rather than non-full if the number of blank rows in it is 0.
Definition: a rulebook is empty rather than non-empty if I6 routine "RulebookEmpty" says so (it
contains no rules, so that following it does nothing and makes no decision).
Definition: a nothing based rulebook is empty rather than non-empty if I6 routine
"RulebookEmpty" says so (it contains no rules, so that following it does
nothing and makes no decision).
Definition: an activity is empty rather than non-empty if I6 routine "ActivityEmpty" says so (its
before, for and after rulebooks are all empty).
Definition: an activity is going on if I6 routine "TestActivity" says so (one
Definition: an activity on nothing is empty rather than non-empty if I6 routine
"ActivityEmpty" says so (its before, for and after rulebooks are all empty).
Definition: an activity on nothing is going on if I6 routine "TestActivity" says so (one
of its three rulebooks is currently being run).
Definition: a list of values is empty rather than non-empty if I6 routine

View file

@ -2,7 +2,7 @@
"is": {
"type": "kit",
"title": "Architecture16Kit",
"version": "10.2.0-beta+6W70"
"version": "10.2.0-beta+6W71"
},
"compatibility": "16-bit",
"kit-details": {

View file

@ -2,7 +2,7 @@
"is": {
"type": "kit",
"title": "Architecture32Kit",
"version": "10.2.0-beta+6W70"
"version": "10.2.0-beta+6W71"
},
"compatibility": "32-bit",
"kit-details": {

View file

@ -2,7 +2,7 @@
"is": {
"type": "kit",
"title": "BasicInformKit",
"version": "10.2.0-beta+6W70"
"version": "10.2.0-beta+6W71"
},
"needs": [ {
"need": {

View file

@ -2,7 +2,7 @@
"is": {
"type": "kit",
"title": "CommandParserKit",
"version": "10.2.0-beta+6W70"
"version": "10.2.0-beta+6W71"
},
"needs": [ {
"need": {

View file

@ -2,7 +2,7 @@
"is": {
"type": "kit",
"title": "EnglishLanguageKit",
"version": "10.2.0-beta+6W70"
"version": "10.2.0-beta+6W71"
},
"needs": [ {
"need": {

View file

@ -2,7 +2,7 @@
"is": {
"type": "kit",
"title": "WorldModelKit",
"version": "10.2.0-beta+6W70"
"version": "10.2.0-beta+6W71"
},
"needs": [ {
"need": {

View file

@ -76,7 +76,7 @@
</tr>
<tr class="stripeone">
<td style="white-space:nowrap;" align="left" valign="top" height="20">
object [15]&nbsp;<a href=#A234><img border=0 src=inform:/doc_images/Below.png></a>&nbsp;&nbsp;&nbsp;&nbsp;
object [15]&nbsp;<a href=#A23><img border=0 src=inform:/doc_images/Below.png></a>&nbsp;&nbsp;&nbsp;&nbsp;
</td>
<td align="left" valign="top">
north&nbsp;
@ -370,7 +370,7 @@
</tr>
<tr class="stripetwo">
<td style="white-space:nowrap;" align="left" valign="top" height="20">
number&nbsp;<a href="Kinds.html?segment2"><img border=0 src=inform:/doc_images/calc1.png></a>&nbsp;<a href=inform:/doc225.html><img border=0 src=inform:/doc_images/help.png></a>&nbsp;<a href=#A1362><img border=0 src=inform:/doc_images/Below.png></a>&nbsp;&nbsp;&nbsp;&nbsp;
number&nbsp;<a href="Kinds.html?segment2"><img border=0 src=inform:/doc_images/calc1.png></a>&nbsp;<a href=inform:/doc225.html><img border=0 src=inform:/doc_images/help.png></a>&nbsp;<a href=#A25><img border=0 src=inform:/doc_images/Below.png></a>&nbsp;&nbsp;&nbsp;&nbsp;
</td>
<td align="left" valign="top">
0&nbsp;
@ -387,7 +387,7 @@
</tr>
<tr class="stripeone">
<td style="white-space:nowrap;" align="left" valign="top" height="20">
real number&nbsp;<a href="Kinds.html?segment2"><img border=0 src=inform:/doc_images/calc1.png></a>&nbsp;<a href=inform:/doc225.html><img border=0 src=inform:/doc_images/help.png></a>&nbsp;<a href=#A1363><img border=0 src=inform:/doc_images/Below.png></a>&nbsp;&nbsp;&nbsp;&nbsp;
real number&nbsp;<a href="Kinds.html?segment2"><img border=0 src=inform:/doc_images/calc1.png></a>&nbsp;<a href=inform:/doc225.html><img border=0 src=inform:/doc_images/help.png></a>&nbsp;<a href=#A26><img border=0 src=inform:/doc_images/Below.png></a>&nbsp;&nbsp;&nbsp;&nbsp;
</td>
<td align="left" valign="top">
0&nbsp;
@ -404,7 +404,7 @@
</tr>
<tr class="stripetwo">
<td style="white-space:nowrap;" align="left" valign="top" height="20">
time&nbsp;<a href="Kinds.html?segment2"><img border=0 src=inform:/doc_images/calc1.png></a>&nbsp;<a href=inform:/doc138.html><img border=0 src=inform:/doc_images/help.png></a>&nbsp;<a href=#A1379><img border=0 src=inform:/doc_images/Below.png></a>&nbsp;&nbsp;&nbsp;&nbsp;
time&nbsp;<a href="Kinds.html?segment2"><img border=0 src=inform:/doc_images/calc1.png></a>&nbsp;<a href=inform:/doc138.html><img border=0 src=inform:/doc_images/help.png></a>&nbsp;<a href=#A42><img border=0 src=inform:/doc_images/Below.png></a>&nbsp;&nbsp;&nbsp;&nbsp;
</td>
<td align="left" valign="top">
9:00 AM&nbsp;
@ -421,7 +421,7 @@
</tr>
<tr class="stripeone">
<td style="white-space:nowrap;" align="left" valign="top" height="20">
truth state&nbsp;<a href=inform:/doc161.html><img border=0 src=inform:/doc_images/help.png></a>&nbsp;<a href=#A1364><img border=0 src=inform:/doc_images/Below.png></a>&nbsp;&nbsp;&nbsp;&nbsp;
truth state&nbsp;<a href=inform:/doc161.html><img border=0 src=inform:/doc_images/help.png></a>&nbsp;<a href=#A27><img border=0 src=inform:/doc_images/Below.png></a>&nbsp;&nbsp;&nbsp;&nbsp;
</td>
<td align="left" valign="top">
false&nbsp;
@ -438,7 +438,7 @@
</tr>
<tr class="stripetwo">
<td style="white-space:nowrap;" align="left" valign="top" height="20">
text&nbsp;<a href=#A1365><img border=0 src=inform:/doc_images/Below.png></a>&nbsp;&nbsp;&nbsp;&nbsp;
text&nbsp;<a href=#A28><img border=0 src=inform:/doc_images/Below.png></a>&nbsp;&nbsp;&nbsp;&nbsp;
</td>
<td align="left" valign="top">
""&nbsp;
@ -455,7 +455,7 @@
</tr>
<tr class="stripeone">
<td style="white-space:nowrap;" align="left" valign="top" height="20">
snippet&nbsp;<a href=inform:/doc317.html><img border=0 src=inform:/doc_images/help.png></a>&nbsp;<a href=#A1366><img border=0 src=inform:/doc_images/Below.png></a>&nbsp;&nbsp;&nbsp;&nbsp;
snippet&nbsp;<a href=inform:/doc317.html><img border=0 src=inform:/doc_images/help.png></a>&nbsp;<a href=#A29><img border=0 src=inform:/doc_images/Below.png></a>&nbsp;&nbsp;&nbsp;&nbsp;
</td>
<td align="left" valign="top">
<i>word 1 of command</i>&nbsp;
@ -472,7 +472,7 @@
</tr>
<tr class="stripetwo">
<td style="white-space:nowrap;" align="left" valign="top" height="20">
unicode character&nbsp;<a href=#A1367><img border=0 src=inform:/doc_images/Below.png></a>&nbsp;&nbsp;&nbsp;&nbsp;
unicode character&nbsp;<a href=#A30><img border=0 src=inform:/doc_images/Below.png></a>&nbsp;&nbsp;&nbsp;&nbsp;
</td>
<td align="left" valign="top">
unicode 32 (<i>a space</i>)&nbsp;
@ -489,7 +489,7 @@
</tr>
<tr class="stripeone">
<td style="white-space:nowrap;" align="left" valign="top" height="20">
action&nbsp;<a href=inform:/doc194.html><img border=0 src=inform:/doc_images/help.png></a>&nbsp;<a href=#A1377><img border=0 src=inform:/doc_images/Below.png></a>&nbsp;&nbsp;&nbsp;&nbsp;
action&nbsp;<a href=inform:/doc194.html><img border=0 src=inform:/doc_images/help.png></a>&nbsp;<a href=#A40><img border=0 src=inform:/doc_images/Below.png></a>&nbsp;&nbsp;&nbsp;&nbsp;
</td>
<td align="left" valign="top">
waiting&nbsp;
@ -506,7 +506,7 @@
</tr>
<tr class="stripetwo">
<td style="white-space:nowrap;" align="left" valign="top" height="20">
scene&nbsp;<a href=inform:/doc148.html><img border=0 src=inform:/doc_images/help.png></a> [1]&nbsp;<a href=#A841><img border=0 src=inform:/doc_images/Below.png></a>&nbsp;&nbsp;&nbsp;&nbsp;
scene&nbsp;<a href=inform:/doc148.html><img border=0 src=inform:/doc_images/help.png></a> [1]&nbsp;<a href=#A24><img border=0 src=inform:/doc_images/Below.png></a>&nbsp;&nbsp;&nbsp;&nbsp;
</td>
<td align="left" valign="top">
Entire Game&nbsp;
@ -523,7 +523,7 @@
</tr>
<tr class="stripeone">
<td style="white-space:nowrap;" align="left" valign="top" height="20">
command parser error [25]&nbsp;<a href=#A1406><img border=0 src=inform:/doc_images/Below.png></a>&nbsp;&nbsp;&nbsp;&nbsp;
command parser error [25]&nbsp;<a href=#A16><img border=0 src=inform:/doc_images/Below.png></a>&nbsp;&nbsp;&nbsp;&nbsp;
</td>
<td align="left" valign="top">
didn't understand error&nbsp;
@ -540,7 +540,7 @@
</tr>
<tr class="stripetwo">
<td style="white-space:nowrap;" align="left" valign="top" height="20">
dynasty&nbsp;<a href="source:story.ni#line3"><img border=0 src=inform:/doc_images/Reveal.png></a> [4]&nbsp;<a href=#A1408><img border=0 src=inform:/doc_images/Below.png></a>&nbsp;&nbsp;&nbsp;&nbsp;
dynasty&nbsp;<a href="source:story.ni#line3"><img border=0 src=inform:/doc_images/Reveal.png></a> [4]&nbsp;<a href=#A21><img border=0 src=inform:/doc_images/Below.png></a>&nbsp;&nbsp;&nbsp;&nbsp;
</td>
<td align="left" valign="top">
Stuart&nbsp;
@ -557,7 +557,7 @@
</tr>
<tr class="stripeone">
<td style="white-space:nowrap;" align="left" valign="top" height="20">
use option&nbsp;<a href=#A1368><img border=0 src=inform:/doc_images/Below.png></a>&nbsp;&nbsp;&nbsp;&nbsp;
use option&nbsp;<a href=#A31><img border=0 src=inform:/doc_images/Below.png></a>&nbsp;&nbsp;&nbsp;&nbsp;
</td>
<td align="left" valign="top">
the ineffectual option&nbsp;
@ -574,7 +574,7 @@
</tr>
<tr class="stripetwo">
<td style="white-space:nowrap;" align="left" valign="top" height="20">
response&nbsp;<a href=#A1369><img border=0 src=inform:/doc_images/Below.png></a>&nbsp;&nbsp;&nbsp;&nbsp;
response&nbsp;<a href=#A32><img border=0 src=inform:/doc_images/Below.png></a>&nbsp;&nbsp;&nbsp;&nbsp;
</td>
<td align="left" valign="top">
?&nbsp;
@ -591,7 +591,7 @@
</tr>
<tr class="stripeone">
<td style="white-space:nowrap;" align="left" valign="top" height="20">
verb&nbsp;<a href=inform:/doc220.html><img border=0 src=inform:/doc_images/help.png></a>&nbsp;<a href=#A1370><img border=0 src=inform:/doc_images/Below.png></a>&nbsp;&nbsp;&nbsp;&nbsp;
verb&nbsp;<a href=inform:/doc220.html><img border=0 src=inform:/doc_images/help.png></a>&nbsp;<a href=#A33><img border=0 src=inform:/doc_images/Below.png></a>&nbsp;&nbsp;&nbsp;&nbsp;
</td>
<td align="left" valign="top">
verb be&nbsp;
@ -608,7 +608,7 @@
</tr>
<tr class="stripetwo">
<td style="white-space:nowrap;" align="left" valign="top" height="20">
table name&nbsp;<a href=inform:/doc258.html><img border=0 src=inform:/doc_images/help.png></a>&nbsp;<a href=#A1371><img border=0 src=inform:/doc_images/Below.png></a>&nbsp;&nbsp;&nbsp;&nbsp;
table name&nbsp;<a href=inform:/doc258.html><img border=0 src=inform:/doc_images/help.png></a>&nbsp;<a href=#A34><img border=0 src=inform:/doc_images/Below.png></a>&nbsp;&nbsp;&nbsp;&nbsp;
</td>
<td align="left" valign="top">
<i>a table with no rows or columns</i>&nbsp;
@ -625,7 +625,7 @@
</tr>
<tr class="stripeone">
<td style="white-space:nowrap;" align="left" valign="top" height="20">
<span class="indexgrey">equation name&nbsp;<a href=#A1372><img border=0 src=inform:/doc_images/Below.png></a></span>&nbsp;&nbsp;&nbsp;&nbsp;
<span class="indexgrey">equation name&nbsp;<a href=#A35><img border=0 src=inform:/doc_images/Below.png></a></span>&nbsp;&nbsp;&nbsp;&nbsp;
</td>
<td align="left" valign="top">
<span class="indexgrey"><i>an equation doing nothing</i></span>&nbsp;
@ -642,7 +642,7 @@
</tr>
<tr class="stripetwo">
<td style="white-space:nowrap;" align="left" valign="top" height="20">
rulebook outcome&nbsp;<a href=#A1373><img border=0 src=inform:/doc_images/Below.png></a>&nbsp;&nbsp;&nbsp;&nbsp;
rulebook outcome&nbsp;<a href=#A36><img border=0 src=inform:/doc_images/Below.png></a>&nbsp;&nbsp;&nbsp;&nbsp;
</td>
<td align="left" valign="top">
allow access&nbsp;
@ -659,7 +659,7 @@
</tr>
<tr class="stripeone">
<td style="white-space:nowrap;" align="left" valign="top" height="20">
<span class="indexgrey">external file&nbsp;<a href=inform:/doc382.html><img border=0 src=inform:/doc_images/help.png></a>&nbsp;<a href=#A1374><img border=0 src=inform:/doc_images/Below.png></a></span>&nbsp;&nbsp;&nbsp;&nbsp;
<span class="indexgrey">external file&nbsp;<a href=inform:/doc382.html><img border=0 src=inform:/doc_images/help.png></a>&nbsp;<a href=#A37><img border=0 src=inform:/doc_images/Below.png></a></span>&nbsp;&nbsp;&nbsp;&nbsp;
</td>
<td align="left" valign="top">
<span class="indexgrey"><i>a non-file</i></span>&nbsp;
@ -676,7 +676,7 @@
</tr>
<tr class="stripetwo">
<td style="white-space:nowrap;" align="left" valign="top" height="20">
<span class="indexgrey">internal file&nbsp;<a href=#A1375><img border=0 src=inform:/doc_images/Below.png></a></span>&nbsp;&nbsp;&nbsp;&nbsp;
<span class="indexgrey">internal file&nbsp;<a href=#A38><img border=0 src=inform:/doc_images/Below.png></a></span>&nbsp;&nbsp;&nbsp;&nbsp;
</td>
<td align="left" valign="top">
<span class="indexgrey"><i>a non-file</i></span>&nbsp;
@ -693,7 +693,7 @@
</tr>
<tr class="stripeone">
<td style="white-space:nowrap;" align="left" valign="top" height="20">
action name&nbsp;<a href=inform:/doc96.html><img border=0 src=inform:/doc_images/help.png></a>&nbsp;<a href=#A1378><img border=0 src=inform:/doc_images/Below.png></a>&nbsp;&nbsp;&nbsp;&nbsp;
action name&nbsp;<a href=inform:/doc96.html><img border=0 src=inform:/doc_images/help.png></a>&nbsp;<a href=#A41><img border=0 src=inform:/doc_images/Below.png></a>&nbsp;&nbsp;&nbsp;&nbsp;
</td>
<td align="left" valign="top">
waiting action&nbsp;
@ -710,7 +710,7 @@
</tr>
<tr class="stripetwo">
<td style="white-space:nowrap;" align="left" valign="top" height="20">
figure name&nbsp;<a href=inform:/doc374.html><img border=0 src=inform:/doc_images/help.png></a> [1]&nbsp;<a href=#A1380><img border=0 src=inform:/doc_images/Below.png></a>&nbsp;&nbsp;&nbsp;&nbsp;
figure name&nbsp;<a href=inform:/doc374.html><img border=0 src=inform:/doc_images/help.png></a> [1]&nbsp;<a href=#A43><img border=0 src=inform:/doc_images/Below.png></a>&nbsp;&nbsp;&nbsp;&nbsp;
</td>
<td align="left" valign="top">
Figure of cover&nbsp;
@ -727,7 +727,7 @@
</tr>
<tr class="stripeone">
<td style="white-space:nowrap;" align="left" valign="top" height="20">
<span class="indexgrey">sound name&nbsp;<a href=inform:/doc377.html><img border=0 src=inform:/doc_images/help.png></a>&nbsp;<a href=#A1381><img border=0 src=inform:/doc_images/Below.png></a></span>&nbsp;&nbsp;&nbsp;&nbsp;
<span class="indexgrey">sound name&nbsp;<a href=inform:/doc377.html><img border=0 src=inform:/doc_images/help.png></a>&nbsp;<a href=#A44><img border=0 src=inform:/doc_images/Below.png></a></span>&nbsp;&nbsp;&nbsp;&nbsp;
</td>
<td align="left" valign="top">
<span class="indexgrey"><i>a silent non-sound</i></span>&nbsp;
@ -749,7 +749,7 @@
</tr>
<tr class="stripetwo">
<td style="white-space:nowrap;" align="left" valign="top" height="20">
natural language [1]&nbsp;<a href=#A1384><img border=0 src=inform:/doc_images/Below.png></a>&nbsp;&nbsp;&nbsp;&nbsp;
natural language [1]&nbsp;<a href=#A0><img border=0 src=inform:/doc_images/Below.png></a>&nbsp;&nbsp;&nbsp;&nbsp;
</td>
<td align="left" valign="top">
English language&nbsp;
@ -766,7 +766,7 @@
</tr>
<tr class="stripeone">
<td style="white-space:nowrap;" align="left" valign="top" height="20">
grammatical tense&nbsp;<a href='inform://Extensions/Extensions/Graham%20Nelson/English%20Language.html' title="English Language by Graham Nelson" style="text-decoration: none"><img border=0 src=inform:/doc_images/Revealext.png></a> [5]&nbsp;<a href=#A1386><img border=0 src=inform:/doc_images/Below.png></a>&nbsp;&nbsp;&nbsp;&nbsp;
grammatical tense&nbsp;<a href='inform://Extensions/Extensions/Graham%20Nelson/English%20Language.html' title="English Language by Graham Nelson" style="text-decoration: none"><img border=0 src=inform:/doc_images/Revealext.png></a> [5]&nbsp;<a href=#A17><img border=0 src=inform:/doc_images/Below.png></a>&nbsp;&nbsp;&nbsp;&nbsp;
</td>
<td align="left" valign="top">
present tense&nbsp;
@ -783,7 +783,7 @@
</tr>
<tr class="stripetwo">
<td style="white-space:nowrap;" align="left" valign="top" height="20">
narrative viewpoint&nbsp;<a href='inform://Extensions/Extensions/Graham%20Nelson/English%20Language.html' title="English Language by Graham Nelson" style="text-decoration: none"><img border=0 src=inform:/doc_images/Revealext.png></a> [6]&nbsp;<a href=#A1387><img border=0 src=inform:/doc_images/Below.png></a>&nbsp;&nbsp;&nbsp;&nbsp;
narrative viewpoint&nbsp;<a href='inform://Extensions/Extensions/Graham%20Nelson/English%20Language.html' title="English Language by Graham Nelson" style="text-decoration: none"><img border=0 src=inform:/doc_images/Revealext.png></a> [6]&nbsp;<a href=#A18><img border=0 src=inform:/doc_images/Below.png></a>&nbsp;&nbsp;&nbsp;&nbsp;
</td>
<td align="left" valign="top">
first person singular&nbsp;
@ -800,7 +800,7 @@
</tr>
<tr class="stripeone">
<td style="white-space:nowrap;" align="left" valign="top" height="20">
grammatical case&nbsp;<a href='inform://Extensions/Extensions/Graham%20Nelson/English%20Language.html' title="English Language by Graham Nelson" style="text-decoration: none"><img border=0 src=inform:/doc_images/Revealext.png></a> [2]&nbsp;<a href=#A1388><img border=0 src=inform:/doc_images/Below.png></a>&nbsp;&nbsp;&nbsp;&nbsp;
grammatical case&nbsp;<a href='inform://Extensions/Extensions/Graham%20Nelson/English%20Language.html' title="English Language by Graham Nelson" style="text-decoration: none"><img border=0 src=inform:/doc_images/Revealext.png></a> [2]&nbsp;<a href=#A19><img border=0 src=inform:/doc_images/Below.png></a>&nbsp;&nbsp;&nbsp;&nbsp;
</td>
<td align="left" valign="top">
nominative&nbsp;
@ -817,7 +817,7 @@
</tr>
<tr class="stripetwo">
<td style="white-space:nowrap;" align="left" valign="top" height="20">
grammatical gender&nbsp;<a href='inform://Extensions/Extensions/Graham%20Nelson/English%20Language.html' title="English Language by Graham Nelson" style="text-decoration: none"><img border=0 src=inform:/doc_images/Revealext.png></a> [3]&nbsp;<a href=#A1389><img border=0 src=inform:/doc_images/Below.png></a>&nbsp;&nbsp;&nbsp;&nbsp;
grammatical gender&nbsp;<a href='inform://Extensions/Extensions/Graham%20Nelson/English%20Language.html' title="English Language by Graham Nelson" style="text-decoration: none"><img border=0 src=inform:/doc_images/Revealext.png></a> [3]&nbsp;<a href=#A20><img border=0 src=inform:/doc_images/Below.png></a>&nbsp;&nbsp;&nbsp;&nbsp;
</td>
<td align="left" valign="top">
neuter gender&nbsp;
@ -861,7 +861,7 @@
</tr>
<tr class="stripeone">
<td style="white-space:nowrap;" align="left" valign="top" height="20">
list of K&nbsp;<a href=inform:/doc350.html><img border=0 src=inform:/doc_images/help.png></a>&nbsp;<a href=#A1429><img border=0 src=inform:/doc_images/Below.png></a>&nbsp;&nbsp;&nbsp;&nbsp;
list of K&nbsp;<a href=inform:/doc350.html><img border=0 src=inform:/doc_images/help.png></a>&nbsp;<a href=#A46><img border=0 src=inform:/doc_images/Below.png></a>&nbsp;&nbsp;&nbsp;&nbsp;
</td>
<td align="left" valign="top" colspan="4">
{ }
@ -869,7 +869,7 @@
</tr>
<tr class="stripetwo">
<td style="white-space:nowrap;" align="left" valign="top" height="20">
phrase K -> L&nbsp;<a href=#A2185><img border=0 src=inform:/doc_images/Below.png></a>&nbsp;&nbsp;&nbsp;&nbsp;
phrase K -> L&nbsp;<a href=#A55><img border=0 src=inform:/doc_images/Below.png></a>&nbsp;&nbsp;&nbsp;&nbsp;
</td>
<td align="left" valign="top" colspan="4">
<i>always the default value of L</i>
@ -877,7 +877,7 @@
</tr>
<tr class="stripeone">
<td style="white-space:nowrap;" align="left" valign="top" height="20">
<span class="indexgrey"></span>relation<span class="indexgrey"> of K</span>&nbsp;<a href=#A2190><img border=0 src=inform:/doc_images/Below.png></a>&nbsp;&nbsp;&nbsp;&nbsp;
<span class="indexgrey"></span>relation<span class="indexgrey"> of K</span>&nbsp;<a href=#A57><img border=0 src=inform:/doc_images/Below.png></a>&nbsp;&nbsp;&nbsp;&nbsp;
</td>
<td align="left" valign="top" colspan="4">
<i>a relation never holding</i>
@ -885,7 +885,7 @@
</tr>
<tr class="stripetwo">
<td style="white-space:nowrap;" align="left" valign="top" height="20">
<span class="indexgrey">K based</span> rule<span class="indexgrey"> producing L</span>&nbsp;<a href=inform:/doc325.html><img border=0 src=inform:/doc_images/help.png></a>&nbsp;<a href=#A2193><img border=0 src=inform:/doc_images/Below.png></a>&nbsp;&nbsp;&nbsp;&nbsp;
<span class="indexgrey">K based</span> rule<span class="indexgrey"> producing L</span>&nbsp;<a href=inform:/doc325.html><img border=0 src=inform:/doc_images/help.png></a>&nbsp;<a href=#A58><img border=0 src=inform:/doc_images/Below.png></a>&nbsp;&nbsp;&nbsp;&nbsp;
</td>
<td align="left" valign="top" colspan="4">
the little-used do nothing rule
@ -893,7 +893,7 @@
</tr>
<tr class="stripeone">
<td style="white-space:nowrap;" align="left" valign="top" height="20">
<span class="indexgrey">K based</span> rulebook<span class="indexgrey"> producing L</span>&nbsp;<a href=inform:/doc325.html><img border=0 src=inform:/doc_images/help.png></a>&nbsp;<a href=#A2196><img border=0 src=inform:/doc_images/Below.png></a>&nbsp;&nbsp;&nbsp;&nbsp;
<span class="indexgrey">K based</span> rulebook<span class="indexgrey"> producing L</span>&nbsp;<a href=inform:/doc325.html><img border=0 src=inform:/doc_images/help.png></a>&nbsp;<a href=#A59><img border=0 src=inform:/doc_images/Below.png></a>&nbsp;&nbsp;&nbsp;&nbsp;
</td>
<td align="left" valign="top" colspan="4">
the action-processing rules
@ -901,7 +901,7 @@
</tr>
<tr class="stripetwo">
<td style="white-space:nowrap;" align="left" valign="top" height="20">
<span class="indexgrey"></span>activity<span class="indexgrey"> on K</span>&nbsp;<a href=inform:/doc285.html><img border=0 src=inform:/doc_images/help.png></a>&nbsp;<a href=#A2199><img border=0 src=inform:/doc_images/Below.png></a>&nbsp;&nbsp;&nbsp;&nbsp;
<span class="indexgrey"></span>activity<span class="indexgrey"> on K</span>&nbsp;<a href=inform:/doc285.html><img border=0 src=inform:/doc_images/help.png></a>&nbsp;<a href=#A60><img border=0 src=inform:/doc_images/Below.png></a>&nbsp;&nbsp;&nbsp;&nbsp;
</td>
<td align="left" valign="top" colspan="4">
printing the name
@ -909,7 +909,7 @@
</tr>
<tr class="stripeone">
<td style="white-space:nowrap;" align="left" valign="top" height="20">
description of K&nbsp;<a href=inform:/doc362.html><img border=0 src=inform:/doc_images/help.png></a>&nbsp;<a href=#A2205><img border=0 src=inform:/doc_images/Below.png></a>&nbsp;&nbsp;&nbsp;&nbsp;
description of K&nbsp;<a href=inform:/doc362.html><img border=0 src=inform:/doc_images/help.png></a>&nbsp;<a href=#A61><img border=0 src=inform:/doc_images/Below.png></a>&nbsp;&nbsp;&nbsp;&nbsp;
</td>
<td align="left" valign="top" colspan="4">
<i>matching nothing</i>
@ -917,7 +917,7 @@
</tr>
<tr class="stripetwo">
<td style="white-space:nowrap;" align="left" valign="top" height="20">
<span class="indexgrey">K valued</span> property<span class="indexgrey"></span>&nbsp;<a href=#A2207><img border=0 src=inform:/doc_images/Below.png></a>&nbsp;&nbsp;&nbsp;&nbsp;
<span class="indexgrey">K valued</span> property<span class="indexgrey"></span>&nbsp;<a href=#A62><img border=0 src=inform:/doc_images/Below.png></a>&nbsp;&nbsp;&nbsp;&nbsp;
</td>
<td align="left" valign="top" colspan="4">
--
@ -925,7 +925,7 @@
</tr>
<tr class="stripeone">
<td style="white-space:nowrap;" align="left" valign="top" height="20">
<span class="indexgrey">K valued</span> table<span class="indexgrey"></span> column<span class="indexgrey"></span>&nbsp;<a href=#A2209><img border=0 src=inform:/doc_images/Below.png></a>&nbsp;&nbsp;&nbsp;&nbsp;
<span class="indexgrey">K valued</span> table<span class="indexgrey"></span> column<span class="indexgrey"></span>&nbsp;<a href=#A63><img border=0 src=inform:/doc_images/Below.png></a>&nbsp;&nbsp;&nbsp;&nbsp;
</td>
<td align="left" valign="top" colspan="4">
--

View file

@ -5,6 +5,12 @@ to symmetric (for relations).
@ See test case |BIP-Adjectives|.
Something to watch out for here is that the domain of an adjective with an
intentionally broad kind has to be written in a way which considers covariance
and contravariance. Thus, "list of values" matches every list, because "list of K"
is covariant: but "activity on values" does not match every activity, because
"activity on K" is contravariant, and instead "activity on nothing" is needed.
=
Part Four - Adjectival Definitions
@ -24,12 +30,13 @@ Definition: a text is substituted rather than unsubstituted if I6 routine
Definition: a table name is empty rather than non-empty if the number of filled rows in it is 0.
Definition: a table name is full rather than non-full if the number of blank rows in it is 0.
Definition: a rulebook is empty rather than non-empty if I6 routine "RulebookEmpty" says so (it
contains no rules, so that following it does nothing and makes no decision).
Definition: a nothing based rulebook is empty rather than non-empty if I6 routine
"RulebookEmpty" says so (it contains no rules, so that following it does
nothing and makes no decision).
Definition: an activity is empty rather than non-empty if I6 routine "ActivityEmpty" says so (its
before, for and after rulebooks are all empty).
Definition: an activity is going on if I6 routine "TestActivity" says so (one
Definition: an activity on nothing is empty rather than non-empty if I6 routine
"ActivityEmpty" says so (its before, for and after rulebooks are all empty).
Definition: an activity on nothing is going on if I6 routine "TestActivity" says so (one
of its three rulebooks is currently being run).
Definition: a list of values is empty rather than non-empty if I6 routine

View file

@ -371,14 +371,14 @@ This is the print the final question rule:
repeat through the Table of Final Question Options:
if the only if victorious entry is false or the story has ended finally:
if there is a final response rule entry
or the final response activity entry [activity] is not empty:
or the final response activity entry is not empty:
if there is a final question wording entry, increase named options count by 1;
if the named options count is less than 1, abide by the immediately quit rule;
say "Would you like to " (A);
repeat through the Table of Final Question Options:
if the only if victorious entry is false or the story has ended finally:
if there is a final response rule entry
or the final response activity entry [activity] is not empty:
or the final response activity entry is not empty:
if there is a final question wording entry:
say final question wording entry;
decrease named options count by 1;
@ -397,7 +397,7 @@ This is the standard respond to final question rule:
repeat through the Table of Final Question Options:
if the only if victorious entry is false or the story has ended finally:
if there is a final response rule entry
or the final response activity entry [activity] is not empty:
or the final response activity entry is not empty:
if the player's command matches the topic entry:
if there is a final response rule entry, abide by final response rule entry;
otherwise carry out the final response activity entry activity;

View file

@ -132,7 +132,7 @@ or as paragraph of text in pass 2:
if (Metadata::read_optional_numeric(pack, I"^understandable")) under = "tick";
if (priority == 8) { repeat = NULL; props = NULL; under = NULL; }
ChartElement::begin_chart_row(OUT, session);
ChartElement::index_kind_name_cell(OUT, shaded, pack);
ChartElement::index_kind_name_cell(OUT, shaded, i, pack);
ChartElement::end_chart_row(OUT, shaded, pack, repeat, props, under);
break;
}
@ -240,7 +240,8 @@ which can have enumerated values but doesn't at the moment -- for instance, the
sound effects row is shaded if there are none.
=
int ChartElement::index_kind_name_cell(OUTPUT_STREAM, int shaded, inter_package *pack) {
int ChartElement::index_kind_name_cell(OUTPUT_STREAM, int shaded, int posn,
inter_package *pack) {
if (shaded) HTML::begin_span(OUT, I"indexgrey");
IndexUtilities::kind_name(OUT, pack, FALSE, TRUE);
if (Metadata::read_optional_numeric(pack, I"^is_quasinumerical")) {
@ -252,7 +253,7 @@ int ChartElement::index_kind_name_cell(OUTPUT_STREAM, int shaded, inter_package
IndexUtilities::link_to_documentation(OUT, pack);
int i = (int) Metadata::read_optional_numeric(pack, I"^instance_count");
if (i >= 1) WRITE(" [%d]", i);
IndexUtilities::below_link_numbered(OUT, pack->allocation_id);
IndexUtilities::below_link_numbered(OUT, posn);
if (shaded) HTML::end_span(OUT);
return shaded;
}
@ -312,7 +313,6 @@ void ChartElement::index_object_kind(OUTPUT_STREAM, tree_inventory *inv,
inter_symbol *class_s = Metadata::optional_symbol(pack, I"^object_class");
if (class_s == NULL) internal_error("no class for object kind");
text_stream *anchor = InterSymbol::identifier(class_s);
int shaded = FALSE;
@<Begin the object citation line@>;
@<Index the name part of the object citation@>;

View file

@ -131,6 +131,8 @@ and now poses a moral rather than gender-based question.
- "X is an activity on nothing" would incorrectly create an activity on objects,
resulting in an immediate contradiction. (Activities on nothing are not often
useful, which is why this bug has lasted so long.)
- "empty", as an adjective, was defined only on activities and rulebooks based
on objects
## Bugs fixed in the course of feature additions

View file

@ -1,15 +1,15 @@
Size of lexicon: 3135 excerpt meanings
Stored among 847 words out of total vocabulary of 10747
717 words have a start list: longest belongs to report (with 293 meanings)
Size of lexicon: 3141 excerpt meanings
Stored among 849 words out of total vocabulary of 10759
719 words have a start list: longest belongs to report (with 293 meanings)
15 words have an end list: longest belongs to case (with 6 meanings)
29 words have a middle list: longest belongs to to (with 4 meanings)
108 words have a subset list: longest belongs to street (with 4 meanings)
Number of attempts to retrieve: 110344
of which unsuccessful: 92205
of which successful: 18139
Number of attempts to retrieve: 110380
of which unsuccessful: 92237
of which successful: 18143
Total attempts to match against excerpt meanings: 277428
of which, total with incorrect hash codes: 254691
of which, total with correct hash codes: 22737
of which, total which matched: 19906
Total attempts to match against excerpt meanings: 279269
of which, total with incorrect hash codes: 256529
of which, total with correct hash codes: 22740
of which, total which matched: 19910

View file

@ -1,12 +1,12 @@
adjective: 140 items
article: 2 items
noun: 2389 items
noun: 2395 items
pronoun: 8 items
preposition: 274 items
determiner: 22 items
verb: 109 items
verb_form: 388 items
total in all categories: 3332
total in all categories: 3338
adjective: 'even'
adjective: 'odd'
@ -229,6 +229,7 @@ noun: proper: 'printed plural name'
noun: proper: 'property printed plural name'
noun: proper: 'indefinite article'
noun: proper: 'property indefinite article'
noun: proper: 'virtual machine startup rule'
noun: proper: 'abs function'
noun: proper: 'root function'
noun: proper: 'rsqr function'
@ -281,7 +282,6 @@ noun: proper: 'property matching key'
noun: proper: 'lock-fitting relation'
noun: proper: 'list grouping key'
noun: proper: 'property list grouping key'
noun: proper: 'declare everything initially unmentioned rule'
noun: proper: 'start in the correct scenes rule'
noun: proper: 'when play begins stage rule'
noun: proper: 'fix baseline scoring rule'
@ -289,6 +289,7 @@ noun: proper: 'display banner rule'
noun: proper: 'initial room description rule'
noun: proper: 'every turn stage rule'
noun: proper: 'early scene changing stage rule'
noun: proper: 'declare everything initially unmentioned rule'
noun: proper: 'late scene changing stage rule'
noun: proper: 'notify score changes rule'
noun: proper: 'when play ends stage rule'
@ -696,7 +697,14 @@ noun: proper: 'for starting the virtual machine rulebook'
noun: proper: 'after starting the virtual machine'
noun: proper: 'after starting the virtual machine rules'
noun: proper: 'after starting the virtual machine rulebook'
noun: proper: 'final code startup rule'
noun: proper: 'start capturing startup text rule'
noun: proper: 'platform specific startup rule'
noun: proper: 'initialise memory rule'
noun: proper: 'seed random number generator rule'
noun: proper: 'recover glk objects rule'
noun: proper: 'sound channel initialisation rule'
noun: proper: 'open built-in windows rule'
noun: proper: 'display captured startup text rule'
noun: proper: 'printing the name'
noun: proper: 'printing the name activity'
noun: proper: 'before printing the name'
@ -974,9 +982,7 @@ noun: proper: 'multiple action processing'
noun: proper: 'multiple action processing rules'
noun: proper: 'multiple action processing rulebook'
noun: proper: 'little-used do nothing rule'
noun: proper: 'virtual machine startup rule'
noun: proper: 'initialise memory rule'
noun: proper: 'seed random number generator rule'
noun: proper: 'initial whitespace rule'
noun: proper: 'update chronological records rule'
noun: proper: 'position player in model world rule'
noun: proper: 'adjust light rule'