mirror of
https://github.com/ganelson/inform.git
synced 2024-07-02 23:14:57 +03:00
merging latest master
This commit is contained in:
commit
a33f2a84d7
|
@ -1,6 +1,6 @@
|
|||
# Inform 7
|
||||
|
||||
[Version](notes/versioning.md): 10.2.0-beta+6W69 'Krypton' (2 July 2023)
|
||||
[Version](notes/versioning.md): 10.2.0-beta+6W71 'Krypton' (4 July 2023)
|
||||
|
||||
## About Inform
|
||||
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
Prerelease: beta
|
||||
Build Date: 2 July 2023
|
||||
Build Number: 6W69
|
||||
Build Date: 4 July 2023
|
||||
Build Number: 6W71
|
||||
|
|
|
@ -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>§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>§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">-->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">-->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">->(</span><span class="identifier-syntax">dict_start</span><span class="plain-syntax">->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">->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">)-->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">->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">->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">->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">->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">->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"> -> </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"> -> </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">
|
||||
|
|
|
@ -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">§1. Summary</a></li><li><a href="S-cpb.html#SP2">§2. Header layout</a></li><li><a href="S-cpb.html#SP3">§3. Release Number</a></li><li><a href="S-cpb.html#SP4">§4. Random Number Generator</a></li><li><a href="S-cpb.html#SP5">§5. Memory Allocation</a></li><li><a href="S-cpb.html#SP6">§6. Memcpy</a></li><li><a href="S-cpb.html#SP8">§8. Audiovisual Resources</a></li><li><a href="S-cpb.html#SP9">§9. Typography</a></li></ul><hr class="tocbar">
|
||||
|
||||
|
|
|
@ -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">§1. Stubs</a></li><li><a href="S-glk.html#SP2">§2. Definitions</a></li><li><a href="S-glk.html#SP3">§3. Debugging verb</a></li></ul><hr class="tocbar">
|
||||
<ul class="toc"><li><a href="S-glk.html#SP1">§1. Stubs</a></li><li><a href="S-glk.html#SP2">§2. Definitions</a></li><li><a href="S-glk.html#SP4">§4. Debugging verb</a></li></ul><hr class="tocbar">
|
||||
|
||||
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>§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>§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>§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">-->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">-->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">-->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">-->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">-->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">-->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">-->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">-->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>§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">
|
||||
|
|
|
@ -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>§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">§2. Capture startup text</a></li><li><a href="S-str.html#SP3">§3. Set up the Glk objects</a></li></ul><hr class="tocbar">
|
||||
|
||||
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>§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>§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>§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"> -> </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"> --> </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">-->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"> > </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>§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"><</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"> < </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">-->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">-->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">-->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">-->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">-->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">-->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">-->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">-->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">-->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">
|
||||
|
|
|
@ -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">
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -257,6 +257,9 @@ a previous match, setting them to the empty text.
|
|||
<span class="reserved-syntax">Array</span><span class="plain-syntax"> </span><span class="identifier-syntax">RE_Subexpressions</span><span class="plain-syntax"> --> </span><span class="constant-syntax">11</span><span class="plain-syntax">; </span><span class="comment-syntax">Address of node for this subexpression</span>
|
||||
<span class="reserved-syntax">Array</span><span class="plain-syntax"> </span><span class="identifier-syntax">Allocated_Match_Vars</span><span class="plain-syntax"> --> </span><span class="constant-syntax">10</span><span class="plain-syntax">; </span><span class="comment-syntax">Indexed text to hold values of the variables</span>
|
||||
|
||||
<span class="identifier-syntax">Global</span><span class="plain-syntax"> </span><span class="identifier-syntax">match0_idx</span><span class="plain-syntax">; </span><span class="comment-syntax">for plain text match, index of initial character match</span>
|
||||
<span class="identifier-syntax">Global</span><span class="plain-syntax"> </span><span class="identifier-syntax">match0_idx2</span><span class="plain-syntax">; </span><span class="comment-syntax">for plain text match, index of final character match</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">TEXT_TY_RE_DebugMatchVars</span><span class="plain-syntax"> </span><span class="identifier-syntax">txt</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">offset</span><span class="plain-syntax"> </span><span class="identifier-syntax">n</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">print</span><span class="plain-syntax"> </span><span class="identifier-syntax">RE_Subexpressions</span><span class="plain-syntax">-->10, </span><span class="string-syntax">" collecting subexps^"</span><span class="plain-syntax">;</span>
|
||||
|
@ -1717,6 +1720,8 @@ indeed useful where the blob type is <span class="extract"><span class="extract-
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">switch</span><span class="plain-syntax"> (</span><span class="identifier-syntax">ftxtype</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">REGEXP_BLOB</span><span class="plain-syntax">: </span><span class="identifier-syntax">i</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TEXT_TY_RE_CompileTree</span><span class="plain-syntax">(</span><span class="identifier-syntax">ftxt</span><span class="plain-syntax">, </span><span class="identifier-syntax">exactly</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">CHR_BLOB</span><span class="plain-syntax">: </span><span class="identifier-syntax">i</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TEXT_TY_CHR_CompileTree</span><span class="plain-syntax">(</span><span class="identifier-syntax">ftxt</span><span class="plain-syntax">, </span><span class="identifier-syntax">exactly</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">match0_idx</span><span class="plain-syntax"> = -1;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">match0_idx2</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">default</span><span class="plain-syntax">: </span><span class="string-syntax">"*** bad ftxtype ***"</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
|
||||
|
@ -1748,7 +1753,10 @@ indeed useful where the blob type is <span class="extract"><span class="extract-
|
|||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">print</span><span class="plain-syntax"> </span><span class="string-syntax">" ***^"</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">ftxtype</span><span class="plain-syntax"> == </span><span class="identifier-syntax">CHR_BLOB</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">match0_idx</span><span class="plain-syntax"> = </span><span class="identifier-syntax">RE_PACKET_space</span><span class="plain-syntax">--></span><span class="identifier-syntax">RE_DATA1</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">match0_idx2</span><span class="plain-syntax"> = </span><span class="identifier-syntax">RE_PACKET_space</span><span class="plain-syntax">--></span><span class="identifier-syntax">RE_DATA2</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">rtxt</span><span class="plain-syntax"> == </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">break</span><span class="plain-syntax">; </span><span class="comment-syntax">Accept only one match, replace nothing</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">rtxt</span><span class="plain-syntax"> ~= </span><span class="constant-syntax">0</span><span class="plain-syntax"> </span><span class="reserved-syntax">or</span><span class="plain-syntax"> </span><span class="constant-syntax">1</span><span class="plain-syntax">) {</span>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>§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">§1. Summary</a></li><li><a href="S-str.html#SP2">§2. The startup sequence</a></li><li><a href="S-str.html#SP3">§3. Initialise Memory Rule</a></li><li><a href="S-str.html#SP4">§4. Seed Random Number Generator Rule</a></li></ul><hr class="tocbar">
|
||||
|
||||
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>§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>§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"> & </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>§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">-->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">-->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">-->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">->(</span><span class="identifier-syntax">dict_start</span><span class="plain-syntax">->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">->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">)-->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">->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">->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">->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">->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">->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>§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"> -> </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"> -> </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"><=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">
|
||||
|
|
|
@ -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">-->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="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"> < </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">-->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="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"> < </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">-->(</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">-->(</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>
|
||||
|
|
|
@ -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">§1. Miscellany</a></li><li><a href="S-utl.html#SP2">§2. Final Code Dependencies</a></li><li><a href="S-utl.html#SP3">§3. Firebreak</a></li><li><a href="S-utl.html#SP4">§4. Print Decimal Number</a></li><li><a href="S-utl.html#SP5">§5. Print Text</a></li><li><a href="S-utl.html#SP6">§6. Print Or Run</a></li><li><a href="S-utl.html#SP7">§7. Saying Phrases</a></li><li><a href="S-utl.html#SP8">§8. Kinds</a></li><li><a href="S-utl.html#SP9">§9. Non-standard enumerations</a></li><li><a href="S-utl.html#SP10">§10. GenerateRandomNumber</a></li><li><a href="S-utl.html#SP11">§11. PrintSpaces</a></li><li><a href="S-utl.html#SP12">§12. SwapWorkflags</a></li><li><a href="S-utl.html#SP13">§13. TestUseOption</a></li><li><a href="S-utl.html#SP14">§14. ZRegion</a></li><li><a href="S-utl.html#SP15">§15. Arrcpy</a></li><li><a href="S-utl.html#SP16">§16. Verbs as Values</a></li><li><a href="S-utl.html#SP17">§17. Seed Random Number Generator Rule</a></li><li><a href="S-utl.html#SP18">§18. Regarding</a></li><li><a href="S-utl.html#SP19">§19. Say One Of</a></li><li><a href="S-utl.html#SP20">§20. Rounding</a></li><li><a href="S-utl.html#SP21">§21. Doing nothing</a></li></ul><hr class="tocbar">
|
||||
<ul class="toc"><li><a href="S-utl.html#SP1">§1. Miscellany</a></li><li><a href="S-utl.html#SP2">§2. Final Code Dependencies</a></li><li><a href="S-utl.html#SP3">§3. Firebreak</a></li><li><a href="S-utl.html#SP4">§4. Print Decimal Number</a></li><li><a href="S-utl.html#SP5">§5. Print Text</a></li><li><a href="S-utl.html#SP6">§6. Print Or Run</a></li><li><a href="S-utl.html#SP7">§7. Saying Phrases</a></li><li><a href="S-utl.html#SP8">§8. Kinds</a></li><li><a href="S-utl.html#SP9">§9. Non-standard enumerations</a></li><li><a href="S-utl.html#SP10">§10. GenerateRandomNumber</a></li><li><a href="S-utl.html#SP11">§11. PrintSpaces</a></li><li><a href="S-utl.html#SP12">§12. SwapWorkflags</a></li><li><a href="S-utl.html#SP13">§13. TestUseOption</a></li><li><a href="S-utl.html#SP14">§14. ZRegion</a></li><li><a href="S-utl.html#SP15">§15. Arrcpy</a></li><li><a href="S-utl.html#SP16">§16. Verbs as Values</a></li><li><a href="S-utl.html#SP17">§17. Regarding</a></li><li><a href="S-utl.html#SP18">§18. Say One Of</a></li><li><a href="S-utl.html#SP19">§19. Rounding</a></li><li><a href="S-utl.html#SP20">§20. Doing nothing</a></li></ul><hr class="tocbar">
|
||||
|
||||
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>§1. Miscellany. </b></p>
|
||||
|
||||
|
@ -119,7 +119,7 @@ MathJax = {
|
|||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>§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>§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"><=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>§18. Regarding. </b>These are used with adaptive text.
|
||||
<p class="commentary firstcommentary"><a id="SP17" class="paragraph-anchor"></a><b>§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>§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>§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>§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>§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>§21. Doing nothing. </b>Surprisingly, this function has a use.
|
||||
<p class="commentary firstcommentary"><a id="SP20" class="paragraph-anchor"></a><b>§20. Doing nothing. </b>Surprisingly, this function has a use.
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
|
|
@ -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">§1. Main</a></li><li><a href="S-ord.html#SP2">§2. Virtual Machine Startup Rule</a></li><li><a href="S-ord.html#SP3">§3. Initial Situation</a></li><li><a href="S-ord.html#SP4">§4. Initialise Memory Rule</a></li><li><a href="S-ord.html#SP5">§5. Position Player In Model World Rule</a></li><li><a href="S-ord.html#SP6">§6. Parse Command Rule</a></li><li><a href="S-ord.html#SP7">§7. Treat Parser Results</a></li><li><a href="S-ord.html#SP8">§8. Generate Action Rule</a></li><li><a href="S-ord.html#SP9">§9. Generate Multiple Actions</a></li><li><a href="S-ord.html#SP10">§10. Timed Events Rule</a></li><li><a href="S-ord.html#SP11">§11. Setting Timed Events</a></li><li><a href="S-ord.html#SP12">§12. Setting Time Of Day</a></li><li><a href="S-ord.html#SP13">§13. Advance Time Rule</a></li><li><a href="S-ord.html#SP14">§14. Note Object Acquisitions Rule</a></li><li><a href="S-ord.html#SP15">§15. Resurrect Player If Asked Rule</a></li><li><a href="S-ord.html#SP16">§16. Ask The Final Question Rule</a></li><li><a href="S-ord.html#SP17">§17. Read The Final Answer Rule</a></li><li><a href="S-ord.html#SP18">§18. Immediately Restart VM Rule</a></li><li><a href="S-ord.html#SP19">§19. Immediately Restore Saved Game Rule</a></li><li><a href="S-ord.html#SP20">§20. Immediately Quit Rule</a></li><li><a href="S-ord.html#SP21">§21. Immediately Undo Rule</a></li><li><a href="S-ord.html#SP22">§22. Print Obituary Headline Rule</a></li><li><a href="S-ord.html#SP23">§23. Print Final Score Rule</a></li><li><a href="S-ord.html#SP24">§24. Display Final Status Line Rule</a></li></ul><hr class="tocbar">
|
||||
<ul class="toc"><li><a href="S-ord.html#SP1">§1. Main</a></li><li><a href="S-ord.html#SP2">§2. Initial Whitespace Rule</a></li><li><a href="S-ord.html#SP3">§3. Initial Situation</a></li><li><a href="S-ord.html#SP4">§4. Initialise Memory Rule</a></li><li><a href="S-ord.html#SP5">§5. Position Player In Model World Rule</a></li><li><a href="S-ord.html#SP6">§6. Parse Command Rule</a></li><li><a href="S-ord.html#SP7">§7. Treat Parser Results</a></li><li><a href="S-ord.html#SP8">§8. Generate Action Rule</a></li><li><a href="S-ord.html#SP9">§9. Generate Multiple Actions</a></li><li><a href="S-ord.html#SP10">§10. Timed Events Rule</a></li><li><a href="S-ord.html#SP11">§11. Setting Timed Events</a></li><li><a href="S-ord.html#SP12">§12. Setting Time Of Day</a></li><li><a href="S-ord.html#SP13">§13. Advance Time Rule</a></li><li><a href="S-ord.html#SP14">§14. Note Object Acquisitions Rule</a></li><li><a href="S-ord.html#SP15">§15. Resurrect Player If Asked Rule</a></li><li><a href="S-ord.html#SP16">§16. Ask The Final Question Rule</a></li><li><a href="S-ord.html#SP17">§17. Read The Final Answer Rule</a></li><li><a href="S-ord.html#SP18">§18. Immediately Restart VM Rule</a></li><li><a href="S-ord.html#SP19">§19. Immediately Restore Saved Game Rule</a></li><li><a href="S-ord.html#SP20">§20. Immediately Quit Rule</a></li><li><a href="S-ord.html#SP21">§21. Immediately Undo Rule</a></li><li><a href="S-ord.html#SP22">§22. Print Obituary Headline Rule</a></li><li><a href="S-ord.html#SP23">§23. Print Final Score Rule</a></li><li><a href="S-ord.html#SP24">§24. Display Final Status Line Rule</a></li></ul><hr class="tocbar">
|
||||
|
||||
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>§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"> & </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>§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>§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"> & </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>§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>§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">--></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>
|
||||
|
|
|
@ -104,8 +104,8 @@ matches:
|
|||
<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><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">PASS_1_SMFT:</span>
|
||||
<span class="plain-syntax"> </span><a href="6-act.html#SP4" class="function-link"><span class="function-syntax">Activities::new</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">Kinds::unary_con</span><span class="plain-syntax">(</span><span class="identifier-syntax">CON_activity</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_nil</span><span class="plain-syntax">),</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Node::get_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">V</span><span class="plain-syntax">-></span><span class="element-syntax">next</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><a href="6-act.html#SP4" class="function-link"><span class="function-syntax">Activities::new</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">Kinds::unary_con</span><span class="plain-syntax">(</span><span class="identifier-syntax">CON_activity</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_object</span><span class="plain-syntax">),</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Node::get_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">V</span><span class="plain-syntax">-></span><span class="element-syntax">next</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">break</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">FALSE</span><span class="plain-syntax">;</span>
|
||||
|
|
|
@ -494,7 +494,7 @@ will be required to pass <span class="extract"><span class="extract-syntax"><
|
|||
<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">ACTIVITY_I6TR:</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-tr.html#SP8_2_2_1" class="named-paragraph-link"><span class="named-paragraph">Require the accessible-to form</span><span class="named-paragraph-number">8.2.2.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">global_pass_state</span><span class="plain-syntax">.</span><span class="element-syntax">pass</span><span class="plain-syntax"> == </span><span class="constant-syntax">2</span><span class="plain-syntax">) </span><a href="6-act.html#SP9" class="function-link"><span class="function-syntax">Activities::translates</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="identifier-syntax">p2</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">global_pass_state</span><span class="plain-syntax">.</span><span class="element-syntax">pass</span><span class="plain-syntax"> == </span><span class="constant-syntax">2</span><span class="plain-syntax">) </span><a href="6-act.html#SP8" class="function-link"><span class="function-syntax">Activities::translates</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="identifier-syntax">p2</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><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">VARIABLE_I6TR:</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">translates_into_verb</span><span class="plain-syntax"> == </span><span class="constant-syntax">TRANSLATION_DEPRECATED_FORM</span><span class="plain-syntax">)</span>
|
||||
|
|
|
@ -1118,7 +1118,7 @@ but not in this context.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">av</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">"failed to extract activity structure"</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">global_pass_state</span><span class="plain-syntax">.</span><span class="element-syntax">pass</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">if</span><span class="plain-syntax"> (</span><span class="function-syntax"><activity-name-formal></span><span class="plain-syntax">(</span><span class="identifier-syntax">Node::get_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">px</span><span class="plain-syntax">)))</span>
|
||||
<span class="plain-syntax"> </span><a href="6-act.html#SP10" class="function-link"><span class="function-syntax">Activities::add_variable</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">av</span><span class="plain-syntax">, </span><span class="identifier-syntax">py</span><span class="plain-syntax">-></span><span class="identifier-syntax">down</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="6-act.html#SP9" class="function-link"><span class="function-syntax">Activities::add_variable</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">av</span><span class="plain-syntax">, </span><span class="identifier-syntax">py</span><span class="plain-syntax">-></span><span class="identifier-syntax">down</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">UsingProblems::assertion_problem</span><span class="plain-syntax">(</span><span class="identifier-syntax">Task::syntax_tree</span><span class="plain-syntax">(), </span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">PM_BadActivityRef</span><span class="plain-syntax">),</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"an activity has to be formally referred to in a way making clear that "</span>
|
||||
|
@ -1830,7 +1830,7 @@ allow one case, where the declaration is redundant and harmless.)
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">Node::get_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">py</span><span class="plain-syntax">) != </span><span class="identifier-syntax">KindSubjects::from_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">K_object</span><span class="plain-syntax">)) &&</span>
|
||||
<span class="plain-syntax"> (</span><span class="identifier-syntax">InferenceSubjects::is_a_kind_of_object</span><span class="plain-syntax">(</span><span class="identifier-syntax">Node::get_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">py</span><span class="plain-syntax">)) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><a href="4-ass.html#SP8" class="function-link"><span class="function-syntax">Assertions::issue_value_equation_problem</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">px</span><span class="plain-syntax">, </span><span class="identifier-syntax">py</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-ass.html#SP6_3_39_6" class="named-paragraph-link"><span class="named-paragraph">Assert that X is an instance of Y</span><span class="named-paragraph-number">6.3.39.6</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-ass.html#SP6_3_39_5" class="named-paragraph-link"><span class="named-paragraph">Assert that X is an instance of Y</span><span class="named-paragraph-number">6.3.39.5</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</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="identifier-syntax">g_spec</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Node::get_evaluation</span><span class="plain-syntax">(</span><span class="identifier-syntax">py</span><span class="plain-syntax">);</span>
|
||||
|
@ -1853,15 +1853,10 @@ allow one case, where the declaration is redundant and harmless.)
|
|||
<span class="plain-syntax"> && (</span><span class="identifier-syntax">a_kind</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">Kinds::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">a_kind</span><span class="plain-syntax">, </span><span class="identifier-syntax">g_kind</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-ass.html#SP6_3_39_2" class="named-paragraph-link"><span class="named-paragraph">This sentence redundantly specifies the kind of value for a value</span><span class="named-paragraph-number">6.3.39.2</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">Kinds::get_construct</span><span class="plain-syntax">(</span><span class="identifier-syntax">a_kind</span><span class="plain-syntax">) == </span><span class="identifier-syntax">CON_activity</span><span class="plain-syntax">) &&</span>
|
||||
<span class="plain-syntax"> (</span><span class="identifier-syntax">Kinds::get_construct</span><span class="plain-syntax">(</span><span class="identifier-syntax">g_kind</span><span class="plain-syntax">) == </span><span class="identifier-syntax">CON_activity</span><span class="plain-syntax">) &&</span>
|
||||
<span class="plain-syntax"> (</span><span class="identifier-syntax">Kinds::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">Kinds::unary_construction_material</span><span class="plain-syntax">(</span><span class="identifier-syntax">a_kind</span><span class="plain-syntax">), </span><span class="identifier-syntax">K_object</span><span class="plain-syntax">)) &&</span>
|
||||
<span class="plain-syntax"> (</span><span class="identifier-syntax">Kinds::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">Kinds::unary_construction_material</span><span class="plain-syntax">(</span><span class="identifier-syntax">g_kind</span><span class="plain-syntax">), </span><span class="identifier-syntax">K_nil</span><span class="plain-syntax">)))</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-ass.html#SP6_3_39_3" class="named-paragraph-link"><span class="named-paragraph">Amend kind of activity so that it is based on nothing</span><span class="named-paragraph-number">6.3.39.3</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Kinds::get_construct</span><span class="plain-syntax">(</span><span class="identifier-syntax">a_kind</span><span class="plain-syntax">) == </span><span class="identifier-syntax">CON_description</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-ass.html#SP6_3_39_5" class="named-paragraph-link"><span class="named-paragraph">Issue problem for trying to use a description as a literal</span><span class="named-paragraph-number">6.3.39.5</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-ass.html#SP6_3_39_4" class="named-paragraph-link"><span class="named-paragraph">Issue problem for trying to use a description as a literal</span><span class="named-paragraph-number">6.3.39.4</span></a></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">var_set</span><span class="plain-syntax"> == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="4-ass.html#SP6_3_39_4" class="named-paragraph-link"><span class="named-paragraph">Dabble further in ruthless sarcasm</span><span class="named-paragraph-number">6.3.39.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">var_set</span><span class="plain-syntax"> == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="4-ass.html#SP6_3_39_3" class="named-paragraph-link"><span class="named-paragraph">Dabble further in ruthless sarcasm</span><span class="named-paragraph-number">6.3.39.3</span></a></span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_source</span><span class="plain-syntax">(1, </span><span class="identifier-syntax">current_sentence</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_wording</span><span class="plain-syntax">(2, </span><span class="identifier-syntax">Node::get_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">px</span><span class="plain-syntax">));</span>
|
||||
|
@ -1940,24 +1935,10 @@ file: this may possibly be useful to I6 hackers.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-ass.html#SP6_3_39">§6.3.39</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP6_3_39_3" class="paragraph-anchor"></a><b>§6.3.39.3. </b>This is a very special case. We get here from "X is an activity based on
|
||||
nothing" but not from "X is an activity", and so it can be used to override
|
||||
the default assumption about the basis of an activity.
|
||||
<p class="commentary firstcommentary"><a id="SP6_3_39_3" class="paragraph-anchor"></a><b>§6.3.39.3. </b>My, aren't we charming?
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Amend kind of activity so that it is based on nothing</span><span class="named-paragraph-number">6.3.39.3</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">activity</span><span class="plain-syntax"> *</span><span class="identifier-syntax">av</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Rvalues::to_activity</span><span class="plain-syntax">(</span><span class="identifier-syntax">Node::get_evaluation</span><span class="plain-syntax">(</span><span class="identifier-syntax">px</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">av</span><span class="plain-syntax">) </span><a href="6-act.html#SP5" class="function-link"><span class="function-syntax">Activities::base_on_nothing</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">av</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-ass.html#SP6_3_39">§6.3.39</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP6_3_39_4" class="paragraph-anchor"></a><b>§6.3.39.4. </b>My, aren't we charming?
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Dabble further in ruthless sarcasm</span><span class="named-paragraph-number">6.3.39.4</span></span><span class="comment-syntax"> =</span>
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Dabble further in ruthless sarcasm</span><span class="named-paragraph-number">6.3.39.3</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -1979,7 +1960,7 @@ the default assumption about the basis of an activity.
|
|||
<span class="plain-syntax"> }</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-ass.html#SP6_3_39">§6.3.39</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP6_3_39_5" class="paragraph-anchor"></a><b>§6.3.39.5. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Issue problem for trying to use a description as a literal</span><span class="named-paragraph-number">6.3.39.5</span></span><span class="comment-syntax"> =</span>
|
||||
<p class="commentary firstcommentary"><a id="SP6_3_39_4" class="paragraph-anchor"></a><b>§6.3.39.4. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Issue problem for trying to use a description as a literal</span><span class="named-paragraph-number">6.3.39.4</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -1992,13 +1973,13 @@ the default assumption about the basis of an activity.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-ass.html#SP6_3_39">§6.3.39</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP6_3_39_6" class="paragraph-anchor"></a><b>§6.3.39.6. </b>Creation has already taken place, in that X does now exist, but any
|
||||
<p class="commentary firstcommentary"><a id="SP6_3_39_5" class="paragraph-anchor"></a><b>§6.3.39.5. </b>Creation has already taken place, in that X does now exist, but any
|
||||
stipulations on X — that it should have certain properties, or be in a
|
||||
certain place, for instance — will not yet be enforced. These will be in
|
||||
the "creation proposition" of Y, and we now assert this to be true about X.
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Assert that X is an instance of Y</span><span class="named-paragraph-number">6.3.39.6</span></span><span class="comment-syntax"> =</span>
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Assert that X is an instance of Y</span><span class="named-paragraph-number">6.3.39.5</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
|
|
@ -525,7 +525,8 @@ from the tree.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax"> = </span><span class="identifier-syntax">GET_RW</span><span class="plain-syntax">(</span><span class="function-syntax"><grammatical-gender-marker></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">Annotations::write_int</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">, </span><span class="identifier-syntax">explicit_gender_marker_ANNOT</span><span class="plain-syntax">, </span><span class="function-syntax"><<r>></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="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="function-syntax"><creation-problem-diagnosis></span><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">)) </span><span class="identifier-syntax">W</span><span class="plain-syntax"> = </span><span class="identifier-syntax">EMPTY_WORDING</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">XW</span><span class="plain-syntax"> = </span><span class="identifier-syntax">W</span><span class="plain-syntax">; </span><span class="identifier-syntax">DocReferences::position_of_symbol</span><span class="plain-syntax">(&</span><span class="identifier-syntax">XW</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="function-syntax"><creation-problem-diagnosis></span><span class="plain-syntax">(</span><span class="identifier-syntax">XW</span><span class="plain-syntax">)) </span><span class="identifier-syntax">W</span><span class="plain-syntax"> = </span><span class="identifier-syntax">EMPTY_WORDING</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Node::set_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">, </span><span class="identifier-syntax">W</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">create_as</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">Kinds::Behaviour::is_object</span><span class="plain-syntax">(</span><span class="identifier-syntax">create_as</span><span class="plain-syntax">))) &&</span>
|
||||
<span class="plain-syntax"> (</span><span class="identifier-syntax">prevailing_mood</span><span class="plain-syntax"> != </span><span class="identifier-syntax">INITIALLY_CE</span><span class="plain-syntax">) &&</span>
|
||||
|
@ -916,7 +917,7 @@ them by asserting propositions to be true; we act directly.
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">activity</span><span class="plain-syntax"> *</span><span class="identifier-syntax">av</span><span class="plain-syntax"> = </span><a href="6-act.html#SP4" class="function-link"><span class="function-syntax">Activities::new</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">create_as</span><span class="plain-syntax">, </span><span class="identifier-syntax">W</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">activity</span><span class="plain-syntax"> *</span><span class="identifier-syntax">av</span><span class="plain-syntax"> = </span><a href="6-act.html#SP4" class="function-link"><span class="function-syntax">Activities::new</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">create_as</span><span class="plain-syntax">, </span><span class="identifier-syntax">W</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">av</span><span class="plain-syntax">) </span><span class="identifier-syntax">val</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Rvalues::from_activity</span><span class="plain-syntax">(</span><span class="identifier-syntax">av</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Annotations::write_int</span><span class="plain-syntax">(</span><span class="identifier-syntax">current_sentence</span><span class="plain-syntax">, </span><span class="identifier-syntax">clears_pronouns_ANNOT</span><span class="plain-syntax">, </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
|
|
|
@ -60,7 +60,7 @@ function togglePopup(material_id) {
|
|||
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../inform7n.html">Inform7</a></li><li><a href="index.html">assertions</a></li><li><a href="index.html#6">Chapter 6: Rules, Rulebooks and Activities</a></li><li><b>Activities</b></li></ul></div>
|
||||
<p class="purpose">To create and manage activities, which are bundles of rules for carrying out tasks.</p>
|
||||
|
||||
<ul class="toc"><li><a href="6-act.html#SP1">§1. Introduction</a></li><li><a href="6-act.html#SP10">§10. Activity variables</a></li></ul><hr class="tocbar">
|
||||
<ul class="toc"><li><a href="6-act.html#SP1">§1. Introduction</a></li><li><a href="6-act.html#SP9">§9. Activity variables</a></li></ul><hr class="tocbar">
|
||||
|
||||
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>§1. Introduction. </b>An activity is just a triple of rulebooks with related names, a common focus
|
||||
and a shared set of variables, so this will not be a long section of code.
|
||||
|
@ -142,20 +142,17 @@ special Preform of its own; here is the subject phrase:
|
|||
<p class="commentary firstcommentary"><a id="SP4" class="paragraph-anchor"></a><b>§4. </b></p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">activity</span><span class="plain-syntax"> *</span><span class="function-syntax">Activities::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">Activities::new</span></span>:<br/>New Activity Requests - <a href="3-nar.html#SP2">§2</a><br/>The Creator - <a href="4-tc.html#SP4_4_2_5">§4.4.2.5</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">activity</span><span class="plain-syntax"> *</span><span class="function-syntax">Activities::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">Activities::new</span></span>:<br/>New Activity Requests - <a href="3-nar.html#SP2">§2</a><br/>The Creator - <a href="4-tc.html#SP4_4_2_5">§4.4.2.5</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">bypassed</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">on_kind</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Kinds::unary_construction_material</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</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">kind_given</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">Kinds::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">on_kind</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_nil</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">kind_given</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">; </span><span class="identifier-syntax">on_kind</span><span class="plain-syntax"> = </span><span class="identifier-syntax">K_object</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">"So %W has kind given = %d, res = %u\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="identifier-syntax">kind_given</span><span class="plain-syntax">, </span><span class="identifier-syntax">on_kind</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">Kinds::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">on_kind</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_nil</span><span class="plain-syntax">)) </span><span class="identifier-syntax">kind_given</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">bypassed</span><span class="plain-syntax">) { </span><span class="identifier-syntax">kind_given</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">; </span><span class="identifier-syntax">on_kind</span><span class="plain-syntax"> = </span><span class="identifier-syntax">K_object</span><span class="plain-syntax">; }</span>
|
||||
<span class="plain-syntax"> </span><span class="function-syntax"><<ds>></span><span class="plain-syntax"> = -1;</span>
|
||||
<span class="plain-syntax"> </span><span class="function-syntax"><<future>></span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="function-syntax"><<hide>></span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="function-syntax"><activity-sentence-subject></span><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax"> = </span><span class="identifier-syntax">GET_RW</span><span class="plain-syntax">(</span><span class="function-syntax"><activity-new-name></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">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">doc_symbol</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Wordings::one_word</span><span class="plain-syntax">(</span><span class="function-syntax"><<ds>></span><span class="plain-syntax">);</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="6-act.html#SP4_1" class="named-paragraph-link"><span class="named-paragraph">The name can't have been used before</span><span class="named-paragraph-number">4.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="6-act.html#SP4_2" class="named-paragraph-link"><span class="named-paragraph">The kind the activity is performed on, if there is one, must be definite</span><span class="named-paragraph-number">4.2</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="6-act.html#SP4_3" class="named-paragraph-link"><span class="named-paragraph">If it is not of or for something, then it cannot have a kind</span><span class="named-paragraph-number">4.3</span></a></span><span class="plain-syntax">;</span>
|
||||
|
@ -173,9 +170,9 @@ special Preform of its own; here is the subject phrase:
|
|||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">av</span><span class="plain-syntax">-></span><span class="element-syntax">activity_variables</span><span class="plain-syntax"> = </span><a href="6-sv.html#SP6" class="function-link"><span class="function-syntax">SharedVariables::new_set</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">av</span><span class="plain-syntax">-></span><span class="element-syntax">compilation_data</span><span class="plain-syntax">.</span><span class="identifier-syntax">variables_id</span><span class="plain-syntax">);</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">av</span><span class="plain-syntax">-></span><span class="element-syntax">before_rules</span><span class="plain-syntax"> = </span><a href="6-act.html#SP7" class="function-link"><span class="function-syntax">Activities::make_rulebook</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">av</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">av</span><span class="plain-syntax">-></span><span class="element-syntax">for_rules</span><span class="plain-syntax"> = </span><a href="6-act.html#SP7" class="function-link"><span class="function-syntax">Activities::make_rulebook</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">av</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">av</span><span class="plain-syntax">-></span><span class="element-syntax">after_rules</span><span class="plain-syntax"> = </span><a href="6-act.html#SP7" class="function-link"><span class="function-syntax">Activities::make_rulebook</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">av</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">av</span><span class="plain-syntax">-></span><span class="element-syntax">before_rules</span><span class="plain-syntax"> = </span><a href="6-act.html#SP6" class="function-link"><span class="function-syntax">Activities::make_rulebook</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">av</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">av</span><span class="plain-syntax">-></span><span class="element-syntax">for_rules</span><span class="plain-syntax"> = </span><a href="6-act.html#SP6" class="function-link"><span class="function-syntax">Activities::make_rulebook</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">av</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">av</span><span class="plain-syntax">-></span><span class="element-syntax">after_rules</span><span class="plain-syntax"> = </span><a href="6-act.html#SP6" class="function-link"><span class="function-syntax">Activities::make_rulebook</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">av</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">);</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PluginCalls::new_activity_notify</span><span class="plain-syntax">(</span><span class="identifier-syntax">av</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">av</span><span class="plain-syntax">;</span>
|
||||
|
@ -252,20 +249,7 @@ it; actually two — for example, both "announcing" and "announcing activity
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">ACTIVITY_MC</span><span class="plain-syntax">, </span><span class="identifier-syntax">Rvalues::from_activity</span><span class="plain-syntax">(</span><span class="identifier-syntax">av</span><span class="plain-syntax">), </span><span class="identifier-syntax">Task::language_of_syntax</span><span class="plain-syntax">());</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="6-act.html#SP4">§4</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP5" class="paragraph-anchor"></a><b>§5. </b>The above mechanism for assuming that activities must be based on something —
|
||||
objects, failing anything else — can be wrong, and if so, the assertions
|
||||
machinery call this:
|
||||
</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">Activities::base_on_nothing</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">Activities::base_on_nothing</span></span>:<br/>Assertions - <a href="4-ass.html#SP6_3_39_3">§6.3.39.3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">activity</span><span class="plain-syntax"> *</span><span class="identifier-syntax">av</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">av</span><span class="plain-syntax">-></span><span class="element-syntax">activity_on_what_kind</span><span class="plain-syntax"> = </span><span class="identifier-syntax">K_nil</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><a href="6-rlb.html#SP2_2" class="function-link"><span class="function-syntax">Rulebooks::base_on_nothing</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">av</span><span class="plain-syntax">-></span><span class="element-syntax">before_rules</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="6-rlb.html#SP2_2" class="function-link"><span class="function-syntax">Rulebooks::base_on_nothing</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">av</span><span class="plain-syntax">-></span><span class="element-syntax">for_rules</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="6-rlb.html#SP2_2" class="function-link"><span class="function-syntax">Rulebooks::base_on_nothing</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">av</span><span class="plain-syntax">-></span><span class="element-syntax">after_rules</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP6" class="paragraph-anchor"></a><b>§6. </b>And its rulebooks are named with these constructions:
|
||||
<p class="commentary firstcommentary"><a id="SP5" class="paragraph-anchor"></a><b>§5. </b>And its rulebooks are named with these constructions:
|
||||
</p>
|
||||
|
||||
<pre class="Preform-displayed-code all-displayed-code code-font">
|
||||
|
@ -275,10 +259,10 @@ machinery call this:
|
|||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">after</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">...</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This is <a href="../words-module/4-ap.html" class="internal">Preform grammar</a>, not regular C code.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP7" class="paragraph-anchor"></a><b>§7. </b></p>
|
||||
<p class="commentary firstcommentary"><a id="SP6" class="paragraph-anchor"></a><b>§6. </b></p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">rulebook</span><span class="plain-syntax"> *</span><span class="function-syntax">Activities::make_rulebook</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">Activities::make_rulebook</span></span>:<br/><a href="6-act.html#SP4">§4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">activity</span><span class="plain-syntax"> *</span><span class="identifier-syntax">av</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>
|
||||
<span class="reserved-syntax">rulebook</span><span class="plain-syntax"> *</span><span class="function-syntax">Activities::make_rulebook</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">Activities::make_rulebook</span></span>:<br/><a href="6-act.html#SP4">§4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">activity</span><span class="plain-syntax"> *</span><span class="identifier-syntax">av</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>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">def</span><span class="plain-syntax"> = </span><span class="constant-syntax">NO_OUTCOME</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="constant-syntax">1</span><span class="plain-syntax">) </span><span class="identifier-syntax">def</span><span class="plain-syntax"> = </span><span class="constant-syntax">SUCCESS_OUTCOME</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">word_assemblage</span><span class="plain-syntax"> </span><span class="identifier-syntax">wa</span><span class="plain-syntax"> = </span><span class="identifier-syntax">PreformUtilities::merge</span><span class="plain-syntax">(</span><span class="function-syntax"><activity-rulebook-construction></span><span class="plain-syntax">, </span><span class="identifier-syntax">N</span><span class="plain-syntax">,</span>
|
||||
|
@ -290,7 +274,7 @@ machinery call this:
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">R</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP8" class="paragraph-anchor"></a><b>§8. </b>And this nonterminal parses individual activity names.
|
||||
<p class="commentary firstcommentary"><a id="SP7" class="paragraph-anchor"></a><b>§7. </b>And this nonterminal parses individual activity names.
|
||||
</p>
|
||||
|
||||
<pre class="Preform-displayed-code all-displayed-code code-font">
|
||||
|
@ -304,12 +288,12 @@ machinery call this:
|
|||
<span class="Preform-plain-syntax">}</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This is <a href="../words-module/4-ap.html" class="internal">Preform grammar</a>, not regular C code.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP9" class="paragraph-anchor"></a><b>§9. </b>The author can demand with a "translates as" sentence that a given
|
||||
<p class="commentary firstcommentary"><a id="SP8" class="paragraph-anchor"></a><b>§8. </b>The author can demand with a "translates as" sentence that a given
|
||||
rulebook should have an identifier given to it which is accessible to Inter:
|
||||
</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">Activities::translates</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">Activities::translates</span></span>:<br/>Translation Requests - <a href="3-tr.html#SP8_2_2">§8.2.2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">p2</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Activities::translates</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">Activities::translates</span></span>:<br/>Translation Requests - <a href="3-tr.html#SP8_2_2">§8.2.2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">p2</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="function-syntax"><activity-name></span><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">activity</span><span class="plain-syntax"> *</span><span class="identifier-syntax">av</span><span class="plain-syntax"> = (</span><span class="reserved-syntax">activity</span><span class="plain-syntax"> *) </span><span class="function-syntax"><<rp>></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">RTActivities::translate</span><span class="plain-syntax">(</span><span class="identifier-syntax">av</span><span class="plain-syntax">, </span><span class="identifier-syntax">Node::get_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">p2</span><span class="plain-syntax">));</span>
|
||||
|
@ -322,11 +306,11 @@ rulebook should have an identifier given to it which is accessible to Inter:
|
|||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP10" class="paragraph-anchor"></a><b>§10. Activity variables. </b>Any new activity variable name is vetted by being run through this:
|
||||
<p class="commentary firstcommentary"><a id="SP9" class="paragraph-anchor"></a><b>§9. Activity variables. </b>Any new activity variable name is vetted by being run through this:
|
||||
</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">Activities::add_variable</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">Activities::add_variable</span></span>:<br/>Assertions - <a href="4-ass.html#SP6_3_25_1">§6.3.25.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">activity</span><span class="plain-syntax"> *</span><span class="identifier-syntax">av</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">cnode</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Activities::add_variable</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">Activities::add_variable</span></span>:<br/>Assertions - <a href="4-ass.html#SP6_3_25_1">§6.3.25.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">activity</span><span class="plain-syntax"> *</span><span class="identifier-syntax">av</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">cnode</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">Node::get_type</span><span class="plain-syntax">(</span><span class="identifier-syntax">cnode</span><span class="plain-syntax">) == </span><span class="identifier-syntax">UNPARSED_NOUN_NT</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_source</span><span class="plain-syntax">(1, </span><span class="identifier-syntax">current_sentence</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">StandardProblems::handmade_problem</span><span class="plain-syntax">(</span><span class="identifier-syntax">Task::syntax_tree</span><span class="plain-syntax">(),</span>
|
||||
|
@ -346,15 +330,15 @@ rulebook should have an identifier given to it which is accessible to Inter:
|
|||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">; </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="function-syntax"><s-type-expression></span><span class="plain-syntax">(</span><span class="identifier-syntax">SW</span><span class="plain-syntax">)) </span><span class="identifier-syntax">spec</span><span class="plain-syntax"> = </span><span class="function-syntax"><<rp>></span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="6-act.html#SP10_1" class="named-paragraph-link"><span class="named-paragraph">The name of the variable must be fortunate</span><span class="named-paragraph-number">10.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="6-act.html#SP10_2" class="named-paragraph-link"><span class="named-paragraph">The specification must not be qualified</span><span class="named-paragraph-number">10.2</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="6-act.html#SP10_3" class="named-paragraph-link"><span class="named-paragraph">The specification must be just a kind</span><span class="named-paragraph-number">10.3</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="6-act.html#SP10_4" class="named-paragraph-link"><span class="named-paragraph">That kind must be definite</span><span class="named-paragraph-number">10.4</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="6-act.html#SP9_1" class="named-paragraph-link"><span class="named-paragraph">The name of the variable must be fortunate</span><span class="named-paragraph-number">9.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="6-act.html#SP9_2" class="named-paragraph-link"><span class="named-paragraph">The specification must not be qualified</span><span class="named-paragraph-number">9.2</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="6-act.html#SP9_3" class="named-paragraph-link"><span class="named-paragraph">The specification must be just a kind</span><span class="named-paragraph-number">9.3</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="6-act.html#SP9_4" class="named-paragraph-link"><span class="named-paragraph">That kind must be definite</span><span class="named-paragraph-number">9.4</span></a></span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="plain-syntax"> </span><a href="6-sv.html#SP3" class="function-link"><span class="function-syntax">SharedVariables::new</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">av</span><span class="plain-syntax">-></span><span class="element-syntax">activity_variables</span><span class="plain-syntax">, </span><span class="identifier-syntax">VW</span><span class="plain-syntax">, </span><span class="identifier-syntax">Specifications::to_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">), </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP10_1" class="paragraph-anchor"></a><b>§10.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">The name of the variable must be fortunate</span><span class="named-paragraph-number">10.1</span></span><span class="comment-syntax"> =</span>
|
||||
<p class="commentary firstcommentary"><a id="SP9_1" class="paragraph-anchor"></a><b>§9.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">The name of the variable must be fortunate</span><span class="named-paragraph-number">9.1</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -372,8 +356,8 @@ rulebook should have an identifier given to it which is accessible to Inter:
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="6-act.html#SP10">§10</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP10_2" class="paragraph-anchor"></a><b>§10.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">The specification must not be qualified</span><span class="named-paragraph-number">10.2</span></span><span class="comment-syntax"> =</span>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="6-act.html#SP9">§9</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP9_2" class="paragraph-anchor"></a><b>§9.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">The specification must not be qualified</span><span class="named-paragraph-number">9.2</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -394,8 +378,8 @@ rulebook should have an identifier given to it which is accessible to Inter:
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="6-act.html#SP10">§10</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP10_3" class="paragraph-anchor"></a><b>§10.3. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">The specification must be just a kind</span><span class="named-paragraph-number">10.3</span></span><span class="comment-syntax"> =</span>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="6-act.html#SP9">§9</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP9_3" class="paragraph-anchor"></a><b>§9.3. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">The specification must be just a kind</span><span class="named-paragraph-number">9.3</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -412,8 +396,8 @@ rulebook should have an identifier given to it which is accessible to Inter:
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="6-act.html#SP10">§10</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP10_4" class="paragraph-anchor"></a><b>§10.4. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">That kind must be definite</span><span class="named-paragraph-number">10.4</span></span><span class="comment-syntax"> =</span>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="6-act.html#SP9">§9</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP9_4" class="paragraph-anchor"></a><b>§9.4. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">That kind must be definite</span><span class="named-paragraph-number">9.4</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -431,7 +415,7 @@ rulebook should have an identifier given to it which is accessible to Inter:
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="6-act.html#SP10">§10</a>.</li></ul>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="6-act.html#SP9">§9</a>.</li></ul>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="6-fao.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-am.html">1</a></li><li class="progresschapter"><a href="2-bv.html">2</a></li><li class="progresschapter"><a href="3-dlr.html">3</a></li><li class="progresschapter"><a href="4-nr.html">4</a></li><li class="progresschapter"><a href="5-id.html">5</a></li><li class="progresscurrentchapter">6</li><li class="progresssection"><a href="6-rls.html">rls</a></li><li class="progresssection"><a href="6-rb.html">rb</a></li><li class="progresssection"><a href="6-bl.html">bl</a></li><li class="progresssection"><a href="6-rlb.html">rlb</a></li><li class="progresssection"><a href="6-fao.html">fao</a></li><li class="progresscurrent">act</li><li class="progresssection"><a href="6-sv.html">sv</a></li><li class="progresschapter"><a href="7-tc.html">7</a></li><li class="progresschapter"><a href="8-kpr.html">8</a></li><li class="progressnext"><a href="6-sv.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
|
|
@ -233,15 +233,15 @@ being analogous to a function \(X\to Y\).
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="6-fao.html#SP1" class="function-link"><span class="function-syntax">FocusAndOutcome::get_focus_parameter_kind</span></a><span class="plain-syntax">(&(</span><span class="identifier-syntax">B</span><span class="plain-syntax">-></span><span class="element-syntax">my_focus</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">Rulebooks::base_on_nothing</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">Rulebooks::base_on_nothing</span></span>:<br/>Activities - <a href="6-act.html#SP5">§5</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">rulebook</span><span class="plain-syntax"> *</span><span class="identifier-syntax">B</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Rulebooks::base_on_nothing</span><span class="plain-syntax">(</span><span class="reserved-syntax">rulebook</span><span class="plain-syntax"> *</span><span class="identifier-syntax">B</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><a href="6-fao.html#SP1" class="function-link"><span class="function-syntax">FocusAndOutcome::focus_on_nothing</span></a><span class="plain-syntax">(&(</span><span class="identifier-syntax">B</span><span class="plain-syntax">-></span><span class="element-syntax">my_focus</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="function-syntax">Rulebooks::get_outcome_kind</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">Rulebooks::get_outcome_kind</span></span>:<br/><a href="6-rlb.html#SP2_3">§2.3</a>, <a href="6-rlb.html#SP2_4">§2.4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">rulebook</span><span class="plain-syntax"> *</span><span class="identifier-syntax">B</span><span class="plain-syntax">) {</span>
|
||||
<span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="function-syntax">Rulebooks::get_outcome_kind</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">Rulebooks::get_outcome_kind</span></span>:<br/><a href="6-rlb.html#SP2_3">§2.3</a>, <a href="6-rlb.html#SP2_4">§2.4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">rulebook</span><span class="plain-syntax"> *</span><span class="identifier-syntax">B</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="6-fao.html#SP7" class="function-link"><span class="function-syntax">FocusAndOutcome::get_outcome_kind</span></a><span class="plain-syntax">(&(</span><span class="identifier-syntax">B</span><span class="plain-syntax">-></span><span class="element-syntax">my_outcomes</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">outcomes</span><span class="plain-syntax"> *</span><span class="function-syntax">Rulebooks::get_outcomes</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">Rulebooks::get_outcomes</span></span>:<br/>Focus and Outcome - <a href="6-fao.html#SP5">§5</a>, <a href="6-fao.html#SP6">§6</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">rulebook</span><span class="plain-syntax"> *</span><span class="identifier-syntax">B</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">outcomes</span><span class="plain-syntax"> *</span><span class="function-syntax">Rulebooks::get_outcomes</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">Rulebooks::get_outcomes</span></span>:<br/>Focus and Outcome - <a href="6-fao.html#SP5">§5</a>, <a href="6-fao.html#SP6">§6</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">rulebook</span><span class="plain-syntax"> *</span><span class="identifier-syntax">B</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">B</span><span class="plain-syntax">-></span><span class="element-syntax">my_outcomes</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
|
@ -272,7 +272,7 @@ of the rules in it:
|
|||
<span class="plain-syntax"> </span><a href="6-rlb.html#SP2_2" class="function-link"><span class="function-syntax">Rulebooks::get_focus_kind</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">B</span><span class="plain-syntax">), </span><a href="6-rlb.html#SP2_2" class="function-link"><span class="function-syntax">Rulebooks::get_outcome_kind</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">B</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="function-syntax">Rulebooks::contains_kind</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">Rulebooks::contains_kind</span></span>:<br/>Rules - <a href="6-rls.html#SP7">§7</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">rulebook</span><span class="plain-syntax"> *</span><span class="identifier-syntax">B</span><span class="plain-syntax">) {</span>
|
||||
<span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="function-syntax">Rulebooks::contains_kind</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">Rulebooks::contains_kind</span></span>:<br/>Rules - <a href="6-rls.html#SP7">§7</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">rulebook</span><span class="plain-syntax"> *</span><span class="identifier-syntax">B</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">Kinds::binary_con</span><span class="plain-syntax">(</span><span class="identifier-syntax">CON_rule</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><a href="6-rlb.html#SP2_2" class="function-link"><span class="function-syntax">Rulebooks::get_focus_kind</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">B</span><span class="plain-syntax">), </span><a href="6-rlb.html#SP2_2" class="function-link"><span class="function-syntax">Rulebooks::get_outcome_kind</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">B</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
@ -348,7 +348,7 @@ that action are automatically created, and similarly for activities and scenes.
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">rulebook</span><span class="plain-syntax"> *</span><span class="function-syntax">Rulebooks::new_automatic</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">Rulebooks::new_automatic</span></span>:<br/>Activities - <a href="6-act.html#SP7">§7</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">basis</span><span class="plain-syntax">,</span>
|
||||
<span class="reserved-syntax">rulebook</span><span class="plain-syntax"> *</span><span class="function-syntax">Rulebooks::new_automatic</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">Rulebooks::new_automatic</span></span>:<br/>Activities - <a href="6-act.html#SP6">§6</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">basis</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">default_outcome</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">always_test_actor</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">for_activities</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">stem_length</span><span class="plain-syntax">, </span><span class="identifier-syntax">package_request</span><span class="plain-syntax"> *</span><span class="identifier-syntax">R</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">rulebook</span><span class="plain-syntax"> *</span><span class="identifier-syntax">B</span><span class="plain-syntax"> = </span><a href="6-rlb.html#SP2" class="function-link"><span class="function-syntax">Rulebooks::new</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">Kinds::binary_con</span><span class="plain-syntax">(</span><span class="identifier-syntax">CON_rulebook</span><span class="plain-syntax">, </span><span class="identifier-syntax">basis</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_void</span><span class="plain-syntax">), </span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="identifier-syntax">R</span><span class="plain-syntax">);</span>
|
||||
|
@ -365,7 +365,7 @@ rulebook should have an identifier given to it which is accessible to Inter:
|
|||
</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">Rulebooks::translates</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">Rulebooks::translates</span></span>:<br/>Translation Requests - <a href="3-tr.html#SP8_2_2">§8.2.2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">p2</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Rulebooks::translates</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">Rulebooks::translates</span></span>:<br/>Translation Requests - <a href="3-tr.html#SP8_2_2">§8.2.2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">p2</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="function-syntax"><rulebook-name></span><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">rulebook</span><span class="plain-syntax"> *</span><span class="identifier-syntax">B</span><span class="plain-syntax"> = (</span><span class="reserved-syntax">rulebook</span><span class="plain-syntax"> *) </span><span class="function-syntax"><<rp>></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">RTRulebooks::translate</span><span class="plain-syntax">(</span><span class="identifier-syntax">B</span><span class="plain-syntax">, </span><span class="identifier-syntax">Node::get_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">p2</span><span class="plain-syntax">));</span>
|
||||
|
@ -399,7 +399,7 @@ rulebook should have an identifier given to it which is accessible to Inter:
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="6-bl.html#SP7" class="function-link"><span class="function-syntax">BookingLists::length</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">B</span><span class="plain-syntax">-></span><span class="element-syntax">contents</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">Rulebooks::rule_in_rulebook</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">Rulebooks::rule_in_rulebook</span></span>:<br/>Rule Placement Requests - <a href="3-rpr.html#SP15_1">§15.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">rule</span><span class="plain-syntax"> *</span><span class="identifier-syntax">R</span><span class="plain-syntax">, </span><span class="reserved-syntax">rulebook</span><span class="plain-syntax"> *</span><span class="identifier-syntax">B</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Rulebooks::rule_in_rulebook</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">Rulebooks::rule_in_rulebook</span></span>:<br/>Rule Placement Requests - <a href="3-rpr.html#SP15_1">§15.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">rule</span><span class="plain-syntax"> *</span><span class="identifier-syntax">R</span><span class="plain-syntax">, </span><span class="reserved-syntax">rulebook</span><span class="plain-syntax"> *</span><span class="identifier-syntax">B</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">B</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="6-bl.html#SP7" class="function-link"><span class="function-syntax">BookingLists::contains</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">B</span><span class="plain-syntax">-></span><span class="element-syntax">contents</span><span class="plain-syntax">, </span><span class="identifier-syntax">R</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
@ -409,7 +409,7 @@ rulebook should have an identifier given to it which is accessible to Inter:
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="6-bl.html#SP7" class="function-link"><span class="function-syntax">BookingLists::first</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">B</span><span class="plain-syntax">-></span><span class="element-syntax">contents</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">Rulebooks::runs_during_activities</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">Rulebooks::runs_during_activities</span></span>:<br/>Rule Family - <a href="5-rf.html#SP7_3">§7.3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">rulebook</span><span class="plain-syntax"> *</span><span class="identifier-syntax">B</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Rulebooks::runs_during_activities</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">Rulebooks::runs_during_activities</span></span>:<br/>Rule Family - <a href="5-rf.html#SP7_3">§7.3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">rulebook</span><span class="plain-syntax"> *</span><span class="identifier-syntax">B</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">B</span><span class="plain-syntax">-></span><span class="element-syntax">runs_during_activities</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
|
@ -451,15 +451,15 @@ has a D called W":
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">shared_variable_set</span><span class="plain-syntax"> *</span><span class="function-syntax">Rulebooks::variables</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">Rulebooks::variables</span></span>:<br/>Rules - <a href="6-rls.html#SP10">§10</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">rulebook</span><span class="plain-syntax"> *</span><span class="identifier-syntax">B</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">shared_variable_set</span><span class="plain-syntax"> *</span><span class="function-syntax">Rulebooks::variables</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">Rulebooks::variables</span></span>:<br/>Rules - <a href="6-rls.html#SP10">§10</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">rulebook</span><span class="plain-syntax"> *</span><span class="identifier-syntax">B</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">B</span><span class="plain-syntax">-></span><span class="element-syntax">my_variables</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">shared_variable_access_list</span><span class="plain-syntax"> *</span><span class="function-syntax">Rulebooks::accessible_variables</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">Rulebooks::accessible_variables</span></span>:<br/><a href="6-rlb.html#SP12">§12</a>, <a href="6-rlb.html#SP13">§13</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">rulebook</span><span class="plain-syntax"> *</span><span class="identifier-syntax">B</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">shared_variable_access_list</span><span class="plain-syntax"> *</span><span class="function-syntax">Rulebooks::accessible_variables</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">Rulebooks::accessible_variables</span></span>:<br/><a href="6-rlb.html#SP12">§12</a>, <a href="6-rlb.html#SP13">§13</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">rulebook</span><span class="plain-syntax"> *</span><span class="identifier-syntax">B</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">B</span><span class="plain-syntax">-></span><span class="element-syntax">accessible_variables</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">Rulebooks::add_variable</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">Rulebooks::add_variable</span></span>:<br/>Assertions - <a href="4-ass.html#SP6_3_25_2">§6.3.25.2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">rulebook</span><span class="plain-syntax"> *</span><span class="identifier-syntax">B</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">cnode</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Rulebooks::add_variable</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">Rulebooks::add_variable</span></span>:<br/>Assertions - <a href="4-ass.html#SP6_3_25_2">§6.3.25.2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">rulebook</span><span class="plain-syntax"> *</span><span class="identifier-syntax">B</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">cnode</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="6-rlb.html#SP11_1" class="named-paragraph-link"><span class="named-paragraph">The variable has to have a name</span><span class="named-paragraph-number">11.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">D</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Node::get_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">cnode</span><span class="plain-syntax">-></span><span class="identifier-syntax">down</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Node::get_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">cnode</span><span class="plain-syntax">-></span><span class="identifier-syntax">down</span><span class="plain-syntax">-></span><span class="element-syntax">next</span><span class="plain-syntax">);</span>
|
||||
|
@ -603,7 +603,7 @@ go into <span class="extract"><span class="extract-syntax">B->my_variables</s
|
|||
</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">Rulebooks::grant_access_to_variables</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">Rulebooks::grant_access_to_variables</span></span>:<br/>Activities - <a href="6-act.html#SP7">§7</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">rulebook</span><span class="plain-syntax"> *</span><span class="identifier-syntax">B</span><span class="plain-syntax">, </span><span class="reserved-syntax">shared_variable_set</span><span class="plain-syntax"> *</span><span class="identifier-syntax">set</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Rulebooks::grant_access_to_variables</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">Rulebooks::grant_access_to_variables</span></span>:<br/>Activities - <a href="6-act.html#SP6">§6</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">rulebook</span><span class="plain-syntax"> *</span><span class="identifier-syntax">B</span><span class="plain-syntax">, </span><span class="reserved-syntax">shared_variable_set</span><span class="plain-syntax"> *</span><span class="identifier-syntax">set</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><a href="6-sv.html#SP9" class="function-link"><span class="function-syntax">SharedVariables::add_set_to_access_list</span></a><span class="plain-syntax">(</span><a href="6-rlb.html#SP11" class="function-link"><span class="function-syntax">Rulebooks::accessible_variables</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">B</span><span class="plain-syntax">), </span><span class="identifier-syntax">set</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
|
@ -623,7 +623,7 @@ user in beta-testing.)
|
|||
</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">Rulebooks::attach_rule</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">Rulebooks::attach_rule</span></span>:<br/>Rule Placement Requests - <a href="3-rpr.html#SP15_1">§15.1</a><br/>Rule Bookings - <a href="6-rb.html#SP6">§6</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">rulebook</span><span class="plain-syntax"> *</span><span class="identifier-syntax">B</span><span class="plain-syntax">, </span><span class="reserved-syntax">booking</span><span class="plain-syntax"> *</span><span class="identifier-syntax">br</span><span class="plain-syntax">,</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Rulebooks::attach_rule</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">Rulebooks::attach_rule</span></span>:<br/>Rule Placement Requests - <a href="3-rpr.html#SP15_1">§15.1</a><br/>Rule Bookings - <a href="6-rb.html#SP6">§6</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">rulebook</span><span class="plain-syntax"> *</span><span class="identifier-syntax">B</span><span class="plain-syntax">, </span><span class="reserved-syntax">booking</span><span class="plain-syntax"> *</span><span class="identifier-syntax">br</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">placing</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">side</span><span class="plain-syntax">, </span><span class="reserved-syntax">rule</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ref_rule</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOGIF</span><span class="plain-syntax">(</span><span class="identifier-syntax">RULE_ATTACHMENTS</span><span class="plain-syntax">, </span><span class="string-syntax">"Attaching booking $b to rulebook $K"</span><span class="plain-syntax">, </span><span class="identifier-syntax">br</span><span class="plain-syntax">, </span><span class="identifier-syntax">B</span><span class="plain-syntax">);</span>
|
||||
|
||||
|
@ -656,7 +656,7 @@ user in beta-testing.)
|
|||
</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">Rulebooks::detach_rule</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">Rulebooks::detach_rule</span></span>:<br/>Rule Placement Requests - <a href="3-rpr.html#SP15_1_3">§15.1.3</a>, <a href="3-rpr.html#SP15_1_4">§15.1.4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">rulebook</span><span class="plain-syntax"> *</span><span class="identifier-syntax">B</span><span class="plain-syntax">, </span><span class="reserved-syntax">rule</span><span class="plain-syntax"> *</span><span class="identifier-syntax">R</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Rulebooks::detach_rule</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">Rulebooks::detach_rule</span></span>:<br/>Rule Placement Requests - <a href="3-rpr.html#SP15_1_3">§15.1.3</a>, <a href="3-rpr.html#SP15_1_4">§15.1.4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">rulebook</span><span class="plain-syntax"> *</span><span class="identifier-syntax">B</span><span class="plain-syntax">, </span><span class="reserved-syntax">rule</span><span class="plain-syntax"> *</span><span class="identifier-syntax">R</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><a href="6-bl.html#SP6" class="function-link"><span class="function-syntax">BookingLists::remove</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">B</span><span class="plain-syntax">-></span><span class="element-syntax">contents</span><span class="plain-syntax">, </span><span class="identifier-syntax">R</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
|
@ -692,7 +692,7 @@ it is not used recursively, we store the results in <span class="extract"><span
|
|||
|
||||
<span class="reserved-syntax">rulebook_match</span><span class="plain-syntax"> </span><span class="identifier-syntax">parsed_rm</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="reserved-syntax">rulebook_match</span><span class="plain-syntax"> *</span><span class="function-syntax">Rulebooks::match</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">Rulebooks::match</span></span>:<br/>Rule Family - <a href="5-rf.html#SP7">§7</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">rulebook_match</span><span class="plain-syntax"> *</span><span class="function-syntax">Rulebooks::match</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">Rulebooks::match</span></span>:<br/>Rule Family - <a href="5-rf.html#SP7">§7</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">parsed_rm</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
|
@ -789,7 +789,7 @@ rulebooks. This is all a bit inelegant, but we manage.
|
|||
</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">Rulebooks::rb_match_from_description</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">Rulebooks::rb_match_from_description</span></span>:<br/><a href="6-rlb.html#SP16">§16</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="reserved-syntax">rulebook</span><span class="plain-syntax"> *</span><span class="identifier-syntax">SB</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">len</span><span class="plain-syntax">, </span><span class="reserved-syntax">rulebook_match</span><span class="plain-syntax"> *</span><span class="identifier-syntax">rm</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Rulebooks::rb_match_from_description</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">Rulebooks::rb_match_from_description</span></span>:<br/><a href="6-rlb.html#SP16">§16</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="reserved-syntax">rulebook</span><span class="plain-syntax"> *</span><span class="identifier-syntax">SB</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">len</span><span class="plain-syntax">, </span><span class="reserved-syntax">rulebook_match</span><span class="plain-syntax"> *</span><span class="identifier-syntax">rm</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="6-rlb.html#SP18_1" class="named-paragraph-link"><span class="named-paragraph">Find the longest-named rulebook whose name appears at the front of W</span><span class="named-paragraph-number">18.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">rm</span><span class="plain-syntax">-></span><span class="element-syntax">matched_rulebook</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>
|
||||
|
||||
|
@ -891,7 +891,7 @@ as used when they are created by the Standard Rules extension.
|
|||
<p class="commentary firstcommentary"><a id="SP21" class="paragraph-anchor"></a><b>§21. </b></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">Rulebooks::detect_notable</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">Rulebooks::detect_notable</span></span>:<br/><a href="6-rlb.html#SP2">§2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">rulebook</span><span class="plain-syntax"> *</span><span class="identifier-syntax">B</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Rulebooks::detect_notable</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">Rulebooks::detect_notable</span></span>:<br/><a href="6-rlb.html#SP2">§2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">rulebook</span><span class="plain-syntax"> *</span><span class="identifier-syntax">B</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="function-syntax"><notable-rulebooks>(B-></span><span class="element-syntax">primary_name</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">switch</span><span class="plain-syntax"> (</span><span class="function-syntax"><<r>></span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">: </span><span class="identifier-syntax">RB_action_processing</span><span class="plain-syntax"> = </span><span class="identifier-syntax">B</span><span class="plain-syntax">; </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
|
|
|
@ -100,7 +100,7 @@ placed on a nonlocal variable (for which, see <a href="../knowledge-module/2-nv.
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">shared_variable</span><span class="plain-syntax"> *</span><span class="function-syntax">SharedVariables::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">SharedVariables::new</span></span>:<br/>Rulebooks - <a href="6-rlb.html#SP11">§11</a><br/>Activities - <a href="6-act.html#SP10">§10</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">shared_variable_set</span><span class="plain-syntax"> *</span><span class="identifier-syntax">set</span><span class="plain-syntax">, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">,</span>
|
||||
<span class="reserved-syntax">shared_variable</span><span class="plain-syntax"> *</span><span class="function-syntax">SharedVariables::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">SharedVariables::new</span></span>:<br/>Rulebooks - <a href="6-rlb.html#SP11">§11</a><br/>Activities - <a href="6-act.html#SP9">§9</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">shared_variable_set</span><span class="plain-syntax"> *</span><span class="identifier-syntax">set</span><span class="plain-syntax">, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</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">is_actor</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">shared_variable</span><span class="plain-syntax"> *</span><span class="identifier-syntax">shv</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CREATE</span><span class="plain-syntax">(</span><span class="reserved-syntax">shared_variable</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Articles::remove_the</span><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">);</span>
|
||||
|
|
|
@ -54,6 +54,13 @@
|
|||
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>§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>
|
||||
|
|
|
@ -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>§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>§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>§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>
|
||||
|
||||
|
|
|
@ -1215,6 +1215,15 @@ think about; as a one-off phrase, it may as well go here.
|
|||
<span class="identifier-syntax">To</span><span class="plain-syntax"> </span><span class="identifier-syntax">replace</span><span class="plain-syntax"> </span><span class="identifier-syntax">paragraph</span><span class="plain-syntax"> </span><span class="identifier-syntax">number</span><span class="plain-syntax"> (</span><span class="identifier-syntax">N</span><span class="plain-syntax"> - </span><span class="identifier-syntax">a</span><span class="plain-syntax"> </span><span class="identifier-syntax">number</span><span class="plain-syntax">) </span><span class="identifier-syntax">in</span><span class="plain-syntax"> (</span><span class="identifier-syntax">T</span><span class="plain-syntax"> - </span><span class="identifier-syntax">text</span><span class="plain-syntax">) </span><span class="identifier-syntax">with</span><span class="plain-syntax"> (</span><span class="identifier-syntax">replace</span><span class="plain-syntax"> - </span><span class="identifier-syntax">text</span><span class="plain-syntax">)</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">ph_replacepara</span><span class="plain-syntax">):</span>
|
||||
<span class="plain-syntax"> (- </span><span class="identifier-syntax">TEXT_TY_ReplaceBlob</span><span class="plain-syntax">(</span><span class="identifier-syntax">PARA_BLOB</span><span class="plain-syntax">, {-</span><span class="identifier-syntax">lvalue</span><span class="plain-syntax">-</span><span class="identifier-syntax">by</span><span class="plain-syntax">-</span><span class="identifier-syntax">reference</span><span class="plain-syntax">:</span><span class="identifier-syntax">T</span><span class="plain-syntax">}, {</span><span class="identifier-syntax">N</span><span class="plain-syntax">}, {-</span><span class="identifier-syntax">by</span><span class="plain-syntax">-</span><span class="identifier-syntax">reference</span><span class="plain-syntax">:</span><span class="identifier-syntax">replace</span><span class="plain-syntax">}); -).</span>
|
||||
<span class="identifier-syntax">To</span><span class="plain-syntax"> </span><span class="identifier-syntax">decide</span><span class="plain-syntax"> </span><span class="identifier-syntax">what</span><span class="plain-syntax"> </span><span class="identifier-syntax">number</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">first</span><span class="plain-syntax"> </span><span class="identifier-syntax">index</span><span class="plain-syntax"> </span><span class="identifier-syntax">of</span><span class="plain-syntax"> </span><span class="identifier-syntax">text</span><span class="plain-syntax"> </span><span class="identifier-syntax">match</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">ph_textfirstindex</span><span class="plain-syntax">):</span>
|
||||
<span class="plain-syntax"> (- (</span><span class="identifier-syntax">match0_idx2</span><span class="plain-syntax"> ~= </span><span class="constant-syntax">0</span><span class="plain-syntax">) * (</span><span class="identifier-syntax">match0_idx</span><span class="plain-syntax"> + </span><span class="constant-syntax">1</span><span class="plain-syntax">) -).</span>
|
||||
<span class="identifier-syntax">To</span><span class="plain-syntax"> </span><span class="identifier-syntax">decide</span><span class="plain-syntax"> </span><span class="identifier-syntax">what</span><span class="plain-syntax"> </span><span class="identifier-syntax">number</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">last</span><span class="plain-syntax"> </span><span class="identifier-syntax">index</span><span class="plain-syntax"> </span><span class="identifier-syntax">of</span><span class="plain-syntax"> </span><span class="identifier-syntax">text</span><span class="plain-syntax"> </span><span class="identifier-syntax">match</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">ph_textlastindex</span><span class="plain-syntax">):</span>
|
||||
<span class="plain-syntax"> (- </span><span class="identifier-syntax">match0_idx2</span><span class="plain-syntax"> -).</span>
|
||||
<span class="identifier-syntax">To</span><span class="plain-syntax"> </span><span class="identifier-syntax">decide</span><span class="plain-syntax"> </span><span class="identifier-syntax">what</span><span class="plain-syntax"> </span><span class="identifier-syntax">number</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">length</span><span class="plain-syntax"> </span><span class="identifier-syntax">of</span><span class="plain-syntax"> </span><span class="identifier-syntax">text</span><span class="plain-syntax"> </span><span class="identifier-syntax">match</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">ph_textlength</span><span class="plain-syntax">):</span>
|
||||
<span class="plain-syntax"> (- (</span><span class="identifier-syntax">match0_idx2</span><span class="plain-syntax"> - </span><span class="identifier-syntax">match0_idx</span><span class="plain-syntax">) -).</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP36" class="paragraph-anchor"></a><b>§36. </b>...and for regular expressions, though here we also have access to the
|
||||
exact text which matched (not interesting in the plain text case since it's
|
||||
|
@ -1242,6 +1251,15 @@ subexpressions (which the plain text case doesn't have).
|
|||
<span class="identifier-syntax">To</span><span class="plain-syntax"> </span><span class="identifier-syntax">decide</span><span class="plain-syntax"> </span><span class="identifier-syntax">what</span><span class="plain-syntax"> </span><span class="identifier-syntax">text</span><span class="plain-syntax"> </span><span class="identifier-syntax">is</span><span class="plain-syntax"> </span><span class="identifier-syntax">text</span><span class="plain-syntax"> </span><span class="identifier-syntax">matching</span><span class="plain-syntax"> </span><span class="identifier-syntax">subexpression</span><span class="plain-syntax"> (</span><span class="identifier-syntax">N</span><span class="plain-syntax"> - </span><span class="identifier-syntax">a</span><span class="plain-syntax"> </span><span class="identifier-syntax">number</span><span class="plain-syntax">)</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">ph_subexpressiontext</span><span class="plain-syntax">):</span>
|
||||
<span class="plain-syntax"> (- </span><span class="identifier-syntax">TEXT_TY_RE_GetMatchVar</span><span class="plain-syntax">({</span><span class="identifier-syntax">N</span><span class="plain-syntax">}) -).</span>
|
||||
<span class="identifier-syntax">To</span><span class="plain-syntax"> </span><span class="identifier-syntax">decide</span><span class="plain-syntax"> </span><span class="identifier-syntax">what</span><span class="plain-syntax"> </span><span class="identifier-syntax">number</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">first</span><span class="plain-syntax"> </span><span class="identifier-syntax">index</span><span class="plain-syntax"> </span><span class="identifier-syntax">of</span><span class="plain-syntax"> </span><span class="identifier-syntax">subexpression</span><span class="plain-syntax"> (</span><span class="identifier-syntax">n</span><span class="plain-syntax"> - </span><span class="identifier-syntax">a</span><span class="plain-syntax"> </span><span class="identifier-syntax">number</span><span class="plain-syntax">)</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">ph_refirstindex</span><span class="plain-syntax">):</span>
|
||||
<span class="plain-syntax"> (- (</span><span class="identifier-syntax">RE_Subexpressions</span><span class="plain-syntax">-->{</span><span class="identifier-syntax">n</span><span class="plain-syntax">}--></span><span class="identifier-syntax">RE_DATA2</span><span class="plain-syntax"> ~= </span><span class="constant-syntax">0</span><span class="plain-syntax">) * (</span><span class="identifier-syntax">RE_Subexpressions</span><span class="plain-syntax">-->{</span><span class="identifier-syntax">n</span><span class="plain-syntax">}--></span><span class="identifier-syntax">RE_DATA1</span><span class="plain-syntax"> + </span><span class="constant-syntax">1</span><span class="plain-syntax">) -).</span>
|
||||
<span class="identifier-syntax">To</span><span class="plain-syntax"> </span><span class="identifier-syntax">decide</span><span class="plain-syntax"> </span><span class="identifier-syntax">what</span><span class="plain-syntax"> </span><span class="identifier-syntax">number</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">last</span><span class="plain-syntax"> </span><span class="identifier-syntax">index</span><span class="plain-syntax"> </span><span class="identifier-syntax">of</span><span class="plain-syntax"> </span><span class="identifier-syntax">subexpression</span><span class="plain-syntax"> (</span><span class="identifier-syntax">n</span><span class="plain-syntax"> - </span><span class="identifier-syntax">a</span><span class="plain-syntax"> </span><span class="identifier-syntax">number</span><span class="plain-syntax">)</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">ph_relastindex</span><span class="plain-syntax">):</span>
|
||||
<span class="plain-syntax"> (- ((</span><span class="identifier-syntax">RE_Subexpressions</span><span class="plain-syntax">-->{</span><span class="identifier-syntax">n</span><span class="plain-syntax">}--></span><span class="identifier-syntax">RE_DATA2</span><span class="plain-syntax"> >= </span><span class="constant-syntax">0</span><span class="plain-syntax">) * </span><span class="identifier-syntax">RE_Subexpressions</span><span class="plain-syntax">-->{</span><span class="identifier-syntax">n</span><span class="plain-syntax">}--></span><span class="identifier-syntax">RE_DATA2</span><span class="plain-syntax">) -).</span>
|
||||
<span class="identifier-syntax">To</span><span class="plain-syntax"> </span><span class="identifier-syntax">decide</span><span class="plain-syntax"> </span><span class="identifier-syntax">what</span><span class="plain-syntax"> </span><span class="identifier-syntax">number</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">length</span><span class="plain-syntax"> </span><span class="identifier-syntax">of</span><span class="plain-syntax"> </span><span class="identifier-syntax">subexpression</span><span class="plain-syntax"> (</span><span class="identifier-syntax">n</span><span class="plain-syntax"> - </span><span class="identifier-syntax">a</span><span class="plain-syntax"> </span><span class="identifier-syntax">number</span><span class="plain-syntax">)</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">ph_relength</span><span class="plain-syntax">):</span>
|
||||
<span class="plain-syntax"> (- (</span><span class="identifier-syntax">RE_Subexpressions</span><span class="plain-syntax">-->{</span><span class="identifier-syntax">n</span><span class="plain-syntax">}--></span><span class="identifier-syntax">RE_DATA2</span><span class="plain-syntax"> - </span><span class="identifier-syntax">RE_Subexpressions</span><span class="plain-syntax">-->{</span><span class="identifier-syntax">n</span><span class="plain-syntax">}--></span><span class="identifier-syntax">RE_DATA1</span><span class="plain-syntax">) -).</span>
|
||||
<span class="identifier-syntax">To</span><span class="plain-syntax"> </span><span class="identifier-syntax">decide</span><span class="plain-syntax"> </span><span class="identifier-syntax">what</span><span class="plain-syntax"> </span><span class="identifier-syntax">number</span><span class="plain-syntax"> </span><span class="identifier-syntax">is</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">times</span><span class="plain-syntax"> (</span><span class="identifier-syntax">T</span><span class="plain-syntax"> - </span><span class="identifier-syntax">text</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">regular</span><span class="plain-syntax"> </span><span class="identifier-syntax">expression</span>
|
||||
<span class="plain-syntax"> (</span><span class="identifier-syntax">find</span><span class="plain-syntax"> - </span><span class="identifier-syntax">text</span><span class="plain-syntax">),</span><span class="identifier-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">insensitively</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">ph_nummatchesre</span><span class="plain-syntax">):</span>
|
||||
|
|
|
@ -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">-></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">
|
||||
|
|
|
@ -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">§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">§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"> >= </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">-></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>
|
||||
|
|
|
@ -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: 3129 excerpt meanings</span>
|
||||
<span class="plain-syntax"> Stored among 846 words out of total vocabulary of 10735</span>
|
||||
<span class="plain-syntax"> 716 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: 276472</span>
|
||||
<span class="plain-syntax"> of which, total with incorrect hash codes: 253735</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">❮</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">❯</a></li></ul></div>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>§22. </b>We now have a mixed bag of value properties, all descriptive — it's an
|
||||
interesting reflection on how qualitative English text usually is that the
|
||||
|
|
|
@ -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>§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>§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>§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>§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>§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>
|
||||
|
|
|
@ -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">§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">§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">§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">§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">§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">§6</a><br/>The Mini-Website - <a href="7-tm.html#SP3">§3</a><br/>Dictionary - <a href="7-dct.html#SP1">§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">§6</a><br/>The Mini-Website - <a href="7-tm.html#SP3">§3</a><br/>Dictionary - <a href="7-dct.html#SP1">§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">§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">§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">§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">§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">§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">§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">§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">§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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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">§5</a><br/>Index Pages - <a href="7-ip.html#SP1_1_2_1_4">§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">§5</a><br/>Index Pages - <a href="7-ip.html#SP1_2_2_4">§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">-></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">-></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">-></span><span class="element-syntax">details</span><span class="plain-syntax">); </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
|
|
|
@ -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">§12</a>, <a href="2-cps.html#SP13">§13</a>, <a href="2-cps.html#SP14">§14</a><br/>The Report - <a href="7-tr.html#SP2">§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">§12</a>, <a href="2-cps.html#SP13">§13</a>, <a href="2-cps.html#SP14">§14</a><br/>Index Pages - <a href="7-ip.html#SP5">§5</a><br/>The Report - <a href="7-tr.html#SP2">§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>
|
||||
|
|
|
@ -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">§11</a><br/>Inbuild Control - <a href="1-ic.html#SP15">§15</a><br/>Inform7 Skill - <a href="3-is2.html#SP1">§1</a><br/>Extension Bundle Manager - <a href="4-ebm.html#SP5">§5</a><br/>Inclusions - <a href="6-inc.html#SP6_1">§6.1</a><br/>Census - <a href="7-cns.html#SP2">§2</a>, <a href="7-cns.html#SP3">§3</a>, <a href="7-cns.html#SP5">§5</a>, <a href="7-cns.html#SP7_1">§7.1</a><br/>Index Pages - <a href="7-ip.html#SP1_1_1_1">§1.1.1.1</a>, <a href="7-ip.html#SP1_1_2_1_6_4_3">§1.1.2.1.6.4.3</a><br/>The Report - <a href="7-tr.html#SP3">§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">§11</a><br/>Inbuild Control - <a href="1-ic.html#SP15">§15</a><br/>Inform7 Skill - <a href="3-is2.html#SP1">§1</a><br/>Extension Bundle Manager - <a href="4-ebm.html#SP5">§5</a><br/>Inclusions - <a href="6-inc.html#SP6_1">§6.1</a><br/>Census - <a href="7-cns.html#SP2">§2</a>, <a href="7-cns.html#SP3">§3</a>, <a href="7-cns.html#SP5">§5</a>, <a href="7-cns.html#SP6_1">§6.1</a><br/>Index Pages - <a href="7-ip.html#SP1_2_1">§1.2.1</a>, <a href="7-ip.html#SP1_2_2_6_4_3">§1.2.2.6.4.3</a><br/>The Report - <a href="7-tr.html#SP3">§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">-></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>§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">§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">§15</a><br/>Index Pages - <a href="7-ip.html#SP1_2_1">§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">-></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">§10</a><br/>Language Services - <a href="5-ls.html#SP11">§11</a><br/>Inclusions - <a href="6-inc.html#SP6_1_2">§6.1.2</a><br/>Census - <a href="7-cns.html#SP7">§7</a><br/>The Report - <a href="7-tr.html#SP2_4_4">§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">§10</a><br/>Language Services - <a href="5-ls.html#SP11">§11</a><br/>Inclusions - <a href="6-inc.html#SP6_1_2">§6.1.2</a><br/>Census - <a href="7-cns.html#SP6">§6</a><br/>Index Pages - <a href="7-ip.html#SP1_1">§1.1</a><br/>The Report - <a href="7-tr.html#SP2_4_4">§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"> >= </span><span class="constant-syntax">3</span><span class="plain-syntax">) {</span>
|
||||
|
|
|
@ -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">§11</a><br/>Census - <a href="7-cns.html#SP7">§7</a><br/>The Report - <a href="7-tr.html#SP2_4_4">§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">§11</a><br/>Census - <a href="7-cns.html#SP6">§6</a><br/>Index Pages - <a href="7-ip.html#SP1_1">§1.1</a><br/>The Report - <a href="7-tr.html#SP2_4_4">§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>
|
||||
|
||||
|
|
|
@ -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">§11</a><br/>Headings - <a href="6-hdn.html#SP22">§22</a>, <a href="6-hdn.html#SP22_2">§22.2</a><br/>Dictionary - <a href="7-dct.html#SP11">§11</a>, <a href="7-dct.html#SP17">§17</a>, <a href="7-dct.html#SP17_2">§17.2</a><br/>Census - <a href="7-cns.html#SP7_1">§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">§11</a><br/>Headings - <a href="6-hdn.html#SP22">§22</a>, <a href="6-hdn.html#SP22_2">§22.2</a><br/>Dictionary - <a href="7-dct.html#SP11">§11</a>, <a href="7-dct.html#SP17">§17</a>, <a href="7-dct.html#SP17_2">§17.2</a><br/>Census - <a href="7-cns.html#SP6_1">§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">-></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">-></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">-></span><span class="element-syntax">author_name</span><span class="plain-syntax">, </span><span class="identifier-syntax">w2</span><span class="plain-syntax">-></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">§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">§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->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">§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">§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>
|
||||
|
|
|
@ -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>§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">§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">§5</a><br/>The Report - <a href="7-tr.html#SP2_5_1">§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>
|
||||
|
||||
|
|
|
@ -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">§6</a>, <a href="4-em.html#SP7">§7</a><br/>Extension Bundle Manager - <a href="4-ebm.html#SP6">§6</a><br/>Census - <a href="7-cns.html#SP3">§3</a><br/>Index Pages - <a href="7-ip.html#SP1_1_2_1_6_4_3">§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">§6</a>, <a href="4-em.html#SP7">§7</a><br/>Extension Bundle Manager - <a href="4-ebm.html#SP6">§6</a><br/>Census - <a href="7-cns.html#SP3">§3</a><br/>Index Pages - <a href="7-ip.html#SP1_2_2_6_4_3">§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">-></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>
|
||||
|
|
|
@ -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>§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">§12</a><br/>Language Services - <a href="5-ls.html#SP10">§10</a><br/>Project Services - <a href="5-ps2.html#SP35">§35</a><br/>Source Text - <a href="6-st.html#SP13">§13</a><br/>Inclusions - <a href="6-inc.html#SP6_1">§6.1</a><br/>Dictionary - <a href="7-dct.html#SP9">§9</a><br/>Census - <a href="7-cns.html#SP5">§5</a>, <a href="7-cns.html#SP6">§6</a><br/>Index Pages - <a href="7-ip.html#SP1_1_2_1_6_4_4">§1.1.2.1.6.4.4</a><br/>Individual Pages - <a href="7-ip2.html#SP2_1">§2.1</a><br/>The Report - <a href="7-tr.html#SP2_4_1">§2.4.1</a>, <a href="7-tr.html#SP2_4_2">§2.4.2</a>, <a href="7-tr.html#SP2_4_2_1">§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">§12</a><br/>Language Services - <a href="5-ls.html#SP10">§10</a><br/>Project Services - <a href="5-ps2.html#SP35">§35</a><br/>Source Text - <a href="6-st.html#SP13">§13</a><br/>Inclusions - <a href="6-inc.html#SP6_1">§6.1</a><br/>Dictionary - <a href="7-dct.html#SP9">§9</a><br/>Census - <a href="7-cns.html#SP5">§5</a><br/>Index Pages - <a href="7-ip.html#SP1_2_2_6_4_4">§1.2.2.6.4.4</a>, <a href="7-ip.html#SP6">§6</a><br/>Individual Pages - <a href="7-ip2.html#SP2_1">§2.1</a><br/>The Report - <a href="7-tr.html#SP2_4_1">§2.4.1</a>, <a href="7-tr.html#SP2_4_2">§2.4.2</a>, <a href="7-tr.html#SP2_4_2_1">§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">-></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">§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">-></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">-></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">§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">§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">-></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">§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">§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">-></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">§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">-></span><span class="element-syntax">as_copy</span><span class="plain-syntax">-></span><span class="element-syntax">edition</span><span class="plain-syntax">-></span><span class="element-syntax">work</span><span class="plain-syntax">, </span><span class="identifier-syntax">E2</span><span class="plain-syntax">-></span><span class="element-syntax">as_copy</span><span class="plain-syntax">-></span><span class="element-syntax">edition</span><span class="plain-syntax">-></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">-></span><span class="element-syntax">as_copy</span><span class="plain-syntax">-></span><span class="element-syntax">edition</span><span class="plain-syntax">-></span><span class="element-syntax">version</span><span class="plain-syntax">, </span><span class="identifier-syntax">E2</span><span class="plain-syntax">-></span><span class="element-syntax">as_copy</span><span class="plain-syntax">-></span><span class="element-syntax">edition</span><span class="plain-syntax">-></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">§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">§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">§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">-></span><span class="element-syntax">as_copy</span><span class="plain-syntax">-></span><span class="element-syntax">edition</span><span class="plain-syntax">-></span><span class="element-syntax">work</span><span class="plain-syntax">-></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">-></span><span class="element-syntax">as_copy</span><span class="plain-syntax">-></span><span class="element-syntax">edition</span><span class="plain-syntax">-></span><span class="element-syntax">work</span><span class="plain-syntax">-></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">§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">§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">-></span><span class="element-syntax">as_copy</span><span class="plain-syntax">-></span><span class="element-syntax">edition</span><span class="plain-syntax">-></span><span class="element-syntax">work</span><span class="plain-syntax">-></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">-></span><span class="element-syntax">as_copy</span><span class="plain-syntax">-></span><span class="element-syntax">edition</span><span class="plain-syntax">-></span><span class="element-syntax">work</span><span class="plain-syntax">-></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">§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">§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">§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">§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">-></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">§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">§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">-></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">§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">§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">-></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">-></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">§8</a><br/>Extension Bundle Manager - <a href="4-ebm.html#SP8">§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">§8</a><br/>Extension Bundle Manager - <a href="4-ebm.html#SP8">§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">-></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">-></span><span class="element-syntax">as_copy</span><span class="plain-syntax">, </span><span class="identifier-syntax">E</span><span class="plain-syntax">-></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">§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">§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">-></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">§2.2.1.5</a>, <a href="7-ip2.html#SP2_2_1_6">§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">§2.2.1.5</a>, <a href="7-ip2.html#SP2_2_1_6">§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">-></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">-></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">§4</a>, <a href="6-st.html#SP5">§5</a><br/>Headings - <a href="6-hdn.html#SP18">§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">§4</a>, <a href="6-st.html#SP5">§5</a><br/>Headings - <a href="6-hdn.html#SP18">§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">-></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">-></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">§5</a><br/>The Report - <a href="7-tr.html#SP2_4_1">§2.4.1</a>, <a href="7-tr.html#SP2_4_2">§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">§5</a><br/>Index Pages - <a href="7-ip.html#SP6">§6</a><br/>The Report - <a href="7-tr.html#SP2_4_1">§2.4.1</a>, <a href="7-tr.html#SP2_4_2">§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">-></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">§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">§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">-></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">§35</a><br/>Inclusions - <a href="6-inc.html#SP6_1_1">§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">§35</a><br/>Inclusions - <a href="6-inc.html#SP6_1_1">§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">-></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">§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">§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">-></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">-></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">-></span><span class="element-syntax">must_satisfy</span><span class="plain-syntax">-></span><span class="element-syntax">version_range</span><span class="plain-syntax">, </span><span class="identifier-syntax">req</span><span class="plain-syntax">-></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">§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">§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">-></span><span class="element-syntax">as_copy</span><span class="plain-syntax">-></span><span class="element-syntax">edition</span><span class="plain-syntax">, </span><span class="identifier-syntax">E</span><span class="plain-syntax">-></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>§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">§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">§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">§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">§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>
|
||||
|
|
|
@ -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>§2. </b>Kits come with an "if this then that" service for including other kits,
|
||||
and we represent rules with the following:
|
||||
</p>
|
||||
|
|
|
@ -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>§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>
|
||||
|
||||
|
|
|
@ -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">§2.4.4</a>, <a href="7-tr.html#SP2_5">§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">§1.1</a>, <a href="7-ip.html#SP1_2_1">§1.2.1</a><br/>The Report - <a href="7-tr.html#SP2_4_4">§2.4.4</a>, <a href="7-tr.html#SP2_5">§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">-></span><span class="element-syntax">materials_nest</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
|
|
@ -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">§1. Beginning</a></li><li><a href="7-cns.html#SP4">§4. Census data</a></li><li><a href="7-cns.html#SP7">§7. Performing the census</a></li></ul><hr class="tocbar">
|
||||
<ul class="toc"><li><a href="7-cns.html#SP1">§1. Beginning</a></li><li><a href="7-cns.html#SP4">§4. Census data</a></li><li><a href="7-cns.html#SP6">§6. Performing the census</a></li></ul><hr class="tocbar">
|
||||
|
||||
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>§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>§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">§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">§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">§1.1.1.1</a>, <a href="7-ip.html#SP1_1_2_1_6_2_2">§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">-></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">§1.1.1.1</a>, <a href="7-ip.html#SP1_1_2_1_6_2_2">§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">-></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>§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">§1.1.2.1.6.4.1</a>, <a href="7-ip.html#SP1_1_2_1_6_4_4">§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">-></span><span class="element-syntax">found_as</span><span class="plain-syntax">-></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">§6</a><br/>Index Pages - <a href="7-ip.html#SP1_1_2_1_6_2">§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">-></span><span class="element-syntax">found_as</span><span class="plain-syntax">-></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">-></span><span class="element-syntax">found_as</span><span class="plain-syntax">-></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">-></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">§1.1.2.1.6.2.1</a>, <a href="7-ip.html#SP1_1_2_1_6_4_1">§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">-></span><span class="element-syntax">found_as</span><span class="plain-syntax">-></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">-></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>§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">§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">-></span><span class="element-syntax">found_as</span><span class="plain-syntax">-></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">-></span><span class="element-syntax">found_as</span><span class="plain-syntax">-></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">§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">-></span><span class="element-syntax">found_as</span><span class="plain-syntax">-></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">-></span><span class="element-syntax">found_as</span><span class="plain-syntax">-></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">§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">-></span><span class="element-syntax">found_as</span><span class="plain-syntax">-></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">-></span><span class="element-syntax">found_as</span><span class="plain-syntax">-></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">§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">-></span><span class="element-syntax">found_as</span><span class="plain-syntax">-></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">-></span><span class="element-syntax">found_as</span><span class="plain-syntax">-></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">§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">-></span><span class="element-syntax">found_as</span><span class="plain-syntax">-></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">-></span><span class="element-syntax">found_as</span><span class="plain-syntax">-></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>§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>§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">§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">§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">-></span><span class="element-syntax">search_list</span><span class="plain-syntax">, </span><span class="identifier-syntax">C</span><span class="plain-syntax">-></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">-></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">-></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">-></span><span class="element-syntax">copy</span><span class="plain-syntax">-></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>§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>§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">§7</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP7_2" class="paragraph-anchor"></a><b>§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">§6</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP6_2" class="paragraph-anchor"></a><b>§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">-></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">-></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">§7</a>.</li></ul>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="7-cns.html#SP6">§6</a>.</li></ul>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="7-dct.html">❮</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">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
|
|
@ -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>§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">§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"> > </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>§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">§17</a>, <a href="7-dct.html#SP17_2">§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">§17</a>, <a href="7-dct.html#SP17_2">§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">-></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">§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">§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">§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">§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
|
@ -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">-></span><span class="element-syntax">as_copy</span><span class="plain-syntax">-></span><span class="element-syntax">edition</span><span class="plain-syntax">-></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">-></span><span class="identifier-syntax">parsed_from</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">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"%S&nbsp;"</span><span class="plain-syntax">, </span><span class="identifier-syntax">C</span><span class="plain-syntax">-></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">-></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">§2.2.1</a>.</li></ul>
|
||||
|
|
|
@ -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">§2</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP2_3" class="paragraph-anchor"></a><b>§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">§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">§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>
|
||||
|
|
|
@ -21,6 +21,7 @@ which use this module:
|
|||
@e extension_census_CLASS
|
||||
@e extension_census_datum_CLASS
|
||||
@e extension_dictionary_entry_CLASS
|
||||
@e extensions_key_item_CLASS
|
||||
@e heading_CLASS
|
||||
@e heading_tree_CLASS
|
||||
@e inbuild_copy_CLASS
|
||||
|
@ -54,6 +55,7 @@ DECLARE_CLASS(element_activation)
|
|||
DECLARE_CLASS(extension_census_datum)
|
||||
DECLARE_CLASS(extension_census)
|
||||
DECLARE_CLASS(extension_dictionary_entry)
|
||||
DECLARE_CLASS(extensions_key_item)
|
||||
DECLARE_CLASS(heading_tree)
|
||||
DECLARE_CLASS(heading)
|
||||
DECLARE_CLASS(inbuild_copy)
|
||||
|
|
|
@ -232,7 +232,7 @@ each extension's page is generated from its |inbuild_work|.
|
|||
=
|
||||
void Works::begin_extension_link(OUTPUT_STREAM, inbuild_work *work, text_stream *rubric) {
|
||||
TEMPORARY_TEXT(link)
|
||||
WRITE_TO(link, "href='inform://Extensions/Extensions/");
|
||||
WRITE_TO(link, "href='inform://Extensions/Documentation/");
|
||||
Works::escape_apostrophes(link, work->author_name);
|
||||
WRITE_TO(link, "/");
|
||||
Works::escape_apostrophes(link, work->title);
|
||||
|
|
|
@ -90,53 +90,6 @@ int ExtensionCensus::ecd_used(extension_census_datum *ecd) {
|
|||
return E->has_historically_been_used;
|
||||
}
|
||||
|
||||
@ The following give some sorting criteria, and are functions fit to be
|
||||
handed to |qsort|.
|
||||
|
||||
=
|
||||
int ExtensionCensus::compare_ecd_by_title(const void *ecd1, const void *ecd2) {
|
||||
extension_census_datum *e1 = *((extension_census_datum **) ecd1);
|
||||
extension_census_datum *e2 = *((extension_census_datum **) ecd2);
|
||||
inform_extension *E1 = Extensions::from_copy(e1->found_as->copy);
|
||||
inform_extension *E2 = Extensions::from_copy(e2->found_as->copy);
|
||||
return Extensions::compare_by_title(E2, E1);
|
||||
}
|
||||
|
||||
int ExtensionCensus::compare_ecd_by_author(const void *ecd1, const void *ecd2) {
|
||||
extension_census_datum *e1 = *((extension_census_datum **) ecd1);
|
||||
extension_census_datum *e2 = *((extension_census_datum **) ecd2);
|
||||
inform_extension *E1 = Extensions::from_copy(e1->found_as->copy);
|
||||
inform_extension *E2 = Extensions::from_copy(e2->found_as->copy);
|
||||
return Extensions::compare_by_author(E2, E1);
|
||||
}
|
||||
|
||||
int ExtensionCensus::compare_ecd_by_installation(const void *ecd1, const void *ecd2) {
|
||||
extension_census_datum *e1 = *((extension_census_datum **) ecd1);
|
||||
extension_census_datum *e2 = *((extension_census_datum **) ecd2);
|
||||
int d = ExtensionCensus::installation_region(e1) -
|
||||
ExtensionCensus::installation_region(e2);
|
||||
if (d != 0) return d;
|
||||
inform_extension *E1 = Extensions::from_copy(e1->found_as->copy);
|
||||
inform_extension *E2 = Extensions::from_copy(e2->found_as->copy);
|
||||
return Extensions::compare_by_edition(E1, E2);
|
||||
}
|
||||
|
||||
int ExtensionCensus::compare_ecd_by_date(const void *ecd1, const void *ecd2) {
|
||||
extension_census_datum *e1 = *((extension_census_datum **) ecd1);
|
||||
extension_census_datum *e2 = *((extension_census_datum **) ecd2);
|
||||
inform_extension *E1 = Extensions::from_copy(e1->found_as->copy);
|
||||
inform_extension *E2 = Extensions::from_copy(e2->found_as->copy);
|
||||
return Extensions::compare_by_date(E1, E2);
|
||||
}
|
||||
|
||||
int ExtensionCensus::compare_ecd_by_length(const void *ecd1, const void *ecd2) {
|
||||
extension_census_datum *e1 = *((extension_census_datum **) ecd1);
|
||||
extension_census_datum *e2 = *((extension_census_datum **) ecd2);
|
||||
inform_extension *E1 = Extensions::from_copy(e1->found_as->copy);
|
||||
inform_extension *E2 = Extensions::from_copy(e2->found_as->copy);
|
||||
return Extensions::compare_by_length(E1, E2);
|
||||
}
|
||||
|
||||
@h Performing the census.
|
||||
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
|
||||
|
|
|
@ -2,25 +2,40 @@
|
|||
|
||||
To generate the two top-level pages in the extension mini-website.
|
||||
|
||||
@h Writing the extensions home pages.
|
||||
There are two of these, both with the same surround:
|
||||
|
||||
@e HOME_EXTPAGE from 1
|
||||
@e INDEX_EXTPAGE
|
||||
@h Writing the extensions home page.
|
||||
There were once two of these, but now there's just one.
|
||||
|
||||
=
|
||||
void ExtensionIndex::write(filename *F, int content, extension_census *C) {
|
||||
void ExtensionIndex::write(inform_project *proj) {
|
||||
filename *F = ExtensionWebsite::index_URL(proj, I"Extensions.html");
|
||||
if (F == NULL) return;
|
||||
|
||||
linked_list *L = NEW_LINKED_LIST(inbuild_search_result);
|
||||
linked_list *U = NEW_LINKED_LIST(inbuild_copy);
|
||||
linked_list *R = NEW_LINKED_LIST(inbuild_requirement);
|
||||
@<See what we have installed and used@>;
|
||||
|
||||
text_stream HOMEPAGE_struct;
|
||||
text_stream *OUT = &HOMEPAGE_struct;
|
||||
if (STREAM_OPEN_TO_FILE(OUT, F, UTF8_ENC) == FALSE) return;
|
||||
|
||||
InformPages::header(OUT, I"Extensions", JAVASCRIPT_FOR_EXTENSIONS_IRES, NULL);
|
||||
@<Write the body of the HTML@>;
|
||||
InformPages::footer(OUT);
|
||||
STREAM_CLOSE(OUT);
|
||||
}
|
||||
|
||||
@<See what we have installed and used@> =
|
||||
linked_list *search_list = NEW_LINKED_LIST(inbuild_nest);
|
||||
inbuild_nest *materials = Projects::materials_nest(proj);
|
||||
if (materials) ADD_TO_LINKED_LIST(materials, inbuild_nest, search_list);
|
||||
inbuild_nest *internal = Supervisor::internal();
|
||||
if (internal) ADD_TO_LINKED_LIST(internal, inbuild_nest, search_list);
|
||||
if (LinkedLists::len(search_list) > 0) {
|
||||
inbuild_requirement *req = Requirements::anything_of_genre(extension_bundle_genre);
|
||||
Nests::search_for(req, search_list, L);
|
||||
}
|
||||
ExtensionIndex::find_used_extensions(proj, U, R);
|
||||
|
||||
@<Write the body of the HTML@> =
|
||||
HTML::begin_html_table(OUT, NULL, TRUE, 0, 4, 0, 0, 0);
|
||||
HTML::first_html_column(OUT, 0);
|
||||
|
@ -31,186 +46,132 @@ void ExtensionIndex::write(filename *F, int content, extension_census *C) {
|
|||
HTML_OPEN_WITH("div", "class=\"headingpanellayout headingpanelalt\"");
|
||||
HTML_OPEN_WITH("div", "class=\"headingtext\"");
|
||||
HTML::begin_span(OUT, I"headingpaneltextalt");
|
||||
WRITE("Installed Extensions");
|
||||
WRITE("Extensions in this Project");
|
||||
HTML::end_span(OUT);
|
||||
HTML_CLOSE("div");
|
||||
HTML_OPEN_WITH("div", "class=\"headingrubric\"");
|
||||
HTML::begin_span(OUT, I"headingpanelrubricalt");
|
||||
WRITE("Bundles of extra rules or phrases to extend what Inform can do");
|
||||
WRITE("Those installed and those used");
|
||||
HTML::end_span(OUT);
|
||||
HTML_CLOSE("div");
|
||||
HTML_CLOSE("div");
|
||||
@<Write the heading details text for the page@>;
|
||||
@<Display the location of installed extensions@>;
|
||||
HTML::end_html_row(OUT);
|
||||
HTML::end_html_table(OUT);
|
||||
HTML_TAG("hr");
|
||||
@<Write the main content for the page@>;
|
||||
|
||||
@<Write the heading details text for the page@> =
|
||||
switch (content) {
|
||||
case HOME_EXTPAGE:
|
||||
@<Display the location of installed extensions@>;
|
||||
@<Display a warning about any census errors which turned up@>;
|
||||
break;
|
||||
case INDEX_EXTPAGE:
|
||||
HTML_OPEN("p");
|
||||
WRITE("Whenever an extension is used, its definitions are entered into the "
|
||||
"following index. (Thus, a newly installed but never-used extension "
|
||||
"is not indexed yet.).");
|
||||
HTML_CLOSE("p");
|
||||
break;
|
||||
}
|
||||
|
||||
@<Write the main content for the page@> =
|
||||
switch (content) {
|
||||
case HOME_EXTPAGE: @<Display an alphabetised directory@>; break;
|
||||
case INDEX_EXTPAGE: ExtensionDictionary::write_to_HTML(OUT); break;
|
||||
}
|
||||
HTML_OPEN("p");
|
||||
HTML_OPEN("b");
|
||||
WRITE("The project '%S' currently uses...", proj->as_copy->edition->work->title);
|
||||
HTML_CLOSE("b");
|
||||
HTML_CLOSE("p");
|
||||
int usage_state = TRUE;
|
||||
@<Display an alphabetised directory@>;
|
||||
HTML_TAG("hr");
|
||||
HTML_OPEN("p");
|
||||
HTML_OPEN("b");
|
||||
WRITE("These are available, but are not used by '%S'...", proj->as_copy->edition->work->title);
|
||||
HTML_CLOSE("b");
|
||||
HTML_CLOSE("p");
|
||||
usage_state = FALSE;
|
||||
@<Display an alphabetised directory@>;
|
||||
|
||||
@ From here on, then, all the code in this section generates the main directory
|
||||
page, not the index of terms, which is all handled by
|
||||
//ExtensionDictionary::write_to_HTML//.
|
||||
|
||||
@<Display the location of installed extensions@> =
|
||||
int nps = 0, nbi = 0, ni = 0;
|
||||
extension_census_datum *ecd;
|
||||
LOOP_OVER(ecd, extension_census_datum) {
|
||||
if (Nests::get_tag(ecd->found_as->nest) == MATERIALS_NEST_TAG) nps++;
|
||||
else if (Nests::get_tag(ecd->found_as->nest) == INTERNAL_NEST_TAG) nbi++;
|
||||
else ni++;
|
||||
int nbi = 0, nps = 0;
|
||||
inbuild_search_result *ecd;
|
||||
LOOP_OVER_LINKED_LIST(ecd, inbuild_search_result, L) {
|
||||
if (Nests::get_tag(ecd->nest) == INTERNAL_NEST_TAG) nbi++;
|
||||
else nps++;
|
||||
}
|
||||
|
||||
HTML_OPEN("p");
|
||||
pathname *P = Nests::get_location(Projects::materials_nest(proj));
|
||||
P = Pathnames::down(P, I"Extensions");
|
||||
PasteButtons::open_file(OUT, P, NULL, PROJECT_SPECIFIC_SYMBOL);
|
||||
WRITE(" ");
|
||||
if (nps > 0) {
|
||||
WRITE("%d extension%s installed in the .materials folder for the "
|
||||
"project '%S'. (Click the purple folder icon to show the location.)",
|
||||
nps, (nps==1)?" is":"s are", proj->as_copy->edition->work->title);
|
||||
} else {
|
||||
WRITE("No extensions are installed in the .materials folder for the "
|
||||
"project '%S'. (Click the purple folder icon to show the location. "
|
||||
"Extensions should be put in the 'Extensions' subfolder of this: you "
|
||||
"can put them there yourself, or use the Inform app to install them "
|
||||
"for you.)", proj->as_copy->edition->work->title);
|
||||
}
|
||||
HTML_CLOSE("p");
|
||||
|
||||
HTML_OPEN("p");
|
||||
HTML_TAG_WITH("img", "src='inform:/doc_images/builtin_ext.png' border=0");
|
||||
WRITE(" You have "
|
||||
"%d extensions built-in to this copy of Inform, marked with a grey folder "
|
||||
"icon in the catalogue below.",
|
||||
nbi);
|
||||
WRITE(" ");
|
||||
WRITE("As well as being able to use extensions installed into its own folder, "
|
||||
"any project can use extensions which come built into the Inform app. There "
|
||||
"are currently %d.", nbi);
|
||||
HTML_CLOSE("p");
|
||||
HTML_OPEN("p");
|
||||
if (ni == 0) {
|
||||
HTML_TAG_WITH("img", "src='inform:/doc_images/folder4.png' border=0");
|
||||
WRITE(" You have no other extensions installed at present.");
|
||||
} else {
|
||||
#ifdef INDEX_MODULE
|
||||
PasteButtons::open_file(OUT, ExtensionCensus::external_path(C), NULL,
|
||||
"src='inform:/doc_images/folder4.png' border=0");
|
||||
#endif
|
||||
WRITE(" You have %d further extension%s installed. These are marked "
|
||||
"with a blue folder icon in the catalogue below. (Click it to see "
|
||||
"where the file is stored on your computer.) "
|
||||
"For more extensions, visit <b>www.inform7.com</b>.",
|
||||
ni, (ni==1)?"":"s");
|
||||
}
|
||||
HTML_CLOSE("p");
|
||||
if (nps > 0) {
|
||||
HTML_OPEN("p");
|
||||
#ifdef INDEX_MODULE
|
||||
PasteButtons::open_file(OUT, ExtensionCensus::internal_path(C),
|
||||
NULL, PROJECT_SPECIFIC_SYMBOL);
|
||||
#endif
|
||||
WRITE(" You have %d extension%s in the .materials folder for the "
|
||||
"current project. (Click the purple folder icon to show the "
|
||||
"location.) %s not available to other projects.",
|
||||
nps, (nps==1)?"":"s", (nps==1)?"This is":"These are");
|
||||
HTML_CLOSE("p");
|
||||
}
|
||||
|
||||
@ We sometimes position a warning prominently at the top of the listing,
|
||||
because otherwise its position at the bottom will be invisible unless the user
|
||||
scrolls a long way:
|
||||
|
||||
@<Display a warning about any census errors which turned up@> =
|
||||
if ((C->no_census_errors > 0) &&
|
||||
(NUMBER_CREATED(extension_census_datum) >= 20)) { /* it's a short page anyway */
|
||||
HTML_OPEN("p");
|
||||
HTML_TAG_WITH("img", "border=0 src=inform:/doc_images/misinstalled.png");
|
||||
WRITE(" "
|
||||
"<b>Warning</b>. One or more extensions are installed incorrectly: "
|
||||
"see details below.");
|
||||
HTML_CLOSE("p");
|
||||
}
|
||||
|
||||
@ The following is an alphabetised directory of extensions by author and then
|
||||
title, along with some useful information about them, and then a list of
|
||||
any oddities found in the external extensions area.
|
||||
|
||||
@<Display an alphabetised directory@> =
|
||||
int key_vms = FALSE, key_override = FALSE, key_builtin = FALSE,
|
||||
key_pspec = FALSE, key_bullet = FALSE;
|
||||
@<Display the census radio buttons@>;
|
||||
int no_entries = NUMBER_CREATED(extension_census_datum);
|
||||
extension_census_datum **sorted_census_results = Memory::calloc(no_entries,
|
||||
sizeof(extension_census_datum *), EXTENSION_DICTIONARY_MREASON);
|
||||
for (int d=1; d<=5; d++) {
|
||||
linked_list *key_list = NEW_LINKED_LIST(extensions_key_item);
|
||||
if (usage_state == FALSE) @<Display the census radio buttons@>;
|
||||
int no_entries = LinkedLists::len(L);
|
||||
inbuild_search_result **sorted_census_results = Memory::calloc(no_entries,
|
||||
sizeof(inbuild_search_result *), EXTENSION_DICTIONARY_MREASON);
|
||||
for (int d=((usage_state)?4:1); d<=((usage_state)?4:3); d++) {
|
||||
@<Start an HTML division for this sorted version of the census@>;
|
||||
int no_entries_in_set = 0;
|
||||
@<Sort the census into the appropriate order@>;
|
||||
@<Display the sorted version of the census@>;
|
||||
@<Print the key to any symbols used in the census lines@>;
|
||||
@<Transcribe any census errors@>;
|
||||
HTML_CLOSE("div");
|
||||
}
|
||||
@<Print the key to any symbols used in the census lines@>;
|
||||
@<Transcribe any census errors@>;
|
||||
Memory::I7_array_free(sorted_census_results, EXTENSION_DICTIONARY_MREASON,
|
||||
no_entries, sizeof(extension_census_datum *));
|
||||
no_entries, sizeof(inbuild_search_result *));
|
||||
|
||||
@ I am the first to admit that this implementation is not inspired. There
|
||||
are five radio buttons, and number 2 is selected by default.
|
||||
are three radio buttons, and number 1 is selected by default.
|
||||
|
||||
@<Display the census radio buttons@> =
|
||||
HTML_OPEN("p");
|
||||
WRITE("Sort catalogue: ");
|
||||
WRITE("Sort this list: ");
|
||||
HTML_OPEN_WITH("a",
|
||||
"href=\"#\" style=\"text-decoration: none\" "
|
||||
"onclick=\"openExtra('disp1', 'plus1'); closeExtra('disp2', 'plus2'); "
|
||||
"closeExtra('disp3', 'plus3'); closeExtra('disp4', 'plus4'); "
|
||||
"closeExtra('disp5', 'plus5'); return false;\"");
|
||||
HTML_TAG_WITH("img", "border=0 id=\"plus1\" src=inform:/doc_images/extrarboff.png");
|
||||
"closeExtra('disp3', 'plus3'); return false;\"");
|
||||
HTML_TAG_WITH("img", "border=0 id=\"plus1\" src=inform:/doc_images/extrarbon.png");
|
||||
WRITE(" By title");
|
||||
HTML_CLOSE("a");
|
||||
WRITE(" | ");
|
||||
HTML_OPEN_WITH("a",
|
||||
"href=\"#\" style=\"text-decoration: none\" "
|
||||
"onclick=\"closeExtra('disp1', 'plus1'); openExtra('disp2', 'plus2'); "
|
||||
"closeExtra('disp3', 'plus3'); closeExtra('disp4', 'plus4'); "
|
||||
"closeExtra('disp5', 'plus5'); return false;\"");
|
||||
HTML_TAG_WITH("img", "border=0 id=\"plus2\" src=inform:/doc_images/extrarbon.png");
|
||||
"closeExtra('disp3', 'plus3'); return false;\"");
|
||||
HTML_TAG_WITH("img", "border=0 id=\"plus2\" src=inform:/doc_images/extrarboff.png");
|
||||
WRITE(" By author");
|
||||
HTML_CLOSE("a");
|
||||
WRITE(" | ");
|
||||
HTML_OPEN_WITH("a",
|
||||
"href=\"#\" style=\"text-decoration: none\" "
|
||||
"onclick=\"closeExtra('disp1', 'plus1'); closeExtra('disp2', 'plus2'); "
|
||||
"openExtra('disp3', 'plus3'); closeExtra('disp4', 'plus4'); "
|
||||
"closeExtra('disp5', 'plus5'); return false;\"");
|
||||
"openExtra('disp3', 'plus3'); return false;\"");
|
||||
HTML_TAG_WITH("img", "border=0 id=\"plus3\" src=inform:/doc_images/extrarboff.png");
|
||||
WRITE(" By installation");
|
||||
HTML_CLOSE("a");
|
||||
WRITE(" | ");
|
||||
HTML_OPEN_WITH("a",
|
||||
"href=\"#\" style=\"text-decoration: none\" "
|
||||
"onclick=\"closeExtra('disp1', 'plus1'); closeExtra('disp2', 'plus2'); "
|
||||
"closeExtra('disp3', 'plus3'); openExtra('disp4', 'plus4'); "
|
||||
"closeExtra('disp5', 'plus5'); return false;\"");
|
||||
HTML_TAG_WITH("img", "border=0 id=\"plus4\" src=inform:/doc_images/extrarboff.png");
|
||||
WRITE(" By date used");
|
||||
HTML_CLOSE("a");
|
||||
WRITE(" | ");
|
||||
HTML_OPEN_WITH("a",
|
||||
"href=\"#\" style=\"text-decoration: none\" "
|
||||
"onclick=\"closeExtra('disp1', 'plus1'); closeExtra('disp2', 'plus2'); "
|
||||
"closeExtra('disp3', 'plus3'); closeExtra('disp4', 'plus4'); "
|
||||
"openExtra('disp5', 'plus5'); return false;\"");
|
||||
HTML_TAG_WITH("img", "border=0 id=\"plus5\" src=inform:/doc_images/extrarboff.png");
|
||||
WRITE(" By word count");
|
||||
WRITE(" By location");
|
||||
HTML_CLOSE("a");
|
||||
HTML_CLOSE("p");
|
||||
|
||||
@ Consequently, of the five divisions, number 2 is shown and the others
|
||||
@ Consequently, of the three divisions, number 1 is shown and the others
|
||||
hidden, by default.
|
||||
|
||||
@<Start an HTML division for this sorted version of the census@> =
|
||||
char *display = "none";
|
||||
if (d == SORT_CE_BY_AUTHOR) display = "block";
|
||||
if ((d == SORT_CE_BY_TITLE) || (d == SORT_CE_BY_USAGE)) display = "block";
|
||||
HTML_OPEN_WITH("div", "id=\"disp%d\" style=\"display: %s;\"", d, display);
|
||||
|
||||
@ The key at the foot only explicates those symbols actually used, and
|
||||
|
@ -218,30 +179,13 @@ doesn't explicate the "unindexed" symbol at all, since that's actually
|
|||
just a blank image used for horizontal spacing to keep margins straight.
|
||||
|
||||
@<Print the key to any symbols used in the census lines@> =
|
||||
if ((key_builtin) || (key_override) || (key_bullet) || (key_vms) || (key_pspec)) {
|
||||
if (LinkedLists::len(key_list) > 0) {
|
||||
HTML_OPEN("p");
|
||||
WRITE("Key: ");
|
||||
if (key_bullet) {
|
||||
HTML_TAG_WITH("img", "%s", INDEXED_SYMBOL);
|
||||
WRITE(" Used ");
|
||||
}
|
||||
if (key_builtin) {
|
||||
HTML_TAG_WITH("img", "%s", BUILT_IN_SYMBOL);
|
||||
WRITE(" Built in ");
|
||||
}
|
||||
if (key_pspec) {
|
||||
HTML_TAG_WITH("img", "%s", PROJECT_SPECIFIC_SYMBOL);
|
||||
WRITE(" Project specific ");
|
||||
}
|
||||
if (key_override) {
|
||||
HTML_TAG_WITH("img", "%s", OVERRIDING_SYMBOL);
|
||||
WRITE(" Your version overrides the one built in ");
|
||||
}
|
||||
if (key_vms) {
|
||||
#ifdef CORE_MODULE
|
||||
HTML_TAG("br");
|
||||
ExtensionIndex::write_key(OUT);
|
||||
#endif
|
||||
extensions_key_item *eki;
|
||||
LOOP_OVER_LINKED_LIST(eki, extensions_key_item, key_list) {
|
||||
HTML_TAG_WITH("img", "%S", eki->image_URL);
|
||||
WRITE(" %S ", eki->gloss);
|
||||
}
|
||||
HTML_CLOSE("p");
|
||||
}
|
||||
|
@ -250,25 +194,32 @@ just a blank image used for horizontal spacing to keep margins straight.
|
|||
of extensions found by the census:
|
||||
|
||||
@<Transcribe any census errors@> =
|
||||
if (C->no_census_errors > 0) {
|
||||
int no_census_errors = 0;
|
||||
for (int i=0; i<no_entries_in_set; i++) {
|
||||
inbuild_search_result *ecd = sorted_census_results[i];
|
||||
no_census_errors +=
|
||||
LinkedLists::len(ecd->copy->errors_reading_source_text);
|
||||
}
|
||||
if (no_census_errors > 0) {
|
||||
@<Include the headnote explaining what census errors are@>;
|
||||
inbuild_search_result *R;
|
||||
LOOP_OVER_LINKED_LIST(R, inbuild_search_result, C->raw_data)
|
||||
if (LinkedLists::len(R->copy->errors_reading_source_text) > 0) {
|
||||
for (int i=0; i<no_entries_in_set; i++) {
|
||||
inbuild_search_result *ecd = sorted_census_results[i];
|
||||
if (LinkedLists::len(ecd->copy->errors_reading_source_text) > 0) {
|
||||
copy_error *CE;
|
||||
LOOP_OVER_LINKED_LIST(CE, copy_error,
|
||||
R->copy->errors_reading_source_text) {
|
||||
ecd->copy->errors_reading_source_text) {
|
||||
#ifdef INDEX_MODULE
|
||||
HTML::open_indented_p(OUT, 2, "hanging");
|
||||
#endif
|
||||
#ifndef INDEX_MODULE
|
||||
HTML_OPEN("p");
|
||||
#endif
|
||||
WRITE("<b>%X</b> - ", R->copy->edition->work);
|
||||
WRITE("<b>%X</b> - ", ecd->copy->edition->work);
|
||||
CopyErrors::write(OUT, CE);
|
||||
HTML_CLOSE("p");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ We only want to warn people here: not to stop them from using Inform
|
||||
|
@ -293,25 +244,32 @@ until they put matters right.
|
|||
|
||||
@d SORT_CE_BY_TITLE 1
|
||||
@d SORT_CE_BY_AUTHOR 2
|
||||
@d SORT_CE_BY_INSTALL 3
|
||||
@d SORT_CE_BY_DATE 4
|
||||
@d SORT_CE_BY_LENGTH 5
|
||||
@d SORT_CE_BY_LOCATION 3
|
||||
@d SORT_CE_BY_USAGE 4
|
||||
|
||||
@<Sort the census into the appropriate order@> =
|
||||
int i = 0;
|
||||
extension_census_datum *ecd;
|
||||
LOOP_OVER(ecd, extension_census_datum)
|
||||
sorted_census_results[i++] = ecd;
|
||||
inbuild_search_result *ecd;
|
||||
LOOP_OVER_LINKED_LIST(ecd, inbuild_search_result, L) {
|
||||
int found = FALSE;
|
||||
inbuild_copy *C;
|
||||
LOOP_OVER_LINKED_LIST(C, inbuild_copy, U)
|
||||
if (C == ecd->copy) {
|
||||
found = TRUE;
|
||||
break;
|
||||
}
|
||||
if (found == usage_state) sorted_census_results[i++] = ecd;
|
||||
}
|
||||
no_entries_in_set = i;
|
||||
int (*criterion)(const void *, const void *) = NULL;
|
||||
switch (d) {
|
||||
case SORT_CE_BY_TITLE: criterion = ExtensionCensus::compare_ecd_by_title; break;
|
||||
case SORT_CE_BY_AUTHOR: criterion = ExtensionCensus::compare_ecd_by_author; break;
|
||||
case SORT_CE_BY_INSTALL: criterion = ExtensionCensus::compare_ecd_by_installation; break;
|
||||
case SORT_CE_BY_DATE: criterion = ExtensionCensus::compare_ecd_by_date; break;
|
||||
case SORT_CE_BY_LENGTH: criterion = ExtensionCensus::compare_ecd_by_length; break;
|
||||
case SORT_CE_BY_TITLE: criterion = ExtensionIndex::compare_ecd_by_title; break;
|
||||
case SORT_CE_BY_AUTHOR: criterion = ExtensionIndex::compare_ecd_by_author; break;
|
||||
case SORT_CE_BY_LOCATION: criterion = ExtensionIndex::compare_ecd_by_location; break;
|
||||
case SORT_CE_BY_USAGE: criterion = ExtensionIndex::compare_ecd_by_title; break;
|
||||
default: internal_error("no such sorting criterion");
|
||||
}
|
||||
qsort(sorted_census_results, (size_t) no_entries, sizeof(extension_census_datum *),
|
||||
qsort(sorted_census_results, (size_t) no_entries_in_set, sizeof(inbuild_search_result *),
|
||||
criterion);
|
||||
|
||||
@ Standard rows have black text on striped background colours, these being
|
||||
|
@ -322,9 +280,8 @@ the usual ones seen in Mac OS X applications such as iTunes.
|
|||
@<Show a titling row explaining the census sorting, if necessary@>;
|
||||
int stripe = 0;
|
||||
TEMPORARY_TEXT(current_author_name)
|
||||
int i, current_installation = -1;
|
||||
for (i=0; i<no_entries; i++) {
|
||||
extension_census_datum *ecd = sorted_census_results[i];
|
||||
for (int i=0; i<no_entries_in_set; i++) {
|
||||
inbuild_search_result *ecd = sorted_census_results[i];
|
||||
@<Insert a subtitling row in the census sorting, if necessary@>;
|
||||
stripe = 1 - stripe;
|
||||
if (stripe == 0)
|
||||
|
@ -341,53 +298,39 @@ the usual ones seen in Mac OS X applications such as iTunes.
|
|||
@<Show a titling row explaining the census sorting, if necessary@> =
|
||||
switch (d) {
|
||||
case SORT_CE_BY_TITLE:
|
||||
case SORT_CE_BY_USAGE:
|
||||
@<Begin a tinted census line@>;
|
||||
WRITE("Extensions in alphabetical order");
|
||||
@<End a tinted census line@>;
|
||||
break;
|
||||
case SORT_CE_BY_DATE:
|
||||
case SORT_CE_BY_LOCATION:
|
||||
@<Begin a tinted census line@>;
|
||||
WRITE("Extensions in order of date used (most recent first)");
|
||||
@<End a tinted census line@>;
|
||||
break;
|
||||
case SORT_CE_BY_LENGTH:
|
||||
@<Begin a tinted census line@>;
|
||||
WRITE("Extensions in order of word count (longest first)");
|
||||
WRITE("Extensions grouped by location");
|
||||
@<End a tinted census line@>;
|
||||
break;
|
||||
}
|
||||
|
||||
@<Insert a subtitling row in the census sorting, if necessary@> =
|
||||
if ((d == SORT_CE_BY_AUTHOR) &&
|
||||
(Str::ne(current_author_name, ecd->found_as->copy->edition->work->author_name))) {
|
||||
Str::copy(current_author_name, ecd->found_as->copy->edition->work->author_name);
|
||||
(Str::ne(current_author_name, ecd->copy->edition->work->author_name))) {
|
||||
Str::copy(current_author_name, ecd->copy->edition->work->author_name);
|
||||
@<Begin a tinted census line@>;
|
||||
@<Print the author's line in the extension census table@>;
|
||||
@<End a tinted census line@>;
|
||||
stripe = 0;
|
||||
}
|
||||
if ((d == SORT_CE_BY_INSTALL) &&
|
||||
(ExtensionCensus::installation_region(ecd) != current_installation)) {
|
||||
current_installation = ExtensionCensus::installation_region(ecd);
|
||||
@<Begin a tinted census line@>;
|
||||
@<Print the installation region in the extension census table@>;
|
||||
@<End a tinted census line@>;
|
||||
stripe = 0;
|
||||
}
|
||||
|
||||
@<Show a final titling row closing the census sorting@> =
|
||||
@<Begin a tinted census line@>;
|
||||
HTML::begin_span(OUT, I"smaller");
|
||||
WRITE("%d extensions installed", no_entries);
|
||||
WRITE("%d extensions in total", no_entries_in_set);
|
||||
HTML::end_span(OUT);
|
||||
@<End a tinted census line@>;
|
||||
|
||||
@ Usually white text on a grey background.
|
||||
|
||||
@<Begin a tinted census line@> =
|
||||
int span = 4;
|
||||
if (d == SORT_CE_BY_TITLE) span = 3;
|
||||
HTML::first_html_column_coloured(OUT, 0, I"tintedrow", span);
|
||||
HTML::first_html_column_coloured(OUT, 0, I"tintedrow", 4);
|
||||
HTML::begin_span(OUT, I"extensioncensusentry");
|
||||
WRITE(" ");
|
||||
|
||||
|
@ -398,103 +341,86 @@ the usual ones seen in Mac OS X applications such as iTunes.
|
|||
@ Used only in "by author".
|
||||
|
||||
@<Print the author's line in the extension census table@> =
|
||||
WRITE("%S", ecd->found_as->copy->edition->work->raw_author_name);
|
||||
|
||||
extension_census_datum *ecd2;
|
||||
int cu = 0, cn = 0, j;
|
||||
for (j = i; j < no_entries; j++) {
|
||||
ecd2 = sorted_census_results[j];
|
||||
if (Str::ne(current_author_name,
|
||||
ecd2->found_as->copy->edition->work->author_name)) break;
|
||||
if (ExtensionCensus::ecd_used(ecd2)) cu++;
|
||||
else cn++;
|
||||
}
|
||||
WRITE(" ");
|
||||
HTML::begin_span(OUT, I"smaller");
|
||||
WRITE("(%d extension%s", cu+cn, (cu+cn==1)?"":"s");
|
||||
if ((cu == 0) && (cn == 1)) WRITE(", unused");
|
||||
else if ((cu == 0) && (cn == 2)) WRITE(", both unused");
|
||||
else if ((cu == 0) && (cn > 2)) WRITE(", all unused");
|
||||
else if ((cn == 0) && (cu == 1)) WRITE(", used");
|
||||
else if ((cn == 0) && (cu == 2)) WRITE(", both used");
|
||||
else if ((cn == 0) && (cu > 2)) WRITE(", all used");
|
||||
else if (cn+cu > 0) WRITE(", %d used, %d unused", cu, cn);
|
||||
WRITE(")");
|
||||
HTML::end_span(OUT);
|
||||
|
||||
@ Used only in "by installation".
|
||||
|
||||
@<Print the installation region in the extension census table@> =
|
||||
switch (current_installation) {
|
||||
case 0:
|
||||
WRITE("Supplied in the .materials folder ");
|
||||
HTML::begin_span(OUT, I"smaller");
|
||||
WRITE("%p", ExtensionCensus::internal_path(C));
|
||||
HTML::end_span(OUT); break;
|
||||
case 1: WRITE("Built in to Inform"); break;
|
||||
case 2: WRITE("User installed but overriding a built-in extension"); break;
|
||||
case 3:
|
||||
WRITE("User installed ");
|
||||
HTML::begin_span(OUT, I"smaller");
|
||||
WRITE("%p", ExtensionCensus::external_path(C));
|
||||
HTML::end_span(OUT); break;
|
||||
}
|
||||
WRITE("%S", ecd->copy->edition->work->raw_author_name);
|
||||
|
||||
@
|
||||
|
||||
@d UNINDEXED_SYMBOL "border=\"0\" src=\"inform:/doc_images/unindexed_bullet.png\""
|
||||
@d INDEXED_SYMBOL "border=\"0\" src=\"inform:/doc_images/indexed_bullet.png\""
|
||||
@d PROBLEM_SYMBOL "border=\"0\" height=\"12\" src=\"inform:/doc_images/census_problem.png\""
|
||||
@d REVEAL_SYMBOL "border=\"0\" src=\"inform:/doc_images/Reveal.png\""
|
||||
@d HELP_SYMBOL "border=\"0\" src=\"inform:/doc_images/help.png\""
|
||||
@d PASTE_SYMBOL "border=\"0\" src=\"inform:/doc_images/paste.png\""
|
||||
|
||||
@<Print the census line for this extension@> =
|
||||
@<Print column 1 of the census line@>;
|
||||
HTML::next_html_column_nw(OUT, 0);
|
||||
if (d != SORT_CE_BY_TITLE) {
|
||||
@<Print column 2 of the census line@>;
|
||||
HTML::next_html_column_nw(OUT, 0);
|
||||
}
|
||||
@<Print column 2 of the census line@>;
|
||||
HTML::next_html_column_nw(OUT, 0);
|
||||
@<Print column 3 of the census line@>;
|
||||
HTML::next_html_column_w(OUT, 0);
|
||||
@<Print column 4 of the census line@>;
|
||||
|
||||
@ The appearance of the line is
|
||||
|
||||
>> (bullet) The Title (by The Author) (VM requirement icons)
|
||||
|
||||
where all is optional except the title part.
|
||||
|
||||
@<Print column 1 of the census line@> =
|
||||
char *bulletornot = UNINDEXED_SYMBOL;
|
||||
if (ExtensionCensus::ecd_used(ecd)) {
|
||||
bulletornot = INDEXED_SYMBOL; key_bullet = TRUE;
|
||||
}
|
||||
WRITE(" ");
|
||||
HTML_TAG_WITH("img", "%s", bulletornot);
|
||||
|
||||
Works::begin_extension_link(OUT,
|
||||
ecd->found_as->copy->edition->work, ExtensionCensus::ecd_rubric(ecd));
|
||||
HTML::begin_span(OUT, I"extensionindexentry");
|
||||
if (d != SORT_CE_BY_AUTHOR) {
|
||||
WRITE("%S", ecd->found_as->copy->edition->work->raw_title);
|
||||
if (Str::len(ecd->found_as->copy->edition->work->raw_title) +
|
||||
Str::len(ecd->found_as->copy->edition->work->raw_author_name) > 45) {
|
||||
WRITE("%S", ecd->copy->edition->work->raw_title);
|
||||
if (Str::len(ecd->copy->edition->work->raw_title) +
|
||||
Str::len(ecd->copy->edition->work->raw_author_name) > 45) {
|
||||
HTML_TAG("br");
|
||||
WRITE(" ");
|
||||
} else {
|
||||
WRITE(" ");
|
||||
}
|
||||
WRITE("by %S", ecd->found_as->copy->edition->work->raw_author_name);
|
||||
WRITE("by %S", ecd->copy->edition->work->raw_author_name);
|
||||
} else {
|
||||
WRITE("%S", ecd->found_as->copy->edition->work->raw_title);
|
||||
WRITE("%S", ecd->copy->edition->work->raw_title);
|
||||
}
|
||||
HTML::end_span(OUT);
|
||||
Works::end_extension_link(OUT, ecd->found_as->copy->edition->work);
|
||||
|
||||
compatibility_specification *C = ecd->found_as->copy->edition->compatibility;
|
||||
if (Str::len(C->parsed_from) > 0) {
|
||||
@<Append icons which signify the VM requirements of the extension@>;
|
||||
key_vms = TRUE;
|
||||
filename *F = ExtensionWebsite::abs_page_URL(proj, ecd->copy->edition, -1);
|
||||
if (TextFiles::exists(F)) {
|
||||
WRITE(" ");
|
||||
TEMPORARY_TEXT(link)
|
||||
TEMPORARY_TEXT(URL)
|
||||
WRITE_TO(URL, "%f", ExtensionWebsite::rel_page_URL(ecd->copy->edition, -1));
|
||||
WRITE_TO(link, "href='inform:/");
|
||||
Works::escape_apostrophes(link, URL);
|
||||
WRITE_TO(link, "' style=\"text-decoration: none\"");
|
||||
HTML_OPEN_WITH("a", "%S", link);
|
||||
DISCARD_TEXT(link)
|
||||
HTML_TAG_WITH("img", "%s", HELP_SYMBOL);
|
||||
ExtensionIndex::add_to_key(key_list, HELP_SYMBOL, I"Documentation (click to read)");
|
||||
HTML_CLOSE("a");
|
||||
}
|
||||
|
||||
inform_extension *E = Extensions::from_copy(ecd->copy);
|
||||
parse_node *at = Extensions::get_inclusion_sentence(E);
|
||||
if (at) {
|
||||
wording W = Node::get_text(at);
|
||||
source_location sl = Lexer::word_location(Wordings::first_wn(W));
|
||||
SourceLinks::link(OUT, sl, TRUE);
|
||||
ExtensionIndex::add_to_key(key_list, REVEAL_SYMBOL, I"Included here (click to see)");
|
||||
}
|
||||
|
||||
if (LinkedLists::len(ecd->copy->errors_reading_source_text) > 0) {
|
||||
WRITE(" ");
|
||||
HTML_TAG_WITH("img", "%s", PROBLEM_SYMBOL);
|
||||
ExtensionIndex::add_to_key(key_list, PROBLEM_SYMBOL, I"Has errors (see below)");
|
||||
} else if (usage_state == FALSE) {
|
||||
WRITE(" ");
|
||||
TEMPORARY_TEXT(inclusion_text)
|
||||
WRITE_TO(inclusion_text, "Include %X.\n\n\n", ecd->copy->edition->work);
|
||||
PasteButtons::paste_text(OUT, inclusion_text);
|
||||
DISCARD_TEXT(inclusion_text)
|
||||
ExtensionIndex::add_to_key(key_list, PASTE_SYMBOL,
|
||||
I"Source text to Include this (click to paste in)");
|
||||
}
|
||||
|
||||
compatibility_specification *C = ecd->copy->edition->compatibility;
|
||||
if (Str::len(C->parsed_from) > 0)
|
||||
@<Append icons which signify the VM requirements of the extension@>;
|
||||
|
||||
@ VM requirements are parsed by feeding them into the lexer and calling the
|
||||
same routines as would be used when parsing headings about VM requirements
|
||||
in a normal run of Inform. Note that because the requirements are in round
|
||||
|
@ -502,15 +428,12 @@ brackets, which the lexer will split off as distinct words, we can ignore
|
|||
the first and last word and just look at what is in between:
|
||||
|
||||
@<Append icons which signify the VM requirements of the extension@> =
|
||||
WRITE(" %S", C->parsed_from);
|
||||
#ifdef CORE_MODULE
|
||||
ExtensionIndex::write_icons(OUT, C);
|
||||
#endif
|
||||
ExtensionIndex::write_icons(OUT, key_list, C);
|
||||
|
||||
@<Print column 2 of the census line@> =
|
||||
HTML::begin_span(OUT, I"smaller");
|
||||
if (VersionNumbers::is_null(ecd->found_as->copy->edition->version) == FALSE)
|
||||
WRITE("v %v", &(ecd->found_as->copy->edition->version));
|
||||
if (VersionNumbers::is_null(ecd->copy->edition->version) == FALSE)
|
||||
WRITE("v %v", &(ecd->copy->edition->version));
|
||||
else
|
||||
WRITE("--");
|
||||
HTML::end_span(OUT);
|
||||
|
@ -518,48 +441,72 @@ the first and last word and just look at what is in between:
|
|||
@
|
||||
|
||||
@d BUILT_IN_SYMBOL "border=\"0\" src=\"inform:/doc_images/builtin_ext.png\""
|
||||
@d OVERRIDING_SYMBOL "border=\"0\" src=\"inform:/doc_images/override_ext.png\""
|
||||
@d PROJECT_SPECIFIC_SYMBOL "border=\"0\" src=\"inform:/doc_images/pspec_ext.png\""
|
||||
@d ARCH_16_SYMBOL "border=\"0\" src=\"inform:/doc_images/vm_z8.png\""
|
||||
@d ARCH_32_SYMBOL "border=\"0\" src=\"inform:/doc_images/vm_glulx.png\""
|
||||
|
||||
@<Print column 3 of the census line@> =
|
||||
char *opener = "src='inform:/doc_images/folder4.png' border=0";
|
||||
if (Nests::get_tag(ecd->found_as->nest) == INTERNAL_NEST_TAG) {
|
||||
opener = BUILT_IN_SYMBOL; key_builtin = TRUE;
|
||||
if (Nests::get_tag(ecd->nest) == INTERNAL_NEST_TAG) {
|
||||
opener = BUILT_IN_SYMBOL;
|
||||
ExtensionIndex::add_to_key(key_list, BUILT_IN_SYMBOL, I"Built in");
|
||||
}
|
||||
if (ecd->overriding_a_built_in_extension) {
|
||||
opener = OVERRIDING_SYMBOL; key_override = TRUE;
|
||||
if (Nests::get_tag(ecd->nest) == MATERIALS_NEST_TAG) {
|
||||
opener = PROJECT_SPECIFIC_SYMBOL;
|
||||
ExtensionIndex::add_to_key(key_list, PROJECT_SPECIFIC_SYMBOL, I"Installed in .materials");
|
||||
}
|
||||
if (Nests::get_tag(ecd->found_as->nest) == MATERIALS_NEST_TAG) {
|
||||
opener = PROJECT_SPECIFIC_SYMBOL; key_pspec = TRUE;
|
||||
}
|
||||
if (Nests::get_tag(ecd->found_as->nest) == INTERNAL_NEST_TAG)
|
||||
if (Nests::get_tag(ecd->nest) == INTERNAL_NEST_TAG)
|
||||
HTML_TAG_WITH("img", "%s", opener)
|
||||
else {
|
||||
#ifdef INDEX_MODULE
|
||||
pathname *area = ExtensionManager::path_within_nest(ecd->found_as->nest);
|
||||
pathname *area = ExtensionManager::path_within_nest(ecd->nest);
|
||||
PasteButtons::open_file(OUT, area,
|
||||
ecd->found_as->copy->edition->work->raw_author_name, opener);
|
||||
ecd->copy->edition->work->raw_author_name, opener);
|
||||
#endif
|
||||
}
|
||||
|
||||
@<Print column 4 of the census line@> =
|
||||
inform_extension *E = Extensions::from_copy(ecd->found_as->copy);
|
||||
HTML::begin_span(OUT, I"smaller");
|
||||
if ((d == SORT_CE_BY_DATE) || (d == SORT_CE_BY_INSTALL)) {
|
||||
WRITE("%S", Extensions::get_usage_date(E));
|
||||
} else if (d == SORT_CE_BY_LENGTH) {
|
||||
if (Extensions::get_word_count(E) == 0)
|
||||
WRITE("--");
|
||||
if (d == SORT_CE_BY_LOCATION) {
|
||||
if (Nests::get_tag(ecd->nest) == INTERNAL_NEST_TAG)
|
||||
WRITE("Built in to Inform");
|
||||
else
|
||||
WRITE("%d words", Extensions::get_word_count(E));
|
||||
WRITE("Installed in this project");
|
||||
} else {
|
||||
if (Str::len(ExtensionCensus::ecd_rubric(ecd)) > 0)
|
||||
WRITE("%S", ExtensionCensus::ecd_rubric(ecd));
|
||||
if (Str::len(ExtensionIndex::ecd_rubric(ecd)) > 0)
|
||||
WRITE("%S", ExtensionIndex::ecd_rubric(ecd));
|
||||
else
|
||||
WRITE("--");
|
||||
}
|
||||
HTML::end_span(OUT);
|
||||
|
||||
@h The key.
|
||||
There is just no need to do this efficiently in either running time or memory.
|
||||
|
||||
=
|
||||
typedef struct extensions_key_item {
|
||||
struct text_stream *image_URL;
|
||||
struct text_stream *gloss;
|
||||
CLASS_DEFINITION
|
||||
} extensions_key_item;
|
||||
|
||||
void ExtensionIndex::add_to_key(linked_list *L, char *URL, text_stream *gloss) {
|
||||
TEMPORARY_TEXT(as_text)
|
||||
WRITE_TO(as_text, "%s", URL);
|
||||
int found = FALSE;
|
||||
extensions_key_item *eki;
|
||||
LOOP_OVER_LINKED_LIST(eki, extensions_key_item, L)
|
||||
if (Str::eq(eki->image_URL, as_text))
|
||||
found = TRUE;
|
||||
if (found == FALSE) {
|
||||
eki = CREATE(extensions_key_item);
|
||||
eki->image_URL = Str::duplicate(as_text);
|
||||
eki->gloss = Str::duplicate(gloss);
|
||||
ADD_TO_LINKED_LIST(eki, extensions_key_item, L);
|
||||
}
|
||||
DISCARD_TEXT(as_text)
|
||||
}
|
||||
|
||||
@h Icons for virtual machines.
|
||||
And everything else is cosmetic: printing, or showing icons to signify,
|
||||
the current VM or some set of permitted VMs. The following plots the
|
||||
|
@ -573,45 +520,125 @@ void ExtensionIndex::plot_icon(OUTPUT_STREAM, target_vm *VM) {
|
|||
}
|
||||
}
|
||||
|
||||
void ExtensionIndex::write_key(OUTPUT_STREAM) {
|
||||
WRITE("Extensions compatible with specific story file formats only: ");
|
||||
int i = 0;
|
||||
target_vm *VM;
|
||||
LOOP_OVER(VM, target_vm) {
|
||||
if (TargetVMs::debug_enabled(VM)) continue; /* avoids listing twice */
|
||||
if (i++ > 0) WRITE(", ");
|
||||
ExtensionIndex::plot_icon(OUT, VM);
|
||||
TargetVMs::write(OUT, VM);
|
||||
}
|
||||
}
|
||||
|
||||
@h Displaying VM restrictions.
|
||||
Given a word range, we describe the result as concisely as we can with a
|
||||
row of icons (but do not bother for the common case where some extension
|
||||
has no restriction on its use).
|
||||
|
||||
=
|
||||
void ExtensionIndex::write_icons(OUTPUT_STREAM, compatibility_specification *C) {
|
||||
int something = FALSE, everything = TRUE;
|
||||
void ExtensionIndex::write_icons(OUTPUT_STREAM, linked_list *key_list,
|
||||
compatibility_specification *C) {
|
||||
int something_16 = FALSE, everything_16 = TRUE, something_32 = FALSE, everything_32 = TRUE;
|
||||
target_vm *VM;
|
||||
LOOP_OVER(VM, target_vm)
|
||||
if (Compatibility::test(C, VM))
|
||||
something = TRUE;
|
||||
else
|
||||
everything = FALSE;
|
||||
if (something == FALSE) WRITE("none");
|
||||
else if (everything == FALSE) {
|
||||
if (Architectures::is_16_bit(VM->architecture)) {
|
||||
if (Compatibility::test(C, VM))
|
||||
something_16 = TRUE;
|
||||
else
|
||||
everything_16 = FALSE;
|
||||
} else {
|
||||
if (Compatibility::test(C, VM))
|
||||
something_32 = TRUE;
|
||||
else
|
||||
everything_32 = FALSE;
|
||||
}
|
||||
if ((everything_16) && (everything_32)) return;
|
||||
if ((everything_16) && (something_32 == FALSE)) {
|
||||
WRITE(" ");
|
||||
dictionary *shown_already = Dictionaries::new(16, TRUE);
|
||||
LOOP_OVER(VM, target_vm)
|
||||
if (Compatibility::test(C, VM)) {
|
||||
text_stream *icon = VM->VM_image;
|
||||
if (Str::len(icon) > 0) {
|
||||
if (Dictionaries::find(shown_already, icon) == NULL) {
|
||||
ExtensionIndex::plot_icon(OUT, VM);
|
||||
WRITE_TO(Dictionaries::create_text(shown_already, icon), "X");
|
||||
}
|
||||
HTML_TAG_WITH("img", "%s", ARCH_16_SYMBOL);
|
||||
ExtensionIndex::add_to_key(key_list, ARCH_16_SYMBOL, I"Z-machine only (16-bit)");
|
||||
return;
|
||||
}
|
||||
if ((everything_32) && (something_16 == FALSE)) {
|
||||
WRITE(" ");
|
||||
HTML_TAG_WITH("img", "%s", ARCH_32_SYMBOL);
|
||||
ExtensionIndex::add_to_key(key_list, ARCH_32_SYMBOL, I"Glulx only (32-bit)");
|
||||
return;
|
||||
}
|
||||
WRITE(" - %S ", C->parsed_from);
|
||||
dictionary *shown_already = Dictionaries::new(16, TRUE);
|
||||
LOOP_OVER(VM, target_vm)
|
||||
if (Compatibility::test(C, VM)) {
|
||||
text_stream *icon = VM->VM_image;
|
||||
if (Str::len(icon) > 0) {
|
||||
if (Dictionaries::find(shown_already, icon) == NULL) {
|
||||
ExtensionIndex::plot_icon(OUT, VM);
|
||||
WRITE_TO(Dictionaries::create_text(shown_already, icon), "X");
|
||||
ExtensionIndex::add_to_key(key_list, ARCH_16_SYMBOL, I"Z-machine only (16-bit)");
|
||||
ExtensionIndex::add_to_key(key_list, ARCH_32_SYMBOL, I"Glulx only (32-bit)");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@
|
||||
|
||||
=
|
||||
void ExtensionIndex::find_used_extensions(inform_project *proj,
|
||||
linked_list *U, linked_list *R) {
|
||||
build_vertex *V = Copies::construct_project_graph(proj->as_copy);
|
||||
ExtensionIndex::find_used_extensions_r(V, Graphs::get_unique_graph_scan_count(), U, R);
|
||||
}
|
||||
|
||||
void ExtensionIndex::find_used_extensions_r(build_vertex *V, int scan_count,
|
||||
linked_list *U, linked_list *R) {
|
||||
if (V->type == COPY_VERTEX) {
|
||||
inbuild_copy *C = V->as_copy;
|
||||
if ((C->edition->work->genre == extension_genre) ||
|
||||
(C->edition->work->genre == extension_bundle_genre)) {
|
||||
if (C->last_scanned != scan_count) {
|
||||
ADD_TO_LINKED_LIST(C, inbuild_copy, U);
|
||||
C->last_scanned = scan_count;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (V->type == REQUIREMENT_VERTEX) {
|
||||
if ((V->as_requirement->work->genre == extension_genre) ||
|
||||
(V->as_requirement->work->genre == extension_bundle_genre)) {
|
||||
ADD_TO_LINKED_LIST(V->as_requirement, inbuild_requirement, R);
|
||||
}
|
||||
}
|
||||
build_vertex *W;
|
||||
LOOP_OVER_LINKED_LIST(W, build_vertex, V->build_edges)
|
||||
ExtensionIndex::find_used_extensions_r(W, scan_count, U, R);
|
||||
LOOP_OVER_LINKED_LIST(W, build_vertex, V->use_edges)
|
||||
ExtensionIndex::find_used_extensions_r(W, scan_count, U, R);
|
||||
}
|
||||
|
||||
@h Sorting criteria.
|
||||
The following give some sorting criteria, and are functions fit to be
|
||||
handed to |qsort|.
|
||||
|
||||
=
|
||||
int ExtensionIndex::compare_ecd_by_title(const void *ecd1, const void *ecd2) {
|
||||
inbuild_search_result *e1 = *((inbuild_search_result **) ecd1);
|
||||
inbuild_search_result *e2 = *((inbuild_search_result **) ecd2);
|
||||
inform_extension *E1 = Extensions::from_copy(e1->copy);
|
||||
inform_extension *E2 = Extensions::from_copy(e2->copy);
|
||||
return Extensions::compare_by_title(E2, E1);
|
||||
}
|
||||
|
||||
int ExtensionIndex::compare_ecd_by_author(const void *ecd1, const void *ecd2) {
|
||||
inbuild_search_result *e1 = *((inbuild_search_result **) ecd1);
|
||||
inbuild_search_result *e2 = *((inbuild_search_result **) ecd2);
|
||||
inform_extension *E1 = Extensions::from_copy(e1->copy);
|
||||
inform_extension *E2 = Extensions::from_copy(e2->copy);
|
||||
return Extensions::compare_by_author(E2, E1);
|
||||
}
|
||||
|
||||
int ExtensionIndex::compare_ecd_by_location(const void *ecd1, const void *ecd2) {
|
||||
inbuild_search_result *e1 = *((inbuild_search_result **) ecd1);
|
||||
inbuild_search_result *e2 = *((inbuild_search_result **) ecd2);
|
||||
int d = Nests::get_tag(e1->nest) - Nests::get_tag(e2->nest);
|
||||
if (d != 0) return d;
|
||||
return ExtensionIndex::compare_ecd_by_title(ecd1, ecd2);
|
||||
}
|
||||
|
||||
int ExtensionIndex::ecd_used(inbuild_search_result *ecd) {
|
||||
inform_extension *E = Extensions::from_copy(ecd->copy);
|
||||
return E->has_historically_been_used;
|
||||
}
|
||||
|
||||
text_stream *ExtensionIndex::ecd_rubric(inbuild_search_result *ecd) {
|
||||
return Extensions::get_rubric(Extensions::from_copy(ecd->copy));
|
||||
}
|
||||
|
|
|
@ -134,8 +134,7 @@ our E, and return 0 in response to the ECD call to prevent further ECD calls.
|
|||
@<Write up any restrictions on VM usage@> =
|
||||
compatibility_specification *C = E->as_copy->edition->compatibility;
|
||||
if (Str::len(C->parsed_from) > 0) {
|
||||
WRITE("%S ", C->parsed_from);
|
||||
ExtensionIndex::write_icons(OUT, C);
|
||||
WRITE("%S", C->parsed_from);
|
||||
}
|
||||
|
||||
@<Write up the version number, if any, and location@> =
|
||||
|
|
|
@ -48,7 +48,7 @@ void ExtensionWebsite::index_after_compilation(inform_project *proj) {
|
|||
void ExtensionWebsite::go(inform_project *proj, int force_update) {
|
||||
ExtensionDictionary::read_from_file();
|
||||
|
||||
extension_census *C = ExtensionCensus::perform(proj);
|
||||
ExtensionCensus::perform(proj);
|
||||
@<Time-stamp extensions used in the project as being last used today@>;
|
||||
@<Write index pages@>;
|
||||
@<Write individual pages on individual extensions@>;
|
||||
|
@ -70,9 +70,7 @@ documentation as used today until the next run, for obscure timing reasons.
|
|||
}
|
||||
|
||||
@<Write index pages@> =
|
||||
ExtensionIndex::write(ExtensionWebsite::index_URL(proj, I"Extensions.html"), HOME_EXTPAGE, C);
|
||||
if (proj == NULL)
|
||||
ExtensionIndex::write(ExtensionWebsite::index_URL(proj, I"ExtIndex.html"), INDEX_EXTPAGE, C);
|
||||
ExtensionIndex::write(proj);
|
||||
|
||||
@ Each extension gets its own page in the external documentation area, but
|
||||
this page can have two forms:
|
||||
|
@ -194,3 +192,55 @@ filename *ExtensionWebsite::page_URL(inform_project *proj, inbuild_edition *edit
|
|||
DISCARD_TEXT(leaf)
|
||||
return F;
|
||||
}
|
||||
|
||||
filename *ExtensionWebsite::abs_page_URL(inform_project *proj, inbuild_edition *edition,
|
||||
int eg_number) {
|
||||
TEMPORARY_TEXT(leaf)
|
||||
Editions::write_canonical_leaf(leaf, edition);
|
||||
|
||||
pathname *P;
|
||||
if (proj) {
|
||||
P = Projects::materials_path(proj);
|
||||
if (P == NULL) return NULL;
|
||||
P = Pathnames::down(P, I"Extensions");
|
||||
P = Pathnames::down(P, I"Reserved");
|
||||
P = Pathnames::down(P, I"Documentation");
|
||||
} else {
|
||||
P = ExtensionWebsite::home_URL(NULL);
|
||||
if (P == NULL) return NULL;
|
||||
P = Pathnames::down(P, I"Extensions");
|
||||
}
|
||||
P = Pathnames::down(P, edition->work->author_name);
|
||||
|
||||
if (proj) {
|
||||
P = Pathnames::down(P, leaf);
|
||||
Str::clear(leaf);
|
||||
if (eg_number > 0) WRITE_TO(leaf, "eg%d.html", eg_number);
|
||||
else WRITE_TO(leaf, "index.html");
|
||||
} else {
|
||||
if (eg_number > 0) WRITE_TO(leaf, "-eg%d", eg_number);
|
||||
WRITE_TO(leaf, ".html");
|
||||
}
|
||||
|
||||
filename *F = Filenames::in(P, leaf);
|
||||
DISCARD_TEXT(leaf)
|
||||
return F;
|
||||
}
|
||||
|
||||
filename *ExtensionWebsite::rel_page_URL(inbuild_edition *edition, int eg_number) {
|
||||
TEMPORARY_TEXT(leaf)
|
||||
Editions::write_canonical_leaf(leaf, edition);
|
||||
|
||||
pathname *P = NULL;
|
||||
P = Pathnames::down(P, I"Extensions");
|
||||
P = Pathnames::down(P, I"Reserved");
|
||||
P = Pathnames::down(P, I"Documentation");
|
||||
P = Pathnames::down(P, edition->work->author_name);
|
||||
P = Pathnames::down(P, leaf);
|
||||
Str::clear(leaf);
|
||||
if (eg_number > 0) WRITE_TO(leaf, "eg%d.html", eg_number);
|
||||
else WRITE_TO(leaf, "index.html");
|
||||
filename *F = Filenames::in(P, leaf);
|
||||
DISCARD_TEXT(leaf)
|
||||
return F;
|
||||
}
|
||||
|
|
|
@ -1,15 +1,15 @@
|
|||
Size of lexicon: 3129 excerpt meanings
|
||||
Stored among 846 words out of total vocabulary of 10735
|
||||
716 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: 276472
|
||||
of which, total with incorrect hash codes: 253735
|
||||
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
|
@ -306,12 +306,18 @@ USAGE: ph_titlecase 0 0 0
|
|||
USAGE: ph_sentencecase 0 0 0
|
||||
USAGE: ph_matches 0 0 0
|
||||
USAGE: ph_exactlymatches 0 0 0
|
||||
USAGE: ph_textfirstindex 0 0 0
|
||||
USAGE: ph_textlastindex 0 0 0
|
||||
USAGE: ph_textlength 0 0 0
|
||||
USAGE: ph_nummatches 0 0 0
|
||||
USAGE: ph_matchesre 0 0 0
|
||||
USAGE: ph_exactlymatchesre 0 0 0
|
||||
USAGE: ph_nummatchesre 0 0 0
|
||||
USAGE: ph_matchtext 0 0 0
|
||||
USAGE: ph_subexpressiontext 0 0 0
|
||||
USAGE: ph_refirstindex 0 0 0
|
||||
USAGE: ph_relastindex 0 0 0
|
||||
USAGE: ph_relength 0 0 0
|
||||
USAGE: ph_subform 0 0 0
|
||||
USAGE: ph_replacechar 0 0 0
|
||||
USAGE: ph_replaceword 0 0 0
|
||||
|
|
|
@ -1,13 +1,13 @@
|
|||
Total memory consumption was 135609K = 132 MB
|
||||
Total memory consumption was 135759K = 133 MB
|
||||
|
||||
---- was used for 2111059 objects, in 373571 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 45247 objects, 25338320 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 133440 objects, 10675200 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 135609K = 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 21270 objects, 1871760 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 26838 objects, 1502928 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 26838 objects, 1288224 bytes
|
||||
0.9% inter_package 26878 objects, 1290144 bytes
|
||||
0.8% map_data 672 objects, 1128960 bytes
|
||||
0.7% id_body 957 objects, 1094808 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 3129 objects, 976248 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 1270 objects, 111760 bytes
|
||||
---- documentation_ref 1276 objects, 112288 bytes
|
||||
---- inter_schema 1539 objects, 110808 bytes
|
||||
---- imperative_defn 1395 objects, 100440 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 1914 objects, 61248 bytes
|
||||
---- scenes_rcd_data 1914 objects, 61248 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 135609K = 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 506 objects, 40480 bytes
|
||||
---- anl_clause_array 1 x 1000 objects, 40032 bytes
|
||||
---- to_family_data 512 objects, 40960 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 135609K = 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 135609K = 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 135609K = 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 135609K = 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 135609K = 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 135609K = 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 135609K = 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 135609K = 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 135609K = 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 135609K = 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
|
||||
|
||||
99.9% was used for memory not allocated for objects:
|
||||
100.0% was used for memory not allocated for objects:
|
||||
|
||||
61.4% text stream storage 85280520 bytes in 499960 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 4566640 bytes in 28213 claims
|
||||
12.0% inter bytecode storage 16757840 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 135609K = 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 - -194346184 bytes = -189791K = -185 MB
|
||||
-139.-9% was overhead - -194592480 bytes = -190031K = -185 MB
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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: 815}
|
||||
IMPERATIVE_NT'when play begins' {unit: 3} {imperative definition: 816}
|
||||
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: 817}
|
||||
IMPERATIVE_NT'every turn' {unit: 3} {imperative definition: 818}
|
||||
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: 819}
|
||||
IMPERATIVE_NT'a character movement rule' {unit: 3} {imperative definition: 820}
|
||||
IMPERATIVE_NT'a character movement rule' {unit: 3} {imperative definition: 821}
|
||||
IMPERATIVE_NT'to decide whether movement has not yet occurred' {unit: 3} {imperative definition: 822}
|
||||
IMPERATIVE_NT'definition' {unit: 3} {imperative definition: 823}
|
||||
IMPERATIVE_NT'definition' {unit: 3} {imperative definition: 824}
|
||||
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'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: 825}
|
||||
IMPERATIVE_NT'report someone closing a door when the person asked owns the' {unit: 3} {imperative definition: 826}
|
||||
IMPERATIVE_NT'report vanessa closing the metal door when the metal door is' {unit: 3} {imperative definition: 827}
|
||||
IMPERATIVE_NT'a shopowner rule' {unit: 3} {imperative definition: 828}
|
||||
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: 829}
|
||||
IMPERATIVE_NT'carry out someone filing' {unit: 3} {imperative definition: 830}
|
||||
IMPERATIVE_NT'report someone filing' {unit: 3} {imperative definition: 831}
|
||||
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: 832}
|
||||
IMPERATIVE_NT'a shopper rule' {unit: 3} {imperative definition: 833}
|
||||
IMPERATIVE_NT'definition' {unit: 3} {imperative definition: 834}
|
||||
IMPERATIVE_NT'a shopper rule' {unit: 3} {imperative definition: 839}
|
||||
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: 835}
|
||||
IMPERATIVE_NT'after printing the name of an artwork' {unit: 3} {imperative definition: 836}
|
||||
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: 837}
|
||||
IMPERATIVE_NT'carry out someone resolving a book' {unit: 3} {imperative definition: 838}
|
||||
IMPERATIVE_NT'report someone resolving a book' {unit: 3} {imperative definition: 839}
|
||||
IMPERATIVE_NT'before listing contents' {unit: 3} {imperative definition: 840}
|
||||
IMPERATIVE_NT'before grouping together books' {unit: 3} {imperative definition: 841}
|
||||
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: 842}
|
||||
IMPERATIVE_NT'carry out someone resolving a stamped envelope' {unit: 3} {imperative definition: 843}
|
||||
IMPERATIVE_NT'report someone resolving a stamped envelope' {unit: 3} {imperative definition: 844}
|
||||
IMPERATIVE_NT'instead of someone resolving a stamped envelope when the per' {unit: 3} {imperative definition: 845}
|
||||
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: 846}
|
||||
IMPERATIVE_NT'carry out someone resolving a dvd' {unit: 3} {imperative definition: 847}
|
||||
IMPERATIVE_NT'report someone resolving a dvd' {unit: 3} {imperative definition: 848}
|
||||
IMPERATIVE_NT'instead of someone resolving a dvd when the person asked car' {unit: 3} {imperative definition: 849}
|
||||
IMPERATIVE_NT'before listing contents' {unit: 3} {imperative definition: 850}
|
||||
IMPERATIVE_NT'before grouping together dvds' {unit: 3} {imperative definition: 851}
|
||||
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: 852}
|
||||
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: 853}
|
||||
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: 854}
|
||||
IMPERATIVE_NT'before someone resolving a coupon when the person asked is n' {unit: 3} {imperative definition: 855}
|
||||
IMPERATIVE_NT'after someone giving a coupon to vanessa' {unit: 3} {imperative definition: 856}
|
||||
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: 857}
|
||||
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: 858}
|
||||
IMPERATIVE_NT'carry out buying the flavor' {unit: 3} {imperative definition: 859}
|
||||
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: 860}
|
||||
IMPERATIVE_NT'instead of someone eating a fresh ice cream cone' {unit: 3} {imperative definition: 861}
|
||||
IMPERATIVE_NT'report someone eating an ice cream cone' {unit: 3} {imperative definition: 862}
|
||||
IMPERATIVE_NT'before printing the name of an ice cream cone' {unit: 3} {imperative definition: 863}
|
||||
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: 864}
|
||||
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: 865}
|
||||
IMPERATIVE_NT'definition' {unit: 3} {imperative definition: 866}
|
||||
IMPERATIVE_NT'definition' {unit: 3} {imperative definition: 867}
|
||||
IMPERATIVE_NT'when play begins' {unit: 3} {imperative definition: 868}
|
||||
IMPERATIVE_NT'every turn' {unit: 3} {imperative definition: 869}
|
||||
IMPERATIVE_NT'every turn' {unit: 3} {imperative definition: 872}
|
||||
IMPERATIVE_NT'definition' {unit: 3} {imperative definition: 873}
|
||||
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: 870}
|
||||
IMPERATIVE_NT'carry out sneezing on' {unit: 3} {imperative definition: 871}
|
||||
IMPERATIVE_NT'carry out someone sneezing on' {unit: 3} {imperative definition: 872}
|
||||
IMPERATIVE_NT'report sneezing on' {unit: 3} {imperative definition: 873}
|
||||
IMPERATIVE_NT'report someone sneezing on' {unit: 3} {imperative definition: 874}
|
||||
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: 875}
|
||||
IMPERATIVE_NT'carry out injecting it with' {unit: 3} {imperative definition: 876}
|
||||
IMPERATIVE_NT'after injecting the player with something' {unit: 3} {imperative definition: 877}
|
||||
IMPERATIVE_NT'report injecting it with' {unit: 3} {imperative definition: 878}
|
||||
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: 916}
|
||||
IMPERATIVE_NT'carry out going toward' {unit: 3} {imperative definition: 917}
|
||||
IMPERATIVE_NT'instead of waiting when the destination of the player is not' {unit: 3} {imperative definition: 918}
|
||||
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: 919}
|
||||
IMPERATIVE_NT'report stopping' {unit: 3} {imperative definition: 920}
|
||||
IMPERATIVE_NT'after going to an air-conditioned room' {unit: 3} {imperative definition: 921}
|
||||
IMPERATIVE_NT'after going from an air-conditioned room' {unit: 3} {imperative definition: 922}
|
||||
IMPERATIVE_NT'instead of listening to an air-conditioned room' {unit: 3} {imperative definition: 923}
|
||||
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: 924}
|
||||
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: 925}
|
||||
IMPERATIVE_NT'report inserting something into the slot' {unit: 3} {imperative definition: 926}
|
||||
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: 927}
|
||||
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: 928}
|
||||
IMPERATIVE_NT'instead of attacking the open emergency box' {unit: 3} {imperative definition: 929}
|
||||
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: 930}
|
||||
IMPERATIVE_NT'definition' {unit: 3} {imperative definition: 931}
|
||||
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: 932}
|
||||
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: 933}
|
||||
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: 934}
|
||||
IMPERATIVE_NT'when play begins' {unit: 3} {imperative definition: 935}
|
||||
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: 936}
|
||||
IMPERATIVE_NT'instead of telling someone about something' {unit: 3} {imperative definition: 937}
|
||||
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: 938}
|
||||
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: 939}
|
||||
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: 940}
|
||||
IMPERATIVE_NT'to tidy departures of ( current table - a table name )' {unit: 3} {imperative definition: 941}
|
||||
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: 942}
|
||||
IMPERATIVE_NT'report someone going through a door ( called route )' {unit: 3} {imperative definition: 943}
|
||||
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: 944}
|
||||
IMPERATIVE_NT'report someone going a direction' {unit: 3} {imperative definition: 945}
|
||||
IMPERATIVE_NT'this is the movement reporting rule' {unit: 3} {imperative definition: 946}
|
||||
IMPERATIVE_NT'to generate descriptions from ( current table - a table name' {unit: 3} {imperative definition: 947}
|
||||
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: 948}
|
||||
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: 949}
|
||||
IMPERATIVE_NT'before listing nondescript items' {unit: 3} {imperative definition: 950}
|
||||
IMPERATIVE_NT'to describe patients' {unit: 3} {imperative definition: 951}
|
||||
IMPERATIVE_NT'to say ( named character - a man ) as pronoun' {unit: 3} {imperative definition: 952}
|
||||
IMPERATIVE_NT'to say ( named character - a woman ) as pronoun' {unit: 3} {imperative definition: 953}
|
||||
IMPERATIVE_NT'to say looks as though dipped in for ( index - a number )' {unit: 3} {imperative definition: 954}
|
||||
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: 955}
|
||||
IMPERATIVE_NT'to say optional comma' {unit: 3} {imperative definition: 956}
|
||||
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'
|
||||
|
|
|
@ -1,29 +1,30 @@
|
|||
100.0% in inform7 run
|
||||
68.1% in compilation to Inter
|
||||
46.2% in //Sequence::undertake_queued_tasks//
|
||||
4.9% in //MajorNodes::pre_pass//
|
||||
3.7% in //MajorNodes::pass_1//
|
||||
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.5% in //RTKindConstructors::compile//
|
||||
1.1% in //RTPhrasebook::compile_entries//
|
||||
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 //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.5% not specifically accounted for
|
||||
27.6% in running Inter pipeline
|
||||
9.4% in step 14/15: generate inform6 -> auto.inf
|
||||
7.1% in step 5/15: load-binary-kits
|
||||
5.6% in step 6/15: make-synoptic-module
|
||||
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.9% not specifically accounted for
|
||||
3.7% in supervisor
|
||||
1.8% not specifically accounted for
|
||||
3.6% in supervisor
|
||||
0.4% not specifically accounted for
|
||||
|
|
|
@ -147,16 +147,53 @@ The language of play is a natural language that varies.
|
|||
The parameter-object is an object that varies.
|
||||
The parameter-object variable is defined by Inter as "parameter_value".
|
||||
|
||||
Chapter - Startup
|
||||
|
||||
Startup rules is a rulebook.
|
||||
The startup rulebook is accessible to Inter as "STARTUP_RB".
|
||||
Startup rules have outcomes allow startup (success) and deny startup (failure).
|
||||
|
||||
Shutdown rules is a rulebook.
|
||||
The shutdown rulebook is accessible to Inter as "SHUTDOWN_RB".
|
||||
|
||||
Starting the virtual machine (documented at act_startvm) is an activity.
|
||||
Starting the virtual machine (documented at act_startvm) is an activity on nothing.
|
||||
The starting the virtual machine activity is accessible to Inter as "STARTING_VIRTUAL_MACHINE_ACT".
|
||||
The final code startup rule is listed first in for starting the virtual machine.
|
||||
The final code startup rule is defined by Inter as "FINAL_CODE_STARTUP_R".
|
||||
The for starting the virtual machine rules have default no outcome.
|
||||
|
||||
First startup rule (this is the virtual machine startup rule):
|
||||
carry out the starting the virtual machine activity.
|
||||
|
||||
Section - Startup A (for Glulx only)
|
||||
|
||||
The start capturing startup text rule is listed in the before starting the virtual machine rules.
|
||||
The start capturing startup text rule translates into Inter as "CAPTURE_STARTUP_TEXT_R".
|
||||
|
||||
Section - Startup B
|
||||
|
||||
The platform specific startup rule is listed in the before starting the virtual machine rules.
|
||||
The platform specific startup rule translates into Inter as "PLATFORM_SPECIFIC_STARTUP_R".
|
||||
|
||||
The initialise memory rule is listed in the before starting the virtual machine rules.
|
||||
The initialise memory rule translates into Inter as "INITIALISE_MEMORY_R".
|
||||
|
||||
The seed random number generator rule is listed in the before starting the virtual machine rules.
|
||||
The seed random number generator rule translates into Inter as "SEED_RANDOM_NUMBER_GENERATOR_R".
|
||||
|
||||
Section - Startup C (for Glulx only)
|
||||
|
||||
The recover Glk objects rule is listed in the before starting the virtual machine rules.
|
||||
The recover Glk objects rule translates into Inter as "GGRecoverObjects".
|
||||
|
||||
The sound channel initialisation rule is listed in the for starting the virtual machine rules.
|
||||
The sound channel initialisation rule translates into Inter as "SOUND_CHANNEL_INIT_R".
|
||||
|
||||
The open built-in windows rule is listed in the for starting the virtual machine rules.
|
||||
The open built-in windows rule translates into Inter as "OPEN_BUILT_IN_WINDOWS_R".
|
||||
|
||||
The display captured startup text rule is listed in the for starting the virtual machine rules.
|
||||
The display captured startup text rule translates into Inter as "END_CAPTURE_STARTUP_TEXT_R".
|
||||
|
||||
Chapter - Printing activities
|
||||
|
||||
Printing the name of something (hidden in RULES command) (documented at act_pn) is an activity.
|
||||
The printing the name activity is accessible to Inter as "PRINTING_THE_NAME_ACT".
|
||||
|
@ -877,6 +914,15 @@ To replace line number (N - a number) in (T - text) with (replace - text)
|
|||
To replace paragraph number (N - a number) in (T - text) with (replace - text)
|
||||
(documented at ph_replacepara):
|
||||
(- TEXT_TY_ReplaceBlob(PARA_BLOB, {-lvalue-by-reference:T}, {N}, {-by-reference:replace}); -).
|
||||
To decide what number is the first index of text match
|
||||
(documented at ph_textfirstindex):
|
||||
(- (match0_idx2 ~= 0) * (match0_idx + 1) -).
|
||||
To decide what number is the last index of text match
|
||||
(documented at ph_textlastindex):
|
||||
(- match0_idx2 -).
|
||||
To decide what number is the length of text match
|
||||
(documented at ph_textlength):
|
||||
(- (match0_idx2 - match0_idx) -).
|
||||
|
||||
Section 3 - Regular Expressions
|
||||
|
||||
|
@ -894,6 +940,15 @@ To decide what text is text matching regular expression
|
|||
To decide what text is text matching subexpression (N - a number)
|
||||
(documented at ph_subexpressiontext):
|
||||
(- TEXT_TY_RE_GetMatchVar({N}) -).
|
||||
To decide what number is the first index of subexpression (n - a number)
|
||||
(documented at ph_refirstindex):
|
||||
(- (RE_Subexpressions-->{n}-->RE_DATA2 ~= 0) * (RE_Subexpressions-->{n}-->RE_DATA1 + 1) -).
|
||||
To decide what number is the last index of subexpression (n - a number)
|
||||
(documented at ph_relastindex):
|
||||
(- ((RE_Subexpressions-->{n}-->RE_DATA2 >= 0) * RE_Subexpressions-->{n}-->RE_DATA2) -).
|
||||
To decide what number is the length of subexpression (n - a number)
|
||||
(documented at ph_relength):
|
||||
(- (RE_Subexpressions-->{n}-->RE_DATA2 - RE_Subexpressions-->{n}-->RE_DATA1) -).
|
||||
To decide what number is number of times (T - text) matches the regular expression
|
||||
(find - text),case insensitively
|
||||
(documented at ph_nummatchesre):
|
||||
|
@ -1431,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
|
||||
|
|
|
@ -222,8 +222,8 @@ ph_abide ph_abidefor ph_abideanon _ doc338 "19.14" "19.14. Abide by"
|
|||
rules_internal _ doc339 "19.15" "19.15. Two rulebooks used internally"
|
||||
ph_charnum ph_numchars ph_wordnum ph_numwords ph_pwordnum ph_numpwords ph_upwordnum ph_numupwords ph_linenum ph_numlines ph_paranum ph_numparas _ doc343 "20.3" "20.3. Characters, words, punctuated words, unpunctuated words, lines, paragraphs"
|
||||
ph_inlower ph_inupper ph_lowercase ph_uppercase ph_titlecase ph_sentencecase _ doc344 "20.4" "20.4. Upper and lower case letters"
|
||||
ph_matches ph_exactlymatches ph_nummatches _ doc345 "20.5" "20.5. Matching and exactly matching"
|
||||
ph_matchesre ph_exactlymatchesre ph_nummatchesre ph_matchtext ph_subexpressiontext _ doc346 "20.6" "20.6. Regular expression matching"
|
||||
ph_matches ph_exactlymatches ph_textfirstindex ph_textlastindex ph_textlength ph_nummatches _ doc345 "20.5" "20.5. Matching and exactly matching"
|
||||
ph_matchesre ph_exactlymatchesre ph_nummatchesre ph_matchtext ph_subexpressiontext ph_refirstindex ph_relastindex ph_relength _ doc346 "20.6" "20.6. Regular expression matching"
|
||||
ph_subform _ doc347 "20.7" "20.7. Making new text with text substitutions"
|
||||
ph_replacechar ph_replaceword ph_replacepword ph_replaceupword ph_replaceline ph_replacepara ph_replace ph_replacewordin ph_replacepwordin ph_replacere _ doc348 "20.8" "20.8. Replacements"
|
||||
kind_listof _ doc350 "21.1" "21.1. Lists and entries"
|
||||
|
|
|
@ -2,30 +2,8 @@ Startup Template.
|
|||
|
||||
How programs for this architecture start up the virtual machine.
|
||||
|
||||
@ |VM_PreInitialise()| is called; then the "starting the virtual machine"
|
||||
activity runs; and then |VM_Initialise()| is called.
|
||||
@ |VM_Check_Functionality()| doesn't need to do anything in Z-Code.
|
||||
|
||||
=
|
||||
[ VM_PreInitialise;
|
||||
];
|
||||
|
||||
[ VM_Initialise i;
|
||||
standard_interpreter = HDR_TERPSTANDARD-->0;
|
||||
|
||||
dict_start = HDR_DICTIONARY-->0;
|
||||
dict_entry_size = dict_start->(dict_start->0 + 1);
|
||||
dict_start = dict_start + dict_start->0 + 4;
|
||||
dict_end = dict_start + ((dict_start - 2)-->0) * dict_entry_size;
|
||||
|
||||
buffer->0 = INPUT_BUFFER_LEN;
|
||||
buffer2->0 = INPUT_BUFFER_LEN;
|
||||
buffer3->0 = INPUT_BUFFER_LEN;
|
||||
parse->0 = 15;
|
||||
parse2->0 = 15;
|
||||
|
||||
if (BasicInformKit`FIX_RNG_CFGF) {
|
||||
@random 10000 -> i;
|
||||
i = -i-2000;
|
||||
@random i -> i;
|
||||
}
|
||||
[ VM_Check_Functionality;
|
||||
];
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
"is": {
|
||||
"type": "kit",
|
||||
"title": "Architecture16Kit",
|
||||
"version": "10.2.0-beta+6W69"
|
||||
"version": "10.2.0-beta+6W71"
|
||||
},
|
||||
"compatibility": "16-bit",
|
||||
"kit-details": {
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
Capabilities Template.
|
||||
|
||||
Miscellaneous capabilities of the 16-bit architecture.
|
||||
Miscellaneous capabilities of the 32-bit architecture.
|
||||
|
||||
@h Summary.
|
||||
The 32-bit architecture is currently the default targeted by Inform, and is
|
||||
|
|
|
@ -882,6 +882,81 @@ Constant wintype_TextGrid = 4;
|
|||
return ret;
|
||||
];
|
||||
|
||||
@ |GGRecoverObjects| handles recovering the Glk objects after restarting or restoring.
|
||||
|
||||
=
|
||||
[ GGRecoverObjects id;
|
||||
! If GGRecoverObjects() has been called, all these stored IDs are
|
||||
! invalid, so we start by clearing them all out.
|
||||
! (In fact, after a restoreundo, some of them may still be good.
|
||||
! For simplicity, though, we assume the general case.)
|
||||
gg_mainwin = 0;
|
||||
gg_statuswin = 0;
|
||||
gg_quotewin = 0;
|
||||
gg_scriptfref = 0;
|
||||
gg_scriptstr = 0;
|
||||
gg_savestr = 0;
|
||||
statuswin_cursize = 0;
|
||||
gg_foregroundchan = 0;
|
||||
gg_backgroundchan = 0;
|
||||
gg_commandstr = 0;
|
||||
gg_command_reading = false;
|
||||
! Also tell the game to clear its object references.
|
||||
IdentifyGlkObject(0);
|
||||
|
||||
id = glk_stream_iterate(0, gg_arguments);
|
||||
while (id) {
|
||||
switch (gg_arguments-->0) {
|
||||
GG_SAVESTR_ROCK: gg_savestr = id;
|
||||
GG_SCRIPTSTR_ROCK: gg_scriptstr = id;
|
||||
GG_COMMANDWSTR_ROCK: gg_commandstr = id;
|
||||
gg_command_reading = false;
|
||||
GG_COMMANDRSTR_ROCK: gg_commandstr = id;
|
||||
gg_command_reading = true;
|
||||
default: IdentifyGlkObject(1, 1, id, gg_arguments-->0);
|
||||
}
|
||||
id = glk_stream_iterate(id, gg_arguments);
|
||||
}
|
||||
|
||||
id = glk_window_iterate(0, gg_arguments);
|
||||
while (id) {
|
||||
switch (gg_arguments-->0) {
|
||||
GG_MAINWIN_ROCK: gg_mainwin = id;
|
||||
GG_STATUSWIN_ROCK: gg_statuswin = id;
|
||||
GG_QUOTEWIN_ROCK: gg_quotewin = id;
|
||||
default: IdentifyGlkObject(1, 0, id, gg_arguments-->0);
|
||||
}
|
||||
id = glk_window_iterate(id, gg_arguments);
|
||||
}
|
||||
|
||||
id = glk_fileref_iterate(0, gg_arguments);
|
||||
while (id) {
|
||||
switch (gg_arguments-->0) {
|
||||
GG_SCRIPTFREF_ROCK: gg_scriptfref = id;
|
||||
default: IdentifyGlkObject(1, 2, id, gg_arguments-->0);
|
||||
}
|
||||
id = glk_fileref_iterate(id, gg_arguments);
|
||||
}
|
||||
|
||||
if (glk_gestalt(gestalt_Sound, 0)) {
|
||||
id = glk_schannel_iterate(0, gg_arguments);
|
||||
while (id) {
|
||||
switch (gg_arguments-->0) {
|
||||
GG_FOREGROUNDCHAN_ROCK: gg_foregroundchan = id;
|
||||
GG_BACKGROUNDCHAN_ROCK: gg_backgroundchan = id;
|
||||
default: IdentifyGlkObject(1, 3, id, gg_arguments-->0);
|
||||
}
|
||||
id = glk_schannel_iterate(id, gg_arguments);
|
||||
}
|
||||
if (gg_foregroundchan ~= 0) { glk_schannel_stop(gg_foregroundchan); }
|
||||
if (gg_backgroundchan ~= 0) { glk_schannel_stop(gg_backgroundchan); }
|
||||
}
|
||||
|
||||
! Tell the game to tie up any loose ends.
|
||||
IdentifyGlkObject(2);
|
||||
rfalse;
|
||||
];
|
||||
|
||||
@h Debugging verb.
|
||||
This powers the GLKLIST command, when there's a command parser to read it.
|
||||
|
||||
|
|
|
@ -2,176 +2,121 @@ Startup Template.
|
|||
|
||||
How programs for this architecture start up the virtual machine.
|
||||
|
||||
@ This variable is set at startup, to avoid asking the interpreter over
|
||||
and over again.
|
||||
@ |VM_Check_Functionality| 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.
|
||||
|
||||
=
|
||||
Global unicode_gestalt_ok; ! Set if interpreter supports Unicode
|
||||
[ VM_Check_Functionality res;
|
||||
@gestalt 4 2 res; ! Test if this interpreter has Glk...
|
||||
if (res == 0) quit; ! ...without which there would be nothing we could do
|
||||
|
||||
@ |VM_Initialise()| 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 |VM_PreInitialise()| to do the absolute minimum.
|
||||
! Set the VM's I/O system to be Glk.
|
||||
@setiosys 2 0;
|
||||
|
||||
Arrangements are a little different here compared with the 16-bit architecture,
|
||||
because some data is retained in the case of a restart.
|
||||
if (~~glk_gestalt(gestalt_Unicode, 0)) {
|
||||
Fatal_Error("This storyfile can only be run in an unicode interpreter.");
|
||||
}
|
||||
|
||||
(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.")
|
||||
|
||||
=
|
||||
[ VM_PreInitialise res;
|
||||
@gestalt 4 2 res; ! Test if this interpreter has Glk...
|
||||
if (res == 0) quit; ! ...without which there would be nothing we could do
|
||||
|
||||
unicode_gestalt_ok = false;
|
||||
if (glk_gestalt(gestalt_Unicode, 0))
|
||||
unicode_gestalt_ok = true;
|
||||
|
||||
! Set the VM's I/O system to be Glk.
|
||||
@setiosys 2 0;
|
||||
@gestalt 11 0 res; ! Test if this interpreter supports real numbers...
|
||||
if (res == 0) {
|
||||
Fatal_Error("This storyfile can only be run in a Glulx interpreter that supports floating-point arithmetic.");
|
||||
}
|
||||
];
|
||||
|
||||
[ VM_Initialise res sty i;
|
||||
@gestalt 4 2 res; ! Test if this interpreter has Glk...
|
||||
if (res == 0) quit; ! ...without which there would be nothing we could do
|
||||
[ Fatal_Error msg;
|
||||
gg_mainwin = glk_window_open(0, 0, 0, wintype_TextBuffer, GG_MAINWIN_ROCK);
|
||||
glk_set_window(gg_mainwin);
|
||||
print "Fatal Error: ", (string) msg, "^";
|
||||
quit;
|
||||
];
|
||||
|
||||
! First, we must go through all the Glk objects that exist, and see
|
||||
! if we created any of them. One might think this strange, since the
|
||||
! program has just started running, but remember that the player might
|
||||
! have just typed "restart".
|
||||
@h Capture startup text.
|
||||
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.
|
||||
|
||||
GGRecoverObjects();
|
||||
=
|
||||
Constant PRE_STARTUP_TEXT_CAPTURE_MAX_LEN = 256;
|
||||
Array Pre_Startup_Text_Capture_Buffer -> PRE_STARTUP_TEXT_CAPTURE_MAX_LEN;
|
||||
Array Pre_Startup_Text_Capture_Results --> 2;
|
||||
Global Pre_Startup_Text_Capture_Stream;
|
||||
|
||||
! Sound channel initialisation, and RNG fixing, must be done now rather
|
||||
! than later in case InitGlkWindow() returns a non-zero value.
|
||||
[ CAPTURE_STARTUP_TEXT_R;
|
||||
Pre_Startup_Text_Capture_Stream = glk_stream_open_memory(Pre_Startup_Text_Capture_Buffer, PRE_STARTUP_TEXT_CAPTURE_MAX_LEN, filemode_Write, 0);
|
||||
glk_stream_set_current(Pre_Startup_Text_Capture_Stream);
|
||||
rfalse;
|
||||
];
|
||||
|
||||
[ END_CAPTURE_STARTUP_TEXT_R len;
|
||||
glk_stream_close(Pre_Startup_Text_Capture_Stream, Pre_Startup_Text_Capture_Results);
|
||||
len = Pre_Startup_Text_Capture_Results-->1;
|
||||
if (len) {
|
||||
if (len > PRE_STARTUP_TEXT_CAPTURE_MAX_LEN) {
|
||||
len = PRE_STARTUP_TEXT_CAPTURE_MAX_LEN;
|
||||
}
|
||||
glk_put_buffer(Pre_Startup_Text_Capture_Buffer, len);
|
||||
}
|
||||
rfalse;
|
||||
];
|
||||
|
||||
@h Set up the Glk objects.
|
||||
|
||||
=
|
||||
[ SOUND_CHANNEL_INIT_R;
|
||||
if (glk_gestalt(gestalt_Sound, 0)) {
|
||||
if (gg_foregroundchan == 0)
|
||||
if (gg_foregroundchan == 0) {
|
||||
gg_foregroundchan = glk_schannel_create(GG_FOREGROUNDCHAN_ROCK);
|
||||
if (gg_backgroundchan == 0)
|
||||
}
|
||||
if (gg_backgroundchan == 0) {
|
||||
gg_backgroundchan = glk_schannel_create(GG_BACKGROUNDCHAN_ROCK);
|
||||
}
|
||||
|
||||
if (BasicInformKit`FIX_RNG_CFGF) {
|
||||
@random 10000 i;
|
||||
i = -i-2000;
|
||||
@setrandom i;
|
||||
}
|
||||
|
||||
res = InitGlkWindow(0);
|
||||
if (res ~= 0) return;
|
||||
|
||||
! Now, gg_mainwin and gg_storywin might already be set. If not, set them.
|
||||
|
||||
if (gg_mainwin == 0) {
|
||||
! Open the story window.
|
||||
res = InitGlkWindow(GG_MAINWIN_ROCK);
|
||||
if (res == 0) {
|
||||
! Left-justify the header style
|
||||
glk_stylehint_set(wintype_TextBuffer, style_Header, stylehint_Justification, 0);
|
||||
! Try to make emphasized type in italics and not boldface
|
||||
glk_stylehint_set(wintype_TextBuffer, style_Emphasized, stylehint_Weight, 0);
|
||||
glk_stylehint_set(wintype_TextBuffer, style_Emphasized, stylehint_Oblique, 1);
|
||||
gg_mainwin = glk_window_open(0, 0, 0, wintype_TextBuffer, GG_MAINWIN_ROCK);
|
||||
}
|
||||
if (gg_mainwin == 0) quit; ! If we can't even open one window, give in
|
||||
} else {
|
||||
! There was already a story window. We should erase it.
|
||||
glk_window_clear(gg_mainwin);
|
||||
}
|
||||
|
||||
if (gg_statuswin == 0) {
|
||||
res = InitGlkWindow(GG_STATUSWIN_ROCK);
|
||||
if (res == 0) {
|
||||
statuswin_cursize = statuswin_size;
|
||||
for (sty=0: sty<style_NUMSTYLES: sty++)
|
||||
glk_stylehint_set(wintype_TextGrid, sty, stylehint_ReverseColor, 1);
|
||||
gg_statuswin =
|
||||
glk_window_open(gg_mainwin, winmethod_Fixed + winmethod_Above,
|
||||
statuswin_cursize, wintype_TextGrid, GG_STATUSWIN_ROCK);
|
||||
}
|
||||
}
|
||||
! It's possible that the status window couldn't be opened, in which case
|
||||
! gg_statuswin is now zero. We must allow for that later on.
|
||||
|
||||
glk_set_window(gg_mainwin);
|
||||
|
||||
InitGlkWindow(1);
|
||||
|
||||
! Empty the parse buffer (see bug 0001451)
|
||||
buffer3-->0 = 0;
|
||||
}
|
||||
rfalse;
|
||||
];
|
||||
|
||||
[ GGRecoverObjects id;
|
||||
! If GGRecoverObjects() has been called, all these stored IDs are
|
||||
! invalid, so we start by clearing them all out.
|
||||
! (In fact, after a restoreundo, some of them may still be good.
|
||||
! For simplicity, though, we assume the general case.)
|
||||
gg_mainwin = 0;
|
||||
gg_statuswin = 0;
|
||||
gg_quotewin = 0;
|
||||
gg_scriptfref = 0;
|
||||
gg_scriptstr = 0;
|
||||
gg_savestr = 0;
|
||||
statuswin_cursize = 0;
|
||||
gg_foregroundchan = 0;
|
||||
gg_backgroundchan = 0;
|
||||
gg_commandstr = 0;
|
||||
gg_command_reading = false;
|
||||
! Also tell the game to clear its object references.
|
||||
IdentifyGlkObject(0);
|
||||
[ OPEN_BUILT_IN_WINDOWS_R res sty;
|
||||
! gg_mainwin and gg_storywin might already be set. If not, create them.
|
||||
|
||||
id = glk_stream_iterate(0, gg_arguments);
|
||||
while (id) {
|
||||
switch (gg_arguments-->0) {
|
||||
GG_SAVESTR_ROCK: gg_savestr = id;
|
||||
GG_SCRIPTSTR_ROCK: gg_scriptstr = id;
|
||||
GG_COMMANDWSTR_ROCK: gg_commandstr = id;
|
||||
gg_command_reading = false;
|
||||
GG_COMMANDRSTR_ROCK: gg_commandstr = id;
|
||||
gg_command_reading = true;
|
||||
default: IdentifyGlkObject(1, 1, id, gg_arguments-->0);
|
||||
}
|
||||
id = glk_stream_iterate(id, gg_arguments);
|
||||
}
|
||||
|
||||
id = glk_window_iterate(0, gg_arguments);
|
||||
while (id) {
|
||||
switch (gg_arguments-->0) {
|
||||
GG_MAINWIN_ROCK: gg_mainwin = id;
|
||||
GG_STATUSWIN_ROCK: gg_statuswin = id;
|
||||
GG_QUOTEWIN_ROCK: gg_quotewin = id;
|
||||
default: IdentifyGlkObject(1, 0, id, gg_arguments-->0);
|
||||
}
|
||||
id = glk_window_iterate(id, gg_arguments);
|
||||
}
|
||||
|
||||
id = glk_fileref_iterate(0, gg_arguments);
|
||||
while (id) {
|
||||
switch (gg_arguments-->0) {
|
||||
GG_SCRIPTFREF_ROCK: gg_scriptfref = id;
|
||||
default: IdentifyGlkObject(1, 2, id, gg_arguments-->0);
|
||||
}
|
||||
id = glk_fileref_iterate(id, gg_arguments);
|
||||
}
|
||||
|
||||
if (glk_gestalt(gestalt_Sound, 0)) {
|
||||
id = glk_schannel_iterate(0, gg_arguments);
|
||||
while (id) {
|
||||
switch (gg_arguments-->0) {
|
||||
GG_FOREGROUNDCHAN_ROCK: gg_foregroundchan = id;
|
||||
GG_BACKGROUNDCHAN_ROCK: gg_backgroundchan = id;
|
||||
default: IdentifyGlkObject(1, 3, id, gg_arguments-->0);
|
||||
}
|
||||
id = glk_schannel_iterate(id, gg_arguments);
|
||||
if (gg_mainwin == 0) {
|
||||
! Open the story window.
|
||||
! Left-justify the header style
|
||||
glk_stylehint_set(wintype_TextBuffer, style_Header, stylehint_Justification, 0);
|
||||
! Try to make emphasized type in italics and not boldface
|
||||
glk_stylehint_set(wintype_TextBuffer, style_Emphasized, stylehint_Weight, 0);
|
||||
glk_stylehint_set(wintype_TextBuffer, style_Emphasized, stylehint_Oblique, 1);
|
||||
gg_mainwin = glk_window_open(0, 0, 0, wintype_TextBuffer, GG_MAINWIN_ROCK);
|
||||
if (gg_mainwin == 0) {
|
||||
! If we can't even open one window, give in
|
||||
quit;
|
||||
}
|
||||
if (gg_foregroundchan ~= 0) { glk_schannel_stop(gg_foregroundchan); }
|
||||
if (gg_backgroundchan ~= 0) { glk_schannel_stop(gg_backgroundchan); }
|
||||
} else {
|
||||
! There was already a story window. We should erase it.
|
||||
glk_window_clear(gg_mainwin);
|
||||
}
|
||||
|
||||
! Tell the game to tie up any loose ends.
|
||||
IdentifyGlkObject(2);
|
||||
if (gg_statuswin == 0) {
|
||||
statuswin_cursize = statuswin_size;
|
||||
for (sty=0: sty < style_NUMSTYLES: sty++) {
|
||||
glk_stylehint_set(wintype_TextGrid, sty, stylehint_ReverseColor, 1);
|
||||
}
|
||||
gg_statuswin =
|
||||
glk_window_open(gg_mainwin, winmethod_Fixed + winmethod_Above,
|
||||
statuswin_cursize, wintype_TextGrid, GG_STATUSWIN_ROCK);
|
||||
}
|
||||
! It's possible that the status window couldn't be opened, in which case
|
||||
! gg_statuswin is now zero. We must allow for that later on.
|
||||
|
||||
glk_set_window(gg_mainwin);
|
||||
rfalse;
|
||||
];
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
"is": {
|
||||
"type": "kit",
|
||||
"title": "Architecture32Kit",
|
||||
"version": "10.2.0-beta+6W69"
|
||||
"version": "10.2.0-beta+6W71"
|
||||
},
|
||||
"compatibility": "32-bit",
|
||||
"kit-details": {
|
||||
|
|
|
@ -214,7 +214,6 @@ Constant RTP_FILEIOERROR = 48;
|
|||
Constant RTP_HEAPERROR = 49;
|
||||
Constant RTP_LISTRANGEERROR = 50;
|
||||
Constant RTP_REGEXPSYNTAXERROR = 51;
|
||||
Constant RTP_NOGLULXUNICODE = 52;
|
||||
Constant RTP_BACKDROPONLY = 53;
|
||||
Constant RTP_NOTTHING = 54;
|
||||
Constant RTP_SCENEHASNTSTARTED = 55;
|
||||
|
|
|
@ -154,8 +154,6 @@ Array RTP_Buffer --> (-1) 0 0 0 0 0 0;
|
|||
"always be 0 or more.^";
|
||||
RTP_REGEXPSYNTAXERROR:
|
||||
print "Syntax error in regular expression.^";
|
||||
RTP_NOGLULXUNICODE:
|
||||
print "This interpreter does not support Unicode.^";
|
||||
RTP_NEGATIVEROOT:
|
||||
print "You can't take the square root of a negative number.^";
|
||||
RTP_CANTITERATE:
|
||||
|
|
|
@ -190,6 +190,9 @@ a previous match, setting them to the empty text.
|
|||
Array RE_Subexpressions --> 11; ! Address of node for this subexpression
|
||||
Array Allocated_Match_Vars --> 10; ! Indexed text to hold values of the variables
|
||||
|
||||
Global match0_idx; ! for plain text match, index of initial character match
|
||||
Global match0_idx2; ! for plain text match, index of final character match
|
||||
|
||||
[ TEXT_TY_RE_DebugMatchVars txt
|
||||
offset n i;
|
||||
print RE_Subexpressions-->10, " collecting subexps^";
|
||||
|
@ -1641,6 +1644,8 @@ For an explanation of the use of the word "blob", see "Text.i6t".
|
|||
switch (ftxtype) {
|
||||
REGEXP_BLOB: i = TEXT_TY_RE_CompileTree(ftxt, exactly);
|
||||
CHR_BLOB: i = TEXT_TY_CHR_CompileTree(ftxt, exactly);
|
||||
match0_idx = -1;
|
||||
match0_idx2 = 0;
|
||||
default: "*** bad ftxtype ***";
|
||||
}
|
||||
|
||||
|
@ -1672,7 +1677,10 @@ For an explanation of the use of the word "blob", see "Text.i6t".
|
|||
}
|
||||
print " ***^";
|
||||
}
|
||||
|
||||
if (ftxtype == CHR_BLOB) {
|
||||
match0_idx = RE_PACKET_space-->RE_DATA1;
|
||||
match0_idx2 = RE_PACKET_space-->RE_DATA2;
|
||||
}
|
||||
if (rtxt == 0) break; ! Accept only one match, replace nothing
|
||||
|
||||
if (rtxt ~= 0 or 1) {
|
||||
|
|
|
@ -2,26 +2,126 @@ Startup Template.
|
|||
|
||||
How the program starts up, in a Basic Inform project.
|
||||
|
||||
@ Because the functions below are replaced by |WorldModelKit| alternatives
|
||||
@h Summary.
|
||||
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).
|
||||
|
||||
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.
|
||||
|
||||
Arrangements are a little different here on the Z-machine, because some
|
||||
data is retained in the case of a restart.
|
||||
|
||||
(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.")
|
||||
|
||||
@h The startup sequence.
|
||||
As of IE-0022 we have a simplified startup sequence. |Main| calls the |Startup|
|
||||
function, which does two things: run an Architecture16Kit/Architecture32Kit function
|
||||
|VM_Check_Functionality| 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.
|
||||
|
||||
Because the functions below are replaced by |WorldModelKit| alternatives
|
||||
if that kit is present, the following applies only to Basic Inform programs
|
||||
where |WorldModelKit| is not involved.
|
||||
|
||||
=
|
||||
[ Main;
|
||||
self = COL_HSIZE; ! To ensure this definition is not optimised out
|
||||
Startup();
|
||||
Submain();
|
||||
];
|
||||
|
||||
[ Startup;
|
||||
VM_Check_Functionality();
|
||||
say__pc = say__pc | PARA_NORULEBOOKBREAKS;
|
||||
FollowRulebook(STARTUP_RB);
|
||||
if (say__pc & PARA_NORULEBOOKBREAKS) say__pc = say__pc - PARA_NORULEBOOKBREAKS;
|
||||
rfalse;
|
||||
];
|
||||
|
||||
@h Initialise Memory Rule.
|
||||
This rule amalgamates some minimal initialisations which all need to happen
|
||||
before we can risk using some of the more exotic I7 kinds:
|
||||
|
||||
(a) The language definition might call for initialisation, although the
|
||||
default language of play (English) does not.
|
||||
|
||||
(b) We start the machinery needed to check that property accesses are
|
||||
valid during play.
|
||||
|
||||
(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.
|
||||
|
||||
(d) Some architecture-specific dictionary and parse buffer related globals
|
||||
are initialised.
|
||||
|
||||
=
|
||||
[ INITIALISE_MEMORY_R;
|
||||
VM_PreInitialise();
|
||||
LanguageInitialise();
|
||||
|
||||
HeapInitialise(); ! Create a completely unused memory allocation heap
|
||||
StackFramingInitialise(); ! Create an empty stack
|
||||
CreateDynamicRelations(); ! Create relation structures on the heap
|
||||
|
||||
#Ifdef TARGET_GLULX;
|
||||
! Empty the parse buffer (see bug 0001451)
|
||||
buffer3-->0 = 0;
|
||||
#Ifnot;
|
||||
standard_interpreter = HDR_TERPSTANDARD-->0;
|
||||
|
||||
dict_start = HDR_DICTIONARY-->0;
|
||||
dict_entry_size = dict_start->(dict_start->0 + 1);
|
||||
dict_start = dict_start + dict_start->0 + 4;
|
||||
dict_end = dict_start + ((dict_start - 2)-->0) * dict_entry_size;
|
||||
|
||||
buffer->0 = INPUT_BUFFER_LEN;
|
||||
buffer2->0 = INPUT_BUFFER_LEN;
|
||||
buffer3->0 = INPUT_BUFFER_LEN;
|
||||
parse->0 = 15;
|
||||
parse2->0 = 15;
|
||||
#Endif;
|
||||
|
||||
rfalse;
|
||||
];
|
||||
|
||||
[ Main;
|
||||
self = COL_HSIZE; ! To ensure this definition is not optimised out
|
||||
VM_Initialise();
|
||||
INITIALISE_MEMORY_R();
|
||||
SEED_RANDOM_NUMBER_GENERATOR_R();
|
||||
Submain();
|
||||
@h Seed Random Number Generator Rule.
|
||||
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).
|
||||
|
||||
=
|
||||
[ SEED_RANDOM_NUMBER_GENERATOR_R i;
|
||||
if (BasicInformKit`FIX_RNG_CFGF) {
|
||||
#Ifdef TARGET_GLULX;
|
||||
@random 10000 i;
|
||||
i = -i-2000;
|
||||
@setrandom i;
|
||||
#Ifnot;
|
||||
@random 10000 -> i;
|
||||
i = -i-2000;
|
||||
@random i -> i;
|
||||
#Endif;
|
||||
}
|
||||
if (RNG_SEED_AT_START_OF_PLAY) VM_Seed_RNG(RNG_SEED_AT_START_OF_PLAY);
|
||||
for (i=1: i<=100: i++) random(i);
|
||||
rfalse;
|
||||
];
|
||||
|
|
|
@ -284,49 +284,45 @@ it's clearer to give two definitions, so:
|
|||
FlexError("ran out with too many simultaneous text conversions");
|
||||
}
|
||||
|
||||
if (unicode_gestalt_ok) {
|
||||
SuspendRTP();
|
||||
.RetryWithLargerBuffer;
|
||||
saved_stream = glk_stream_get_current();
|
||||
stream = glk_stream_open_memory_uni(buffer, RawBufferSize, filemode_Write, 0);
|
||||
glk_stream_set_current(stream);
|
||||
SuspendRTP();
|
||||
.RetryWithLargerBuffer;
|
||||
saved_stream = glk_stream_get_current();
|
||||
stream = glk_stream_open_memory_uni(buffer, RawBufferSize, filemode_Write, 0);
|
||||
glk_stream_set_current(stream);
|
||||
|
||||
@push say__p; @push say__pc;
|
||||
ClearParagraphing(7);
|
||||
if (from_snippet) print (PrintSnippet) from_value;
|
||||
else print (PrintI6Text) from_value;
|
||||
@pull say__pc; @pull say__p;
|
||||
@push say__p; @push say__pc;
|
||||
ClearParagraphing(7);
|
||||
if (from_snippet) print (PrintSnippet) from_value;
|
||||
else print (PrintI6Text) from_value;
|
||||
@pull say__pc; @pull say__p;
|
||||
|
||||
results = buffer + buffer_size - 2*WORDSIZE;
|
||||
glk_stream_close(stream, results);
|
||||
if (saved_stream) glk_stream_set_current(saved_stream);
|
||||
ResumeRTP();
|
||||
results = buffer + buffer_size - 2*WORDSIZE;
|
||||
glk_stream_close(stream, results);
|
||||
if (saved_stream) glk_stream_set_current(saved_stream);
|
||||
ResumeRTP();
|
||||
|
||||
len = results-->1;
|
||||
if (len > RawBufferSize-1) {
|
||||
! Glulx had to truncate text output because the buffer ran out:
|
||||
! len is the number of characters which it tried to print
|
||||
news = RawBufferSize;
|
||||
while (news < len) news=news*2;
|
||||
i = VM_AllocateMemory(news*WORDSIZE);
|
||||
if (i ~= 0) {
|
||||
if (memory_to_free) VM_FreeMemory(memory_to_free);
|
||||
memory_to_free = i;
|
||||
buffer = i;
|
||||
RawBufferSize = news;
|
||||
buffer_size = (RawBufferSize + 2)*WORDSIZE;
|
||||
jump RetryWithLargerBuffer;
|
||||
}
|
||||
! Memory allocation refused: all we can do is to truncate the text
|
||||
len = RawBufferSize-1;
|
||||
len = results-->1;
|
||||
if (len > RawBufferSize-1) {
|
||||
! Glulx had to truncate text output because the buffer ran out:
|
||||
! len is the number of characters which it tried to print
|
||||
news = RawBufferSize;
|
||||
while (news < len) news=news*2;
|
||||
i = VM_AllocateMemory(news*WORDSIZE);
|
||||
if (i ~= 0) {
|
||||
if (memory_to_free) VM_FreeMemory(memory_to_free);
|
||||
memory_to_free = i;
|
||||
buffer = i;
|
||||
RawBufferSize = news;
|
||||
buffer_size = (RawBufferSize + 2)*WORDSIZE;
|
||||
jump RetryWithLargerBuffer;
|
||||
}
|
||||
buffer-->(len) = 0;
|
||||
|
||||
TEXT_TY_CastPrimitiveNesting--;
|
||||
BlkValueMassCopyFromArray(to_txt, buffer, 4, len+1);
|
||||
} else {
|
||||
RunTimeProblem(RTP_NOGLULXUNICODE);
|
||||
! Memory allocation refused: all we can do is to truncate the text
|
||||
len = RawBufferSize-1;
|
||||
}
|
||||
buffer-->(len) = 0;
|
||||
|
||||
TEXT_TY_CastPrimitiveNesting--;
|
||||
BlkValueMassCopyFromArray(to_txt, buffer, 4, len+1);
|
||||
if (memory_to_free) VM_FreeMemory(memory_to_free);
|
||||
];
|
||||
#endif;
|
||||
|
|
|
@ -55,14 +55,15 @@ Default LanguageCases 1;
|
|||
@h Final Code Dependencies.
|
||||
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 |FINAL_CODE_STARTUP_R|
|
||||
the final code-generation for Glulx injects code into |PLATFORM_SPECIFIC_STARTUP_R|
|
||||
to use accelerated VM support for certain veneer functions.
|
||||
|
||||
The other three are also misleading, in that final code-generation can add more
|
||||
helpful code here: the fallbacks here are basic.
|
||||
|
||||
=
|
||||
[ FINAL_CODE_STARTUP_R addr res;
|
||||
[ PLATFORM_SPECIFIC_STARTUP_R addr res;
|
||||
rfalse;
|
||||
];
|
||||
|
||||
[ DebugAction a anames str;
|
||||
|
@ -318,27 +319,6 @@ This is not quite so efficient as Memcpy, but not terrible.
|
|||
rfalse;
|
||||
];
|
||||
|
||||
@h Seed Random Number Generator Rule.
|
||||
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).
|
||||
|
||||
=
|
||||
[ SEED_RANDOM_NUMBER_GENERATOR_R i;
|
||||
if (RNG_SEED_AT_START_OF_PLAY) VM_Seed_RNG(RNG_SEED_AT_START_OF_PLAY);
|
||||
for (i=1: i<=100: i++) random(i);
|
||||
rfalse;
|
||||
];
|
||||
|
||||
@h Regarding.
|
||||
These are used with adaptive text.
|
||||
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
"is": {
|
||||
"type": "kit",
|
||||
"title": "BasicInformKit",
|
||||
"version": "10.2.0-beta+6W69"
|
||||
"version": "10.2.0-beta+6W71"
|
||||
},
|
||||
"needs": [ {
|
||||
"need": {
|
||||
|
@ -23,7 +23,7 @@
|
|||
"defines-Main": false,
|
||||
"provides-kinds": [ "Macros.neptune", "Protocols.neptune", "Core.neptune", "Punctuation.neptune", "Files.neptune" ],
|
||||
"indexes-with-structure": "Basic.indext",
|
||||
"configuration-flags": [ "AMERICAN_DIALECT", "AUTHORIAL_MODESTY", "ECHO_COMMANDS", "FIX_RNG", "MEMORY_ECONOMY", "NO_DEPRECATED", "NUMBERED_RULES", "PRINT_ENGINEER_EXPS", "SERIAL_COMMA", "NO_AUTO_PLURAL_NAMES" ],
|
||||
"configuration-flags": [ "AMERICAN_DIALECT", "AUTHORIAL_MODESTY", "ECHO_COMMANDS", "FIX_RNG", "MEMORY_ECONOMY", "NO_AUTO_PLURAL_NAMES", "NO_DEPRECATED", "NUMBERED_RULES", "PRINT_ENGINEER_EXPS", "SERIAL_COMMA" ],
|
||||
"configuration-values": [ "STACK_FRAME_CAPACITY", "TEXT_BUFFER_SIZE", "DICT_RESOLUTION" ]
|
||||
}
|
||||
}
|
|
@ -2,7 +2,7 @@
|
|||
"is": {
|
||||
"type": "kit",
|
||||
"title": "CommandParserKit",
|
||||
"version": "10.2.0-beta+6W69"
|
||||
"version": "10.2.0-beta+6W71"
|
||||
},
|
||||
"needs": [ {
|
||||
"need": {
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
"is": {
|
||||
"type": "kit",
|
||||
"title": "EnglishLanguageKit",
|
||||
"version": "10.2.0-beta+6W69"
|
||||
"version": "10.2.0-beta+6W71"
|
||||
},
|
||||
"needs": [ {
|
||||
"need": {
|
||||
|
|
|
@ -22,10 +22,8 @@ Global EarlyInTurnSequence;
|
|||
Global IterationsOfTurnSequence;
|
||||
|
||||
+replacing(from BasicInformKit) [ Main;
|
||||
say__pc = say__pc | PARA_NORULEBOOKBREAKS;
|
||||
rulebook_without_variables = ACTION_PROCESSING_RB;
|
||||
FollowRulebook(STARTUP_RB);
|
||||
if (say__pc & PARA_NORULEBOOKBREAKS) say__pc = say__pc - PARA_NORULEBOOKBREAKS;
|
||||
Startup();
|
||||
while (true) {
|
||||
while (deadflag == false) {
|
||||
EarlyInTurnSequence = true;
|
||||
|
@ -38,17 +36,14 @@ Global IterationsOfTurnSequence;
|
|||
}
|
||||
];
|
||||
|
||||
@h Virtual Machine Startup Rule.
|
||||
We delegate to the appropriate VM-specific section of code for the real work.
|
||||
@h Initial Whitespace Rule.
|
||||
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.
|
||||
|
||||
=
|
||||
[ VIRTUAL_MACHINE_STARTUP_R;
|
||||
CarryOutActivity(STARTING_VIRTUAL_MACHINE_ACT);
|
||||
VM_Initialise();
|
||||
[ INITIAL_WHITESPACE_R;
|
||||
! It is now safe for the paragraph breaking between rules mechanism to work
|
||||
if (say__pc & PARA_NORULEBOOKBREAKS) say__pc = say__pc - PARA_NORULEBOOKBREAKS;
|
||||
print "^^^";
|
||||
|
@ -71,13 +66,10 @@ 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.
|
||||
|
||||
@h Initialise Memory Rule.
|
||||
This rule amalgamates some minimal initialisations which all need to happen
|
||||
before we can risk using some of the more exotic I7 kinds:
|
||||
In addition to BasicInformKit's memory initialisation, this rule sets up
|
||||
the initial situation:
|
||||
|
||||
(a) The language definition might call for initialisation, although the
|
||||
default language of play (English) does not.
|
||||
|
||||
(b) A handful of variables are filled in. |I7_LOOKMODE| is a constant
|
||||
A handful of variables are filled in. |I7_LOOKMODE| 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 |player| have the correct value, as the
|
||||
|
@ -91,23 +83,13 @@ 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.
|
||||
|
||||
(c) We start the machinery needed to check that property accesses are
|
||||
valid during play.
|
||||
|
||||
(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.
|
||||
|
||||
The |not_yet_in_play| 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
|
||||
where he is, the surprise will not be spoiled.
|
||||
|
||||
=
|
||||
+replacing(from BasicInformKit) [ INITIALISE_MEMORY_R;
|
||||
VM_PreInitialise();
|
||||
LanguageInitialise();
|
||||
|
||||
+replacing(keeping)(from BasicInformKit) [ INITIALISE_MEMORY_R;
|
||||
not_yet_in_play = true;
|
||||
lookmode = WorldModelKit`ROOM_DESC_DETAIL_CFGV;
|
||||
player = InitialSituation-->PLAYER_OBJECT_INIS;
|
||||
|
@ -115,9 +97,7 @@ where he is, the surprise will not be spoiled.
|
|||
real_location = nothing;
|
||||
location = nothing;
|
||||
|
||||
HeapInitialise(); ! Create a completely unused memory allocation heap
|
||||
StackFramingInitialise(); ! Create an empty stack
|
||||
CreateDynamicRelations(); ! Create relation structures on the heap
|
||||
replaced`INITIALISE_MEMORY_R();
|
||||
|
||||
rfalse;
|
||||
];
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
"is": {
|
||||
"type": "kit",
|
||||
"title": "WorldModelKit",
|
||||
"version": "10.2.0-beta+6W69"
|
||||
"version": "10.2.0-beta+6W71"
|
||||
},
|
||||
"needs": [ {
|
||||
"need": {
|
||||
|
|
|
@ -9,6 +9,7 @@ To begin:
|
|||
run test B;
|
||||
run test C;
|
||||
run test D;
|
||||
run test E;
|
||||
|
||||
To run test A:
|
||||
let Neptune be text;
|
||||
|
@ -46,3 +47,124 @@ To run test D:
|
|||
replace the punctuated word "system," in Neptune with "toad";
|
||||
replace the punctuated word "." in Neptune with "!";
|
||||
say "The redacted text: [Neptune][line break]".
|
||||
|
||||
To run test E:
|
||||
say "text ''/'': ";
|
||||
if "" matches the text "", say "first [first index of text match]; last [last index of text match]; length [length of text match].";
|
||||
else say "problem.";
|
||||
say "text ''/xyzzy: ";
|
||||
if "" matches the text "xyzzy", say "first [first index of text match]; last [last index of text match]; length [length of text match].";
|
||||
else say "'' correctly doesn't match xyzzy.";
|
||||
say "text trailing substring : plughxyzzy/xyzzy: ";
|
||||
if "plughxyzzy" matches the text "xyzzy", say "first [first index of text match]; last [last index of text match]; length [length of text match].";
|
||||
else say "problem.";
|
||||
say "text leading substring: xyzzyplugh/xyzzy";
|
||||
if "xyzzyplugh" matches the text "xyzzy", say "first [first index of text match]; last [last index of text match]; length [length of text match].";
|
||||
else say "problem.";
|
||||
say "text internal substring plughxyzzyplugh/xyzzy: ";
|
||||
if "plughxyzzyplugh" matches the text "xyzzy", say "t internal substring: first [first index of text match]; last [last index of text match]; length [length of text match].";
|
||||
else say "problem.";
|
||||
say "text multiple substring: xyzzyxyzzy/xyzzy: ";
|
||||
if "xyzzyxyzzy" matches the text "xyzzy", say "first [first index of text match]; last [last index of text match]; length [length of text match].";
|
||||
else say "problem.";
|
||||
say "text non-blank/blank: ";
|
||||
if "xyzzy" matches the text "", say "first [first index of text match]; last [last index of text match]; length [length of text match].";
|
||||
else say "problem.";
|
||||
say "text identical: xyzzy/xyzzy: ";
|
||||
if "xyzzy" matches the text "xyzzy", say "text identical: first [first index of text match]; last [last index of text match]; length [length of text match].";
|
||||
else say "problem.";
|
||||
say "text reversed trailing substring xyzzy/plughxyzzy: ";
|
||||
if "xyzzy" matches the text "plughxyzzy", say "text reversed trailing substring: first [first index of text match]; last [last index of text match]; length [length of text match].";
|
||||
else say "correctly failed to match.";
|
||||
say "text reversed substring xyzzy/xyzzyplugh: ";
|
||||
if "xyzzy" matches the text "xyzzyplugh", say "first [first index of text match]; last [last index of text match]; length [length of text match].";
|
||||
else say "correctly failed to match.";
|
||||
say "text reversed internal substring xyzzy/plughxyzzyplugh: ";
|
||||
if "xyzzy" matches the text "plughxyzzyplugh", say "first [first index of text match]; last [last index of text match]; length [length of text match].";
|
||||
else say "correctly failed to match.";
|
||||
say "text reversed multiple substring xyzzy/xyzzyxyzzy: ";
|
||||
if "xyzzy" matches the text "xyzzyxyzzy", say "first [first index of text match]; last [last index of text match]; length [length of text match].";
|
||||
else say "correctly failed to match.";
|
||||
say "regexp ''/xyzzy: ";
|
||||
if "" matches the regular expression "xyzzy", say "regexp blank/non-blank: first [first index of subexpression 0]; last [last index of subexpression 0]; length [length of subexpression 0].";
|
||||
else say "correctly failed to match.";
|
||||
say "regexp xyzzy/'': ";
|
||||
if "xyzzy" matches the regular expression "", say "regexp non-blank/blank: first [first index of subexpression 0]; last [last index of subexpression 0]; length [length of subexpression 0].";
|
||||
else say "correctly failed to match.";
|
||||
say "regexp xyzzy/(xyzzy): ";
|
||||
if "xyzzy" matches the regular expression "(xyzzy)", say "regexp identical: first [first index of subexpression 0]; last [last index of subexpression 0]; length [length of subexpression 0].";
|
||||
else say "problem.";
|
||||
say "regexp reversed trailing substring: xyzzy/plugh(xyzzy): ";
|
||||
if "xyzzy" matches the regular expression "plugh(xyzzy)", say "regexp reversed trailing substring: first [first index of subexpression 0]; last [last index of subexpression 0]; length [length of subexpression 0].";
|
||||
else say "correctly failed to match.";
|
||||
say "regexp reversed substring: xyzzy/(xyzzy)plugh: ";
|
||||
if "xyzzy" matches the regular expression "(xyzzy)plugh", say "regexp reversed substring: first [first index of subexpression 0]; last [last index of subexpression 0]; length [length of subexpression 0].";
|
||||
else say "correctly failed to match.";
|
||||
say "regexp reversed internal substring: xyzzy/plugh(xyzzy)plugh: ";
|
||||
if "xyzzy" matches the regular expression "plugh(xyzzy)plugh", say "regexp reversed internal substring: first [first index of subexpression 0]; last [last index of subexpression 0]; length [length of subexpression 0].";
|
||||
else say "correctly failed to match.";
|
||||
say "regexp reversed multiple substring: xyzzy/xyzzy(xyzzy): ";
|
||||
if "xyzzy" matches the regular expression "xyzzy(xyzzy)", say "first [first index of subexpression 0]; last [last index of subexpression 0]; length [length of subexpression 0].";
|
||||
else say "correctly failed to match.";
|
||||
say "regexp multiple substring: xyzzy/xyzzy(xyzzy)?: ";
|
||||
if "xyzzy" matches the regular expression "xyzzy(xyzzy)?", say "first [first index of subexpression 0]; last [last index of subexpression 0]; length [length of subexpression 0].";
|
||||
else say "problem.";
|
||||
say "regexp reversed trailing substring: plughxyzzy/(xyzzy): ";
|
||||
if "plughxyzzy" matches the regular expression "(xyzzy)", say "first [first index of subexpression 0]; last [last index of subexpression 0]; length [length of subexpression 0].";
|
||||
else say "problem.";
|
||||
say "regexp reversed leading substring xyzzyplugh/(xyzzy): ";
|
||||
if "xyzzyplugh" matches the regular expression "(xyzzy)", say "first [first index of subexpression 0]; last [last index of subexpression 0]; length [length of subexpression 0].";
|
||||
else say "problem.";
|
||||
say "regexp reversed internal substring plughxyzzyplugh/(xyzzy): ";
|
||||
if "plughxyzzyplugh" matches the regular expression "(xyzzy)", say "first [first index of subexpression 0]; last [last index of subexpression 0]; length [length of subexpression 0].";
|
||||
else say "problem.";
|
||||
say "regexp reversed multiple substring: xyzzyxyzzy/(xyzzy): ";
|
||||
if "xyzzyxyzzy" matches the regular expression "(xyzzy)", say "first [first index of subexpression 0]; last [last index of subexpression 0]; length [length of subexpression 0].";
|
||||
else say "problem.";
|
||||
say "xyzzy/$^: ";
|
||||
if "xyzzy" matches the regular expression "$^", say "problem.";
|
||||
else say "correctly failed to match.";
|
||||
say "xyzzy/$.: ";
|
||||
if "xyzzy" matches the regular expression "$.", say "problem.";
|
||||
else say "correctly failed to match.";
|
||||
say "xyzzy/.^: ";
|
||||
if "xyzzy" matches the regular expression ".^", say "problem.";
|
||||
else say "correctly failed to match.";
|
||||
say "xyzzy/^$: ";
|
||||
if "xyzzy" matches the regular expression "^$", say "problem.";
|
||||
else say "correctly failed to match.";
|
||||
say "regexp xyzzy/(?:): ";
|
||||
if "xyzzy" matches the regular expression "(?:)", say "xyzzy/(?:) first [first index of subexpression 0]; last [last index of subexpression 0]; length [length of subexpression 0].";
|
||||
else say "problem.";
|
||||
if "xyzzy" matches the regular expression "(.*)", say "xyzzy/(.*) first [first index of subexpression 0]; last [last index of subexpression 0]; length [length of subexpression 0].";
|
||||
else say "problem.";
|
||||
if "xyzzy" matches the regular expression "(d?)", say "xyzzy/(d?) first [first index of subexpression 0]; last [last index of subexpression 0]; length [length of subexpression 0].";
|
||||
else say "problem.";
|
||||
say "''/^$: ";
|
||||
if "" matches the regular expression "^$", say "first [first index of subexpression 0]; last [last index of subexpression 0]; length [length of subexpression 0].";
|
||||
else say "problem.";
|
||||
say "''/.*: ";
|
||||
if "" matches the regular expression ".*", say "first [first index of subexpression 0]; last [last index of subexpression 0]; length [length of subexpression 0].";
|
||||
say "''/(?:): ";
|
||||
if "" matches the regular expression "(?:)", say "first [first index of subexpression 0]; last [last index of subexpression 0]; length [length of subexpression 0].";
|
||||
say "''/(d?): ";
|
||||
if "" matches the regular expression "(d?)", say "first [first index of subexpression 0]; last [last index of subexpression 0]; length [length of subexpression 0].";
|
||||
else say "problem.";
|
||||
say "''/$.: ";
|
||||
if "" matches the regular expression "$.", say "problem.";
|
||||
else say "correctly failed to match.";
|
||||
say "''/.^: ";
|
||||
if "" matches the regular expression ".^", say "problem.";
|
||||
else say "correctly failed to match.";
|
||||
say "shinto/hint substring: ";
|
||||
if "shinto" matches the text "hint", say "first [first index of text match]; last [last index of text match]; length [length of text match].";
|
||||
else say "problem.";
|
||||
say "educate/du(cat): ";
|
||||
if "educate" matches the regular expression "du(cat)", say "educate/ducat first [first index of subexpression 0]; last [last index of subexpression 0]; length [length of subexpression 0] [first index of subexpression 1]; last [last index of subexpression 1]; length [length of subexpression 1].";
|
||||
else say "problem.";
|
||||
say "regexp Q*bert/x? :";
|
||||
if "Q*bert" matches the regular expression "x?", say "first [first index of subexpression 0]; last [last index of subexpression 0]; length [length of subexpression 0].";
|
||||
else say "problem.";
|
||||
say "regexp ham sandwich/(.+)\b(.+): ";
|
||||
if "ham sandwich" matches the regular expression "(.+)\b(.+)", say "sub0: first [first index of subexpression 0]; last [last index of subexpression 0]; length [length of subexpression 0] sub1: first [first index of subexpression 1]; last [last index of subexpression 1]; length [length of subexpression 1]; sub2: first [first index of subexpression 2]; last [last index of subexpression 2]; length [length of subexpression 2].";
|
||||
else say "problem.";
|
||||
|
|
|
@ -9,6 +9,7 @@ To begin:
|
|||
run test B;
|
||||
run test C;
|
||||
run test D;
|
||||
run test E;
|
||||
|
||||
To run test A:
|
||||
let Neptune be text;
|
||||
|
@ -46,3 +47,124 @@ To run test D:
|
|||
replace the punctuated word "system," in Neptune with "toad";
|
||||
replace the punctuated word "." in Neptune with "!";
|
||||
say "The redacted text: [Neptune][line break]".
|
||||
|
||||
To run test E:
|
||||
say "text ''/'': ";
|
||||
if "" matches the text "", say "first [first index of text match]; last [last index of text match]; length [length of text match].";
|
||||
else say "problem.";
|
||||
say "text ''/xyzzy: ";
|
||||
if "" matches the text "xyzzy", say "first [first index of text match]; last [last index of text match]; length [length of text match].";
|
||||
else say "'' correctly doesn't match xyzzy.";
|
||||
say "text trailing substring : plughxyzzy/xyzzy: ";
|
||||
if "plughxyzzy" matches the text "xyzzy", say "first [first index of text match]; last [last index of text match]; length [length of text match].";
|
||||
else say "problem.";
|
||||
say "text leading substring: xyzzyplugh/xyzzy";
|
||||
if "xyzzyplugh" matches the text "xyzzy", say "first [first index of text match]; last [last index of text match]; length [length of text match].";
|
||||
else say "problem.";
|
||||
say "text internal substring plughxyzzyplugh/xyzzy: ";
|
||||
if "plughxyzzyplugh" matches the text "xyzzy", say "t internal substring: first [first index of text match]; last [last index of text match]; length [length of text match].";
|
||||
else say "problem.";
|
||||
say "text multiple substring: xyzzyxyzzy/xyzzy: ";
|
||||
if "xyzzyxyzzy" matches the text "xyzzy", say "first [first index of text match]; last [last index of text match]; length [length of text match].";
|
||||
else say "problem.";
|
||||
say "text non-blank/blank: ";
|
||||
if "xyzzy" matches the text "", say "first [first index of text match]; last [last index of text match]; length [length of text match].";
|
||||
else say "problem.";
|
||||
say "text identical: xyzzy/xyzzy: ";
|
||||
if "xyzzy" matches the text "xyzzy", say "text identical: first [first index of text match]; last [last index of text match]; length [length of text match].";
|
||||
else say "problem.";
|
||||
say "text reversed trailing substring xyzzy/plughxyzzy: ";
|
||||
if "xyzzy" matches the text "plughxyzzy", say "text reversed trailing substring: first [first index of text match]; last [last index of text match]; length [length of text match].";
|
||||
else say "correctly failed to match.";
|
||||
say "text reversed substring xyzzy/xyzzyplugh: ";
|
||||
if "xyzzy" matches the text "xyzzyplugh", say "first [first index of text match]; last [last index of text match]; length [length of text match].";
|
||||
else say "correctly failed to match.";
|
||||
say "text reversed internal substring xyzzy/plughxyzzyplugh: ";
|
||||
if "xyzzy" matches the text "plughxyzzyplugh", say "first [first index of text match]; last [last index of text match]; length [length of text match].";
|
||||
else say "correctly failed to match.";
|
||||
say "text reversed multiple substring xyzzy/xyzzyxyzzy: ";
|
||||
if "xyzzy" matches the text "xyzzyxyzzy", say "first [first index of text match]; last [last index of text match]; length [length of text match].";
|
||||
else say "correctly failed to match.";
|
||||
say "regexp ''/xyzzy: ";
|
||||
if "" matches the regular expression "xyzzy", say "regexp blank/non-blank: first [first index of subexpression 0]; last [last index of subexpression 0]; length [length of subexpression 0].";
|
||||
else say "correctly failed to match.";
|
||||
say "regexp xyzzy/'': ";
|
||||
if "xyzzy" matches the regular expression "", say "regexp non-blank/blank: first [first index of subexpression 0]; last [last index of subexpression 0]; length [length of subexpression 0].";
|
||||
else say "correctly failed to match.";
|
||||
say "regexp xyzzy/(xyzzy): ";
|
||||
if "xyzzy" matches the regular expression "(xyzzy)", say "regexp identical: first [first index of subexpression 0]; last [last index of subexpression 0]; length [length of subexpression 0]; sub1 [first index of subexpression 1]; last [last index of subexpression 1]; length [length of subexpression 1].";
|
||||
else say "problem.";
|
||||
say "regexp reversed trailing substring: xyzzy/plugh(xyzzy): ";
|
||||
if "xyzzy" matches the regular expression "plugh(xyzzy)", say "regexp reversed trailing substring: first [first index of subexpression 0]; last [last index of subexpression 0]; length [length of subexpression 0]; sub1 [first index of subexpression 1]; last [last index of subexpression 1]; length [length of subexpression 1].";
|
||||
else say "correctly failed to match.";
|
||||
say "regexp reversed substring: xyzzy/(xyzzy)plugh: ";
|
||||
if "xyzzy" matches the regular expression "(xyzzy)plugh", say "regexp reversed substring: first [first index of subexpression 0]; last [last index of subexpression 0]; length [length of subexpression 0]; sub1 [first index of subexpression 1]; last [last index of subexpression 1]; length [length of subexpression 1].";
|
||||
else say "correctly failed to match.";
|
||||
say "regexp reversed internal substring: xyzzy/plugh(xyzzy)plugh: ";
|
||||
if "xyzzy" matches the regular expression "plugh(xyzzy)plugh", say "regexp reversed internal substring: first [first index of subexpression 0]; last [last index of subexpression 0]; length [length of subexpression 0]; sub1 [first index of subexpression 1]; last [last index of subexpression 1]; length [length of subexpression 1].";
|
||||
else say "correctly failed to match.";
|
||||
say "regexp reversed multiple substring: xyzzy/xyzzy(xyzzy): ";
|
||||
if "xyzzy" matches the regular expression "xyzzy(xyzzy)", say "first [first index of subexpression 0]; last [last index of subexpression 0]; length [length of subexpression 0]; sub1 [first index of subexpression 1]; last [last index of subexpression 1]; length [length of subexpression 1].";
|
||||
else say "correctly failed to match.";
|
||||
say "regexp multiple substring: xyzzy/xyzzy(xyzzy)?: ";
|
||||
if "xyzzy" matches the regular expression "xyzzy(xyzzy)?", say "first [first index of subexpression 0]; last [last index of subexpression 0]; length [length of subexpression 0]; sub1 [first index of subexpression 1]; last [last index of subexpression 1]; length [length of subexpression 1].";
|
||||
else say "problem.";
|
||||
say "regexp reversed trailing substring: plughxyzzy/(xyzzy): ";
|
||||
if "plughxyzzy" matches the regular expression "(xyzzy)", say "first [first index of subexpression 0]; last [last index of subexpression 0]; length [length of subexpression 0]; sub1 [first index of subexpression 1]; last [last index of subexpression 1]; length [length of subexpression 1].";
|
||||
else say "problem.";
|
||||
say "regexp reversed leading substring xyzzyplugh/(xyzzy): ";
|
||||
if "xyzzyplugh" matches the regular expression "(xyzzy)", say "first [first index of subexpression 0]; last [last index of subexpression 0]; length [length of subexpression 0]; sub1 [first index of subexpression 1]; last [last index of subexpression 1]; length [length of subexpression 1].";
|
||||
else say "problem.";
|
||||
say "regexp reversed internal substring plughxyzzyplugh/(xyzzy): ";
|
||||
if "plughxyzzyplugh" matches the regular expression "(xyzzy)", say "first [first index of subexpression 0]; last [last index of subexpression 0]; length [length of subexpression 0]; sub1 [first index of subexpression 1]; last [last index of subexpression 1]; length [length of subexpression 1].";
|
||||
else say "problem.";
|
||||
say "regexp reversed multiple substring: xyzzyxyzzy/(xyzzy): ";
|
||||
if "xyzzyxyzzy" matches the regular expression "(xyzzy)", say "first [first index of subexpression 0]; last [last index of subexpression 0]; length [length of subexpression 0]; sub1 [first index of subexpression 1]; last [last index of subexpression 1]; length [length of subexpression 1].";
|
||||
else say "problem.";
|
||||
say "xyzzy/$^: ";
|
||||
if "xyzzy" matches the regular expression "$^", say "problem.";
|
||||
else say "correctly failed to match.";
|
||||
say "xyzzy/$.: ";
|
||||
if "xyzzy" matches the regular expression "$.", say "problem.";
|
||||
else say "correctly failed to match.";
|
||||
say "xyzzy/.^: ";
|
||||
if "xyzzy" matches the regular expression ".^", say "problem.";
|
||||
else say "correctly failed to match.";
|
||||
say "xyzzy/^$: ";
|
||||
if "xyzzy" matches the regular expression "^$", say "problem.";
|
||||
else say "correctly failed to match.";
|
||||
say "regexp xyzzy/(?:): ";
|
||||
if "xyzzy" matches the regular expression "(?:)", say "xyzzy/(?:) first [first index of subexpression 0]; last [last index of subexpression 0]; length [length of subexpression 0]; sub1 [first index of subexpression 1]; last [last index of subexpression 1]; length [length of subexpression 1].";
|
||||
else say "problem.";
|
||||
if "xyzzy" matches the regular expression "(.*)", say "xyzzy/(.*) first [first index of subexpression 0]; last [last index of subexpression 0]; length [length of subexpression 0]; sub1 [first index of subexpression 1]; last [last index of subexpression 1]; length [length of subexpression 1].";
|
||||
else say "problem.";
|
||||
if "xyzzy" matches the regular expression "(d?)", say "xyzzy/(d?) first [first index of subexpression 0]; last [last index of subexpression 0]; length [length of subexpression 0]; sub1 [first index of subexpression 1]; last [last index of subexpression 1]; length [length of subexpression 1].";
|
||||
else say "problem.";
|
||||
say "''/^$: ";
|
||||
if "" matches the regular expression "^$", say "first [first index of subexpression 0]; last [last index of subexpression 0]; length [length of subexpression 0].";
|
||||
else say "problem.";
|
||||
say "''/.*: ";
|
||||
if "" matches the regular expression ".*", say "first [first index of subexpression 0]; last [last index of subexpression 0]; length [length of subexpression 0].";
|
||||
say "''/(?:): ";
|
||||
if "" matches the regular expression "(?:)", say "first [first index of subexpression 0]; last [last index of subexpression 0]; length [length of subexpression 0]; sub1 [first index of subexpression 1]; last [last index of subexpression 1]; length [length of subexpression 1].";
|
||||
say "''/(d?): ";
|
||||
if "" matches the regular expression "(d?)", say "first [first index of subexpression 0]; last [last index of subexpression 0]; length [length of subexpression 0]; sub1 [first index of subexpression 1]; last [last index of subexpression 1]; length [length of subexpression 1].";
|
||||
else say "problem.";
|
||||
say "''/$.: ";
|
||||
if "" matches the regular expression "$.", say "problem.";
|
||||
else say "correctly failed to match.";
|
||||
say "''/.^: ";
|
||||
if "" matches the regular expression ".^", say "problem.";
|
||||
else say "correctly failed to match.";
|
||||
say "shinto/hint substring: ";
|
||||
if "shinto" matches the text "hint", say "first [first index of text match]; last [last index of text match]; length [length of text match].";
|
||||
else say "problem.";
|
||||
say "educate/du(cat): ";
|
||||
if "educate" matches the regular expression "du(cat)", say "educate/ducat first [first index of subexpression 0]; last [last index of subexpression 0]; length [length of subexpression 0]; sub1 [first index of subexpression 1]; last [last index of subexpression 1]; length [length of subexpression 1].";
|
||||
else say "problem.";
|
||||
say "regexp Q*bert/x? :";
|
||||
if "Q*bert" matches the regular expression "x?", say "first [first index of subexpression 0]; last [last index of subexpression 0]; length [length of subexpression 0].";
|
||||
else say "problem.";
|
||||
say "regexp ham sandwich/a(.+)\b(.+): ";
|
||||
if "ham sandwich" matches the regular expression "a(.+)\b(.+)", say "sub0: first [first index of subexpression 0]; last [last index of subexpression 0]; length [length of subexpression 0] sub1: first [first index of subexpression 1]; last [last index of subexpression 1]; length [length of subexpression 1]; sub2: first [first index of subexpression 2]; last [last index of subexpression 2]; length [length of subexpression 2].";
|
||||
else say "problem.";
|
||||
|
|
|
@ -9,6 +9,7 @@ To begin:
|
|||
run test B;
|
||||
run test C;
|
||||
run test D;
|
||||
run test E;
|
||||
|
||||
To run test A:
|
||||
let Neptune be text;
|
||||
|
@ -46,3 +47,125 @@ To run test D:
|
|||
replace the punctuated word "system," in Neptune with "toad";
|
||||
replace the punctuated word "." in Neptune with "!";
|
||||
say "The redacted text: [Neptune][line break]".
|
||||
|
||||
To run test E:
|
||||
say "text ''/'': ";
|
||||
if "" matches the text "", say "first [first index of text match]; last [last index of text match]; length [length of text match].";
|
||||
else say "problem.";
|
||||
say "text ''/xyzzy: ";
|
||||
if "" matches the text "xyzzy", say "first [first index of text match]; last [last index of text match]; length [length of text match].";
|
||||
else say "'' correctly doesn't match xyzzy.";
|
||||
say "text trailing substring : plughxyzzy/xyzzy: ";
|
||||
if "plughxyzzy" matches the text "xyzzy", say "first [first index of text match]; last [last index of text match]; length [length of text match].";
|
||||
else say "problem.";
|
||||
say "text leading substring: xyzzyplugh/xyzzy";
|
||||
if "xyzzyplugh" matches the text "xyzzy", say "first [first index of text match]; last [last index of text match]; length [length of text match].";
|
||||
else say "problem.";
|
||||
say "text internal substring plughxyzzyplugh/xyzzy: ";
|
||||
if "plughxyzzyplugh" matches the text "xyzzy", say "t internal substring: first [first index of text match]; last [last index of text match]; length [length of text match].";
|
||||
else say "problem.";
|
||||
say "text multiple substring: xyzzyxyzzy/xyzzy: ";
|
||||
if "xyzzyxyzzy" matches the text "xyzzy", say "first [first index of text match]; last [last index of text match]; length [length of text match].";
|
||||
else say "problem.";
|
||||
say "text non-blank/blank: ";
|
||||
if "xyzzy" matches the text "", say "first [first index of text match]; last [last index of text match]; length [length of text match].";
|
||||
else say "problem.";
|
||||
say "text identical: xyzzy/xyzzy: ";
|
||||
if "xyzzy" matches the text "xyzzy", say "text identical: first [first index of text match]; last [last index of text match]; length [length of text match].";
|
||||
else say "problem.";
|
||||
say "text reversed trailing substring xyzzy/plughxyzzy: ";
|
||||
if "xyzzy" matches the text "plughxyzzy", say "text reversed trailing substring: first [first index of text match]; last [last index of text match]; length [length of text match].";
|
||||
else say "correctly failed to match.";
|
||||
say "text reversed substring xyzzy/xyzzyplugh: ";
|
||||
if "xyzzy" matches the text "xyzzyplugh", say "first [first index of text match]; last [last index of text match]; length [length of text match].";
|
||||
else say "correctly failed to match.";
|
||||
say "text reversed internal substring xyzzy/plughxyzzyplugh: ";
|
||||
if "xyzzy" matches the text "plughxyzzyplugh", say "first [first index of text match]; last [last index of text match]; length [length of text match].";
|
||||
else say "correctly failed to match.";
|
||||
say "text reversed multiple substring xyzzy/xyzzyxyzzy: ";
|
||||
if "xyzzy" matches the text "xyzzyxyzzy", say "first [first index of text match]; last [last index of text match]; length [length of text match].";
|
||||
else say "correctly failed to match.";
|
||||
say "regexp ''/xyzzy: ";
|
||||
if "" matches the regular expression "xyzzy", say "regexp blank/non-blank: first [first index of subexpression 0]; last [last index of subexpression 0]; length [length of subexpression 0].";
|
||||
else say "correctly failed to match.";
|
||||
say "regexp xyzzy/'': ";
|
||||
if "xyzzy" matches the regular expression "", say "regexp non-blank/blank: first [first index of subexpression 0]; last [last index of subexpression 0]; length [length of subexpression 0].";
|
||||
else say "correctly failed to match.";
|
||||
say "regexp xyzzy/(xyzzy): ";
|
||||
if "xyzzy" matches the regular expression "(xyzzy)", say "regexp identical: first [first index of subexpression 0]; last [last index of subexpression 0]; length [length of subexpression 0].";
|
||||
else say "problem.";
|
||||
say "regexp reversed trailing substring: xyzzy/plugh(xyzzy): ";
|
||||
if "xyzzy" matches the regular expression "plugh(xyzzy)", say "regexp reversed trailing substring: first [first index of subexpression 0]; last [last index of subexpression 0]; length [length of subexpression 0].";
|
||||
else say "correctly failed to match.";
|
||||
say "regexp reversed substring: xyzzy/(xyzzy)plugh: ";
|
||||
if "xyzzy" matches the regular expression "(xyzzy)plugh", say "regexp reversed substring: first [first index of subexpression 0]; last [last index of subexpression 0]; length [length of subexpression 0].";
|
||||
else say "correctly failed to match.";
|
||||
say "regexp reversed internal substring: xyzzy/plugh(xyzzy)plugh: ";
|
||||
if "xyzzy" matches the regular expression "plugh(xyzzy)plugh", say "regexp reversed internal substring: first [first index of subexpression 0]; last [last index of subexpression 0]; length [length of subexpression 0].";
|
||||
else say "correctly failed to match.";
|
||||
say "regexp reversed multiple substring: xyzzy/xyzzy(xyzzy): ";
|
||||
if "xyzzy" matches the regular expression "xyzzy(xyzzy)", say "first [first index of subexpression 0]; last [last index of subexpression 0]; length [length of subexpression 0].";
|
||||
else say "correctly failed to match.";
|
||||
say "regexp multiple substring: xyzzy/xyzzy(xyzzy)?: ";
|
||||
if "xyzzy" matches the regular expression "xyzzy(xyzzy)?", say "first [first index of subexpression 0]; last [last index of subexpression 0]; length [length of subexpression 0].";
|
||||
else say "problem.";
|
||||
say "regexp reversed trailing substring: plughxyzzy/(xyzzy): ";
|
||||
if "plughxyzzy" matches the regular expression "(xyzzy)", say "first [first index of subexpression 0]; last [last index of subexpression 0]; length [length of subexpression 0].";
|
||||
else say "problem.";
|
||||
say "regexp reversed leading substring xyzzyplugh/(xyzzy): ";
|
||||
if "xyzzyplugh" matches the regular expression "(xyzzy)", say "first [first index of subexpression 0]; last [last index of subexpression 0]; length [length of subexpression 0].";
|
||||
else say "problem.";
|
||||
say "regexp reversed internal substring plughxyzzyplugh/(xyzzy): ";
|
||||
if "plughxyzzyplugh" matches the regular expression "(xyzzy)", say "first [first index of subexpression 0]; last [last index of subexpression 0]; length [length of subexpression 0].";
|
||||
else say "problem.";
|
||||
say "regexp reversed multiple substring: xyzzyxyzzy/(xyzzy): ";
|
||||
if "xyzzyxyzzy" matches the regular expression "(xyzzy)", say "first [first index of subexpression 0]; last [last index of subexpression 0]; length [length of subexpression 0].";
|
||||
else say "problem.";
|
||||
say "xyzzy/$^: ";
|
||||
if "xyzzy" matches the regular expression "$^", say "problem.";
|
||||
else say "correctly failed to match.";
|
||||
say "xyzzy/$.: ";
|
||||
if "xyzzy" matches the regular expression "$.", say "problem.";
|
||||
else say "correctly failed to match.";
|
||||
say "xyzzy/.^: ";
|
||||
if "xyzzy" matches the regular expression ".^", say "problem.";
|
||||
else say "correctly failed to match.";
|
||||
say "xyzzy/^$: ";
|
||||
if "xyzzy" matches the regular expression "^$", say "problem.";
|
||||
else say "correctly failed to match.";
|
||||
say "regexp xyzzy/(?:): ";
|
||||
if "xyzzy" matches the regular expression "(?:)", say "xyzzy/(?:) first [first index of subexpression 0]; last [last index of subexpression 0]; length [length of subexpression 0].";
|
||||
else say "problem.";
|
||||
if "xyzzy" matches the regular expression "(.*)", say "xyzzy/(.*) first [first index of subexpression 0]; last [last index of subexpression 0]; length [length of subexpression 0].";
|
||||
else say "problem.";
|
||||
if "xyzzy" matches the regular expression "(d?)", say "xyzzy/(d?) first [first index of subexpression 0]; last [last index of subexpression 0]; length [length of subexpression 0].";
|
||||
else say "problem.";
|
||||
say "''/^$: ";
|
||||
if "" matches the regular expression "^$", say "first [first index of subexpression 0]; last [last index of subexpression 0]; length [length of subexpression 0].";
|
||||
else say "problem.";
|
||||
say "''/.*: ";
|
||||
if "" matches the regular expression ".*", say "first [first index of subexpression 0]; last [last index of subexpression 0]; length [length of subexpression 0].";
|
||||
say "''/(?:): ";
|
||||
if "" matches the regular expression "(?:)", say "first [first index of subexpression 0]; last [last index of subexpression 0]; length [length of subexpression 0].";
|
||||
say "''/(d?): ";
|
||||
if "" matches the regular expression "(d?)", say "first [first index of subexpression 0]; last [last index of subexpression 0]; length [length of subexpression 0].";
|
||||
else say "problem.";
|
||||
say "''/$.: ";
|
||||
if "" matches the regular expression "$.", say "problem.";
|
||||
else say "correctly failed to match.";
|
||||
say "''/.^: ";
|
||||
if "" matches the regular expression ".^", say "problem.";
|
||||
else say "correctly failed to match.";
|
||||
say "shinto/hint substring: ";
|
||||
if "shinto" matches the text "hint", say "first [first index of text match]; last [last index of text match]; length [length of text match].";
|
||||
else say "problem.";
|
||||
say "educate/du(cat): ";
|
||||
if "educate" matches the regular expression "du(cat)", say "educate/ducat first [first index of subexpression 0]; last [last index of subexpression 0]; length [length of subexpression 0] [first index of subexpression 1]; last [last index of subexpression 1]; length [length of subexpression 1].";
|
||||
else say "problem.";
|
||||
say "regexp Q*bert/x? :";
|
||||
if "Q*bert" matches the regular expression "x?", say "first [first index of subexpression 0]; last [last index of subexpression 0]; length [length of subexpression 0].";
|
||||
else say "problem.";
|
||||
say "regexp ham sandwich/(.+)\b(.+): ";
|
||||
if "ham sandwich" matches the regular expression "(.+)\b(.+)", say "sub0: first [first index of subexpression 0]; last [last index of subexpression 0]; length [length of subexpression 0] sub1: first [first index of subexpression 1]; last [last index of subexpression 1]; length [length of subexpression 1]; sub2: first [first index of subexpression 2]; last [last index of subexpression 2]; length [length of subexpression 2].";
|
||||
else say "problem.";
|
||||
|
||||
|
|
|
@ -15,3 +15,44 @@ The original text: the capture of Triton may explain a number of features of the
|
|||
The redacted text: potato capture of Triton may explain a number of features of potato Neptunian frog, including potato extremely eccentric orbit of Neptune's moon Nereid and potato scarcity of moons as compared to potato other gas giants.
|
||||
The original text: The capture of Triton may explain a number of features of the Neptunian system, including the extremely eccentric orbit of Neptune's moon Nereid and the scarcity of moons as compared to the other gas giants.
|
||||
The redacted text: The capture of Triton may explain a number of features of the Neptunian toad including the extremely eccentric orbit of Neptune's moon Nereid and the scarcity of moons as compared to the other gas giants!
|
||||
text ""/"": first 0; last 0; length 0.
|
||||
text ""/xyzzy: "" correctly doesn't match xyzzy.
|
||||
text trailing substring : plughxyzzy/xyzzy: first 6; last 10; length 5.
|
||||
text leading substring: xyzzyplugh/xyzzyfirst 1; last 5; length 5.
|
||||
text internal substring plughxyzzyplugh/xyzzy: t internal substring: first 6; last 10; length 5.
|
||||
text multiple substring: xyzzyxyzzy/xyzzy: first 1; last 5; length 5.
|
||||
text non-blank/blank: first 0; last 0; length 0.
|
||||
text identical: xyzzy/xyzzy: text identical: first 1; last 5; length 5.
|
||||
text reversed trailing substring xyzzy/plughxyzzy: correctly failed to match.
|
||||
text reversed substring xyzzy/xyzzyplugh: correctly failed to match.
|
||||
text reversed internal substring xyzzy/plughxyzzyplugh: correctly failed to match.
|
||||
text reversed multiple substring xyzzy/xyzzyxyzzy: correctly failed to match.
|
||||
regexp ""/xyzzy: correctly failed to match.
|
||||
regexp xyzzy/"": correctly failed to match.
|
||||
regexp xyzzy/(xyzzy): regexp identical: first 1; last 5; length 5.
|
||||
regexp reversed trailing substring: xyzzy/plugh(xyzzy): correctly failed to match.
|
||||
regexp reversed substring: xyzzy/(xyzzy)plugh: correctly failed to match.
|
||||
regexp reversed internal substring: xyzzy/plugh(xyzzy)plugh: correctly failed to match.
|
||||
regexp reversed multiple substring: xyzzy/xyzzy(xyzzy): correctly failed to match.
|
||||
regexp multiple substring: xyzzy/xyzzy(xyzzy)?: first 1; last 5; length 5.
|
||||
regexp reversed trailing substring: plughxyzzy/(xyzzy): first 6; last 10; length 5.
|
||||
regexp reversed leading substring xyzzyplugh/(xyzzy): first 1; last 5; length 5.
|
||||
regexp reversed internal substring plughxyzzyplugh/(xyzzy): first 6; last 10; length 5.
|
||||
regexp reversed multiple substring: xyzzyxyzzy/(xyzzy): first 1; last 5; length 5.
|
||||
xyzzy/$^: correctly failed to match.
|
||||
xyzzy/$.: correctly failed to match.
|
||||
xyzzy/.^: correctly failed to match.
|
||||
xyzzy/^$: correctly failed to match.
|
||||
regexp xyzzy/(?:): xyzzy/(?:) first 0; last 0; length 0.
|
||||
xyzzy/(.*) first 1; last 5; length 5.
|
||||
xyzzy/(d?) first 0; last 0; length 0.
|
||||
""/^$: first 0; last 0; length 0.
|
||||
""/.*: first 0; last 0; length 0.
|
||||
""/(?:): first 0; last 0; length 0.
|
||||
""/(d?): first 0; last 0; length 0.
|
||||
""/$.: correctly failed to match.
|
||||
""/.^: correctly failed to match.
|
||||
shinto/hint substring: first 2; last 5; length 4.
|
||||
educate/du(cat): educate/ducat first 2; last 6; length 5 4; last 6; length 3.
|
||||
regexp Q*bert/x? :first 0; last 0; length 0.
|
||||
regexp ham sandwich/(.+)\b(.+): sub0: first 1; last 12; length 12 sub1: first 1; last 4; length 4; sub2: first 5; last 12; length 8.
|
||||
|
|
|
@ -15,3 +15,44 @@ The original text: the capture of Triton may explain a number of features of the
|
|||
The redacted text: potato capture of Triton may explain a number of features of potato Neptunian frog, including potato extremely eccentric orbit of Neptune's moon Nereid and potato scarcity of moons as compared to potato other gas giants.
|
||||
The original text: The capture of Triton may explain a number of features of the Neptunian system, including the extremely eccentric orbit of Neptune's moon Nereid and the scarcity of moons as compared to the other gas giants.
|
||||
The redacted text: The capture of Triton may explain a number of features of the Neptunian toad including the extremely eccentric orbit of Neptune's moon Nereid and the scarcity of moons as compared to the other gas giants!
|
||||
text ""/"": first 0; last 0; length 0.
|
||||
text ""/xyzzy: "" correctly doesn't match xyzzy.
|
||||
text trailing substring : plughxyzzy/xyzzy: first 6; last 10; length 5.
|
||||
text leading substring: xyzzyplugh/xyzzyfirst 1; last 5; length 5.
|
||||
text internal substring plughxyzzyplugh/xyzzy: t internal substring: first 6; last 10; length 5.
|
||||
text multiple substring: xyzzyxyzzy/xyzzy: first 1; last 5; length 5.
|
||||
text non-blank/blank: first 0; last 0; length 0.
|
||||
text identical: xyzzy/xyzzy: text identical: first 1; last 5; length 5.
|
||||
text reversed trailing substring xyzzy/plughxyzzy: correctly failed to match.
|
||||
text reversed substring xyzzy/xyzzyplugh: correctly failed to match.
|
||||
text reversed internal substring xyzzy/plughxyzzyplugh: correctly failed to match.
|
||||
text reversed multiple substring xyzzy/xyzzyxyzzy: correctly failed to match.
|
||||
regexp ""/xyzzy: correctly failed to match.
|
||||
regexp xyzzy/"": correctly failed to match.
|
||||
regexp xyzzy/(xyzzy): regexp identical: first 1; last 5; length 5; sub1 1; last 5; length 5.
|
||||
regexp reversed trailing substring: xyzzy/plugh(xyzzy): correctly failed to match.
|
||||
regexp reversed substring: xyzzy/(xyzzy)plugh: correctly failed to match.
|
||||
regexp reversed internal substring: xyzzy/plugh(xyzzy)plugh: correctly failed to match.
|
||||
regexp reversed multiple substring: xyzzy/xyzzy(xyzzy): correctly failed to match.
|
||||
regexp multiple substring: xyzzy/xyzzy(xyzzy)?: first 1; last 5; length 5; sub1 0; last 0; length 0.
|
||||
regexp reversed trailing substring: plughxyzzy/(xyzzy): first 6; last 10; length 5; sub1 6; last 10; length 5.
|
||||
regexp reversed leading substring xyzzyplugh/(xyzzy): first 1; last 5; length 5; sub1 1; last 5; length 5.
|
||||
regexp reversed internal substring plughxyzzyplugh/(xyzzy): first 6; last 10; length 5; sub1 6; last 10; length 5.
|
||||
regexp reversed multiple substring: xyzzyxyzzy/(xyzzy): first 1; last 5; length 5; sub1 1; last 5; length 5.
|
||||
xyzzy/$^: correctly failed to match.
|
||||
xyzzy/$.: correctly failed to match.
|
||||
xyzzy/.^: correctly failed to match.
|
||||
xyzzy/^$: correctly failed to match.
|
||||
regexp xyzzy/(?:): xyzzy/(?:) first 0; last 0; length 0; sub1 0; last 0; length 0.
|
||||
xyzzy/(.*) first 1; last 5; length 5; sub1 1; last 5; length 5.
|
||||
xyzzy/(d?) first 0; last 0; length 0; sub1 0; last 0; length 0.
|
||||
""/^$: first 0; last 0; length 0.
|
||||
""/.*: first 0; last 0; length 0.
|
||||
""/(?:): first 0; last 0; length 0; sub1 0; last 0; length 0.
|
||||
""/(d?): first 0; last 0; length 0; sub1 0; last 0; length 0.
|
||||
""/$.: correctly failed to match.
|
||||
""/.^: correctly failed to match.
|
||||
shinto/hint substring: first 2; last 5; length 4.
|
||||
educate/du(cat): educate/ducat first 2; last 6; length 5; sub1 4; last 6; length 3.
|
||||
regexp Q*bert/x? :first 0; last 0; length 0.
|
||||
regexp ham sandwich/a(.+)\b(.+): sub0: first 2; last 12; length 11 sub1: first 3; last 4; length 2; sub2: first 5; last 12; length 8.
|
||||
|
|
|
@ -15,3 +15,44 @@
|
|||
The redacted text: potato capture of Triton may explain a number of features of potato Neptunian frog, including potato extremely eccentric orbit of Neptune's moon Nereid and potato scarcity of moons as compared to potato other gas giants.
|
||||
The original text: The capture of Triton may explain a number of features of the Neptunian system, including the extremely eccentric orbit of Neptune's moon Nereid and the scarcity of moons as compared to the other gas giants.
|
||||
The redacted text: The capture of Triton may explain a number of features of the Neptunian toad including the extremely eccentric orbit of Neptune's moon Nereid and the scarcity of moons as compared to the other gas giants!
|
||||
text ""/"": first 0; last 0; length 0.
|
||||
text ""/xyzzy: "" correctly doesn't match xyzzy.
|
||||
text trailing substring : plughxyzzy/xyzzy: first 6; last 10; length 5.
|
||||
text leading substring: xyzzyplugh/xyzzyfirst 1; last 5; length 5.
|
||||
text internal substring plughxyzzyplugh/xyzzy: t internal substring: first 6; last 10; length 5.
|
||||
text multiple substring: xyzzyxyzzy/xyzzy: first 1; last 5; length 5.
|
||||
text non-blank/blank: first 0; last 0; length 0.
|
||||
text identical: xyzzy/xyzzy: text identical: first 1; last 5; length 5.
|
||||
text reversed trailing substring xyzzy/plughxyzzy: correctly failed to match.
|
||||
text reversed substring xyzzy/xyzzyplugh: correctly failed to match.
|
||||
text reversed internal substring xyzzy/plughxyzzyplugh: correctly failed to match.
|
||||
text reversed multiple substring xyzzy/xyzzyxyzzy: correctly failed to match.
|
||||
regexp ""/xyzzy: correctly failed to match.
|
||||
regexp xyzzy/"": correctly failed to match.
|
||||
regexp xyzzy/(xyzzy): regexp identical: first 1; last 5; length 5.
|
||||
regexp reversed trailing substring: xyzzy/plugh(xyzzy): correctly failed to match.
|
||||
regexp reversed substring: xyzzy/(xyzzy)plugh: correctly failed to match.
|
||||
regexp reversed internal substring: xyzzy/plugh(xyzzy)plugh: correctly failed to match.
|
||||
regexp reversed multiple substring: xyzzy/xyzzy(xyzzy): correctly failed to match.
|
||||
regexp multiple substring: xyzzy/xyzzy(xyzzy)?: first 1; last 5; length 5.
|
||||
regexp reversed trailing substring: plughxyzzy/(xyzzy): first 6; last 10; length 5.
|
||||
regexp reversed leading substring xyzzyplugh/(xyzzy): first 1; last 5; length 5.
|
||||
regexp reversed internal substring plughxyzzyplugh/(xyzzy): first 6; last 10; length 5.
|
||||
regexp reversed multiple substring: xyzzyxyzzy/(xyzzy): first 1; last 5; length 5.
|
||||
xyzzy/$^: correctly failed to match.
|
||||
xyzzy/$.: correctly failed to match.
|
||||
xyzzy/.^: correctly failed to match.
|
||||
xyzzy/^$: correctly failed to match.
|
||||
regexp xyzzy/(?:): xyzzy/(?:) first 0; last 0; length 0.
|
||||
xyzzy/(.*) first 1; last 5; length 5.
|
||||
xyzzy/(d?) first 0; last 0; length 0.
|
||||
""/^$: first 0; last 0; length 0.
|
||||
""/.*: first 0; last 0; length 0.
|
||||
""/(?:): first 0; last 0; length 0.
|
||||
""/(d?): first 0; last 0; length 0.
|
||||
""/$.: correctly failed to match.
|
||||
""/.^: correctly failed to match.
|
||||
shinto/hint substring: first 2; last 5; length 4.
|
||||
educate/du(cat): educate/ducat first 2; last 6; length 5 4; last 6; length 3.
|
||||
regexp Q*bert/x? :first 0; last 0; length 0.
|
||||
regexp ham sandwich/(.+)\b(.+): sub0: first 1; last 12; length 12 sub1: first 1; last 4; length 4; sub2: first 5; last 12; length 8.
|
||||
|
|
|
@ -76,7 +76,7 @@
|
|||
</tr>
|
||||
<tr class="stripeone">
|
||||
<td style="white-space:nowrap;" align="left" valign="top" height="20">
|
||||
object [15] <a href=#A234><img border=0 src=inform:/doc_images/Below.png></a>
|
||||
object [15] <a href=#A23><img border=0 src=inform:/doc_images/Below.png></a>
|
||||
</td>
|
||||
<td align="left" valign="top">
|
||||
north
|
||||
|
@ -370,7 +370,7 @@
|
|||
</tr>
|
||||
<tr class="stripetwo">
|
||||
<td style="white-space:nowrap;" align="left" valign="top" height="20">
|
||||
number <a href="Kinds.html?segment2"><img border=0 src=inform:/doc_images/calc1.png></a> <a href=inform:/doc225.html><img border=0 src=inform:/doc_images/help.png></a> <a href=#A1362><img border=0 src=inform:/doc_images/Below.png></a>
|
||||
number <a href="Kinds.html?segment2"><img border=0 src=inform:/doc_images/calc1.png></a> <a href=inform:/doc225.html><img border=0 src=inform:/doc_images/help.png></a> <a href=#A25><img border=0 src=inform:/doc_images/Below.png></a>
|
||||
</td>
|
||||
<td align="left" valign="top">
|
||||
0
|
||||
|
@ -387,7 +387,7 @@
|
|||
</tr>
|
||||
<tr class="stripeone">
|
||||
<td style="white-space:nowrap;" align="left" valign="top" height="20">
|
||||
real number <a href="Kinds.html?segment2"><img border=0 src=inform:/doc_images/calc1.png></a> <a href=inform:/doc225.html><img border=0 src=inform:/doc_images/help.png></a> <a href=#A1363><img border=0 src=inform:/doc_images/Below.png></a>
|
||||
real number <a href="Kinds.html?segment2"><img border=0 src=inform:/doc_images/calc1.png></a> <a href=inform:/doc225.html><img border=0 src=inform:/doc_images/help.png></a> <a href=#A26><img border=0 src=inform:/doc_images/Below.png></a>
|
||||
</td>
|
||||
<td align="left" valign="top">
|
||||
0
|
||||
|
@ -404,7 +404,7 @@
|
|||
</tr>
|
||||
<tr class="stripetwo">
|
||||
<td style="white-space:nowrap;" align="left" valign="top" height="20">
|
||||
time <a href="Kinds.html?segment2"><img border=0 src=inform:/doc_images/calc1.png></a> <a href=inform:/doc138.html><img border=0 src=inform:/doc_images/help.png></a> <a href=#A1379><img border=0 src=inform:/doc_images/Below.png></a>
|
||||
time <a href="Kinds.html?segment2"><img border=0 src=inform:/doc_images/calc1.png></a> <a href=inform:/doc138.html><img border=0 src=inform:/doc_images/help.png></a> <a href=#A42><img border=0 src=inform:/doc_images/Below.png></a>
|
||||
</td>
|
||||
<td align="left" valign="top">
|
||||
9:00 AM
|
||||
|
@ -421,7 +421,7 @@
|
|||
</tr>
|
||||
<tr class="stripeone">
|
||||
<td style="white-space:nowrap;" align="left" valign="top" height="20">
|
||||
truth state <a href=inform:/doc161.html><img border=0 src=inform:/doc_images/help.png></a> <a href=#A1364><img border=0 src=inform:/doc_images/Below.png></a>
|
||||
truth state <a href=inform:/doc161.html><img border=0 src=inform:/doc_images/help.png></a> <a href=#A27><img border=0 src=inform:/doc_images/Below.png></a>
|
||||
</td>
|
||||
<td align="left" valign="top">
|
||||
false
|
||||
|
@ -438,7 +438,7 @@
|
|||
</tr>
|
||||
<tr class="stripetwo">
|
||||
<td style="white-space:nowrap;" align="left" valign="top" height="20">
|
||||
text <a href=#A1365><img border=0 src=inform:/doc_images/Below.png></a>
|
||||
text <a href=#A28><img border=0 src=inform:/doc_images/Below.png></a>
|
||||
</td>
|
||||
<td align="left" valign="top">
|
||||
""
|
||||
|
@ -455,7 +455,7 @@
|
|||
</tr>
|
||||
<tr class="stripeone">
|
||||
<td style="white-space:nowrap;" align="left" valign="top" height="20">
|
||||
snippet <a href=inform:/doc317.html><img border=0 src=inform:/doc_images/help.png></a> <a href=#A1366><img border=0 src=inform:/doc_images/Below.png></a>
|
||||
snippet <a href=inform:/doc317.html><img border=0 src=inform:/doc_images/help.png></a> <a href=#A29><img border=0 src=inform:/doc_images/Below.png></a>
|
||||
</td>
|
||||
<td align="left" valign="top">
|
||||
<i>word 1 of command</i>
|
||||
|
@ -472,7 +472,7 @@
|
|||
</tr>
|
||||
<tr class="stripetwo">
|
||||
<td style="white-space:nowrap;" align="left" valign="top" height="20">
|
||||
unicode character <a href=#A1367><img border=0 src=inform:/doc_images/Below.png></a>
|
||||
unicode character <a href=#A30><img border=0 src=inform:/doc_images/Below.png></a>
|
||||
</td>
|
||||
<td align="left" valign="top">
|
||||
unicode 32 (<i>a space</i>)
|
||||
|
@ -489,7 +489,7 @@
|
|||
</tr>
|
||||
<tr class="stripeone">
|
||||
<td style="white-space:nowrap;" align="left" valign="top" height="20">
|
||||
action <a href=inform:/doc194.html><img border=0 src=inform:/doc_images/help.png></a> <a href=#A1377><img border=0 src=inform:/doc_images/Below.png></a>
|
||||
action <a href=inform:/doc194.html><img border=0 src=inform:/doc_images/help.png></a> <a href=#A40><img border=0 src=inform:/doc_images/Below.png></a>
|
||||
</td>
|
||||
<td align="left" valign="top">
|
||||
waiting
|
||||
|
@ -506,7 +506,7 @@
|
|||
</tr>
|
||||
<tr class="stripetwo">
|
||||
<td style="white-space:nowrap;" align="left" valign="top" height="20">
|
||||
scene <a href=inform:/doc148.html><img border=0 src=inform:/doc_images/help.png></a> [1] <a href=#A841><img border=0 src=inform:/doc_images/Below.png></a>
|
||||
scene <a href=inform:/doc148.html><img border=0 src=inform:/doc_images/help.png></a> [1] <a href=#A24><img border=0 src=inform:/doc_images/Below.png></a>
|
||||
</td>
|
||||
<td align="left" valign="top">
|
||||
Entire Game
|
||||
|
@ -523,7 +523,7 @@
|
|||
</tr>
|
||||
<tr class="stripeone">
|
||||
<td style="white-space:nowrap;" align="left" valign="top" height="20">
|
||||
command parser error [25] <a href=#A1406><img border=0 src=inform:/doc_images/Below.png></a>
|
||||
command parser error [25] <a href=#A16><img border=0 src=inform:/doc_images/Below.png></a>
|
||||
</td>
|
||||
<td align="left" valign="top">
|
||||
didn't understand error
|
||||
|
@ -540,7 +540,7 @@
|
|||
</tr>
|
||||
<tr class="stripetwo">
|
||||
<td style="white-space:nowrap;" align="left" valign="top" height="20">
|
||||
dynasty <a href="source:story.ni#line3"><img border=0 src=inform:/doc_images/Reveal.png></a> [4] <a href=#A1408><img border=0 src=inform:/doc_images/Below.png></a>
|
||||
dynasty <a href="source:story.ni#line3"><img border=0 src=inform:/doc_images/Reveal.png></a> [4] <a href=#A21><img border=0 src=inform:/doc_images/Below.png></a>
|
||||
</td>
|
||||
<td align="left" valign="top">
|
||||
Stuart
|
||||
|
@ -557,7 +557,7 @@
|
|||
</tr>
|
||||
<tr class="stripeone">
|
||||
<td style="white-space:nowrap;" align="left" valign="top" height="20">
|
||||
use option <a href=#A1368><img border=0 src=inform:/doc_images/Below.png></a>
|
||||
use option <a href=#A31><img border=0 src=inform:/doc_images/Below.png></a>
|
||||
</td>
|
||||
<td align="left" valign="top">
|
||||
the ineffectual option
|
||||
|
@ -574,7 +574,7 @@
|
|||
</tr>
|
||||
<tr class="stripetwo">
|
||||
<td style="white-space:nowrap;" align="left" valign="top" height="20">
|
||||
response <a href=#A1369><img border=0 src=inform:/doc_images/Below.png></a>
|
||||
response <a href=#A32><img border=0 src=inform:/doc_images/Below.png></a>
|
||||
</td>
|
||||
<td align="left" valign="top">
|
||||
?
|
||||
|
@ -591,7 +591,7 @@
|
|||
</tr>
|
||||
<tr class="stripeone">
|
||||
<td style="white-space:nowrap;" align="left" valign="top" height="20">
|
||||
verb <a href=inform:/doc220.html><img border=0 src=inform:/doc_images/help.png></a> <a href=#A1370><img border=0 src=inform:/doc_images/Below.png></a>
|
||||
verb <a href=inform:/doc220.html><img border=0 src=inform:/doc_images/help.png></a> <a href=#A33><img border=0 src=inform:/doc_images/Below.png></a>
|
||||
</td>
|
||||
<td align="left" valign="top">
|
||||
verb be
|
||||
|
@ -608,7 +608,7 @@
|
|||
</tr>
|
||||
<tr class="stripetwo">
|
||||
<td style="white-space:nowrap;" align="left" valign="top" height="20">
|
||||
table name <a href=inform:/doc258.html><img border=0 src=inform:/doc_images/help.png></a> <a href=#A1371><img border=0 src=inform:/doc_images/Below.png></a>
|
||||
table name <a href=inform:/doc258.html><img border=0 src=inform:/doc_images/help.png></a> <a href=#A34><img border=0 src=inform:/doc_images/Below.png></a>
|
||||
</td>
|
||||
<td align="left" valign="top">
|
||||
<i>a table with no rows or columns</i>
|
||||
|
@ -625,7 +625,7 @@
|
|||
</tr>
|
||||
<tr class="stripeone">
|
||||
<td style="white-space:nowrap;" align="left" valign="top" height="20">
|
||||
<span class="indexgrey">equation name <a href=#A1372><img border=0 src=inform:/doc_images/Below.png></a></span>
|
||||
<span class="indexgrey">equation name <a href=#A35><img border=0 src=inform:/doc_images/Below.png></a></span>
|
||||
</td>
|
||||
<td align="left" valign="top">
|
||||
<span class="indexgrey"><i>an equation doing nothing</i></span>
|
||||
|
@ -642,7 +642,7 @@
|
|||
</tr>
|
||||
<tr class="stripetwo">
|
||||
<td style="white-space:nowrap;" align="left" valign="top" height="20">
|
||||
rulebook outcome <a href=#A1373><img border=0 src=inform:/doc_images/Below.png></a>
|
||||
rulebook outcome <a href=#A36><img border=0 src=inform:/doc_images/Below.png></a>
|
||||
</td>
|
||||
<td align="left" valign="top">
|
||||
allow access
|
||||
|
@ -659,7 +659,7 @@
|
|||
</tr>
|
||||
<tr class="stripeone">
|
||||
<td style="white-space:nowrap;" align="left" valign="top" height="20">
|
||||
<span class="indexgrey">external file <a href=inform:/doc382.html><img border=0 src=inform:/doc_images/help.png></a> <a href=#A1374><img border=0 src=inform:/doc_images/Below.png></a></span>
|
||||
<span class="indexgrey">external file <a href=inform:/doc382.html><img border=0 src=inform:/doc_images/help.png></a> <a href=#A37><img border=0 src=inform:/doc_images/Below.png></a></span>
|
||||
</td>
|
||||
<td align="left" valign="top">
|
||||
<span class="indexgrey"><i>a non-file</i></span>
|
||||
|
@ -676,7 +676,7 @@
|
|||
</tr>
|
||||
<tr class="stripetwo">
|
||||
<td style="white-space:nowrap;" align="left" valign="top" height="20">
|
||||
<span class="indexgrey">internal file <a href=#A1375><img border=0 src=inform:/doc_images/Below.png></a></span>
|
||||
<span class="indexgrey">internal file <a href=#A38><img border=0 src=inform:/doc_images/Below.png></a></span>
|
||||
</td>
|
||||
<td align="left" valign="top">
|
||||
<span class="indexgrey"><i>a non-file</i></span>
|
||||
|
@ -693,7 +693,7 @@
|
|||
</tr>
|
||||
<tr class="stripeone">
|
||||
<td style="white-space:nowrap;" align="left" valign="top" height="20">
|
||||
action name <a href=inform:/doc96.html><img border=0 src=inform:/doc_images/help.png></a> <a href=#A1378><img border=0 src=inform:/doc_images/Below.png></a>
|
||||
action name <a href=inform:/doc96.html><img border=0 src=inform:/doc_images/help.png></a> <a href=#A41><img border=0 src=inform:/doc_images/Below.png></a>
|
||||
</td>
|
||||
<td align="left" valign="top">
|
||||
waiting action
|
||||
|
@ -710,7 +710,7 @@
|
|||
</tr>
|
||||
<tr class="stripetwo">
|
||||
<td style="white-space:nowrap;" align="left" valign="top" height="20">
|
||||
figure name <a href=inform:/doc374.html><img border=0 src=inform:/doc_images/help.png></a> [1] <a href=#A1380><img border=0 src=inform:/doc_images/Below.png></a>
|
||||
figure name <a href=inform:/doc374.html><img border=0 src=inform:/doc_images/help.png></a> [1] <a href=#A43><img border=0 src=inform:/doc_images/Below.png></a>
|
||||
</td>
|
||||
<td align="left" valign="top">
|
||||
Figure of cover
|
||||
|
@ -727,7 +727,7 @@
|
|||
</tr>
|
||||
<tr class="stripeone">
|
||||
<td style="white-space:nowrap;" align="left" valign="top" height="20">
|
||||
<span class="indexgrey">sound name <a href=inform:/doc377.html><img border=0 src=inform:/doc_images/help.png></a> <a href=#A1381><img border=0 src=inform:/doc_images/Below.png></a></span>
|
||||
<span class="indexgrey">sound name <a href=inform:/doc377.html><img border=0 src=inform:/doc_images/help.png></a> <a href=#A44><img border=0 src=inform:/doc_images/Below.png></a></span>
|
||||
</td>
|
||||
<td align="left" valign="top">
|
||||
<span class="indexgrey"><i>a silent non-sound</i></span>
|
||||
|
@ -749,7 +749,7 @@
|
|||
</tr>
|
||||
<tr class="stripetwo">
|
||||
<td style="white-space:nowrap;" align="left" valign="top" height="20">
|
||||
natural language [1] <a href=#A1384><img border=0 src=inform:/doc_images/Below.png></a>
|
||||
natural language [1] <a href=#A0><img border=0 src=inform:/doc_images/Below.png></a>
|
||||
</td>
|
||||
<td align="left" valign="top">
|
||||
English language
|
||||
|
@ -766,7 +766,7 @@
|
|||
</tr>
|
||||
<tr class="stripeone">
|
||||
<td style="white-space:nowrap;" align="left" valign="top" height="20">
|
||||
grammatical tense <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] <a href=#A1386><img border=0 src=inform:/doc_images/Below.png></a>
|
||||
grammatical tense <a href='inform://Extensions/Documentation/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] <a href=#A17><img border=0 src=inform:/doc_images/Below.png></a>
|
||||
</td>
|
||||
<td align="left" valign="top">
|
||||
present tense
|
||||
|
@ -783,7 +783,7 @@
|
|||
</tr>
|
||||
<tr class="stripetwo">
|
||||
<td style="white-space:nowrap;" align="left" valign="top" height="20">
|
||||
narrative viewpoint <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] <a href=#A1387><img border=0 src=inform:/doc_images/Below.png></a>
|
||||
narrative viewpoint <a href='inform://Extensions/Documentation/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] <a href=#A18><img border=0 src=inform:/doc_images/Below.png></a>
|
||||
</td>
|
||||
<td align="left" valign="top">
|
||||
first person singular
|
||||
|
@ -800,7 +800,7 @@
|
|||
</tr>
|
||||
<tr class="stripeone">
|
||||
<td style="white-space:nowrap;" align="left" valign="top" height="20">
|
||||
grammatical case <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] <a href=#A1388><img border=0 src=inform:/doc_images/Below.png></a>
|
||||
grammatical case <a href='inform://Extensions/Documentation/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] <a href=#A19><img border=0 src=inform:/doc_images/Below.png></a>
|
||||
</td>
|
||||
<td align="left" valign="top">
|
||||
nominative
|
||||
|
@ -817,7 +817,7 @@
|
|||
</tr>
|
||||
<tr class="stripetwo">
|
||||
<td style="white-space:nowrap;" align="left" valign="top" height="20">
|
||||
grammatical gender <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] <a href=#A1389><img border=0 src=inform:/doc_images/Below.png></a>
|
||||
grammatical gender <a href='inform://Extensions/Documentation/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] <a href=#A20><img border=0 src=inform:/doc_images/Below.png></a>
|
||||
</td>
|
||||
<td align="left" valign="top">
|
||||
neuter gender
|
||||
|
@ -861,7 +861,7 @@
|
|||
</tr>
|
||||
<tr class="stripeone">
|
||||
<td style="white-space:nowrap;" align="left" valign="top" height="20">
|
||||
list of K <a href=inform:/doc350.html><img border=0 src=inform:/doc_images/help.png></a> <a href=#A1429><img border=0 src=inform:/doc_images/Below.png></a>
|
||||
list of K <a href=inform:/doc350.html><img border=0 src=inform:/doc_images/help.png></a> <a href=#A46><img border=0 src=inform:/doc_images/Below.png></a>
|
||||
</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 <a href=#A2185><img border=0 src=inform:/doc_images/Below.png></a>
|
||||
phrase K -> L <a href=#A55><img border=0 src=inform:/doc_images/Below.png></a>
|
||||
</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> <a href=#A2190><img border=0 src=inform:/doc_images/Below.png></a>
|
||||
<span class="indexgrey"></span>relation<span class="indexgrey"> of K</span> <a href=#A57><img border=0 src=inform:/doc_images/Below.png></a>
|
||||
</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> <a href=inform:/doc325.html><img border=0 src=inform:/doc_images/help.png></a> <a href=#A2193><img border=0 src=inform:/doc_images/Below.png></a>
|
||||
<span class="indexgrey">K based</span> rule<span class="indexgrey"> producing L</span> <a href=inform:/doc325.html><img border=0 src=inform:/doc_images/help.png></a> <a href=#A58><img border=0 src=inform:/doc_images/Below.png></a>
|
||||
</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> <a href=inform:/doc325.html><img border=0 src=inform:/doc_images/help.png></a> <a href=#A2196><img border=0 src=inform:/doc_images/Below.png></a>
|
||||
<span class="indexgrey">K based</span> rulebook<span class="indexgrey"> producing L</span> <a href=inform:/doc325.html><img border=0 src=inform:/doc_images/help.png></a> <a href=#A59><img border=0 src=inform:/doc_images/Below.png></a>
|
||||
</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> <a href=inform:/doc285.html><img border=0 src=inform:/doc_images/help.png></a> <a href=#A2199><img border=0 src=inform:/doc_images/Below.png></a>
|
||||
<span class="indexgrey"></span>activity<span class="indexgrey"> on K</span> <a href=inform:/doc285.html><img border=0 src=inform:/doc_images/help.png></a> <a href=#A60><img border=0 src=inform:/doc_images/Below.png></a>
|
||||
</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 <a href=inform:/doc362.html><img border=0 src=inform:/doc_images/help.png></a> <a href=#A2205><img border=0 src=inform:/doc_images/Below.png></a>
|
||||
description of K <a href=inform:/doc362.html><img border=0 src=inform:/doc_images/help.png></a> <a href=#A61><img border=0 src=inform:/doc_images/Below.png></a>
|
||||
</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> <a href=#A2207><img border=0 src=inform:/doc_images/Below.png></a>
|
||||
<span class="indexgrey">K valued</span> property<span class="indexgrey"></span> <a href=#A62><img border=0 src=inform:/doc_images/Below.png></a>
|
||||
</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> <a href=#A2209><img border=0 src=inform:/doc_images/Below.png></a>
|
||||
<span class="indexgrey">K valued</span> table<span class="indexgrey"></span> column<span class="indexgrey"></span> <a href=#A63><img border=0 src=inform:/doc_images/Below.png></a>
|
||||
</td>
|
||||
<td align="left" valign="top" colspan="4">
|
||||
--
|
||||
|
@ -958,7 +958,7 @@ Rooms are arranged in a map.<br>
|
|||
world that is not a room. People, pieces of scenery, furniture, doors and
|
||||
mislaid umbrellas might all be examples, and so might more surprising things
|
||||
like the sound of birdsong or a shaft of sunlight.<br>
|
||||
<i>Usually</i> unlit <i>not</i> lit, inedible <i>not</i> edible, portable <i>not</i> fixed in place, described <i>not</i> undescribed, unmarked for listing <i>not</i> marked for listing, mentioned <i>not</i> unmentioned.<br>
|
||||
<i>Usually</i> unlit <i>not</i> lit, inedible <i>not</i> edible, portable <i>not</i> fixed in place, described <i>not</i> undescribed, unmarked for listing <i>not</i> marked for listing, unmentioned <i>not</i> mentioned.<br>
|
||||
<i>Usually not</i> scenery, wearable, pushable between rooms, handled.<br>
|
||||
<i>Can have</i> description (<i>text</i>), initial appearance (<i>text</i>), matching key (<i>object</i>).<br>
|
||||
</p>
|
||||
|
@ -1195,21 +1195,21 @@ When made with the Glulx setting, an Inform project can include sound effects or
|
|||
<p class="tightin1"><i>Matches:</i> value, sayable value, understandable value, enumerated value<br>
|
||||
<p class="tightin1"><span class="indexgrey">English language</span></p>
|
||||
</p>
|
||||
<p class="halftightin1"><a name=A17></a><b>grammatical tense <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></b> (<i>plural</i> grammatical tenses)</p>
|
||||
<p class="halftightin1"><a name=A17></a><b>grammatical tense <a href='inform://Extensions/Documentation/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></b> (<i>plural</i> grammatical tenses)</p>
|
||||
<p class="tightin1"><i>Matches:</i> value, sayable value, understandable value, enumerated value<br>
|
||||
<p class="tightin1"><span class="indexgrey">present tense</span> <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>, <span class="indexgrey">past tense</span> <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>, <span class="indexgrey">perfect tense</span> <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>, <span class="indexgrey">past perfect tense</span> <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>, <span class="indexgrey">future tense</span> <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></p>
|
||||
<p class="tightin1"><span class="indexgrey">present tense</span> <a href='inform://Extensions/Documentation/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>, <span class="indexgrey">past tense</span> <a href='inform://Extensions/Documentation/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>, <span class="indexgrey">perfect tense</span> <a href='inform://Extensions/Documentation/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>, <span class="indexgrey">past perfect tense</span> <a href='inform://Extensions/Documentation/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>, <span class="indexgrey">future tense</span> <a href='inform://Extensions/Documentation/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></p>
|
||||
</p>
|
||||
<p class="halftightin1"><a name=A18></a><b>narrative viewpoint <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></b> (<i>plural</i> narrative viewpoints)</p>
|
||||
<p class="halftightin1"><a name=A18></a><b>narrative viewpoint <a href='inform://Extensions/Documentation/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></b> (<i>plural</i> narrative viewpoints)</p>
|
||||
<p class="tightin1"><i>Matches:</i> value, sayable value, understandable value, enumerated value<br>
|
||||
<p class="tightin1"><span class="indexgrey">first person singular</span> <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>, <span class="indexgrey">second person singular</span> <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>, <span class="indexgrey">third person singular</span> <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>, <span class="indexgrey">first person plural</span> <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>, <span class="indexgrey">second person plural</span> <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>, <span class="indexgrey">third person plural</span> <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></p>
|
||||
<p class="tightin1"><span class="indexgrey">first person singular</span> <a href='inform://Extensions/Documentation/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>, <span class="indexgrey">second person singular</span> <a href='inform://Extensions/Documentation/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>, <span class="indexgrey">third person singular</span> <a href='inform://Extensions/Documentation/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>, <span class="indexgrey">first person plural</span> <a href='inform://Extensions/Documentation/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>, <span class="indexgrey">second person plural</span> <a href='inform://Extensions/Documentation/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>, <span class="indexgrey">third person plural</span> <a href='inform://Extensions/Documentation/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></p>
|
||||
</p>
|
||||
<p class="halftightin1"><a name=A19></a><b>grammatical case <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></b> (<i>plural</i> grammatical cases)</p>
|
||||
<p class="halftightin1"><a name=A19></a><b>grammatical case <a href='inform://Extensions/Documentation/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></b> (<i>plural</i> grammatical cases)</p>
|
||||
<p class="tightin1"><i>Matches:</i> value, sayable value, understandable value, enumerated value<br>
|
||||
<p class="tightin1"><span class="indexgrey">nominative</span> <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>, <span class="indexgrey">accusative</span> <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></p>
|
||||
<p class="tightin1"><span class="indexgrey">nominative</span> <a href='inform://Extensions/Documentation/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>, <span class="indexgrey">accusative</span> <a href='inform://Extensions/Documentation/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></p>
|
||||
</p>
|
||||
<p class="halftightin1"><a name=A20></a><b>grammatical gender <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></b> (<i>plural</i> grammatical genders)</p>
|
||||
<p class="halftightin1"><a name=A20></a><b>grammatical gender <a href='inform://Extensions/Documentation/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></b> (<i>plural</i> grammatical genders)</p>
|
||||
<p class="tightin1"><i>Matches:</i> value, sayable value, understandable value, enumerated value<br>
|
||||
<p class="tightin1"><span class="indexgrey">neuter gender</span> <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>, <span class="indexgrey">masculine gender</span> <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>, <span class="indexgrey">feminine gender</span> <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></p>
|
||||
<p class="tightin1"><span class="indexgrey">neuter gender</span> <a href='inform://Extensions/Documentation/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>, <span class="indexgrey">masculine gender</span> <a href='inform://Extensions/Documentation/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>, <span class="indexgrey">feminine gender</span> <a href='inform://Extensions/Documentation/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></p>
|
||||
</p>
|
||||
<hr>
|
||||
<p class="halftightin1"><a name=A46></a><b>list of K</b> (<i>plural</i> lists of K) <a href=inform:/doc350.html><img border=0 src=inform:/doc_images/help.png></a></p>
|
||||
|
|
|
@ -46,8 +46,8 @@ prior named object - <i>object</i><br>
|
|||
latest parser error - <i>command parser error</i><br>
|
||||
</p>
|
||||
<p><b>Grammatical definitions</b><br>
|
||||
story tense <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> - <i>grammatical tense</i><br>
|
||||
story viewpoint <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> - <i>narrative viewpoint</i><br>
|
||||
story tense <a href='inform://Extensions/Documentation/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> - <i>grammatical tense</i><br>
|
||||
story viewpoint <a href='inform://Extensions/Documentation/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> - <i>narrative viewpoint</i><br>
|
||||
</p>
|
||||
<p><b></b><br>
|
||||
royal family <a href="source:story.ni#line4"><img border=0 src=inform:/doc_images/Reveal.png></a> - <i>dynasty</i><br>
|
||||
|
|
|
@ -36,8 +36,8 @@ int ActivityRequests::new_activity_SMF(int task, parse_node *V, wording *NPs) {
|
|||
}
|
||||
break;
|
||||
case PASS_1_SMFT:
|
||||
Activities::new(Kinds::unary_con(CON_activity, K_nil),
|
||||
Node::get_text(V->next));
|
||||
Activities::new(Kinds::unary_con(CON_activity, K_object),
|
||||
Node::get_text(V->next), TRUE);
|
||||
break;
|
||||
}
|
||||
return FALSE;
|
||||
|
|
|
@ -1391,11 +1391,6 @@ allow one case, where the declaration is redundant and harmless.)
|
|||
&& (a_kind)) {
|
||||
if (Kinds::eq(a_kind, g_kind))
|
||||
@<This sentence redundantly specifies the kind of value for a value@>;
|
||||
if ((Kinds::get_construct(a_kind) == CON_activity) &&
|
||||
(Kinds::get_construct(g_kind) == CON_activity) &&
|
||||
(Kinds::eq(Kinds::unary_construction_material(a_kind), K_object)) &&
|
||||
(Kinds::eq(Kinds::unary_construction_material(g_kind), K_nil)))
|
||||
@<Amend kind of activity so that it is based on nothing@>;
|
||||
if (Kinds::get_construct(a_kind) == CON_description)
|
||||
@<Issue problem for trying to use a description as a literal@>;
|
||||
}
|
||||
|
@ -1464,15 +1459,6 @@ file: this may possibly be useful to I6 hackers.
|
|||
}
|
||||
return;
|
||||
|
||||
@ This is a very special case. We get here from "X is an activity based on
|
||||
nothing" but not from "X is an activity", and so it can be used to override
|
||||
the default assumption about the basis of an activity.
|
||||
|
||||
@<Amend kind of activity so that it is based on nothing@> =
|
||||
activity *av = Rvalues::to_activity(Node::get_evaluation(px));
|
||||
if (av) Activities::base_on_nothing(av);
|
||||
return;
|
||||
|
||||
@ My, aren't we charming?
|
||||
|
||||
@<Dabble further in ruthless sarcasm@> =
|
||||
|
|
|
@ -360,7 +360,8 @@ from the tree.
|
|||
W = GET_RW(<grammatical-gender-marker>, 1);
|
||||
Annotations::write_int(p, explicit_gender_marker_ANNOT, <<r>> + 1);
|
||||
}
|
||||
if (<creation-problem-diagnosis>(W)) W = EMPTY_WORDING;
|
||||
wording XW = W; DocReferences::position_of_symbol(&XW);
|
||||
if (<creation-problem-diagnosis>(XW)) W = EMPTY_WORDING;
|
||||
Node::set_text(p, W);
|
||||
if (((create_as == NULL) || (Kinds::Behaviour::is_object(create_as))) &&
|
||||
(prevailing_mood != INITIALLY_CE) &&
|
||||
|
@ -666,7 +667,7 @@ them by asserting propositions to be true; we act directly.
|
|||
Annotations::write_int(current_sentence, clears_pronouns_ANNOT, TRUE);
|
||||
|
||||
@<Create a new activity@> =
|
||||
activity *av = Activities::new(create_as, W);
|
||||
activity *av = Activities::new(create_as, W, FALSE);
|
||||
if (av) val = Rvalues::from_activity(av);
|
||||
Annotations::write_int(current_sentence, clears_pronouns_ANNOT, TRUE);
|
||||
|
||||
|
|
|
@ -71,20 +71,17 @@ special Preform of its own; here is the subject phrase:
|
|||
@
|
||||
|
||||
=
|
||||
activity *Activities::new(kind *K, wording W) {
|
||||
activity *Activities::new(kind *K, wording W, int bypassed) {
|
||||
kind *on_kind = Kinds::unary_construction_material(K);
|
||||
int kind_given = TRUE;
|
||||
if (Kinds::eq(on_kind, K_nil)) {
|
||||
kind_given = FALSE; on_kind = K_object;
|
||||
}
|
||||
LOG("So %W has kind given = %d, res = %u\n", W, kind_given, on_kind);
|
||||
if (Kinds::eq(on_kind, K_nil)) kind_given = FALSE;
|
||||
if (bypassed) { kind_given = FALSE; on_kind = K_object; }
|
||||
<<ds>> = -1;
|
||||
<<future>> = FALSE;
|
||||
<<hide>> = FALSE;
|
||||
<activity-sentence-subject>(W);
|
||||
W = GET_RW(<activity-new-name>, 1);
|
||||
wording doc_symbol = Wordings::one_word(<<ds>>);
|
||||
|
||||
@<The name can't have been used before@>;
|
||||
@<The kind the activity is performed on, if there is one, must be definite@>;
|
||||
@<If it is not of or for something, then it cannot have a kind@>;
|
||||
|
@ -163,18 +160,6 @@ it; actually two -- for example, both "announcing" and "announcing activity".
|
|||
Nouns::new_proper_noun(AW, NEUTER_GENDER, ADD_TO_LEXICON_NTOPT,
|
||||
ACTIVITY_MC, Rvalues::from_activity(av), Task::language_of_syntax());
|
||||
|
||||
@ The above mechanism for assuming that activities must be based on something --
|
||||
objects, failing anything else -- can be wrong, and if so, the assertions
|
||||
machinery call this:
|
||||
|
||||
=
|
||||
void Activities::base_on_nothing(activity *av) {
|
||||
av->activity_on_what_kind = K_nil;
|
||||
Rulebooks::base_on_nothing(av->before_rules);
|
||||
Rulebooks::base_on_nothing(av->for_rules);
|
||||
Rulebooks::base_on_nothing(av->after_rules);
|
||||
}
|
||||
|
||||
@ And its rulebooks are named with these constructions:
|
||||
|
||||
=
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -78,22 +78,93 @@ Be wary modifying these: rulebooks and activities must be defined in exactly
|
|||
the right order, matching definitions both in the Inform 7 compiler and in the
|
||||
template libraries. (Remember that creating an activity creates three rulebooks.)
|
||||
|
||||
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.
|
||||
|
||||
(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.
|
||||
|
||||
(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.
|
||||
|
||||
(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.
|
||||
|
||||
(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 |-rng| command
|
||||
line switch, which is in turn used by the |intest| testing utility: it's a
|
||||
way to make deterministic tests of programs which use random values).
|
||||
|
||||
(e) The "recover Glk objects rule" runs the object recovery process in order to
|
||||
identify and pre-existing Glk objects after a restart.
|
||||
|
||||
(f) The "open built-in windows rule" opens the Glk windows; only after this
|
||||
point is it safe to print anything.
|
||||
|
||||
=
|
||||
Chapter - Startup
|
||||
|
||||
Startup rules is a rulebook.
|
||||
The startup rulebook is accessible to Inter as "STARTUP_RB".
|
||||
Startup rules have outcomes allow startup (success) and deny startup (failure).
|
||||
|
||||
Shutdown rules is a rulebook.
|
||||
The shutdown rulebook is accessible to Inter as "SHUTDOWN_RB".
|
||||
|
||||
Starting the virtual machine (documented at act_startvm) is an activity.
|
||||
Starting the virtual machine (documented at act_startvm) is an activity on nothing.
|
||||
The starting the virtual machine activity is accessible to Inter as "STARTING_VIRTUAL_MACHINE_ACT".
|
||||
The final code startup rule is listed first in for starting the virtual machine.
|
||||
The final code startup rule is defined by Inter as "FINAL_CODE_STARTUP_R".
|
||||
The for starting the virtual machine rules have default no outcome.
|
||||
|
||||
First startup rule (this is the virtual machine startup rule):
|
||||
carry out the starting the virtual machine activity.
|
||||
|
||||
Section - Startup A (for Glulx only)
|
||||
|
||||
The start capturing startup text rule is listed in the before starting the virtual machine rules.
|
||||
The start capturing startup text rule translates into Inter as "CAPTURE_STARTUP_TEXT_R".
|
||||
|
||||
Section - Startup B
|
||||
|
||||
The platform specific startup rule is listed in the before starting the virtual machine rules.
|
||||
The platform specific startup rule translates into Inter as "PLATFORM_SPECIFIC_STARTUP_R".
|
||||
|
||||
The initialise memory rule is listed in the before starting the virtual machine rules.
|
||||
The initialise memory rule translates into Inter as "INITIALISE_MEMORY_R".
|
||||
|
||||
The seed random number generator rule is listed in the before starting the virtual machine rules.
|
||||
The seed random number generator rule translates into Inter as "SEED_RANDOM_NUMBER_GENERATOR_R".
|
||||
|
||||
Section - Startup C (for Glulx only)
|
||||
|
||||
The recover Glk objects rule is listed in the before starting the virtual machine rules.
|
||||
The recover Glk objects rule translates into Inter as "GGRecoverObjects".
|
||||
|
||||
@ These rules now set up the built in sound channels and windows.
|
||||
|
||||
=
|
||||
The sound channel initialisation rule is listed in the for starting the virtual machine rules.
|
||||
The sound channel initialisation rule translates into Inter as "SOUND_CHANNEL_INIT_R".
|
||||
|
||||
The open built-in windows rule is listed in the for starting the virtual machine rules.
|
||||
The open built-in windows rule translates into Inter as "OPEN_BUILT_IN_WINDOWS_R".
|
||||
|
||||
The display captured startup text rule is listed in the for starting the virtual machine rules.
|
||||
The display captured startup text rule translates into Inter as "END_CAPTURE_STARTUP_TEXT_R".
|
||||
|
||||
@ However, the two activities for printing names of objects are indeed
|
||||
functional in Basic Inform.
|
||||
|
||||
=
|
||||
Chapter - Printing activities
|
||||
|
||||
Printing the name of something (hidden in RULES command) (documented at act_pn) is an activity.
|
||||
The printing the name activity is accessible to Inter as "PRINTING_THE_NAME_ACT".
|
||||
|
||||
|
|
|
@ -1093,6 +1093,15 @@ To replace line number (N - a number) in (T - text) with (replace - text)
|
|||
To replace paragraph number (N - a number) in (T - text) with (replace - text)
|
||||
(documented at ph_replacepara):
|
||||
(- TEXT_TY_ReplaceBlob(PARA_BLOB, {-lvalue-by-reference:T}, {N}, {-by-reference:replace}); -).
|
||||
To decide what number is the first index of text match
|
||||
(documented at ph_textfirstindex):
|
||||
(- (match0_idx2 ~= 0) * (match0_idx + 1) -).
|
||||
To decide what number is the last index of text match
|
||||
(documented at ph_textlastindex):
|
||||
(- match0_idx2 -).
|
||||
To decide what number is the length of text match
|
||||
(documented at ph_textlength):
|
||||
(- (match0_idx2 - match0_idx) -).
|
||||
|
||||
@ ...and for regular expressions, though here we also have access to the
|
||||
exact text which matched (not interesting in the plain text case since it's
|
||||
|
@ -1118,6 +1127,15 @@ To decide what text is text matching regular expression
|
|||
To decide what text is text matching subexpression (N - a number)
|
||||
(documented at ph_subexpressiontext):
|
||||
(- TEXT_TY_RE_GetMatchVar({N}) -).
|
||||
To decide what number is the first index of subexpression (n - a number)
|
||||
(documented at ph_refirstindex):
|
||||
(- (RE_Subexpressions-->{n}-->RE_DATA2 ~= 0) * (RE_Subexpressions-->{n}-->RE_DATA1 + 1) -).
|
||||
To decide what number is the last index of subexpression (n - a number)
|
||||
(documented at ph_relastindex):
|
||||
(- ((RE_Subexpressions-->{n}-->RE_DATA2 >= 0) * RE_Subexpressions-->{n}-->RE_DATA2) -).
|
||||
To decide what number is the length of subexpression (n - a number)
|
||||
(documented at ph_relength):
|
||||
(- (RE_Subexpressions-->{n}-->RE_DATA2 - RE_Subexpressions-->{n}-->RE_DATA1) -).
|
||||
To decide what number is number of times (T - text) matches the regular expression
|
||||
(find - text),case insensitively
|
||||
(documented at ph_nummatchesre):
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -328,7 +328,7 @@ A thing can be privately-named or publicly-named. A thing is usually publicly-na
|
|||
A thing can be undescribed or described. A thing is usually described.
|
||||
A thing can be marked for listing or unmarked for listing. A thing is usually
|
||||
unmarked for listing.
|
||||
A thing can be mentioned or unmentioned. A thing is usually mentioned.
|
||||
A thing can be mentioned or unmentioned. A thing is usually unmentioned.
|
||||
|
||||
@ We now have a mixed bag of value properties, all descriptive -- it's an
|
||||
interesting reflection on how qualitative English text usually is that the
|
||||
|
|
|
@ -281,7 +281,7 @@ Chapter 2 - Rulebooks
|
|||
|
||||
Section 1 - The Standard Rulebooks
|
||||
|
||||
Turn sequence rules is a rulebook.
|
||||
Turn sequence rules is a nothing based rulebook.
|
||||
The turn sequence rulebook is accessible to Inter as "TURN_SEQUENCE_RB".
|
||||
|
||||
@ Now a set of rulebooks to do with the passage of time.
|
||||
|
@ -481,34 +481,14 @@ Section 2 - The Standard Rules
|
|||
The little-used do nothing rule is defined by Inter as "LITTLE_USED_DO_NOTHING_R".
|
||||
|
||||
@h Startup.
|
||||
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.
|
||||
These startup rules prepare the various world model specific systems.
|
||||
|
||||
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.
|
||||
(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.
|
||||
|
||||
(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.
|
||||
|
||||
(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.
|
||||
|
||||
(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 |-rng| command
|
||||
line switch, which is in turn used by the |intest| testing utility: it's a
|
||||
way to make deterministic tests of programs which use random values).
|
||||
|
||||
(d) The "update chronological records rule" is described in further detail
|
||||
(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
|
||||
|
@ -520,12 +500,10 @@ 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.
|
||||
|
||||
(e) All items begin unmentioned, as might be expected.
|
||||
|
||||
(f) And the "position player in model world rule" completes the initial
|
||||
(c) The "position player in model world rule" completes the initial
|
||||
construction of the spatial model world.
|
||||
|
||||
(g) The "start in the correct scenes rule" ensures that we start out
|
||||
(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
|
||||
|
@ -533,24 +511,18 @@ Entire Game begins.) That completes the necessary preliminaries before
|
|||
ordinary I7 rules can be run.
|
||||
|
||||
=
|
||||
The start in the correct scenes rule is listed first in the startup rulebook. [7th.]
|
||||
The position player in model world rule is listed first in the startup rulebook. [6th.]
|
||||
This is the declare everything initially unmentioned rule:
|
||||
repeat with item running through things:
|
||||
now the item is not mentioned.
|
||||
The declare everything initially unmentioned rule is listed first in the startup rulebook. [5th]
|
||||
The update chronological records rule is listed first in the startup rulebook. [4th.]
|
||||
The seed random number generator rule is listed first in the startup rulebook. [3rd.]
|
||||
The virtual machine startup rule is listed first in the startup rulebook. [2nd.]
|
||||
The initialise memory rule is listed first in the startup rulebook. [1st.]
|
||||
The initial whitespace rule is listed in the after starting the virtual machine rules.
|
||||
The initial whitespace rule translates into Inter as "INITIAL_WHITESPACE_R".
|
||||
|
||||
The virtual machine startup rule is defined by Inter as "VIRTUAL_MACHINE_STARTUP_R".
|
||||
The initialise memory rule is defined by Inter as "INITIALISE_MEMORY_R".
|
||||
The seed random number generator rule is defined by Inter as "SEED_RANDOM_NUMBER_GENERATOR_R".
|
||||
The update chronological records rule is defined by Inter as "UPDATE_CHRONOLOGICAL_RECORDS_R".
|
||||
The position player in model world rule is defined by Inter as "POSITION_PLAYER_IN_MODEL_R".
|
||||
The update chronological records rule is listed in the after starting the virtual machine rules.
|
||||
The update chronological records rule translates into Inter as "UPDATE_CHRONOLOGICAL_RECORDS_R".
|
||||
|
||||
This is the start in the correct scenes rule: follow the scene changing rules.
|
||||
The position player in model world rule is listed in the after starting the virtual machine rules.
|
||||
The position player in model world rule translates into Inter as "POSITION_PLAYER_IN_MODEL_R".
|
||||
|
||||
The start in the correct scenes rule is listed in the after starting the virtual machine rules.
|
||||
This is the start in the correct scenes rule:
|
||||
follow the scene changing rules.
|
||||
|
||||
@ 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
|
||||
|
@ -561,18 +533,17 @@ a change to be notified to the player as if it has happened through some
|
|||
action.
|
||||
|
||||
=
|
||||
The when play begins stage rule is listed in the startup rulebook.
|
||||
The fix baseline scoring rule is listed in the startup rulebook.
|
||||
The display banner rule is listed in the startup rulebook.
|
||||
The initial room description rule is listed in the startup rulebook.
|
||||
Startup rule (this is the when play begins stage rule):
|
||||
follow the when play begins rulebook.
|
||||
|
||||
This is the when play begins stage rule: follow the when play begins rulebook.
|
||||
Startup rule (this is the fix baseline scoring rule):
|
||||
now the last notified score is the score.
|
||||
|
||||
This is the fix baseline scoring rule: now the last notified score is the score.
|
||||
Startup rule (this is the display banner rule):
|
||||
say "[banner text]".
|
||||
|
||||
This is the display banner rule: say "[banner text]".
|
||||
|
||||
This is the initial room description rule: try looking.
|
||||
Startup rule (this is the initial room description rule):
|
||||
try looking.
|
||||
|
||||
@h The turn sequence.
|
||||
In each turn, a command is read and parsed from the keyboard, and any
|
||||
|
@ -633,6 +604,9 @@ A first turn sequence rule (this is the every turn stage rule):
|
|||
A first turn sequence rule (this is the early scene changing stage rule):
|
||||
follow the scene changing rules. [4th.]
|
||||
The generate action rule is listed first in the turn sequence rulebook. [3rd.]
|
||||
This is the declare everything initially unmentioned rule:
|
||||
repeat with item running through things:
|
||||
now the item is not mentioned.
|
||||
The declare everything initially unmentioned rule is listed first in the turn sequence rulebook. [2nd.]
|
||||
The parse command rule is listed first in the turn sequence rulebook. [1st.]
|
||||
|
||||
|
|
|
@ -39,7 +39,7 @@ void I6TargetCode::declare_function(code_generator *gtr, code_generation *gen,
|
|||
if (Str::eq(fn_name, I"DebugAction")) @<Inject code at the top of DebugAction@>;
|
||||
if (Str::eq(fn_name, I"DebugAttribute")) @<Inject code at the top of DebugAttribute@>;
|
||||
if (Str::eq(fn_name, I"DebugProperty")) @<Inject code at the top of DebugProperty@>;
|
||||
if (Str::eq(fn_name, I"FINAL_CODE_STARTUP_R")) @<Inject code at the top of FINAL_CODE_STARTUP_R@>;
|
||||
if (Str::eq(fn_name, I"PLATFORM_SPECIFIC_STARTUP_R")) @<Inject code at the top of PLATFORM_SPECIFIC_STARTUP_R@>;
|
||||
|
||||
Vanilla::node(gen, vf->function_body); /* This compiles the body of the function */
|
||||
|
||||
|
@ -126,7 +126,7 @@ a bug in the previous Glulx spec -- but on the other hand, these accelerated
|
|||
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.)
|
||||
|
||||
@<Inject code at the top of FINAL_CODE_STARTUP_R@> =
|
||||
@<Inject code at the top of PLATFORM_SPECIFIC_STARTUP_R@> =
|
||||
WRITE("#ifdef TARGET_GLULX;\n");
|
||||
WRITE("@gestalt 9 0 res;\n");
|
||||
WRITE("if (res == 0) rfalse;\n");
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue